Zebediah Figura : tests: Add some tests for shaders which fail to preprocess.

Alexandre Julliard julliard at winehq.org
Tue Nov 24 17:01:38 CST 2020


Module: vkd3d
Branch: master
Commit: 3bf15d6345b36fc4f6a9e142acbdf43453e263aa
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=3bf15d6345b36fc4f6a9e142acbdf43453e263aa

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Tue Nov 24 00:29:57 2020 -0600

tests: Add some tests for shaders which fail to preprocess.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 Makefile.am                       |  2 ++
 tests/preproc-invalid.shader_test |  8 ++++++++
 tests/shader_runner_d3d12.c       | 25 +++++++++++++++++++++++++
 3 files changed, 35 insertions(+)

diff --git a/Makefile.am b/Makefile.am
index 59e054f..ec82707 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -67,6 +67,7 @@ vkd3d_shader_tests = \
 	tests/preproc-if.shader_test \
 	tests/preproc-ifdef.shader_test \
 	tests/preproc-if-expr.shader_test \
+	tests/preproc-invalid.shader_test \
 	tests/preproc-macro.shader_test \
 	tests/swizzle-0.shader_test \
 	tests/swizzle-1.shader_test \
@@ -213,6 +214,7 @@ XFAIL_TESTS = \
 	tests/preproc-if.shader_test \
 	tests/preproc-ifdef.shader_test \
 	tests/preproc-if-expr.shader_test \
+	tests/preproc-invalid.shader_test \
 	tests/preproc-macro.shader_test \
 	tests/swizzle-0.shader_test \
 	tests/swizzle-1.shader_test \
diff --git a/tests/preproc-invalid.shader_test b/tests/preproc-invalid.shader_test
new file mode 100644
index 0000000..8a30aad
--- /dev/null
+++ b/tests/preproc-invalid.shader_test
@@ -0,0 +1,8 @@
+[preproc fail]
+#error
+
+[preproc fail]
+#include <nonexistent_file>
+
+[preproc fail]
+#include "nonexistent_file"
diff --git a/tests/shader_runner_d3d12.c b/tests/shader_runner_d3d12.c
index 39495fa..bf5c3e0 100644
--- a/tests/shader_runner_d3d12.c
+++ b/tests/shader_runner_d3d12.c
@@ -103,6 +103,7 @@ enum parse_state
 {
     STATE_NONE,
     STATE_PREPROC,
+    STATE_PREPROC_INVALID,
     STATE_SHADER_INVALID_PIXEL,
     STATE_SHADER_PIXEL,
     STATE_TEST,
@@ -347,6 +348,27 @@ START_TEST(shader_runner_d3d12)
                     break;
                 }
 
+                case STATE_PREPROC_INVALID:
+                {
+                    ID3D10Blob *blob = NULL, *errors = NULL;
+                    HRESULT hr;
+
+                    hr = D3DPreprocess(shader_source, strlen(shader_source), NULL, NULL, NULL, &blob, &errors);
+                    ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
+                    ok(!blob, "Expected no compiled shader blob.\n");
+                    ok(!!errors, "Expected non-NULL error blob.\n");
+
+                    if (errors)
+                    {
+                        if (vkd3d_test_state.debug_level)
+                            trace("%s\n", (char *)ID3D10Blob_GetBufferPointer(errors));
+                        ID3D10Blob_Release(errors);
+                    }
+
+                    shader_source_len = 0;
+                    break;
+                }
+
                 case STATE_PREPROC:
                 {
                     ID3D10Blob *blob = NULL, *errors = NULL;
@@ -389,6 +411,8 @@ START_TEST(shader_runner_d3d12)
                 state = STATE_TEST;
             else if (!strcmp(line, "[preproc]\n"))
                 state = STATE_PREPROC;
+            else if (!strcmp(line, "[preproc fail]\n"))
+                state = STATE_PREPROC_INVALID;
 
             vkd3d_test_set_context("Section %.*s, line %u", strlen(line) - 1, line, line_number);
         }
@@ -402,6 +426,7 @@ START_TEST(shader_runner_d3d12)
                     break;
 
                 case STATE_PREPROC:
+                case STATE_PREPROC_INVALID:
                 case STATE_SHADER_INVALID_PIXEL:
                 case STATE_SHADER_PIXEL:
                 {




More information about the wine-cvs mailing list