glcpp: Handle bison-3.6 error message changes
authorMatt Turner <mattst88@gmail.com>
Tue, 17 Nov 2020 19:58:24 +0000 (14:58 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 19 Nov 2020 15:31:15 +0000 (15:31 +0000)
In bison's commit 72c9fa4510eb (skeletons: use "end of file" instead of
"$end") in bison-3.6, '$end' was changed to 'end of file' in error
messages. Since our glcpp test cases contain the expected output text,
they rely on the particular messages printed by bison. The test case
084-unbalanced-parentheses fails when Mesa is built with bison-3.6 due
to this change.

To allow the test to pass on all supported versions of bison, we:

   1. Change '$end' -> 'end of file' in the .expected file, and
   2. Normalize the error generated by the test case with the same
      replacement

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3181
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7659>

src/compiler/glsl/glcpp/tests/084-unbalanced-parentheses.c.expected
src/compiler/glsl/glcpp/tests/glcpp_test.py

index af49a37..6af8033 100644 (file)
@@ -1,2 +1,2 @@
-0:2(8): preprocessor error: syntax error, unexpected $end
+0:2(8): preprocessor error: syntax error, unexpected end of file
 
index 457bf82..d3fdc6b 100644 (file)
@@ -83,6 +83,10 @@ def test_output(glcpp, filename, expfile, nl_format='\n'):
     with open(expfile, 'r') as f:
         expected = f.read()
 
+    # Bison 3.6 changed '$end' to 'end of file' in its error messages
+    # See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3181
+    actual = actual.replace('$end', 'end of file')
+
     if actual == expected:
         return (True, [])
     return (False, difflib.unified_diff(actual.splitlines(), expected.splitlines()))