Commit 500d4510 authored by Rob Herring's avatar Rob Herring
Browse files

of: unittest: Check tree matches original after reverting a changeset



Enhance the changeset unittest to ensure after a revert, the tree matches
the original tree before the changeset was applied. Specifically, check an
added node is removed, a removed property is added back, and an updated
property has its original value.

Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent b37c60d2
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -797,6 +797,7 @@ static void __init of_unittest_property_copy(void)
static void __init of_unittest_changeset(void)
{
#ifdef CONFIG_OF_DYNAMIC
	int ret;
	struct property *ppadd, padd = { .name = "prop-add", .length = 1, .value = "" };
	struct property *ppname_n1,  pname_n1  = { .name = "name", .length = 3, .value = "n1"  };
	struct property *ppname_n2,  pname_n2  = { .name = "name", .length = 3, .value = "n2"  };
@@ -807,6 +808,7 @@ static void __init of_unittest_changeset(void)
	static const char * const str_array[] = { "str1", "str2", "str3" };
	const u32 u32_array[] = { 1, 2, 3 };
	struct of_changeset chgset;
	const char *propstr = NULL;

	n1 = __of_node_dup(NULL, "n1");
	unittest(n1, "testcase setup failure\n");
@@ -886,6 +888,17 @@ static void __init of_unittest_changeset(void)

	unittest(!of_changeset_revert(&chgset), "revert failed\n");

	unittest(!of_find_node_by_path("/testcase-data/changeset/n2/n21"),
		 "'%pOF' still present after revert\n", n21);

	ppremove = of_find_property(parent, "prop-remove", NULL);
	unittest(ppremove, "failed to find removed prop after revert\n");

	ret = of_property_read_string(parent, "prop-update", &propstr);
	unittest(!ret, "failed to find updated prop after revert\n");
	if (!ret)
		unittest(strcmp(propstr, "hello") == 0, "original value not in updated property after revert");

	of_changeset_destroy(&chgset);

	of_node_put(n1);