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,
71 teardown(
void **state)
74 g_hash_table_destroy(rule_input.
rsc_meta);
87 assert_attr_expression(
const char *xml_string,
int reference_rc)
101 #define EXPR_SOURCE_LITERAL_PASSES \ 102 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 103 PCMK_XA_ATTRIBUTE "='foo' " \ 104 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 105 PCMK_XA_VALUE "='bar' " \ 106 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 109 null_invalid(
void **state)
125 #define EXPR_ID_MISSING \ 126 "<" PCMK_XE_EXPRESSION " " \ 127 PCMK_XA_ATTRIBUTE "='foo' " \ 128 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 129 PCMK_XA_VALUE "='bar' />" 132 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)
207 source_literal_passes(
void **state)
212 #define EXPR_SOURCE_LITERAL_VALUE_FAILS \ 213 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 214 PCMK_XA_ATTRIBUTE "='foo' " \ 215 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 216 PCMK_XA_VALUE "='wrong-value' " \ 217 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 220 source_literal_value_fails(
void **state)
226 #define EXPR_SOURCE_LITERAL_ATTR_FAILS \ 227 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 228 PCMK_XA_ATTRIBUTE "='not-an-attribute' " \ 229 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 230 PCMK_XA_VALUE "='bar' " \ 231 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 234 source_literal_attr_fails(
void **state)
240 #define EXPR_SOURCE_PARAM_MISSING \ 241 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 242 PCMK_XA_ATTRIBUTE "='foo' " \ 243 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 244 PCMK_XA_VALUE "='not-a-param' " \ 245 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />" 248 source_params_missing(
void **state)
253 #define EXPR_SOURCE_PARAM_PASSES \ 254 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 255 PCMK_XA_ATTRIBUTE "='foo' " \ 256 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 257 PCMK_XA_VALUE "='foo-param' " \ 258 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />" 261 source_params_passes(
void **state)
266 #define EXPR_SOURCE_PARAM_FAILS \ 267 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 268 PCMK_XA_ATTRIBUTE "='foo' " \ 269 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 270 PCMK_XA_VALUE "='myparam' " \ 271 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_PARAM "' />" 274 source_params_fails(
void **state)
279 #define EXPR_SOURCE_META_MISSING \ 280 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 281 PCMK_XA_ATTRIBUTE "='foo' " \ 282 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 283 PCMK_XA_VALUE "='not-a-meta' " \ 284 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />" 287 source_meta_missing(
void **state)
292 #define EXPR_SOURCE_META_PASSES \ 293 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 294 PCMK_XA_ATTRIBUTE "='foo' " \ 295 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 296 PCMK_XA_VALUE "='foo-meta' " \ 297 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />" 300 source_meta_passes(
void **state)
305 #define EXPR_SOURCE_META_FAILS \ 306 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 307 PCMK_XA_ATTRIBUTE "='foo' " \ 308 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 309 PCMK_XA_VALUE "='mymeta' " \ 310 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_META "' />" 313 source_meta_fails(
void **state)
323 #define EXPR_TYPE_DEFAULT_NUMBER \ 324 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 325 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 326 PCMK_XA_ATTRIBUTE "='num' " \ 327 PCMK_XA_VALUE "='2.5' />" 330 type_default_number(
void **state)
336 #define EXPR_TYPE_DEFAULT_INT \ 337 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 338 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 339 PCMK_XA_ATTRIBUTE "='num' " \ 340 PCMK_XA_VALUE "='2' />" 343 type_default_int(
void **state)
349 #define EXPR_TYPE_INVALID \ 350 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 351 PCMK_XA_TYPE "='not-a-value' " \ 352 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 353 PCMK_XA_ATTRIBUTE "='foo' " \ 354 PCMK_XA_VALUE "='bar' />" 357 type_invalid(
void **state)
362 #define EXPR_TYPE_STRING_PASSES \ 363 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 364 PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' " \ 365 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 366 PCMK_XA_ATTRIBUTE "='foo' " \ 367 PCMK_XA_VALUE "='bar' />" 370 type_string_passes(
void **state)
375 #define EXPR_TYPE_STRING_FAILS \ 376 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 377 PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' " \ 378 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 379 PCMK_XA_ATTRIBUTE "='foo' " \ 380 PCMK_XA_VALUE "='bat' />" 383 type_string_fails(
void **state)
388 #define EXPR_TYPE_INTEGER_PASSES \ 389 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 390 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 391 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 392 PCMK_XA_ATTRIBUTE "='num' " \ 393 PCMK_XA_VALUE "='10' />" 396 type_integer_passes(
void **state)
401 #define EXPR_TYPE_INTEGER_FAILS \ 402 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 403 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 404 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 405 PCMK_XA_ATTRIBUTE "='num' " \ 406 PCMK_XA_VALUE "='11' />" 409 type_integer_fails(
void **state)
414 #define EXPR_TYPE_INTEGER_TRUNCATION \ 415 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 416 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 417 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 418 PCMK_XA_ATTRIBUTE "='num' " \ 419 PCMK_XA_VALUE "='10.5' />" 422 type_integer_truncation(
void **state)
427 #define EXPR_TYPE_NUMBER_PASSES \ 428 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 429 PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' " \ 430 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 431 PCMK_XA_ATTRIBUTE "='num' " \ 432 PCMK_XA_VALUE "='10.0' />" 435 type_number_passes(
void **state)
440 #define EXPR_TYPE_NUMBER_FAILS \ 441 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 442 PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' " \ 443 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 444 PCMK_XA_ATTRIBUTE "='num' " \ 445 PCMK_XA_VALUE "='10.1' />" 448 type_number_fails(
void **state)
453 #define EXPR_TYPE_VERSION_PASSES \ 454 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 455 PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' " \ 456 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 457 PCMK_XA_ATTRIBUTE "='ver' " \ 458 PCMK_XA_VALUE "='3.4.9' />" 461 type_version_passes(
void **state)
466 #define EXPR_TYPE_VERSION_EQUALITY \ 467 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 468 PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' " \ 469 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 470 PCMK_XA_ATTRIBUTE "='ver' " \ 471 PCMK_XA_VALUE "='3.5' />" 474 type_version_equality(
void **state)
479 #define EXPR_TYPE_VERSION_FAILS \ 480 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 481 PCMK_XA_TYPE "='" PCMK_VALUE_VERSION "' " \ 482 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 483 PCMK_XA_ATTRIBUTE "='ver' " \ 484 PCMK_XA_VALUE "='4.0' />" 487 type_version_fails(
void **state)
496 #define EXPR_OP_MISSING \ 497 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 498 PCMK_XA_ATTRIBUTE "='foo' " \ 499 PCMK_XA_VALUE "='bar' />" 502 op_missing(
void **state)
507 #define EXPR_OP_INVALID \ 508 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 509 PCMK_XA_ATTRIBUTE "='foo' " \ 510 PCMK_XA_OPERATION "='not-an-operation' " \ 511 PCMK_XA_VALUE "='bar' />" 514 op_invalid(
void **state)
519 #define EXPR_OP_LT_PASSES \ 520 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 521 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 522 PCMK_XA_OPERATION "='" PCMK_VALUE_LT "' " \ 523 PCMK_XA_ATTRIBUTE "='num' " \ 524 PCMK_XA_VALUE "='20' />" 527 op_lt_passes(
void **state)
532 #define EXPR_OP_LT_FAILS \ 533 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 534 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 535 PCMK_XA_OPERATION "='" PCMK_VALUE_LT "' " \ 536 PCMK_XA_ATTRIBUTE "='num' " \ 537 PCMK_XA_VALUE "='2' />" 540 op_lt_fails(
void **state)
545 #define EXPR_OP_GT_PASSES \ 546 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 547 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 548 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 549 PCMK_XA_ATTRIBUTE "='num' " \ 550 PCMK_XA_VALUE "='2' />" 553 op_gt_passes(
void **state)
558 #define EXPR_OP_GT_FAILS \ 559 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 560 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 561 PCMK_XA_OPERATION "='" PCMK_VALUE_GT "' " \ 562 PCMK_XA_ATTRIBUTE "='num' " \ 563 PCMK_XA_VALUE "='20' />" 566 op_gt_fails(
void **state)
571 #define EXPR_OP_LTE_LT_PASSES \ 572 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 573 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 574 PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' " \ 575 PCMK_XA_ATTRIBUTE "='num' " \ 576 PCMK_XA_VALUE "='20' />" 579 op_lte_lt_passes(
void **state)
584 #define EXPR_OP_LTE_EQ_PASSES \ 585 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 586 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 587 PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' " \ 588 PCMK_XA_ATTRIBUTE "='num' " \ 589 PCMK_XA_VALUE "='10' />" 592 op_lte_eq_passes(
void **state)
597 #define EXPR_OP_LTE_FAILS \ 598 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 599 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 600 PCMK_XA_OPERATION "='" PCMK_VALUE_LTE "' " \ 601 PCMK_XA_ATTRIBUTE "='num' " \ 602 PCMK_XA_VALUE "='9' />" 605 op_lte_fails(
void **state)
610 #define EXPR_OP_GTE_GT_PASSES \ 611 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 612 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 613 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 614 PCMK_XA_ATTRIBUTE "='num' " \ 615 PCMK_XA_VALUE "='1' />" 618 op_gte_gt_passes(
void **state)
623 #define EXPR_OP_GTE_EQ_PASSES \ 624 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 625 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 626 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 627 PCMK_XA_ATTRIBUTE "='num' " \ 628 PCMK_XA_VALUE "='10' />" 631 op_gte_eq_passes(
void **state)
636 #define EXPR_OP_GTE_FAILS \ 637 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 638 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 639 PCMK_XA_OPERATION "='" PCMK_VALUE_GTE "' " \ 640 PCMK_XA_ATTRIBUTE "='num' " \ 641 PCMK_XA_VALUE "='11' />" 644 op_gte_fails(
void **state)
650 #define EXPR_OP_EQ_PASSES \ 651 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 652 PCMK_XA_TYPE "='" PCMK_VALUE_NUMBER "' " \ 653 PCMK_XA_ATTRIBUTE "='foo' " \ 654 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 655 PCMK_XA_VALUE "='bar' " \ 656 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 659 op_eq_passes(
void **state)
664 #define EXPR_EQ_EMPTY_VS_EMPTY_PASSES \ 665 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 666 PCMK_XA_ATTRIBUTE "='empty' " \ 667 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 668 PCMK_XA_VALUE "='' />" 671 op_eq_empty_vs_empty_passes(
void **state)
676 #define EXPR_OP_EQ_FAILS \ 677 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 678 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 679 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 680 PCMK_XA_ATTRIBUTE "='num' " \ 681 PCMK_XA_VALUE "='bar' />" 684 op_eq_fails(
void **state)
689 #define EXPR_EQ_UNDEFINED_VS_EMPTY_FAILS \ 690 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 691 PCMK_XA_ATTRIBUTE "='boo' " \ 692 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' " \ 693 PCMK_XA_VALUE "='' />" 696 op_eq_undefined_vs_empty_fails(
void **state)
702 #define EXPR_OP_NE_PASSES \ 703 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 704 PCMK_XA_TYPE "='" PCMK_VALUE_STRING "' " \ 705 PCMK_XA_ATTRIBUTE "='foo' " \ 706 PCMK_XA_OPERATION "='" PCMK_VALUE_NE "' " \ 707 PCMK_XA_VALUE "='bat' " \ 708 PCMK_XA_VALUE_SOURCE "='" PCMK_VALUE_LITERAL "' />" 711 op_ne_passes(
void **state)
716 #define EXPR_OP_NE_FAILS \ 717 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 718 PCMK_XA_TYPE "='" PCMK_VALUE_INTEGER "' " \ 719 PCMK_XA_OPERATION "='" PCMK_VALUE_NE "' " \ 720 PCMK_XA_ATTRIBUTE "='num' " \ 721 PCMK_XA_VALUE "='10' />" 724 op_ne_fails(
void **state)
729 #define EXPR_OP_DEFINED_PASSES \ 730 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 731 PCMK_XA_ATTRIBUTE "='foo' " \ 732 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 735 op_defined_passes(
void **state)
740 #define EXPR_OP_DEFINED_EMPTY_PASSES \ 741 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 742 PCMK_XA_ATTRIBUTE "='empty' " \ 743 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 746 op_defined_empty_passes(
void **state)
751 #define EXPR_OP_DEFINED_FAILS \ 752 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 753 PCMK_XA_ATTRIBUTE "='boo' " \ 754 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 757 op_defined_fails(
void **state)
762 #define EXPR_OP_DEFINED_WITH_VALUE \ 763 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 764 PCMK_XA_ATTRIBUTE "='foo' " \ 765 PCMK_XA_VALUE "='bar' " \ 766 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 769 op_defined_with_value(
void **state)
774 #define EXPR_OP_UNDEFINED_PASSES \ 775 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 776 PCMK_XA_ATTRIBUTE "='boo' " \ 777 PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />" 780 op_undefined_passes(
void **state)
785 #define EXPR_OP_UNDEFINED_FAILS \ 786 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 787 PCMK_XA_ATTRIBUTE "='foo' " \ 788 PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />" 791 op_undefined_fails(
void **state)
796 #define EXPR_OP_UNDEFINED_EMPTY_FAILS \ 797 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 798 PCMK_XA_ATTRIBUTE "='empty' " \ 799 PCMK_XA_OPERATION "='" PCMK_VALUE_NOT_DEFINED "' />" 802 op_undefined_empty_fails(
void **state)
813 #define EXPR_VALUE_MISSING_DEFINED_OK \ 814 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 815 PCMK_XA_ATTRIBUTE "='num' " \ 816 PCMK_XA_OPERATION "='" PCMK_VALUE_DEFINED "' />" 819 value_missing_defined_ok(
void **state)
824 #define EXPR_VALUE_MISSING_EQ_FAILS \ 825 "<" PCMK_XE_EXPRESSION " " PCMK_XA_ID "='e' " \ 826 PCMK_XA_ATTRIBUTE "='not-an-attr' " \ 827 PCMK_XA_OPERATION "='" PCMK_VALUE_EQ "' />" 830 value_missing_eq_fails(
void **state)
836 #define expr_test(f) cmocka_unit_test_setup_teardown(f, setup, teardown) 839 cmocka_unit_test(null_invalid),
883 expr_test(op_eq_undefined_vs_empty_fails),
#define EXPR_VALUE_MISSING_EQ_FAILS
#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_EQ_EMPTY_VS_EMPTY_PASSES
#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_TYPE_INVALID
#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
void pcmk__xml_free(xmlNode *xml)
#define EXPR_TYPE_STRING_PASSES
#define EXPR_SOURCE_LITERAL_VALUE_FAILS
#define EXPR_OP_EQ_PASSES
#define EXPR_OP_DEFINED_EMPTY_PASSES
#define EXPR_OP_DEFINED_PASSES
int pcmk__xml_test_setup_group(void **state)
Wrappers for and extensions to libxml2.
#define EXPR_OP_UNDEFINED_FAILS
#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_UNDEFINED_EMPTY_FAILS
#define EXPR_OP_NE_PASSES
#define EXPR_TYPE_STRING_FAILS
#define EXPR_TYPE_NUMBER_PASSES
#define EXPR_OP_LTE_EQ_PASSES
#define EXPR_EQ_UNDEFINED_VS_EMPTY_FAILS
#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