diff options
Diffstat (limited to 'tools/slang-test/test-context.cpp')
| -rw-r--r-- | tools/slang-test/test-context.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/slang-test/test-context.cpp b/tools/slang-test/test-context.cpp index b94435a8e..efbbb4f65 100644 --- a/tools/slang-test/test-context.cpp +++ b/tools/slang-test/test-context.cpp @@ -82,6 +82,7 @@ TestContext::TestContext() : m_inTest = false; m_dumpOutputOnFailure = false; m_isVerbose = false; + m_useExes = false; m_session = nullptr; } @@ -480,6 +481,35 @@ bool TestContext::didAllSucceed() const return m_passedTestCount == (m_totalTestCount - m_ignoredTestCount); } +TestContext::InnerMainFunc TestContext::getInnerMainFunc(const String& dirPath, const String& name) +{ + { + SharedLibraryTool* tool = m_sharedLibTools.TryGetValue(name); + if (tool) + { + return tool->m_func; + } + } + + StringBuilder sharedLibToolBuilder; + sharedLibToolBuilder.append(name); + sharedLibToolBuilder.append("-shared-library"); + + StringBuilder builder; + SharedLibrary::appendPlatformFileName(sharedLibToolBuilder.getUnownedSlice(), builder); + String path = Path::Combine(dirPath, builder); + + SharedLibraryTool tool = {}; + + if (SLANG_SUCCEEDED(SharedLibrary::loadWithPlatformFilename(path.begin(), tool.m_sharedLibrary))) + { + tool.m_func = (InnerMainFunc)SharedLibrary::findFuncByName(tool.m_sharedLibrary, "innerMain"); + } + + m_sharedLibTools.Add(name, tool); + return tool.m_func; +} + void TestContext::outputSummary() { auto passCount = m_passedTestCount; |
