Browse Source

dtc: Add basic testcases for dtc

This patch adds a handful of simple testcases for dtc.  It adds a dts
file which should generate the same sample tree as is used for the
libfdt testcases, and tests invoking dtc on this dts, plus the
standard batch of libfdt cases on the resulting dtb, which effectively
checks that the dtb is correct.

Because the test framework assumes each testcase is an executable with
the right output conventions, we use a little shell script, dtc.sh, as
a wrapper around dtc itself.  It simply invokes dtc and returns a PASS
or FAIL depending on whether dtc returned an error.

It's not much, but it's a start.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
David Gibson 18 years ago committed by Jon Loeliger
parent
commit
8d59bd3b17
  1. 4
      tests/Makefile.tests
  2. 28
      tests/dtc.sh
  3. 13
      tests/run_tests.sh
  4. 20
      tests/test_tree1.dts

4
tests/Makefile.tests

@ -43,10 +43,10 @@ tests_clean: @@ -43,10 +43,10 @@ tests_clean:
rm -f $(STD_CLEANFILES:%=$(TESTS_PREFIX)%)
rm -f $(TESTS_CLEANFILES)

check: tests
check: tests dtc
cd $(TESTS_PREFIX); ./run_tests.sh

checkv: tests
checkv: tests dtc
cd $(TESTS_PREFIX); ./run_tests.sh -v

ifneq ($(DEPTARGETS),)

28
tests/dtc.sh

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
#! /bin/sh

PASS () {
echo "PASS"
exit 0
}

FAIL () {
echo "FAIL" "$@"
exit 2
}

DTC=../dtc

verbose_run () {
if [ -z "$QUIET_TEST" ]; then
"$@"
else
"$@" > /dev/null 2> /dev/null
fi
}

if verbose_run "$DTC" "$@"; then
PASS
else
ret="$?"
FAIL "dtc returned error code $ret"
fi

13
tests/run_tests.sh

@ -86,6 +86,14 @@ libfdt_tests () { @@ -86,6 +86,14 @@ libfdt_tests () {
run_test truncated_property
}

dtc_tests () {
# Make sure we don't have stale blobs lying around
rm -f *.test.dtb

run_test dtc.sh -f -I dts -O dtb -o dtc_tree1.test.dtb test_tree1.dts
tree1_tests dtc_tree1.test.dtb
}

while getopts "vdt:" ARG ; do
case $ARG in
"v")
@ -98,7 +106,7 @@ while getopts "vdt:" ARG ; do @@ -98,7 +106,7 @@ while getopts "vdt:" ARG ; do
done

if [ -z "$TESTSETS" ]; then
TESTSETS="libfdt"
TESTSETS="libfdt dtc"
fi

for set in $TESTSETS; do
@ -106,6 +114,9 @@ for set in $TESTSETS; do @@ -106,6 +114,9 @@ for set in $TESTSETS; do
"libfdt")
libfdt_tests
;;
"dtc")
dtc_tests
;;
esac
done


20
tests/test_tree1.dts

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
/ {
prop-int = <deadbeef>;
prop-str = "hello world";

subnode1 {
prop-int = <deadbeef>;

subsubnode {
prop-int = <deadbeef>;
};
};

subnode2 {
prop-int = <abcd1234>;

subsubnode {
prop-int = <abcd1234>;
};
};
};
Loading…
Cancel
Save