24 #define MATCHED_STRING "server-north" 26 static const regmatch_t submatches[] = {
27 { .rm_so = 0, .rm_eo = 12 },
28 { .rm_so = 7, .rm_eo = 12 },
36 .rsc_id_submatches = submatches,
70 teardown(
void **state)
73 g_hash_table_destroy(rule_input.
rsc_meta);
86 assert_attr_expression(
const char *xml_string,
int reference_rc)
100 #define EXPR_SOURCE_LITERAL_PASSES \ 101 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 102 PCMK_XA_ATTRIBUTE "='foo' " \ 103 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 104 PCMK_XA_VALUE "='bar' " \ 105 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 108 null_invalid(
void **state)
124 #define EXPR_ID_MISSING \ 125 "<" PCMK_XE_EXPRESSION " " \ 126 PCMK_XA_ATTRIBUTE "='foo' " \ 127 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 128 PCMK_XA_VALUE "='bar' />" 131 id_missing(
void **state)
142 #define EXPR_ATTR_MISSING \ 143 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 144 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 145 PCMK_XA_VALUE "='bar' />" 148 attr_missing(
void **state)
153 #define EXPR_ATTR_SUBMATCH_PASSES \ 154 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 155 PCMK_XA_ATTRIBUTE "='prefer-%1' " \ 156 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 159 attr_with_submatch_passes(
void **state)
164 #define EXPR_ATTR_SUBMATCH_FAILS \ 165 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 166 PCMK_XA_ATTRIBUTE "='undefined-%1' " \ 167 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 170 attr_with_submatch_fails(
void **state)
180 #define EXPR_SOURCE_MISSING \ 181 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 182 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 183 PCMK_XA_ATTRIBUTE "='foo' " \ 184 PCMK_XA_VALUE "='bar' />" 187 source_missing(
void **state)
193 #define EXPR_SOURCE_INVALID \ 194 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 195 PCMK_XA_ATTRIBUTE "='foo' " \ 196 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 197 PCMK_XA_VALUE "='bar' " \ 198 PCMK_XA_VALUE_SOURCE "='not-a-source' />" 201 source_invalid(
void **state)
208 source_literal_passes(
void **state)
213 #define EXPR_SOURCE_LITERAL_VALUE_FAILS \ 214 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 215 PCMK_XA_ATTRIBUTE "='foo' " \ 216 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 217 PCMK_XA_VALUE "='wrong-value' " \ 218 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 221 source_literal_value_fails(
void **state)
227 #define EXPR_SOURCE_LITERAL_ATTR_FAILS \ 228 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 229 PCMK_XA_ATTRIBUTE "='not-an-attribute' " \ 230 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 231 PCMK_XA_VALUE "='bar' " \ 232 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 235 source_literal_attr_fails(
void **state)
241 #define EXPR_SOURCE_PARAM_MISSING \ 242 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 243 PCMK_XA_ATTRIBUTE "='foo' " \ 244 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 245 PCMK_XA_VALUE "='not-a-param' " \ 246 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />" 249 source_params_missing(
void **state)
254 #define EXPR_SOURCE_PARAM_PASSES \ 255 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 256 PCMK_XA_ATTRIBUTE "='foo' " \ 257 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 258 PCMK_XA_VALUE "='foo-param' " \ 259 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />" 262 source_params_passes(
void **state)
267 #define EXPR_SOURCE_PARAM_FAILS \ 268 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 269 PCMK_XA_ATTRIBUTE "='foo' " \ 270 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 271 PCMK_XA_VALUE "='myparam' " \ 272 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />" 275 source_params_fails(
void **state)
280 #define EXPR_SOURCE_META_MISSING \ 281 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 282 PCMK_XA_ATTRIBUTE "='foo' " \ 283 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 284 PCMK_XA_VALUE "='not-a-meta' " \ 285 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />" 288 source_meta_missing(
void **state)
293 #define EXPR_SOURCE_META_PASSES \ 294 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 295 PCMK_XA_ATTRIBUTE "='foo' " \ 296 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 297 PCMK_XA_VALUE "='foo-meta' " \ 298 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />" 301 source_meta_passes(
void **state)
306 #define EXPR_SOURCE_META_FAILS \ 307 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 308 PCMK_XA_ATTRIBUTE "='foo' " \ 309 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 310 PCMK_XA_VALUE "='mymeta' " \ 311 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />" 314 source_meta_fails(
void **state)
324 #define EXPR_TYPE_DEFAULT_NUMBER \ 325 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 326 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 327 PCMK_XA_ATTRIBUTE "='num' " \ 328 PCMK_XA_VALUE "='2.5' />" 331 type_default_number(
void **state)
337 #define EXPR_TYPE_DEFAULT_INT \ 338 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 339 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 340 PCMK_XA_ATTRIBUTE "='num' " \ 341 PCMK_XA_VALUE "='2' />" 344 type_default_int(
void **state)
350 #define EXPR_TYPE_STRING_PASSES \ 351 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 352 PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' " \ 353 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 354 PCMK_XA_ATTRIBUTE "='foo' " \ 355 PCMK_XA_VALUE "='bar' />" 358 type_string_passes(
void **state)
363 #define EXPR_TYPE_STRING_FAILS \ 364 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 365 PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' " \ 366 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 367 PCMK_XA_ATTRIBUTE "='foo' " \ 368 PCMK_XA_VALUE "='bat' />" 371 type_string_fails(
void **state)
376 #define EXPR_TYPE_INTEGER_PASSES \ 377 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 378 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 379 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 380 PCMK_XA_ATTRIBUTE "='num' " \ 381 PCMK_XA_VALUE "='10' />" 384 type_integer_passes(
void **state)
389 #define EXPR_TYPE_INTEGER_FAILS \ 390 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 391 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 392 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 393 PCMK_XA_ATTRIBUTE "='num' " \ 394 PCMK_XA_VALUE "='11' />" 397 type_integer_fails(
void **state)
402 #define EXPR_TYPE_INTEGER_TRUNCATION \ 403 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 404 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 405 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 406 PCMK_XA_ATTRIBUTE "='num' " \ 407 PCMK_XA_VALUE "='10.5' />" 410 type_integer_truncation(
void **state)
415 #define EXPR_TYPE_NUMBER_PASSES \ 416 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 417 PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' " \ 418 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 419 PCMK_XA_ATTRIBUTE "='num' " \ 420 PCMK_XA_VALUE "='10.0' />" 423 type_number_passes(
void **state)
428 #define EXPR_TYPE_NUMBER_FAILS \ 429 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 430 PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' " \ 431 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 432 PCMK_XA_ATTRIBUTE "='num' " \ 433 PCMK_XA_VALUE "='10.1' />" 436 type_number_fails(
void **state)
441 #define EXPR_TYPE_VERSION_PASSES \ 442 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 443 PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' " \ 444 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 445 PCMK_XA_ATTRIBUTE "='ver' " \ 446 PCMK_XA_VALUE "='3.4.9' />" 449 type_version_passes(
void **state)
454 #define EXPR_TYPE_VERSION_EQUALITY \ 455 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 456 PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' " \ 457 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 458 PCMK_XA_ATTRIBUTE "='ver' " \ 459 PCMK_XA_VALUE "='3.5' />" 462 type_version_equality(
void **state)
467 #define EXPR_TYPE_VERSION_FAILS \ 468 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 469 PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' " \ 470 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 471 PCMK_XA_ATTRIBUTE "='ver' " \ 472 PCMK_XA_VALUE "='4.0' />" 475 type_version_fails(
void **state)
484 #define EXPR_OP_MISSING \ 485 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 486 PCMK_XA_ATTRIBUTE "='foo' " \ 487 PCMK_XA_VALUE "='bar' />" 490 op_missing(
void **state)
495 #define EXPR_OP_INVALID \ 496 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 497 PCMK_XA_ATTRIBUTE "='foo' " \ 498 PCMK_XA_OPERATION "='not-an-operation' " \ 499 PCMK_XA_VALUE "='bar' />" 502 op_invalid(
void **state)
507 #define EXPR_OP_LT_PASSES \ 508 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 509 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 510 PCMK_XA_OPERATION "='" PCMK_VALUE_LT "' " \ 511 PCMK_XA_ATTRIBUTE "='num' " \ 512 PCMK_XA_VALUE "='20' />" 515 op_lt_passes(
void **state)
520 #define EXPR_OP_LT_FAILS \ 521 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 522 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 523 PCMK_XA_OPERATION "='" PCMK_VALUE_LT "' " \ 524 PCMK_XA_ATTRIBUTE "='num' " \ 525 PCMK_XA_VALUE "='2' />" 528 op_lt_fails(
void **state)
533 #define EXPR_OP_GT_PASSES \ 534 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 535 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 536 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 537 PCMK_XA_ATTRIBUTE "='num' " \ 538 PCMK_XA_VALUE "='2' />" 541 op_gt_passes(
void **state)
546 #define EXPR_OP_GT_FAILS \ 547 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 548 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 549 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 550 PCMK_XA_ATTRIBUTE "='num' " \ 551 PCMK_XA_VALUE "='20' />" 554 op_gt_fails(
void **state)
559 #define EXPR_OP_LTE_LT_PASSES \ 560 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 561 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 562 PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' " \ 563 PCMK_XA_ATTRIBUTE "='num' " \ 564 PCMK_XA_VALUE "='20' />" 567 op_lte_lt_passes(
void **state)
572 #define EXPR_OP_LTE_EQ_PASSES \ 573 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 574 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 575 PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' " \ 576 PCMK_XA_ATTRIBUTE "='num' " \ 577 PCMK_XA_VALUE "='10' />" 580 op_lte_eq_passes(
void **state)
585 #define EXPR_OP_LTE_FAILS \ 586 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 587 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 588 PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' " \ 589 PCMK_XA_ATTRIBUTE "='num' " \ 590 PCMK_XA_VALUE "='9' />" 593 op_lte_fails(
void **state)
598 #define EXPR_OP_GTE_GT_PASSES \ 599 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 600 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 601 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 602 PCMK_XA_ATTRIBUTE "='num' " \ 603 PCMK_XA_VALUE "='1' />" 606 op_gte_gt_passes(
void **state)
611 #define EXPR_OP_GTE_EQ_PASSES \ 612 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 613 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 614 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 615 PCMK_XA_ATTRIBUTE "='num' " \ 616 PCMK_XA_VALUE "='10' />" 619 op_gte_eq_passes(
void **state)
624 #define EXPR_OP_GTE_FAILS \ 625 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 626 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 627 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 628 PCMK_XA_ATTRIBUTE "='num' " \ 629 PCMK_XA_VALUE "='11' />" 632 op_gte_fails(
void **state)
638 #define EXPR_OP_EQ_PASSES \ 639 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 640 PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' " \ 641 PCMK_XA_ATTRIBUTE "='foo' " \ 642 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 643 PCMK_XA_VALUE "='bar' " \ 644 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 647 op_eq_passes(
void **state)
652 #define EXPR_OP_EQ_FAILS \ 653 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 654 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 655 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 656 PCMK_XA_ATTRIBUTE "='num' " \ 657 PCMK_XA_VALUE "='bar' />" 660 op_eq_fails(
void **state)
665 #define EXPR_OP_NE_PASSES \ 666 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 667 PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' " \ 668 PCMK_XA_ATTRIBUTE "='foo' " \ 669 PCMK_XA_OPERATION "='" PCMK_VALUE_NE "' " \ 670 PCMK_XA_VALUE "='bat' " \ 671 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 674 op_ne_passes(
void **state)
679 #define EXPR_OP_NE_FAILS \ 680 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 681 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 682 PCMK_XA_OPERATION "='" PCMK_VALUE_NE "' " \ 683 PCMK_XA_ATTRIBUTE "='num' " \ 684 PCMK_XA_VALUE "='10' />" 687 op_ne_fails(
void **state)
692 #define EXPR_OP_DEFINED_PASSES \ 693 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 694 PCMK_XA_ATTRIBUTE "='foo' " \ 695 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 698 op_defined_passes(
void **state)
703 #define EXPR_OP_DEFINED_FAILS \ 704 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 705 PCMK_XA_ATTRIBUTE "='boo' " \ 706 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 709 op_defined_fails(
void **state)
714 #define EXPR_OP_DEFINED_WITH_VALUE \ 715 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 716 PCMK_XA_ATTRIBUTE "='foo' " \ 717 PCMK_XA_VALUE "='bar' " \ 718 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 721 op_defined_with_value(
void **state)
727 #define EXPR_OP_UNDEFINED_PASSES \ 728 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 729 PCMK_XA_ATTRIBUTE "='boo' " \ 730 PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />" 733 op_undefined_passes(
void **state)
738 #define EXPR_OP_UNDEFINED_FAILS \ 739 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 740 PCMK_XA_ATTRIBUTE "='foo' " \ 741 PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />" 744 op_undefined_fails(
void **state)
754 #define EXPR_VALUE_MISSING_DEFINED_OK \ 755 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 756 PCMK_XA_ATTRIBUTE "='num' " \ 757 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 760 value_missing_defined_ok(
void **state)
765 #define EXPR_VALUE_MISSING_EQ_OK \ 766 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 767 PCMK_XA_ATTRIBUTE "='not-an-attr' " \ 768 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' />" 771 value_missing_eq_ok(
void **state)
778 #define expr_test(f) cmocka_unit_test_setup_teardown(f, setup, teardown) 781 cmocka_unit_test(null_invalid),
#define EXPR_VALUE_MISSING_DEFINED_OK
#define EXPR_TYPE_VERSION_FAILS
#define EXPR_OP_DEFINED_FAILS
#define EXPR_SOURCE_META_PASSES
#define EXPR_TYPE_INTEGER_TRUNCATION
#define EXPR_SOURCE_MISSING
#define EXPR_OP_UNDEFINED_PASSES
#define EXPR_OP_LT_PASSES
G_GNUC_INTERNAL int pcmk__evaluate_attr_expression(const xmlNode *expression, const pcmk_rule_input_t *rule_input)
#define EXPR_SOURCE_PARAM_FAILS
#define EXPR_ATTR_MISSING
#define EXPR_TYPE_DEFAULT_NUMBER
#define EXPR_OP_LTE_FAILS
#define EXPR_TYPE_VERSION_PASSES
#define EXPR_TYPE_DEFAULT_INT
#define EXPR_TYPE_NUMBER_FAILS
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
#define EXPR_SOURCE_INVALID
#define EXPR_OP_DEFINED_WITH_VALUE
#define EXPR_SOURCE_PARAM_MISSING
#define EXPR_VALUE_MISSING_EQ_OK
#define EXPR_TYPE_STRING_PASSES
#define EXPR_SOURCE_LITERAL_VALUE_FAILS
#define EXPR_OP_EQ_PASSES
#define EXPR_OP_DEFINED_PASSES
int pcmk__xml_test_setup_group(void **state)
Wrappers for and extensions to libxml2.
void free_xml(xmlNode *child)
#define EXPR_SOURCE_LITERAL_ATTR_FAILS
#define EXPR_ATTR_SUBMATCH_PASSES
#define EXPR_SOURCE_LITERAL_PASSES
int pcmk__xml_test_teardown_group(void **state)
xmlNode * pcmk__xml_parse(const char *input)
#define EXPR_OP_GT_PASSES
#define EXPR_OP_GTE_EQ_PASSES
#define EXPR_TYPE_INTEGER_FAILS
GHashTable * pcmk__strkey_table(GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func)
#define EXPR_OP_NE_PASSES
#define EXPR_TYPE_STRING_FAILS
#define EXPR_TYPE_NUMBER_PASSES
#define EXPR_OP_LTE_EQ_PASSES
#define EXPR_TYPE_INTEGER_PASSES
#define EXPR_SOURCE_META_MISSING
#define EXPR_TYPE_VERSION_EQUALITY
#define EXPR_OP_GTE_FAILS
#define EXPR_ATTR_SUBMATCH_FAILS
#define EXPR_OP_LTE_LT_PASSES
#define EXPR_OP_GTE_GT_PASSES
void pcmk__insert_dup(GHashTable *table, const char *name, const char *value)
#define EXPR_SOURCE_PARAM_PASSES
#define EXPR_SOURCE_META_FAILS