For the `runtests` script, it will generate current results in the
`localResults/` directory and `diff` them against the `baseResults/`.
-The integration tests to run via the `runtests` script is registered
-via various `Test/test-*` text files and `Test/testlist`.
When you want to update the tracked test results, they need to be
copied from `localResults/` to `baseResults/`. This can be done by
the `bump` shell script.
-The list of files tested comes from `testlist`, and lists input shaders
-in this directory, which must all be public for this to work. However,
-you can add your own private list of tests, not tracked here, by using
+You can add your own private list of tests, not tracked publicly, by using
`localtestlist` to list non-tracked tests. This is automatically read
by `runtests` and included in the `diff` and `bump` process.
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 -l 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
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
-#
-# HLSL -> SPIR-V code generation tests
-#
-while read t; do
- case $t in
- \#*)
- # Skip comment lines in the test list file.
- ;;
- *)
- echo Running HLSL-to-SPIR-V $t...
- b=`basename $t`
- $EXE -D -e PixelShaderFunction -H -i $t > $TARGETDIR/$b.out
- diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1
- ;;
- esac
-done < test-hlsl-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 es-link1.frag es-link2.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
-runBulkTest max_vertices_0.geom
-
#
# reflection tests
#
+++ /dev/null
-# Test looping constructs.
-# No tests yet for making sure break and continue from a nested loop
-# goes to the innermost target.
-hlsl.frag
+++ /dev/null
-preprocessor.cpp_style_line_directive.vert
-preprocessor.cpp_style___FILE__.vert
-preprocessor.edge_cases.vert
-preprocessor.errors.vert
-preprocessor.extensions.vert
-preprocessor.function_macro.vert
-preprocessor.include.enabled.vert
-preprocessor.include.disabled.vert
-preprocessor.line.vert
-preprocessor.line.frag
-preprocessor.pragma.vert
-preprocessor.simple.vert
-preprocessor.success_if_parse_would_fail.vert
-preprocessor.defined.vert
-preprocessor.many.endif.vert
-preprocessor.eof_missing.vert
+++ /dev/null
-# Test looping constructs.
-# No tests yet for making sure break and continue from a nested loop
-# goes to the innermost target.
-spv.do-simple.vert
-spv.do-while-continue-break.vert
-spv.for-complex-condition.vert
-spv.for-continue-break.vert
-spv.for-simple.vert
-spv.for-notest.vert
-spv.for-nobody.vert
-spv.while-continue-break.vert
-spv.while-simple.vert
-# vulkan-specific tests
-spv.set.vert
-spv.double.comp
-spv.100ops.frag
-spv.130.frag
-spv.140.frag
-spv.150.geom
-spv.150.vert
-spv.300BuiltIns.vert
-spv.300layout.frag
-spv.300layout.vert
-spv.300layoutp.vert
-spv.310.comp
-spv.330.geom
-spv.400.frag
-spv.400.tesc
-spv.400.tese
-spv.420.geom
-spv.430.vert
-spv.accessChain.frag
-spv.aggOps.frag
-spv.always-discard.frag
-spv.always-discard2.frag
-spv.bitCast.frag
-spv.bool.vert
-spv.boolInBlock.frag
-spv.branch-return.vert
-spv.conditionalDiscard.frag
-spv.conversion.frag
-spv.dataOut.frag
-spv.dataOutIndirect.frag
-spv.dataOutIndirect.vert
-spv.deepRvalue.frag
-spv.depthOut.frag
-spv.discard-dce.frag
-spv.doWhileLoop.frag
-spv.earlyReturnDiscard.frag
-spv.flowControl.frag
-spv.forLoop.frag
-spv.forwardFun.frag
-spv.functionCall.frag
-spv.functionSemantics.frag
-spv.interpOps.frag
-spv.int64.frag
-spv.layoutNested.vert
-spv.length.frag
-spv.localAggregates.frag
-spv.loops.frag
-spv.loopsArtificial.frag
-spv.matFun.vert
-spv.matrix.frag
-spv.matrix2.frag
-spv.memoryQualifier.frag
-spv.merge-unreachable.frag
-spv.newTexture.frag
-spv.noDeadDecorations.vert
-spv.nonSquare.vert
-spv.Operations.frag
-spv.intOps.vert
-spv.precision.frag
-spv.prepost.frag
-spv.qualifiers.vert
-spv.shaderBallot.comp
-spv.shaderGroupVote.comp
-spv.shiftOps.frag
-spv.simpleFunctionCall.frag
-spv.simpleMat.vert
-spv.sparseTexture.frag
-spv.sparseTextureClamp.frag
-spv.structAssignment.frag
-spv.structDeref.frag
-spv.structure.frag
-spv.switch.frag
-spv.swizzle.frag
-spv.test.frag
-spv.test.vert
-spv.texture.frag
-spv.texture.vert
-spv.image.frag
-spv.types.frag
-spv.uint.frag
-spv.uniformArray.frag
-spv.variableArrayIndex.frag
-spv.varyingArray.frag
-spv.varyingArrayIndirect.frag
-spv.voidFunction.frag
-spv.whileLoop.frag
-spv.AofA.frag
-spv.queryL.frag
-spv.separate.frag
-spv.shortCircuit.frag
-spv.pushConstant.vert
-spv.subpass.frag
-spv.specConstant.vert
-spv.specConstant.comp
-spv.specConstantComposite.vert
-spv.specConstantOperations.vert
-spv.precise.tese
-spv.precise.tesc
-# GLSL-level semantics
-vulkan.frag
-vulkan.vert
-vulkan.comp
+++ /dev/null
-sample.frag
-sample.vert
-decls.frag
-specExamples.frag
-specExamples.vert
-versionsClean.frag
-versionsClean.vert
-versionsErrors.frag
-versionsErrors.vert
-100.frag
-120.vert
-120.frag
-130.vert
-130.frag
-140.vert
-140.frag
-150.vert
-150.geom
-150.frag
-precision.frag
-precision.vert
-nonSquare.vert
-matrixError.vert
-cppSimple.vert
-cppIndent.vert
-cppNest.vert
-cppComplexExpr.vert
-badChars.frag
-pointCoord.frag
-array.frag
-array100.frag
-comment.frag
-300.vert
-300.frag
-300BuiltIns.frag
-300layout.vert
-300layout.frag
-300operations.frag
-300block.frag
-310.comp
-310.vert
-310.geom
-310.frag
-310.tesc
-310.tese
-310implicitSizeArrayError.vert
-310AofA.vert
-330.frag
-330comp.frag
-constErrors.frag
-constFold.frag
-errors.frag
-forwardRef.frag
-uint.frag
-switch.frag
-tokenLength.vert
-100Limits.vert
-100scope.vert
-110scope.vert
-300scope.vert
-400.frag
-420.frag
-420.vert
-420.geom
-420_size_gl_in.geom
-430scope.vert
-lineContinuation100.vert
-lineContinuation.vert
-numeral.frag
-400.geom
-400.tesc
-400.tese
-410.tesc
-420.tesc
-420.tese
-410.geom
-430.vert
-430.comp
-430AofA.frag
-440.vert
-440.frag
-450.vert
-450.geom
-450.tesc
-450.tese
-450.frag
-450.comp
-dce.frag
-atomic_uint.frag
-aggOps.frag
-always-discard.frag
-always-discard2.frag
-conditionalDiscard.frag
-conversion.frag
-dataOut.frag
-dataOutIndirect.frag
-deepRvalue.frag
-depthOut.frag
-discard-dce.frag
-doWhileLoop.frag
-earlyReturnDiscard.frag
-flowControl.frag
-forLoop.frag
-functionCall.frag
-functionSemantics.frag
-length.frag
-localAggregates.frag
-loops.frag
-loopsArtificial.frag
-matrix.frag
-matrix2.frag
-newTexture.frag
-Operations.frag
-prepost.frag
-simpleFunctionCall.frag
-structAssignment.frag
-structDeref.frag
-structure.frag
-swizzle.frag
-syntaxError.frag
-test.frag
-texture.frag
-types.frag
-uniformArray.frag
-variableArrayIndex.frag
-varyingArray.frag
-varyingArrayIndirect.frag
-voidFunction.frag
-whileLoop.frag
-nonVulkan.frag
-negativeArraySize.comp
-spv.atomic.comp
-precise.tesc
-precise_struct_block.vert
-maxClipDistances.vert
"voidFunction.frag",
"whileLoop.frag",
"nonVulkan.frag",
+ "negativeArraySize.comp",
"spv.atomic.comp",
+ "precise.tesc",
+ "precise_struct_block.vert",
+ "maxClipDistances.vert",
})),
FileNameAsCustomTestSuffix
);
"preprocessor.success_if_parse_would_fail.vert",
"preprocessor.defined.vert",
"preprocessor.many.endif.vert",
+ "preprocessor.eof_missing.vert",
})),
FileNameAsCustomTestSuffix
);
"spv.specConstant.vert",
"spv.specConstant.comp",
"spv.specConstantComposite.vert",
+ "spv.specConstantOperations.vert",
+ "spv.precise.tese",
+ "spv.precise.tesc",
})),
FileNameAsCustomTestSuffix
);