summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2018-03-06 13:45:23 +1100
committerDavid Gibson <david@gibson.dropbear.id.au>2018-03-06 13:45:36 +1100
commit119e27300359b309e27bfd94b506ea5ad24f1cfc (patch)
tree0719356b88003a89f4041a091bd1c79ebfccbf89
parentaadd0b65c987d21776354800fdf24ad35c0ffe68 (diff)
downloaddevice-tree-compiler-119e27300359b309e27bfd94b506ea5ad24f1cfc.tar.gz
Improve tests for dtc overlay generation
So far, the tests for generating runtime overlays with dtc weren't checking the syntactic sugar. This adds such a test. Furthermore the existing tests were only minimally testing dtc's output for the overlay. This adds a test comparing the dtc output with the more or less manually constructed overlays we already have for testing libfdt's overlay application code. This does require some minor changes to that manually constructed overlay which don't change the sematics but re-order / rename things to match the way dtc does it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--tests/overlay_overlay.dts94
-rw-r--r--tests/overlay_overlay_manual_fixups.dts34
-rw-r--r--tests/overlay_overlay_nosugar.dts86
-rwxr-xr-xtests/run_tests.sh13
4 files changed, 146 insertions, 81 deletions
diff --git a/tests/overlay_overlay.dts b/tests/overlay_overlay.dts
index b6d841b..c4ef1d4 100644
--- a/tests/overlay_overlay.dts
+++ b/tests/overlay_overlay.dts
@@ -9,78 +9,44 @@
/dts-v1/;
/plugin/;
-/ {
- /* Test that we can change an int by another */
- fragment@0 {
- target = <&test>;
-
- __overlay__ {
- test-int-property = <43>;
- };
- };
-
- /* Test that we can replace a string by a longer one */
- fragment@1 {
- target = <&test>;
-
- __overlay__ {
- test-str-property = "foobar";
- };
- };
-
- /* Test that we add a new property */
- fragment@2 {
- target = <&test>;
-
- __overlay__ {
- test-str-property-2 = "foobar2";
- };
- };
-
- /* Test that we add a new node (by phandle) */
- fragment@3 {
- target = <&test>;
+/* Test that we can change an int by another */
+&test {
+ test-int-property = <43>;
+};
- __overlay__ {
- new-node {
- new-property;
- };
- };
- };
+/* Test that we can replace a string by a longer one */
+&test {
+ test-str-property = "foobar";
+};
- fragment@5 {
- target = <&test>;
+/* Test that we add a new property */
+&test {
+ test-str-property-2 = "foobar2";
+};
- __overlay__ {
- local: new-local-node {
- new-property;
- };
- };
+/* Test that we add a new node (by phandle) */
+&test {
+ new-node {
+ new-property;
};
+};
- fragment@6 {
- target = <&test>;
-
- __overlay__ {
- test-phandle = <&test>, <&local>;
- };
+&test {
+ local: new-local-node {
+ new-property;
};
+};
- fragment@7 {
- target = <&test>;
-
- __overlay__ {
- test-several-phandle = <&local>, <&local>;
- };
- };
+&test {
+ test-phandle = <&test>, <&local>;
+};
- fragment@8 {
- target = <&test>;
+&test {
+ test-several-phandle = <&local>, <&local>;
+};
- __overlay__ {
- sub-test-node {
- new-sub-test-property;
- };
- };
+&test {
+ sub-test-node {
+ new-sub-test-property;
};
};
diff --git a/tests/overlay_overlay_manual_fixups.dts b/tests/overlay_overlay_manual_fixups.dts
index e34c4fc..a5715b6 100644
--- a/tests/overlay_overlay_manual_fixups.dts
+++ b/tests/overlay_overlay_manual_fixups.dts
@@ -50,7 +50,7 @@
};
};
- fragment@5 {
+ fragment@4 {
target = <0xffffffff /*&test*/>;
__overlay__ {
@@ -60,7 +60,7 @@
};
};
- fragment@6 {
+ fragment@5 {
target = <0xffffffff /*&test*/>;
__overlay__ {
@@ -68,7 +68,7 @@
};
};
- fragment@7 {
+ fragment@6 {
target = <0xffffffff /*&test*/>;
__overlay__ {
@@ -76,7 +76,7 @@
};
};
- fragment@8 {
+ fragment@7 {
target = <0xffffffff /*&test*/>;
__overlay__ {
@@ -86,27 +86,27 @@
};
};
+ __fixups__ {
+ test = "/fragment@0:target:0",
+ "/fragment@1:target:0",
+ "/fragment@2:target:0",
+ "/fragment@3:target:0",
+ "/fragment@4:target:0",
+ "/fragment@5:target:0",
+ "/fragment@5/__overlay__:test-phandle:0",
+ "/fragment@6:target:0",
+ "/fragment@7:target:0";
+ };
__local_fixups__ {
- fragment@6 {
+ fragment@5 {
__overlay__ {
test-phandle = <4>;
};
};
- fragment@7 {
+ fragment@6 {
__overlay__ {
test-several-phandle = <0 4>;
};
};
};
- __fixups__ {
- test = "/fragment@0:target:0",
- "/fragment@1:target:0",
- "/fragment@2:target:0",
- "/fragment@3:target:0",
- "/fragment@5:target:0",
- "/fragment@6:target:0",
- "/fragment@6/__overlay__:test-phandle:0",
- "/fragment@7:target:0",
- "/fragment@8:target:0";
- };
};
diff --git a/tests/overlay_overlay_nosugar.dts b/tests/overlay_overlay_nosugar.dts
new file mode 100644
index 0000000..b6d841b
--- /dev/null
+++ b/tests/overlay_overlay_nosugar.dts
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2016 NextThing Co
+ * Copyright (c) 2016 Free Electrons
+ * Copyright (c) 2016 Konsulko Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+/dts-v1/;
+/plugin/;
+
+/ {
+ /* Test that we can change an int by another */
+ fragment@0 {
+ target = <&test>;
+
+ __overlay__ {
+ test-int-property = <43>;
+ };
+ };
+
+ /* Test that we can replace a string by a longer one */
+ fragment@1 {
+ target = <&test>;
+
+ __overlay__ {
+ test-str-property = "foobar";
+ };
+ };
+
+ /* Test that we add a new property */
+ fragment@2 {
+ target = <&test>;
+
+ __overlay__ {
+ test-str-property-2 = "foobar2";
+ };
+ };
+
+ /* Test that we add a new node (by phandle) */
+ fragment@3 {
+ target = <&test>;
+
+ __overlay__ {
+ new-node {
+ new-property;
+ };
+ };
+ };
+
+ fragment@5 {
+ target = <&test>;
+
+ __overlay__ {
+ local: new-local-node {
+ new-property;
+ };
+ };
+ };
+
+ fragment@6 {
+ target = <&test>;
+
+ __overlay__ {
+ test-phandle = <&test>, <&local>;
+ };
+ };
+
+ fragment@7 {
+ target = <&test>;
+
+ __overlay__ {
+ test-several-phandle = <&local>, <&local>;
+ };
+ };
+
+ fragment@8 {
+ target = <&test>;
+
+ __overlay__ {
+ sub-test-node {
+ new-sub-test-property;
+ };
+ };
+ };
+};
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 0d30edf..4d944fa 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -239,11 +239,24 @@ dtc_overlay_tests () {
run_test check_path overlay_base.test.dtb not-exists "/__fixups__"
run_test check_path overlay_base.test.dtb not-exists "/__local_fixups__"
+ # With syntactic sugar
run_dtc_test -I dts -O dtb -o overlay_overlay.test.dtb overlay_overlay.dts
run_test check_path overlay_overlay.test.dtb not-exists "/__symbols__"
run_test check_path overlay_overlay.test.dtb exists "/__fixups__"
run_test check_path overlay_overlay.test.dtb exists "/__local_fixups__"
+ # Without syntactic sugar
+ run_dtc_test -I dts -O dtb -o overlay_overlay_nosugar.test.dtb overlay_overlay.dts
+ run_test check_path overlay_overlay_nosugar.test.dtb not-exists "/__symbols__"
+ run_test check_path overlay_overlay_nosugar.test.dtb exists "/__fixups__"
+ run_test check_path overlay_overlay_nosugar.test.dtb exists "/__local_fixups__"
+
+ # Check building works the same as manual constructions
+ run_test dtbs_equal_ordered overlay_overlay.test.dtb overlay_overlay_nosugar.test.dtb
+
+ run_dtc_test -I dts -O dtb -o overlay_overlay_manual_fixups.test.dtb overlay_overlay_manual_fixups.dts
+ run_test dtbs_equal_ordered overlay_overlay.test.dtb overlay_overlay_manual_fixups.test.dtb
+
run_test overlay overlay_base.test.dtb overlay_overlay.test.dtb
# test plugin source to dtb and back