24#define MATCHED_STRING "server-north"
26static const regmatch_t submatches[] = {
27 { .rm_so = 0, .rm_eo = 12 },
28 { .rm_so = 7, .rm_eo = 12 },
36 .rsc_id_submatches = submatches,
74 g_hash_table_destroy(rule_input.
rsc_meta);
87assert_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 "' />"
109null_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' />"
132id_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' />"
148attr_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 "' />"
159attr_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 "' />"
170attr_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' />"
187source_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' />"
201source_invalid(
void **state)
207source_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 "' />"
220source_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 "' />"
234source_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 "' />"
248source_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 "' />"
261source_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 "' />"
274source_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 "' />"
287source_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 "' />"
300source_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 "' />"
313source_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' />"
330type_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' />"
343type_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' />"
357type_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' />"
370type_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' />"
383type_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' />"
396type_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' />"
409type_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' />"
422type_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' />"
435type_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' />"
448type_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' />"
461type_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' />"
474type_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' />"
487type_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' />"
502op_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' />"
514op_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' />"
527op_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' />"
540op_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' />"
553op_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' />"
566op_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' />"
579op_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' />"
592op_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' />"
605op_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' />"
618op_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' />"
631op_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' />"
644op_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 "' />"
659op_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 "='' />"
671op_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' />"
684op_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 "='' />"
696op_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 "' />"
711op_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' />"
724op_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 "' />"
735op_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 "' />"
746op_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 "' />"
757op_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 "' />"
769op_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 "' />"
780op_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 "' />"
791op_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 "' />"
802op_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 "' />"
819value_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 "' />"
830value_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),
G_GNUC_INTERNAL int pcmk__evaluate_attr_expression(const xmlNode *expression, const pcmk_rule_input_t *rule_input)
#define EXPR_OP_LTE_LT_PASSES
#define EXPR_OP_GTE_FAILS
#define EXPR_ATTR_SUBMATCH_PASSES
#define EXPR_ATTR_MISSING
#define EXPR_TYPE_STRING_PASSES
#define EXPR_SOURCE_META_FAILS
#define EXPR_SOURCE_LITERAL_VALUE_FAILS
#define EXPR_OP_UNDEFINED_FAILS
#define EXPR_TYPE_VERSION_PASSES
#define EXPR_SOURCE_MISSING
#define EXPR_OP_GTE_EQ_PASSES
#define EXPR_TYPE_STRING_FAILS
#define EXPR_TYPE_NUMBER_PASSES
#define EXPR_TYPE_DEFAULT_NUMBER
#define EXPR_OP_UNDEFINED_EMPTY_FAILS
#define EXPR_TYPE_DEFAULT_INT
#define EXPR_SOURCE_PARAM_MISSING
#define EXPR_SOURCE_PARAM_PASSES
#define EXPR_ATTR_SUBMATCH_FAILS
#define EXPR_OP_DEFINED_EMPTY_PASSES
#define EXPR_SOURCE_PARAM_FAILS
#define EXPR_OP_NE_PASSES
#define EXPR_SOURCE_INVALID
#define EXPR_TYPE_INVALID
#define EXPR_TYPE_NUMBER_FAILS
#define EXPR_VALUE_MISSING_EQ_FAILS
#define EXPR_VALUE_MISSING_DEFINED_OK
#define EXPR_TYPE_INTEGER_FAILS
#define EXPR_OP_EQ_PASSES
#define EXPR_SOURCE_META_PASSES
#define EXPR_EQ_EMPTY_VS_EMPTY_PASSES
#define EXPR_TYPE_INTEGER_TRUNCATION
#define EXPR_TYPE_VERSION_FAILS
#define EXPR_OP_LTE_FAILS
#define EXPR_EQ_UNDEFINED_VS_EMPTY_FAILS
#define EXPR_OP_GT_PASSES
#define EXPR_SOURCE_LITERAL_ATTR_FAILS
#define EXPR_OP_UNDEFINED_PASSES
#define EXPR_OP_DEFINED_WITH_VALUE
#define EXPR_OP_LTE_EQ_PASSES
#define EXPR_SOURCE_LITERAL_PASSES
#define EXPR_OP_DEFINED_FAILS
#define EXPR_TYPE_VERSION_EQUALITY
#define EXPR_TYPE_INTEGER_PASSES
#define EXPR_SOURCE_META_MISSING
#define EXPR_OP_LT_PASSES
#define EXPR_OP_DEFINED_PASSES
#define EXPR_OP_GTE_GT_PASSES
void pcmk__insert_dup(GHashTable *table, const char *name, const char *value)
GHashTable * pcmk__strkey_table(GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func)
int pcmk__xml_test_teardown_group(void **state)
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
int pcmk__xml_test_setup_group(void **state)
Wrappers for and extensions to libxml2.
void pcmk__xml_free(xmlNode *xml)
xmlNode * pcmk__xml_parse(const char *input)