summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-01-16 13:31:42 -0500
committerGitHub <noreply@github.com>2019-01-16 13:31:42 -0500
commit86e11e0e111fab60b9517056ac049bfac6e3bd25 (patch)
treef34a8343fb6a949235f1973dc873814f408987ef /tools
parentc260e6aa3a7dc3e6794442daacde3ae23f029e0b (diff)
Feature/external compiler reporting (#776)
* Added support for converting SlangResult to string in PlatformUtil. * * Added reportExternalCompilerError * Made external compilers use this * Made DiagnosticSink accept UnownedStringSlice * Made emitXXX compiler functions return SlangError * Use smart pointers to handle life of Com interfaces * * Make SlangResult compatible with HRESULT for some common cases. * Make PlatformUtil::appendResult return SlangResult * Compile check SLANG_RESULT. * Add tests for checking diagnostics from external compilers. * * Make external compiler tests only run on windows for now. * Added 'windows' and 'unix' categories * Added categories based on what backends are available. Will make more tests run on linux and handle case where dxcompiler is not available on appveyor. * * Added spSessionCheckPassThroughSupport * Use to determine whats available for categories for tests * Add support for outputting source filename/s when using pass through.
Diffstat (limited to 'tools')
-rw-r--r--tools/slang-test/slang-test-main.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/slang-test/slang-test-main.cpp b/tools/slang-test/slang-test-main.cpp
index 1f6b4cdb0..9039dbf2b 100644
--- a/tools/slang-test/slang-test-main.cpp
+++ b/tools/slang-test/slang-test-main.cpp
@@ -1791,6 +1791,36 @@ SlangResult innerMain(int argc, char** argv)
auto vulkanTestCategory = categorySet.add("vulkan", fullTestCategory);
auto unitTestCatagory = categorySet.add("unit-test", fullTestCategory);
auto compatibilityIssueCatagory = categorySet.add("compatibility-issue", fullTestCategory);
+
+#if SLANG_WINDOWS_FAMILY
+ auto windowsCatagory = categorySet.add("windows", fullTestCategory);
+#endif
+
+#if SLANG_UNIX_FAMILY
+ auto unixCatagory = categorySet.add("unix", fullTestCategory);
+#endif
+
+ TestCategory* fxcCategory = nullptr;
+ TestCategory* dxcCategory = nullptr;
+ TestCategory* glslangCategory = nullptr;
+
+ // Might be better if we had an API on slang so we could get what 'pass-through's are available
+ // This works whilst these targets imply the pass-through/backends
+ {
+ SlangSession* session = context.getSession();
+ if (SLANG_SUCCEEDED(spSessionCheckPassThroughSupport(session, SLANG_PASS_THROUGH_FXC)))
+ {
+ fxcCategory = categorySet.add("fxc", fullTestCategory);
+ }
+ if (SLANG_SUCCEEDED(spSessionCheckPassThroughSupport(session, SLANG_PASS_THROUGH_GLSLANG)))
+ {
+ glslangCategory = categorySet.add("glslang", fullTestCategory);
+ }
+ if (SLANG_SUCCEEDED(spSessionCheckPassThroughSupport(session, SLANG_PASS_THROUGH_DXC)))
+ {
+ dxcCategory = categorySet.add("dxc", fullTestCategory);
+ }
+ }
// An un-categorized test will always belong to the `full` category
categorySet.defaultCategory = fullTestCategory;