Configtool: add integrity tests for Configtool output.

Add a test that puts the stock config files through the
Configtool input/output parsers and verifies the output matches
the input.  If Configtool breaks down in the future and produces
different output, this should catch it.

If this fails because of some intentional change in the tool or
in the stock config files, then the tool or stock config files
should be updated to be compatible again before merging the result.
This commit is contained in:
Phil Hord 2016-06-03 17:26:47 -04:00 committed by Markus Hitter
parent 2a6f00454f
commit 21ac717d6d
2 changed files with 40 additions and 0 deletions

View File

@ -150,6 +150,8 @@ regressiontests:
EXTRA_CFLAGS=-Werror all
# Check config files for integrity.
testcases/check_integrity.sh
# Check configtool's view of the config files.
testcases/check_configtool.sh
@# Nonstandard builds go into a subdirectory of build/, see definition of
@# $(BUILDDIR) above. Let's clean that up on success.
rm -rf $(BUILDDIR)/testcases/ $(BUILDDIR)/sim/

38
testcases/check_configtool.sh Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
# Check that the output from configtool.py matches the input when no changes
# are made in the GUI. This requires that the distributed config files match
# the format of the configtool template files, but this is desired anyway.
# Stop on error
set -e
# Create an output directory for verification
OUTDIR=build/test
rm -rf ${OUTDIR}
mkdir -p ${OUTDIR}
EXITCODE=0
# Check board and printer configurations.
for IN in $(git ls-files config/*.h); do
# Use configtool.py to regenerate headers for comparison
OUT=${OUTDIR}/$(basename ${IN})
./configtool.py --load=${IN} --save=${OUT} --quit
# Strip the "help text" comments from the source and output files
perl -p0i -e 's#/\*.*?\*/##sg' ${OUT}
perl -p0 -e 's#/\*.*?\*/##sg' ${IN} > ${OUT}.cmp
# Fail if the result is different except in whitespace
if ! diff -qBbw ${OUT} ${OUT}.cmp ; then
echo "Configtool integrity test failed on file ${IN}"
echo " Executed: ./configtool.py --load=${IN} --save=${OUT} --quit"
echo " Expected resulting settings to match, but they do not."
diff -Bbw ${OUT} ${OUT}.cmp |sed -e 's/^/ /' || :
EXITCODE=1
fi
done
exit ${EXITCODE}