openfoam/tutorials/IO/dictionary/TestParsing
Mark Olesen 44052de594 TUT: skip some tutorials when dynamicCode is not available
- silence failed restoration of controlDict from controlDict.orig
  (idempotent?)
2020-08-06 19:34:20 +02:00

123 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
#------------------------------------------------------------------------------
echo "dictionary input tests"
verbose=false
npass=0
nwarn=0
nfail=0
# Increase verbosity on demand, with the -verbose flag
for i in "$@"
do
case "$i" in (-verbose*) verbose=true ;; esac
done
foamDictionary -help > /dev/null 2>&1 || {
echo "Error: non-functional foamDictionary"
exit 2
}
# Some tests may need #calc
unset noDynamicCode
canCompile || noDynamicCode=true
for dict in \
good*.dict \
warn*.dict \
fatal*.dict \
;
do
[ -f "$dict" ] || continue # protect against bad globs
if [ "$noDynamicCode" = true ] && grep -q '#calc' "$dict"
then
continue
fi
# capture stderr, ignore stdout
stderr=$(foamDictionary -keywords $dict 2>&1 >/dev/null)
exitCode=$?
case "$dict" in
*fatal*)
if [ $exitCode -eq 0 ]
then
echo "NOK did not detect fatal input $dict"
nfail=$(($fail + 1))
else
echo "OK detected fatal input $dict"
npass=$(($npass + 1))
fi
;;
*good*)
if [ $exitCode -eq 0 ]
then
npass=$(($npass + 1))
if [ "${#stderr}" -gt 0 ]
then
# count unexpected warnings
nwarn=$(($nwarn + 1))
echo "NOK unexpected warnings: $dict"
else
echo "OK good input $dict"
fi
else
echo "NOK failed input $dict"
nfail=$(($fail + 1))
fi
;;
*warn*)
if [ $exitCode -eq 0 ]
then
npass=$(($npass + 1))
if [ "${#stderr}" -gt 0 ]
then
echo "OK trapped warnings: $dict"
else
# count missing warnings
nwarn=$(($nwarn + 1))
echo "NOK missing expected warnings: $dict"
fi
else
nfail=$(($fail + 1))
echo "NOK failed (not warn) input $dict"
fi
;;
esac
if [ "$verbose" = true ] && [ "${#stderr}" -gt 0 ]
then
echo "================" 1>&2
echo "dictionary = $dict" 1>&2
echo "$stderr" 1>&2
echo "================" 1>&2
fi
done
echo "$npass passed"
echo "$nwarn warnings"
echo "$nfail failed"
if test $nfail -eq 0
then
echo
echo End
echo
else
echo "Found $nfail FatalErrors"
exit 1
fi
#------------------------------------------------------------------------------