[PATCH v5 5/8] of: unittest: changeset helpers
From: Laurent Pinchart
Date: Wed Feb 21 2018 - 19:05:08 EST
From: Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx>
Add a unitest specific for the new changeset helpers.
Signed-off-by: Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx>
[Use IS_ENABLED instead of #ifdef]
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>
Reviewed-by: Rob Herring <robh@xxxxxxxxxx>
---
drivers/of/unittest.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 7a9abaae874d..1b21d2c549a8 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -609,6 +609,59 @@ static void __init of_unittest_changeset(void)
#endif
}
+static void __init of_unittest_changeset_helper(void)
+{
+#ifdef CONFIG_OF_DYNAMIC
+ struct device_node *n1, *n2, *n21, *parent, *np;
+ struct of_changeset chgset;
+
+ of_changeset_init(&chgset);
+
+ parent = of_find_node_by_path("/testcase-data/changeset");
+
+ unittest(parent, "testcase setup failure\n");
+ n1 = of_changeset_create_device_node(&chgset,
+ parent, "/testcase-data/changeset/n1");
+ unittest(n1, "testcase setup failure\n");
+ n2 = of_changeset_create_device_node(&chgset,
+ parent, "/testcase-data/changeset/n2");
+ unittest(n2, "testcase setup failure\n");
+ n21 = of_changeset_create_device_node(&chgset, n2, "%s/%s",
+ "/testcase-data/changeset/n2", "n21");
+ unittest(n21, "testcase setup failure\n");
+
+ unittest(!of_changeset_add_property_string(&chgset, parent,
+ "prop-add", "foo"), "fail add prop\n");
+
+ unittest(!of_changeset_attach_node(&chgset, n1), "fail n1 attach\n");
+ unittest(!of_changeset_attach_node(&chgset, n2), "fail n2 attach\n");
+ unittest(!of_changeset_attach_node(&chgset, n21), "fail n21 attach\n");
+
+ unittest(!of_changeset_apply(&chgset), "apply failed\n");
+
+ /* Make sure node names are constructed correctly */
+ np = of_find_node_by_path("/testcase-data/changeset/n1");
+ unittest(np, "'%s' not added\n", n1->full_name);
+ of_node_put(np);
+
+ /* Make sure node names are constructed correctly */
+ np = of_find_node_by_path("/testcase-data/changeset/n2");
+ unittest(np, "'%s' not added\n", n2->full_name);
+ of_node_put(np);
+
+ np = of_find_node_by_path("/testcase-data/changeset/n2/n21");
+ unittest(np, "'%s' not added\n", n21->full_name);
+ of_node_put(np);
+
+ unittest(!of_changeset_revert(&chgset), "revert failed\n");
+
+ of_changeset_destroy(&chgset);
+
+ of_node_put(parent);
+#endif
+}
+
+
static void __init of_unittest_parse_interrupts(void)
{
struct device_node *np;
@@ -2363,6 +2416,7 @@ static int __init of_unittest(void)
of_unittest_property_string();
of_unittest_property_copy();
of_unittest_changeset();
+ of_unittest_changeset_helper();
of_unittest_parse_interrupts();
of_unittest_parse_interrupts_extended();
of_unittest_match_node();
--
Regards,
Laurent Pinchart