Browse Source

Add a basic test for fdtdump

We can test fdtdump by comparing its output with the source file that was
compiled by dtc. Add a simple test that should at least catch regressions
in basic functionality.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
Simon Glass 10 years ago committed by David Gibson
parent
commit
76a65b14d1
  1. 1
      Makefile
  2. 30
      tests/fdtdump-runtest.sh
  3. 37
      tests/fdtdump.dts
  4. 31
      tests/run_tests.sh
  5. 1
      tests/tests.sh

1
Makefile

@ -211,6 +211,7 @@ TESTS_BIN += dtc
TESTS_BIN += convert-dtsv0 TESTS_BIN += convert-dtsv0
TESTS_BIN += fdtput TESTS_BIN += fdtput
TESTS_BIN += fdtget TESTS_BIN += fdtget
TESTS_BIN += fdtdump


include tests/Makefile.tests include tests/Makefile.tests



30
tests/fdtdump-runtest.sh

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

# Arguments:
# $1 - source file to compile and compare with fdtdump output of the
# compiled file.

. ./tests.sh

dts="$1"
dtb="${dts}.dtb"
out="${dts}.out"
LOG=tmp.log.$$

files="$dtb $out $LOG"

rm -f $files
trap "rm -f $files" 0

verbose_run_log_check "$LOG" $VALGRIND $DTC -O dtb $dts -o $dtb
$FDTDUMP ${dtb} | grep -v "//" >${out}

if diff -w $dts $out >/dev/null; then
PASS
else
if [ -z "$QUIET_TEST" ]; then
echo "DIFF :-:"
diff -u -w $dts $out
fi
FAIL "Results differ from expected"
fi

37
tests/fdtdump.dts

@ -0,0 +1,37 @@
/dts-v1/;

/memreserve/ 0 0xe;
/ {
model = "MyBoardName";
compatible = "MyBoardName", "MyBoardFamilyName";
#address-cells = <0x00000002>;
#size-cells = <0x00000002>;
cpus {
linux,phandle = <0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
PowerPC,970@0 {
device_type = "cpu";
reg = <0x00000000>;
linux,boot-cpu;
};
PowerPC,970@1 {
device_type = "cpu";
reg = <0x00000001>;
};
};
randomnode {
string = "foo", "stuff";
bytes = [61 62 63 64 65];
child {
};
};
memory@0 {
device_type = "memory";
reg = <0x00000000 0x00000123 0x00000456 0x87654321>;
};
chosen {
bootargs = "root=/dev/sda2";
linux,platform = <0x00000600>;
};
};

31
tests/run_tests.sh

@ -138,6 +138,13 @@ run_fdtput_test () {
base_run_test sh fdtput-runtest.sh "$expect" "$@" base_run_test sh fdtput-runtest.sh "$expect" "$@"
} }


run_fdtdump_test() {
file="$1"
shorten_echo fdtdump-runtest.sh "$file"
echo -n ": "
base_run_test sh fdtdump-runtest.sh "$file"
}

tree1_tests () { tree1_tests () {
TREE=$1 TREE=$1


@ -602,6 +609,25 @@ utilfdt_tests () {
run_test utilfdt_test run_test utilfdt_test
} }


fdtdump_tests () {
run_fdtdump_test fdtdump.dts
return

local dts=fdtdump.dts
local dtb=fdtdump.dts.dtb
local out=fdtdump.dts.out
run_dtc_test -O dtb $dts -o ${dtb}
$FDTDUMP ${dtb} | grep -v "//" >${out}
if cmp $dts $out >/dev/null; then
PASS
else
if [ -z "$QUIET_TEST" ]; then
diff -w fdtdump.dts $out
fi
FAIL "Results differ from expected"
fi
}

while getopts "vt:me" ARG ; do while getopts "vt:me" ARG ; do
case $ARG in case $ARG in
"v") "v")
@ -620,7 +646,7 @@ while getopts "vt:me" ARG ; do
done done


if [ -z "$TESTSETS" ]; then if [ -z "$TESTSETS" ]; then
TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget fdtput" TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget fdtput fdtdump"
fi fi


# Make sure we don't have stale blobs lying around # Make sure we don't have stale blobs lying around
@ -646,6 +672,9 @@ for set in $TESTSETS; do
"fdtput") "fdtput")
fdtput_tests fdtput_tests
;; ;;
"fdtdump")
fdtdump_tests
;;
esac esac
done done



1
tests/tests.sh

@ -21,6 +21,7 @@ FAIL_IF_SIGNAL () {
DTC=../dtc DTC=../dtc
DTGET=../fdtget DTGET=../fdtget
DTPUT=../fdtput DTPUT=../fdtput
FDTDUMP=../fdtdump


verbose_run () { verbose_run () {
if [ -z "$QUIET_TEST" ]; then if [ -z "$QUIET_TEST" ]; then

Loading…
Cancel
Save