Browse Source

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
David Gibson 17 years ago committed by Jon Loeliger
parent
commit
5ba0086bfd
  1. 2
      tests/Makefile.tests
  2. 28
      tests/dtc-checkfails.sh
  3. 16
      tests/run_tests.sh
  4. 11
      tests/tests.sh

2
tests/Makefile.tests

@ -26,7 +26,7 @@ TESTS_TARGETS = $(TESTS) $(TESTS_TREES)
TESTS_DEPFILES = $(TESTS:%=%.d) \ TESTS_DEPFILES = $(TESTS:%=%.d) \
$(addprefix $(TESTS_PREFIX),testutils.d trees.d dumptrees.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)%) TESTS_CLEANFILES = $(TESTS_CLEANFILES_L:%=$(TESTS_PREFIX)%)


BIN += $(TESTS) $(TESTS_PREFIX)dumptrees BIN += $(TESTS) $(TESTS_PREFIX)dumptrees

28
tests/dtc-checkfails.sh

@ -2,21 +2,27 @@


. tests.sh . tests.sh


TMPFILE="tmp.out.$$" for x; do
shift
if [ "$x" = "--" ]; then
break;
fi
CHECKS="$CHECKS $x"
done

LOG="tmp.log.$$"


rm -f $TMPFILE rm -f $TMPFILE $LOG


verbose_run "$DTC" -o $TMPFILE "$@" verbose_run_log "$LOG" "$DTC" -o /dev/null "$@"
ret="$?" ret="$?"


if [ -f $TMPFILE ]; then for c in $CHECKS; do
FAIL "output file was created despite bad input" if ! grep -E "^(ERROR)|(Warning) \($c\):" $LOG > /dev/null; then
FAIL "Failed to trigger check \"%c\""
fi fi
done


if [ "$ret" = "2" ]; then rm -f $LOG
PASS
else
FAIL "dtc returned error code $ret instead of 2 (check failed)"
fi


rm -f $TMPFILE PASS

16
tests/run_tests.sh

@ -158,14 +158,14 @@ dtc_tests () {
done done


# Check some checks # Check some checks
run_test dtc-checkfails.sh -I dts -O dtb dup-nodename.dts run_test dtc-checkfails.sh duplicate_node_names -- -I dts -O dtb dup-nodename.dts
run_test dtc-checkfails.sh -I dts -O dtb dup-propname.dts run_test dtc-checkfails.sh duplicate_property_names -- -I dts -O dtb dup-propname.dts
run_test dtc-checkfails.sh -I dts -O dtb dup-phandle.dts run_test dtc-checkfails.sh explicit_phandles -- -I dts -O dtb dup-phandle.dts
run_test dtc-checkfails.sh -I dts -O dtb zero-phandle.dts run_test dtc-checkfails.sh explicit_phandles -- -I dts -O dtb zero-phandle.dts
run_test dtc-checkfails.sh -I dts -O dtb minusone-phandle.dts run_test dtc-checkfails.sh explicit_phandles -- -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 phandle_references -- -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 phandle_references -- -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 name_properties -- -I dts -O dtb bad-name-property.dts
} }


while getopts "vt:m" ARG ; do while getopts "vt:m" ARG ; do

11
tests/tests.sh

@ -19,3 +19,14 @@ verbose_run () {
"$@" > /dev/null 2> /dev/null "$@" > /dev/null 2> /dev/null
fi fi
} }

verbose_run_log () {
LOG="$1"
shift
"$@" &> "$LOG"
ret=$?
if [ -z "$QUIET_TEST" ]; then
cat "$LOG" >&2
fi
return $ret
}

Loading…
Cancel
Save