blob: 9464adb5f853d7506b98ec509f40e9c689031dfe [file] [log] [blame]
#!/bin/sh
# Test diff(1) capabilities
diff -a . . 2>/dev/null && diffArgs="-a" # Assume text files
diff -u . . 2>/dev/null && diffArgs="$diffArgs -u" # Unified diff output
finalExitCode=0
if [ "$1" != "regenerate" ]; then
set -e
fi
LAST_FAILED=""
print_status() {
if [ -n "${LAST_FAILED}" ]; then
echo "Error while processing $LAST_FAILED"
fi
}
trap print_status EXIT
top_srcdir="${top_srcdir:-../..}"
top_builddir="${top_builddir:-../..}"
for ref in ${top_srcdir}/tests/tests-asn1c-compiler/*.asn1.-*; do
# Figure out the initial source file used to generate this output.
src=$(echo "$ref" | sed -e 's/\.-[-a-zA-Z0-9=]*$//')
# Figure out compiler flags used to create the file.
flags=$(echo "$ref" | sed -e 's/.*\.-//')
echo "Checking $src against $ref"
template=.tmp.check-parsing.$$
oldversion=${template}.old
newversion=${template}.new
LANG=C sed -e 's/^found in .*/found in .../' < "$ref" > "$oldversion"
ec=0
(${top_builddir}/asn1c/asn1c -S ${top_srcdir}/skeletons -no-gen-OER -no-gen-PER "-$flags" "$src" 2>&1 | LANG=C sed -e 's/^found in .*/found in .../' > "$newversion") || ec=$?
if [ $? = 0 ]; then
diff $diffArgs "$oldversion" "$newversion" || ec=$?
fi
if [ $ec != 0 ]; then
LAST_FAILED="$ref (from $src)"
finalExitCode=$ec
fi
rm -f $oldversion $newversion
if [ "$1" = "regenerate" ]; then
${top_builddir}/asn1c/asn1c -S ${top_srcdir}/skeletons -no-gen-OER -no-gen-PER "-$flags" "$src" > "$ref" 2>&1
fi
done
exit $finalExitCode