dtc: More detailed testing of tree checks
This patch modifies the dtc-checkfails.sh testcase wrapper so that instead of testing just that dtc fails with a particular error code on the sample input, it scans dtc's stderr output looking for a message that dtc failed a specific check or checks. This has several advantages: - It means we more precisely check dtc's checking behaviour - It means we can check for generation of warnings using the same script - It means we can test cases where dtc should generate multiple errors or warnings from different checks Signed-off-by: David Gibson <david@gibson.dropbear.id.au>main
parent
d6060bd231
commit
5ba0086bfd
|
@ -26,7 +26,7 @@ TESTS_TARGETS = $(TESTS) $(TESTS_TREES)
|
|||
TESTS_DEPFILES = $(TESTS:%=%.d) \
|
||||
$(addprefix $(TESTS_PREFIX),testutils.d trees.d dumptrees.d)
|
||||
|
||||
TESTS_CLEANFILES_L = *.output vglog.* vgcore.* *.dtb *.test.dts
|
||||
TESTS_CLEANFILES_L = *.output vglog.* vgcore.* *.dtb *.test.dts tmp.*
|
||||
TESTS_CLEANFILES = $(TESTS_CLEANFILES_L:%=$(TESTS_PREFIX)%)
|
||||
|
||||
BIN += $(TESTS) $(TESTS_PREFIX)dumptrees
|
||||
|
|
|
@ -2,21 +2,27 @@
|
|||
|
||||
. tests.sh
|
||||
|
||||
TMPFILE="tmp.out.$$"
|
||||
for x; do
|
||||
shift
|
||||
if [ "$x" = "--" ]; then
|
||||
break;
|
||||
fi
|
||||
CHECKS="$CHECKS $x"
|
||||
done
|
||||
|
||||
rm -f $TMPFILE
|
||||
LOG="tmp.log.$$"
|
||||
|
||||
verbose_run "$DTC" -o $TMPFILE "$@"
|
||||
rm -f $TMPFILE $LOG
|
||||
|
||||
verbose_run_log "$LOG" "$DTC" -o /dev/null "$@"
|
||||
ret="$?"
|
||||
|
||||
if [ -f $TMPFILE ]; then
|
||||
FAIL "output file was created despite bad input"
|
||||
fi
|
||||
for c in $CHECKS; do
|
||||
if ! grep -E "^(ERROR)|(Warning) \($c\):" $LOG > /dev/null; then
|
||||
FAIL "Failed to trigger check \"%c\""
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$ret" = "2" ]; then
|
||||
PASS
|
||||
else
|
||||
FAIL "dtc returned error code $ret instead of 2 (check failed)"
|
||||
fi
|
||||
rm -f $LOG
|
||||
|
||||
rm -f $TMPFILE
|
||||
PASS
|
||||
|
|
|
@ -158,14 +158,14 @@ dtc_tests () {
|
|||
done
|
||||
|
||||
# Check some checks
|
||||
run_test dtc-checkfails.sh -I dts -O dtb dup-nodename.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb dup-propname.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb dup-phandle.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb zero-phandle.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb minusone-phandle.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb nonexist-node-ref.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb nonexist-label-ref.dts
|
||||
run_test dtc-checkfails.sh -I dts -O dtb bad-name-property.dts
|
||||
run_test dtc-checkfails.sh duplicate_node_names -- -I dts -O dtb dup-nodename.dts
|
||||
run_test dtc-checkfails.sh duplicate_property_names -- -I dts -O dtb dup-propname.dts
|
||||
run_test dtc-checkfails.sh explicit_phandles -- -I dts -O dtb dup-phandle.dts
|
||||
run_test dtc-checkfails.sh explicit_phandles -- -I dts -O dtb zero-phandle.dts
|
||||
run_test dtc-checkfails.sh explicit_phandles -- -I dts -O dtb minusone-phandle.dts
|
||||
run_test dtc-checkfails.sh phandle_references -- -I dts -O dtb nonexist-node-ref.dts
|
||||
run_test dtc-checkfails.sh phandle_references -- -I dts -O dtb nonexist-label-ref.dts
|
||||
run_test dtc-checkfails.sh name_properties -- -I dts -O dtb bad-name-property.dts
|
||||
}
|
||||
|
||||
while getopts "vt:m" ARG ; do
|
||||
|
|
|
@ -19,3 +19,14 @@ verbose_run () {
|
|||
"$@" > /dev/null 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
verbose_run_log () {
|
||||
LOG="$1"
|
||||
shift
|
||||
"$@" &> "$LOG"
|
||||
ret=$?
|
||||
if [ -z "$QUIET_TEST" ]; then
|
||||
cat "$LOG" >&2
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue