glsl/glcpp: Integrate recent glcpp-test-cr-lf test into "make check"
authorCarl Worth <cworth@cworth.org>
Thu, 3 Jul 2014 20:25:47 +0000 (13:25 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 7 Aug 2014 23:08:29 +0000 (16:08 -0700)
Beyond just listing this in the TESTS variable in Makefile.am, only minor
changes were needed to make this work. The primary issue is that the build
system runs the test script from a different directory than the script
itself. So we have to use the $srcdir variable to find the test input files.

Using $srcdir in this way also ensures that this test works when using an
out-of-tree build.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/glsl/.gitignore
src/glsl/Makefile.am
src/glsl/glcpp/tests/.gitignore
src/glsl/glcpp/tests/glcpp-test-cr-lf

index 43720f60b5d03b0eb9f950a9d662521c316f7be3..dda423f83db6df30eded8a2aacf772e46de3d568 100644 (file)
@@ -4,3 +4,7 @@ glsl_parser.cpp
 glsl_parser.h
 glsl_parser.output
 glsl_test
+subtest-cr/
+subtest-lf/
+subtest-cr-lf/
+subtest-lf-cr/
index 2a20d11932845c35f11f79a4f31da1926e8ca3de..0ccc81d752d4a4ba060f4e6ddcbca43f8b5b21fa 100644 (file)
@@ -33,6 +33,7 @@ AM_CXXFLAGS = $(VISIBILITY_CXXFLAGS)
 include Makefile.sources
 
 TESTS = glcpp/tests/glcpp-test                         \
+       glcpp/tests/glcpp-test-cr-lf                    \
        tests/general-ir-test                           \
        tests/optimization-test                         \
        tests/sampler-types-test                        \
index f18a9bb4b3a6f46896c36b78ecba6c05cedc6dca..3802c850a3e3708ce5147806633ff28a52a756ba 100644 (file)
@@ -1,3 +1,4 @@
 subtest-cr/
+subtest-lf/
 subtest-cr-lf/
 subtest-lf-cr/
index 708fce55aace4271672e2619715d6768660285f2..edaa29d19cb63038cca65eaf5447fd9e4039264a 100755 (executable)
@@ -1,5 +1,18 @@
 #!/bin/sh
 
+# The build system runs this test from a different working directory, and may
+# be in a build directory entirely separate from the source. So if the
+# "srcdir" variable is set, we must use it to locate the test files and the
+# glcpp-test script.
+
+if [ ! -z "$srcdir" ]; then
+   testdir="$srcdir/glcpp/tests"
+   glcpp_test="$srcdir/glcpp/tests/glcpp-test"
+else
+   testdir=.
+   glcpp_test=./glcpp-test
+fi
+
 total=0
 pass=0
 
@@ -69,43 +82,53 @@ done
 # All tests depend on the .out files being present. So first do a
 # normal run of the test suite, (silently) just to create the .out
 # files as a side effect.
-./glcpp-test >/dev/null 2>&1
+rm -rf ./subtest-lf
+mkdir subtest-lf
+for file in "$testdir"/*.c; do
+    base=$(basename "$file")
+    cp "$file" subtest-lf
+done
+
+${glcpp_test} --testdir=subtest-lf >/dev/null 2>&1
 
 echo "===== Testing with \\\\r line terminators (old Mac format) ====="
 
 # Prepare test files with '\r' instead of '\n'
 rm -rf ./subtest-cr
 mkdir subtest-cr
-for file in *.c; do
-    tr "\n" "\r" < "$file" > subtest-cr/"$file"
-    cp "$file".out subtest-cr/"$file".expected
+for file in "$testdir"/*.c; do
+    base=$(basename "$file")
+    tr "\n" "\r" < "$file" > subtest-cr/"$base"
+    cp subtest-lf/"$base".out subtest-cr/"$base".expected
 done
 
-run_test "./glcpp-test --testdir=subtest-cr"
+run_test "${glcpp_test} --testdir=subtest-cr"
 
 echo "===== Testing with \\\\r\\\\n line terminators (DOS format) ====="
 
 # Prepare test files with '\r\n' instead of '\n'
 rm -rf ./subtest-cr-lf
 mkdir subtest-cr-lf
-for file in *.c; do
-    sed -e 's/$/\r/' < "$file" > subtest-cr-lf/"$file"
-    cp "$file".out subtest-cr-lf/"$file".expected
+for file in "$testdir"/*.c; do
+    base=$(basename "$file")
+    sed -e 's/$/\r/' < "$file" > subtest-cr-lf/"$base"
+    cp subtest-lf/"$base".out subtest-cr-lf/"$base".expected
 done
 
-run_test "./glcpp-test --testdir=subtest-cr-lf"
+run_test "${glcpp_test} --testdir=subtest-cr-lf"
 
 echo "===== Testing with \\\\n\\\\r (bizarre, but allowed by GLSL spec.) ====="
 
 # Prepare test files with '\n\r' instead of '\n'
 rm -rf ./subtest-lf-cr
 mkdir subtest-lf-cr
-for file in *.c; do
-    tr "\n" "\r" < "$file" | sed -e 's/\r/\n\r/g' > subtest-lf-cr/"$file"
-    cp "$file".out subtest-lf-cr/"$file".expected
+for file in "$testdir"/*.c; do
+    base=$(basename "$file")
+    tr "\n" "\r" < "$file" | sed -e 's/\r/\n\r/g' > subtest-lf-cr/"$base"
+    cp subtest-lf/"$base".out subtest-lf-cr/"$base".expected
 done
 
-run_test "./glcpp-test --testdir=subtest-lf-cr"
+run_test "${glcpp_test} --testdir=subtest-lf-cr"
 
 echo ""
 echo "$pass/$total tests returned correct results"