Browse Source
Newly added &{label/path} feature doesn't yet have any tests. Add some. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>main
Ahmad Fatoum
4 years ago
committed by
David Gibson
7 changed files with 112 additions and 2 deletions
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later |
||||
/* |
||||
* libfdt - Flat Device Tree manipulation |
||||
* Testcase for label relative child references in dtc |
||||
* Copyright (C) 2006 David Gibson, IBM Corporation. |
||||
* Copyright (C) 2020 Ahmad Fatoum, Pengutronix. |
||||
*/ |
||||
#include <stdlib.h> |
||||
#include <stdio.h> |
||||
#include <string.h> |
||||
#include <stdint.h> |
||||
|
||||
#include <libfdt.h> |
||||
|
||||
#include "tests.h" |
||||
#include "testdata.h" |
||||
|
||||
static void check_exist(void *fdt, const char *path) |
||||
{ |
||||
int sn = fdt_path_offset(fdt, path); |
||||
if (sn < 0) |
||||
FAIL("%s expected but not found: %s", path, fdt_strerror(sn)); |
||||
} |
||||
|
||||
static void check_doesnt_exist(void *fdt, const char *path) |
||||
{ |
||||
int sn = fdt_path_offset(fdt, path); |
||||
if (sn >= 0) |
||||
FAIL("%s found but not expected %d", path, sn); |
||||
} |
||||
|
||||
int main(int argc, char *argv[]) |
||||
{ |
||||
void *fdt; |
||||
|
||||
test_init(argc, argv); |
||||
fdt = load_blob_arg(argc, argv); |
||||
|
||||
check_exist(fdt, "/node/subnode1"); |
||||
check_exist(fdt, "/node/keep-me"); |
||||
check_doesnt_exist(fdt, "/node/remove-me"); |
||||
|
||||
check_doesnt_exist(fdt, "/node2"); |
||||
check_doesnt_exist(fdt, "/node/subnode3"); |
||||
|
||||
check_exist(fdt, "/node/subnode4"); |
||||
|
||||
check_exist(fdt, "/node/subnode1/add-me"); |
||||
|
||||
PASS(); |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
/dts-v1/; |
||||
|
||||
/ { |
||||
node_label: node { |
||||
keep-me {}; |
||||
remove-me {}; |
||||
|
||||
subnode1 { |
||||
property-inline1; |
||||
property-inline2; |
||||
property-inline3; |
||||
}; |
||||
|
||||
subnode2 { |
||||
property-inline1; |
||||
}; |
||||
|
||||
subnode3 { |
||||
property-inline1; |
||||
}; |
||||
}; |
||||
|
||||
node2_label: node2 { |
||||
property-inline1; |
||||
}; |
||||
}; |
||||
/omit-if-no-ref/ &{node_label/subnode1}; |
||||
/omit-if-no-ref/ &node2_label; |
||||
/delete-node/ &{node_label/subnode3}; |
||||
|
||||
&{node_label/} { |
||||
/delete-node/ remove-me; |
||||
|
||||
subnode4 { }; |
||||
}; |
||||
|
||||
label: &{node_label/subnode1} { |
||||
selfref = &{node_label/subnode1}; |
||||
add-me { }; |
||||
}; |
Loading…
Reference in new issue