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. 30
      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) @@ -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

30
tests/dtc-checkfails.sh

@ -2,21 +2,27 @@ @@ -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

16
tests/run_tests.sh

@ -158,14 +158,14 @@ dtc_tests () { @@ -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

11
tests/tests.sh

@ -19,3 +19,14 @@ verbose_run () { @@ -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…
Cancel
Save