From d5399197e9e0d8bad13de5c41df3b93804c0558a Mon Sep 17 00:00:00 2001 From: David Gibson Date: Sun, 8 Jul 2012 23:25:22 +1000 Subject: Allow toggling of semantic checks This patch adds -W and -E options to dtc which allow toggling on and off of the various built in semantic checks on the tree. Signed-off-by: David Gibson --- tests/dtc-checkfails.sh | 20 ++++++++++++++++++-- tests/dtc-fails.sh | 30 ++++++++++++++++++++++++++++++ tests/run_tests.sh | 12 ++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100755 tests/dtc-fails.sh (limited to 'tests') diff --git a/tests/dtc-checkfails.sh b/tests/dtc-checkfails.sh index 3f77b13..76ded15 100755 --- a/tests/dtc-checkfails.sh +++ b/tests/dtc-checkfails.sh @@ -4,10 +4,20 @@ for x; do shift + if [ "$x" = "-n" ]; then + for x; do + shift + if [ "$x" = "--" ]; then + break; + fi + NOCHECKS="$NOCHECKS $x" + done + break; + fi if [ "$x" = "--" ]; then break; fi - CHECKS="$CHECKS $x" + YESCHECKS="$YESCHECKS $x" done LOG=tmp.log.$$ @@ -19,10 +29,16 @@ ret="$?" FAIL_IF_SIGNAL $ret -for c in $CHECKS; do +for c in $YESCHECKS; do if ! grep -E "^(ERROR)|(Warning) \($c\):" $LOG > /dev/null; then FAIL "Failed to trigger check \"$c\"" fi done +for c in $NOCHECKS; do + if grep -E "^(ERROR)|(Warning) \($c\):" $LOG > /dev/null; then + FAIL "Incorrectly triggered check \"$c\"" + fi +done + PASS diff --git a/tests/dtc-fails.sh b/tests/dtc-fails.sh new file mode 100755 index 0000000..4ddcb27 --- /dev/null +++ b/tests/dtc-fails.sh @@ -0,0 +1,30 @@ +#! /bin/sh + +. ./tests.sh + +if [ "$1" = "-n" ]; then + NEG="$1" + shift +fi + +OUTPUT="$1" +shift + +verbose_run $VALGRIND "$DTC" -o "$OUTPUT" "$@" +ret="$?" + +FAIL_IF_SIGNAL $ret + +if [ -n "$NEG" ]; then + if [ ! -e "$OUTPUT" ]; then + FAIL "Produced no output" + fi +else + if [ -e "$OUTPUT" ]; then + FAIL "Incorrectly produced output" + fi +fi + +rm -f "$OUTPUT" + +PASS diff --git a/tests/run_tests.sh b/tests/run_tests.sh index e0299e3..169a829 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -396,6 +396,18 @@ dtc_tests () { run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label5.dts run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label6.dts + # Check warning options + run_sh_test dtc-checkfails.sh address_cells_is_cell interrupt_cells_is_cell -n size_cells_is_cell -- -Wno_size_cells_is_cell -I dts -O dtb bad-ncells.dts + run_sh_test dtc-fails.sh -n test-warn-output.test.dtb -I dts -O dtb bad-ncells.dts + run_sh_test dtc-fails.sh test-error-output.test.dtb -I dts -O dtb bad-ncells.dts -Esize_cells_is_cell + run_sh_test dtc-checkfails.sh always_fail -- -Walways_fail -I dts -O dtb test_tree1.dts + run_sh_test dtc-checkfails.sh -n always_fail -- -Walways_fail -Wno_always_fail -I dts -O dtb test_tree1.dts + run_sh_test dtc-fails.sh test-negation-1.test.dtb -Ealways_fail -I dts -O dtb test_tree1.dts + run_sh_test dtc-fails.sh -n test-negation-2.test.dtb -Ealways_fail -Eno_always_fail -I dts -O dtb test_tree1.dts + run_sh_test dtc-fails.sh test-negation-3.test.dtb -Ealways_fail -Wno_always_fail -I dts -O dtb test_tree1.dts + run_sh_test dtc-fails.sh -n test-negation-4.test.dtb -Esize_cells_is_cell -Eno_size_cells_is_cell -I dts -O dtb bad-ncells.dts + run_sh_test dtc-checkfails.sh size_cells_is_cell -- -Esize_cells_is_cell -Eno_size_cells_is_cell -I dts -O dtb bad-ncells.dts + # Check for proper behaviour reading from stdin run_dtc_test -I dts -O dtb -o stdin_dtc_tree1.test.dtb - < test_tree1.dts run_wrap_test cmp stdin_dtc_tree1.test.dtb dtc_tree1.test.dtb -- cgit v1.2.1