Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae91ff72 authored by Grant Likely's avatar Grant Likely
Browse files

of: Add a testcase for of_find_node_by_path()



Add a testcase for the find_node_by_path() function to make sure it
handles all the valid scenarios.

Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
parent c22e650e
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -31,6 +31,51 @@ static struct selftest_results {
	} \
}

static void __init of_selftest_find_node_by_name(void)
{
	struct device_node *np;

	np = of_find_node_by_path("/testcase-data");
	selftest(np && !strcmp("/testcase-data", np->full_name),
		"find /testcase-data failed\n");
	of_node_put(np);

	/* Test if trailing '/' works */
	np = of_find_node_by_path("/testcase-data/");
	selftest(!np, "trailing '/' on /testcase-data/ should fail\n");

	np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a");
	selftest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", np->full_name),
		"find /testcase-data/phandle-tests/consumer-a failed\n");
	of_node_put(np);

	np = of_find_node_by_path("testcase-alias");
	selftest(np && !strcmp("/testcase-data", np->full_name),
		"find testcase-alias failed\n");
	of_node_put(np);

	/* Test if trailing '/' works on aliases */
	np = of_find_node_by_path("testcase-alias/");
	selftest(!np, "trailing '/' on testcase-alias/ should fail\n");

	np = of_find_node_by_path("testcase-alias/phandle-tests/consumer-a");
	selftest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", np->full_name),
		"find testcase-alias/phandle-tests/consumer-a failed\n");
	of_node_put(np);

	np = of_find_node_by_path("/testcase-data/missing-path");
	selftest(!np, "non-existent path returned node %s\n", np->full_name);
	of_node_put(np);

	np = of_find_node_by_path("missing-alias");
	selftest(!np, "non-existent alias returned node %s\n", np->full_name);
	of_node_put(np);

	np = of_find_node_by_path("testcase-alias/missing-path");
	selftest(!np, "non-existent alias with relative path returned node %s\n", np->full_name);
	of_node_put(np);
}

static void __init of_selftest_dynamic(void)
{
	struct device_node *np;
@@ -484,6 +529,7 @@ static int __init of_selftest(void)
	of_node_put(np);

	pr_info("start of selftest - you will see error messages\n");
	of_selftest_find_node_by_name();
	of_selftest_dynamic();
	of_selftest_parse_phandle_with_args();
	of_selftest_property_match_string();
+5 −1
Original line number Diff line number Diff line

/ {
	testcase-data {
	aliases {
		testcase-alias = &testcase;
	};

	testcase: testcase-data {
		security-password = "password";
		duplicate-name = "duplicate";
		duplicate-name { };