pacemaker  2.1.9-49aab99839
Scalable High-Availability cluster resource manager
pcmk__xpath_node_id_test.c
Go to the documentation of this file.
1 /*
2  * Copyright 2021-2024 the Pacemaker project contributors
3  *
4  * The version control history for this file may have further details.
5  *
6  * This source code is licensed under the GNU General Public License version 2
7  * or later (GPLv2+) WITHOUT ANY WARRANTY.
8  */
9 
10 #include <crm_internal.h>
11 
12 #include <crm/common/xml.h>
15 
16 static void
17 empty_input(void **state) {
18  assert_null(pcmk__xpath_node_id(NULL, PCMK__XE_LRM));
19  assert_null(pcmk__xpath_node_id("", PCMK__XE_LRM));
20  assert_null(pcmk__xpath_node_id("/blah/blah", NULL));
21  assert_null(pcmk__xpath_node_id("/blah/blah", ""));
22  assert_null(pcmk__xpath_node_id(NULL, NULL));
23 }
24 
25 static void
26 no_quotes(void **state) {
27  const char *xpath = "/some/xpath/" PCMK__XE_LRM "[@" PCMK_XA_ID "=xyz]";
29 }
30 
31 static void
32 not_present(void **state) {
33  const char *xpath = "/some/xpath/string[@" PCMK_XA_ID "='xyz']";
34  assert_null(pcmk__xpath_node_id(xpath, PCMK__XE_LRM));
35 
36  xpath = "/some/xpath/containing[@" PCMK_XA_ID "='" PCMK__XE_LRM "']";
37  assert_null(pcmk__xpath_node_id(xpath, PCMK__XE_LRM));
38 }
39 
40 static void
41 present(void **state) {
42  char *s = NULL;
43  const char *xpath = "/some/xpath/containing"
44  "/" PCMK__XE_LRM "[@" PCMK_XA_ID "='xyz']";
45 
47  assert_int_equal(strcmp(s, "xyz"), 0);
48  free(s);
49 
50  xpath = "/some/other/" PCMK__XE_LRM "[@" PCMK_XA_ID "='xyz']/xpath";
52  assert_int_equal(strcmp(s, "xyz"), 0);
53  free(s);
54 }
55 
56 PCMK__UNIT_TEST(NULL, NULL,
57  cmocka_unit_test(empty_input),
58  cmocka_unit_test(no_quotes),
59  cmocka_unit_test(not_present),
60  cmocka_unit_test(present))
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
char * pcmk__xpath_node_id(const char *xpath, const char *node)
Definition: xpath.c:290
Wrappers for and extensions to libxml2.
#define pcmk__assert_asserts(stmt)
#define PCMK_XA_ID
Definition: xml_names.h:301
#define PCMK__XE_LRM