From d6dd38f5210fedfd96ff088ef9b8a2424c79c4f0 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Tue, 11 Apr 2023 23:28:58 +0800 Subject: Implement FileCheck tests for several test commands (#2747) * Add missing expected.txt for test * Diagnostics -> StdWriters in render test * Allow specifying several test prefixes to run `slang-test -- tests/foo tests/bar` * Squash warnings in some tests * Enable gfx debug layer in gfx test util Makes this issue present consistently: https://github.com/shader-slang/slang/issues/2766 * Allow DebugDevice to return interfaces instantiated by the debugged object * Check that we actaully have a shader cache for shader cache tests * Implement FileCheck tests for several test commands - SIMPLE, SIMPLE_EX - SIMPLE_LINE - REFLECTION, CPU_REFLECTION - CROSS_COMPILE It does not currently support the render tests or the COMPARE_COMPUTE commands It is invoked by adding `(filecheck=MY_FILECHECK_PREFIX)` to the test command, for example TEST:CROSS_COMPILE(filecheck=SPIRV): -target spirv-assembly * Move LLVM FileCheck interface to slang-llvm * Neaten slang-test tests * Refine handling of expected output in slang-test * Add example FileCheck buffer test * Add cuda-kernel-export tests Which were waiting on FileCheck * Bump vs project files * Make createLLVMFileCheck_V1 return a void* rather than specifically an IFileCheck * Remove use of CharSlice from filecheck interface * Bump slang-llvm version --------- Co-authored-by: jsmall-nvidia --- tools/slang-test/test-context.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tools/slang-test/test-context.cpp') diff --git a/tools/slang-test/test-context.cpp b/tools/slang-test/test-context.cpp index 8d8c20adf..6c9c7f549 100644 --- a/tools/slang-test/test-context.cpp +++ b/tools/slang-test/test-context.cpp @@ -59,6 +59,26 @@ TestReporter* TestContext::getTestReporter() return m_reporters[slangTestThreadIndex]; } +SlangResult TestContext::locateFileCheck() +{ + DefaultSharedLibraryLoader* loader = DefaultSharedLibraryLoader::getSingleton(); + ComPtr library; + SLANG_RETURN_ON_FAIL(loader->loadSharedLibrary("slang-llvm", library.writeRef())); + + if (!library) + { + return SLANG_FAIL; + } + + using CreateFileCheckFunc = SlangResult (*)(const SlangUUID&, void**); + auto fn = reinterpret_cast(library->findFuncByName("createLLVMFileCheck_V1")); + if(!fn) + { + return SLANG_FAIL; + } + return fn(SLANG_IID_PPV_ARGS(m_fileCheck.writeRef())); +} + Result TestContext::init(const char* inExePath) { m_session = spCreateSession(nullptr); @@ -68,6 +88,9 @@ Result TestContext::init(const char* inExePath) } exePath = inExePath; SLANG_RETURN_ON_FAIL(TestToolUtil::getExeDirectoryPath(inExePath, exeDirectoryPath)); + + SLANG_RETURN_ON_FAIL(locateFileCheck()); + return SLANG_OK; } -- cgit v1.2.3