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 @@ -211,6 +211,7 @@ TESTS_BIN += dtc
TESTS_BIN += convert-dtsv0
TESTS_BIN += fdtput
TESTS_BIN += fdtget
TESTS_BIN += fdtdump

include tests/Makefile.tests


30
tests/fdtdump-runtest.sh

@ -0,0 +1,30 @@ @@ -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 @@ @@ -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 () { @@ -138,6 +138,13 @@ run_fdtput_test () {
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 () {
TREE=$1

@ -602,6 +609,25 @@ utilfdt_tests () { @@ -602,6 +609,25 @@ utilfdt_tests () {
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
case $ARG in
"v")
@ -620,7 +646,7 @@ while getopts "vt:me" ARG ; do @@ -620,7 +646,7 @@ while getopts "vt:me" ARG ; do
done

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

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


1
tests/tests.sh

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

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

Loading…
Cancel
Save