glslang/Test/runtests
Andrew Woloszyn aae1ad8296 Added error output to the preprocessor.
This patch distinguishes preprocessing errors with normal parsing
errors and gives glslangValidator the ability to output preprocessing
errors.
2015-07-14 16:02:25 -04:00

111 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
TARGETDIR=localResults
BASEDIR=baseResults
EXE=../build/install/bin/glslangValidator
HASERROR=0
mkdir -p localResults
#
# configuration file tests
#
echo running configuration file test
$EXE -c > $TARGETDIR/test.conf
diff -b $BASEDIR/test.conf $TARGETDIR/test.conf || HASERROR=1
$EXE -i -l $TARGETDIR/test.conf specExamples.vert > $TARGETDIR/specExamples.vert.out
diff -b $BASEDIR/specExamples.vert.out $TARGETDIR || HASERROR=1
$EXE 100Limits.vert 100.conf > $TARGETDIR/100LimitsConf.vert.out
diff -b $BASEDIR/100LimitsConf.vert.out $TARGETDIR/100LimitsConf.vert.out || HASERROR=1
#
# isolated compilation tests
#
while read t; do
echo Running $t...
b=`basename $t`
$EXE -i -l $t > $TARGETDIR/$b.out
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
done < testlist
if [ -a localtestlist ]
then
while read t; do
echo Running $t...
b=`basename $t`
$EXE -i -l $t > $TARGETDIR/$b.out
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
done < localtestlist
fi
#
# SPIR-V code generation tests
#
while read t; do
case $t in
\#*)
# Skip comment lines in the test list file.
;;
*)
echo Running SPIR-V $t...
b=`basename $t`
$EXE -H $t > $TARGETDIR/$b.out
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
;;
esac
done < test-spirv-list
rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv
#
# Preprocessor tests
#
while read t; do
echo Running Preprocessor $t...
b=`basename $t`
$EXE -E $t > $TARGETDIR/$b.out 2> $TARGETDIR/$b.err
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
diff -b $BASEDIR/$b.err $TARGETDIR/$b.err || HASERROR=1
done < test-preprocessor-list
#
# grouped shaders for bulk (faster) tests
#
function runBulkTest {
echo Running $*...
$EXE -i -l -t $* > $TARGETDIR/$1.out
diff -b $BASEDIR/$1.out $TARGETDIR/$1.out || HASERROR=1
}
runBulkTest mains1.frag mains2.frag noMain1.geom noMain2.geom
runBulkTest noMain.vert mains.frag
runBulkTest link1.frag link2.frag link3.frag
runBulkTest recurse1.vert recurse1.frag recurse2.frag
runBulkTest 300link.frag
runBulkTest 300link2.frag
runBulkTest 300link3.frag
runBulkTest empty.frag empty2.frag empty3.frag
runBulkTest 150.tesc 150.tese 400.tesc 400.tese 410.tesc 420.tesc 420.tese
#
# reflection tests
#
echo Running reflection...
$EXE -l -q reflection.vert > $TARGETDIR/reflection.vert.out
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
#
# multi-threaded test
#
echo Comparing single thread to multithread for all tests in current directory...
$EXE -i *.vert *.geom *.frag *.tes* *.comp > singleThread.out
$EXE -i *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out
diff singleThread.out multiThread.out || HASERROR=1
if [ $HASERROR -eq 0 ]
then
echo Tests Succeeded.
else
echo Tests Failed.
fi
exit $HASERROR