Lines Matching +full:label +full:- +full:prefix

2 # SPDX-License-Identifier: BSD-3-Clause
23 # - to stop on the first failure with shorter traceback output,
24 # use '-x --tb=native'
25 # - to drop into a debugger on failure, use '--pdb'
26 # - to run a particular test function or functions, use
27 # '-k test_function_pattern_goes_here'
34 fd, path = tempfile.mkstemp(prefix='pytest-', suffix='.dts')
36 os.write(fd, dts.encode('utf-8'))
44 representation is expected[1:-1].
52 expected = expected[1:-1]
53 assert actual == expected, f'unexpected round-trip on {dts}'
104 - err: error message must be exactly this
105 - err_endswith: error message must end with this
106 - err_matches: error message must match this regular expression
129 /dts-v1/;
138 /dts-v1/;
148 h = /bits/ 8 < 0x10 0x20 (-1) >;
149 i = /bits/ 16 < 0x10 0x20 (-1) >;
150 j = /bits/ 32 < 0x10 0x20 (-1) >;
151 k = /bits/ 64 < 0x10 0x20 (-1) >;
156 /dts-v1/;
175 /dts-v1/;
184 /dts-v1/;
193 /dts-v1/;
205 /dts-v1/;
214 /dts-v1/;
224 /dts-v1/;
230 ":4 (column 10): parse error: expected two-digit byte or ']'")
236 /dts-v1/;
245 /dts-v1/;
255 /dts-v1/;
267 /dts-v1/;
275 /dts-v1/;
284 /dts-v1/;
294 /dts-v1/;
303 /dts-v1/;
320 /dts-v1/;
329 /dts-v1/;
339 /dts-v1/;
346 /dts-v1/;
355 /dts-v1/;
370 /dts-v1/;
409 /dts-v1/;
430 /dts-v1/;
438 ":6 (column 1): parse error: undefined node label 'missing'")
441 /dts-v1/;
452 /dts-v1/;
465 def verify_label2prop(label, expected): argument
466 actual = dt.label2prop[label].name
467 assert actual == expected, f"label '{label}' mapped to wrong property"
470 /dts-v1/;
486 /dts-v1/;
509 def verify_label2offset(label, expected_prop, expected_offset): argument
510 actual_prop, actual_offset = dt.label2prop_offset[label]
514 f"label '{label}' maps to wrong offset or property"
517 /dts-v1/;
530 /dts-v1/;
561 /dts-v1/;
564 no-unit-addr {
567 unit-addr@ABC {
570 unit-addr-non-numeric@foo-bar {
575 /dts-v1/;
578 no-unit-addr {
580 unit-addr@ABC {
582 unit-addr-non-numeric@foo-bar {
587 verify_unit_addr("/no-unit-addr", "")
588 verify_unit_addr("/unit-addr@ABC", "ABC")
589 verify_unit_addr("/unit-addr-non-numeric@foo-bar", "foo-bar")
595 /dts-v1/;
598 a = &label;
599 b = [ 01 ], &label;
600 c = [ 01 ], &label, <2>;
602 label: abc {
603 e = &label;
609 /dts-v1/;
612 a = &label;
613 b = [ 01 ], &label;
614 c = [ 01 ], &label, < 0x2 >;
616 label: abc {
617 e = &label;
624 /dts-v1/;
632 "/sub: undefined node label 'missing'")
635 /dts-v1/;
649 /dts-v1/;
674 /dts-v1/;
699 /dts-v1/;
710 label: b {
711 bar: phandle = < &label >;
716 /dts-v1/;
725 label: b {
726 bar: phandle = < &label >;
732 /dts-v1/;
740 "/sub: undefined node label 'missing'")
743 /dts-v1/;
751 ":5 (column 19): parse error: phandle references are only allowed in arrays with 32-bit elements")
754 /dts-v1/;
765 /dts-v1/;
776 /dts-v1/;
780 phandle = < (-1) >;
787 /dts-v1/;
802 /dts-v1/;
826 /dts-v1/;
852 /dts-v1/;
867 /dts-v1/;
883 /dts-v1/;
888 /delete-property/ missing;
889 /delete-property/ delete;
896 /delete-property/ y;
900 /dts-v1/;
912 /dts-v1/;
921 /delete-node/ &{/};
929 /delete-node/ sub2;
941 /delete-node/ &sub3;
942 /delete-node/ &{/sub4};
945 /dts-v1/;
955 /dts-v1/;
968 /delete-node/ &{/};
971 /dts-v1/;
978 /dts-v1/;
983 /delete-node/ &missing;
985 ":6 (column 15): parse error: undefined node label 'missing'")
988 /dts-v1/;
990 /delete-node/ {
992 ":3 (column 15): parse error: expected label (&foo) or path (&{/foo/bar}) reference")
999 with open("same-dir-1", "w") as f:
1002 /include/ "same-dir-2"
1004 with open("same-dir-2", "w") as f:
1007 /include/ "same-dir-3"
1009 with open("same-dir-3", "w") as f:
1015 /dts-v1/;
1018 /include/ "same-dir-1"
1023 /dts-v1/;
1030 """[1:-1]
1039 /dts-v1/;
1047 subdir_1 = tmp_path / "subdir-1"
1049 with open(subdir_1 / "via-include-path-1", "w") as f:
1051 = /include/ "via-include-path-2"
1054 subdir_2 = tmp_path / "subdir-2"
1056 with open(subdir_2 / "via-include-path-2", "w") as f:
1066 y /include/ "via-include-path-1"
1072 /dts-v1/;
1078 """[1:-1]
1107 "expected '/dts-v1/;' at start of file"):
1123 tmp.dts:1 ->
1124 tmp2.dts:1 ->
1125 tmp3.dts:1 ->
1134 tmp.dts:1 ->
1140 '''The /omit-if-no-ref/ marker is a bit of undocumented
1148 /dts-v1/;
1153 /omit-if-no-ref/ referenced {
1159 /omit-if-no-ref/ unreferenced {
1162 l1: /omit-if-no-ref/ unreferenced2 {
1165 /omit-if-no-ref/ l2: unreferenced3 {
1175 /omit-if-no-ref/ &referenced2;
1176 /omit-if-no-ref/ &unreferenced4;
1177 /omit-if-no-ref/ &{/unreferenced5};
1180 /dts-v1/;
1193 /dts-v1/;
1196 /omit-if-no-ref/ x = "";
1199 ":4 (column 21): parse error: /omit-if-no-ref/ can only be used on nodes")
1202 /dts-v1/;
1205 /omit-if-no-ref/ x;
1208 ":4 (column 20): parse error: /omit-if-no-ref/ can only be used on nodes")
1211 /dts-v1/;
1214 /omit-if-no-ref/ {
1221 /dts-v1/;
1224 /omit-if-no-ref/ = < 0 >;
1230 /dts-v1/;
1235 /omit-if-no-ref/ &missing;
1237 ":6 (column 18): parse error: undefined node label 'missing'")
1240 /dts-v1/;
1242 /omit-if-no-ref/ {
1244 ":3 (column 18): parse error: expected label (&foo) or path (&{/foo/bar}) reference")
1250 /dts-v1/;
1287 sub = < (7 - 4) >;
1291 unary_minus = < (-3) >;
1293 not0 = < (!-1) >;
1297 nest = < (((--3) + (-2)) * (--(-2))) >;
1302 /dts-v1/;
1355 /dts-v1/;
1358 a = < (1/(-1 + 1)) >;
1364 /dts-v1/;
1373 '''Comments should be removed when round-tripped to a str.'''
1376 /**//dts-v1//**/;//
1385 /dts-v1/;
1412 /dts-v1/;
1438 "no alias '' found -- did you forget the leading '/' in the node path?",
1442 "no alias 'missing' found -- did you forget the leading '/' in the node path?",
1470 /dts-v1/;
1514 /dts-v1/;
1526 /dts-v1/;
1535 ".* is not valid UTF-8")
1538 /dts-v1/;
1546 "/aliases: alias property name 'A' should include only characters from [0-9a-z-]")
1549 /dts-v1/;
1557 "property 'a' on /aliases in .* points to the non-existent node \"/missing\"")
1567 /dts-v1/;
1589 phandle-and-nums-1 = < &node 1 >;
1590 phandle-and-nums-2 = < &node 1 2 &node 3 4 >;
1591 phandle-and-nums-3 = < &node 1 2 >, < &node 3 4 >;
1617 verify_type("phandle-and-nums-1", dtlib.Type.PHANDLES_AND_NUMS)
1618 verify_type("phandle-and-nums-2", dtlib.Type.PHANDLES_AND_NUMS)
1619 verify_type("phandle-and-nums-3", dtlib.Type.PHANDLES_AND_NUMS)
1629 /dts-v1/;
1680 verify_to_num("s", True, -1)
1720 verify_to_nums("two_s", True, [-1, -2])
1782 "in .* is not valid UTF-8")
1806 ".* is not valid UTF-8")
1873 "property 'missingpath' on / in .* points to the non-existent node "
1876 # Test top-level to_num() and to_nums()
1895 verify_raw_to_num(dtlib.to_num, "s", None, True, -1)
1899 verify_raw_to_num(dtlib.to_nums, "two_s", 4, True, [-1, -2])
1915 /dts-v1/;
1919 label: foo {
1924 label: bar {
1929 "Label 'label' appears on /sub1/foo and on /sub2/bar")
1932 /dts-v1/;
1936 label: foo {
1942 label: bar {
1947 "Label 'label' appears on /sub/bar and on /sub/foo")
1950 /dts-v1/;
1958 "Label 'foo' appears on /node and on property 'a' of node /")
1961 /dts-v1/;
1970 "Label 'foo' appears on property 'a' of node / and on property 'b' of node /node")
1973 /dts-v1/;
1979 "Label 'foo' appears in the value of property 'a' of node / and on property 'a' of node /")
1981 # Giving the same label twice for the same node is fine
1983 /dts-v1/;
1987 label: foo {
1994 label: foo {
2000 /dts-v1/;
2004 label: foo {
2012 /dts-v1/;
2015 label: foo {
2017 label: bar {
2021 /delete-node/ &{/bar};
2024 /dts-v1/;
2027 label: foo {
2037 /dts-v1/;
2048 /delete-property/ y;
2052 /dts-v1/;
2062 # Test self-referential node
2066 /dts-v1/;
2069 label: foo {
2070 x = &{/foo}, &label, < &label >;
2075 /dts-v1/;
2078 label: foo {
2079 x = &{/foo}, &label, < &label >;
2090 /dts-v1/;
2099 /dts-v1/;
2112 /dts-v1/;
2123 /dts-v1/;
2151 /dts-v1/;
2155 \aA0,._+*#?- = &_, &{/aA0,._+@-};
2161 - = [ 01 ];
2167 _: \aA0,._+@- {
2175 /dts-v1/;
2178 aA0,._+*#?- = &_, &{/aA0,._+@-};
2181 - = [ 01 ];
2185 _: aA0,._+@- {
2193 /dts-v1/;
2202 /dts-v1/;
2211 /dts-v1/;
2222 Test that a densely written DTS input round-trips to something
2227 /dts-v1/;/{l1:l2:foo{l3:l4:bar{l5:x=l6:/bits/8<l7:1 l8:2>l9:,[03],"a";};};};
2230 /dts-v1/;
2242 '''Test miscellaneous errors and non-errors.'''
2244 verify_error_endswith("", ":1 (column 1): parse error: expected '/dts-v1/;' at start of file")
2247 /dts-v1/;
2252 /dts-v1/; /plugin/;
2257 /dts-v1/;
2264 // Only one label supported before label references at the top level
2268 ":9 (column 5): parse error: expected label reference (&foo)")
2271 /dts-v1/;
2279 # Multiple /dts-v1/ at the start of a file is fine
2281 /dts-v1/;
2282 /dts-v1/;
2288 /dts-v1/;
2296 /dts-v1/;
2310 /dts-v1/;
2319 /dts-v1/;
2329 /dts-v1/;
2340 /dts-v1/;
2352 ref-to-node = <&nodelabel>;
2453 /dts-v1/;
2457 parent-alias = &parent_label;
2478 assert dt.get_node('parent-alias') is parent
2511 node1: test-node1 {
2519 f.write('''/dts-v1/;
2524 node2: test-node2 {
2537 test_node2 = dt.get_node('/test-node2')
2548 test_node1 = dt.get_node('/test-node1')