diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 8f556eeee64cf4b5bc2d086efd652cefab38ff52..c8c6c6e5bd44587bffa3d92e71a9604651f6092d 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -32,8 +32,8 @@ testCompareXMLToXMLHelper(const void *data) ret = testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, xml_in, info->different ? xml_out : xml_in, - false, - NULL, NULL, 0); + false, NULL, NULL, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); cleanup: VIR_FREE(xml_in); diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index bf9b11d3de58bbcf24ba1cde2f9c73e8bc9fefee..7d504db6f29d1043f917ba66e28d15d03017dd97 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -39,8 +39,8 @@ testCompareXMLToXMLHelper(const void *data) ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in, info->different ? xml_out : xml_in, - !info->inactive_only, - NULL, NULL, 0); + !info->inactive_only, NULL, NULL, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); cleanup: VIR_FREE(xml_in); VIR_FREE(xml_out); diff --git a/tests/lxcxml2xmltest.c b/tests/lxcxml2xmltest.c index 0b51340bdfd107f05f17d4af5e253b1b9b9877a9..fec0142b16f87a661d6a4fcd95ac39f055085adc 100644 --- a/tests/lxcxml2xmltest.c +++ b/tests/lxcxml2xmltest.c @@ -46,7 +46,8 @@ testCompareXMLToXMLHelper(const void *data) ret = testCompareDomXML2XMLFiles(caps, xmlopt, xml_in, info->different ? xml_out : xml_in, !info->inactive_only, - NULL, NULL, info->parse_flags); + NULL, NULL, info->parse_flags, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); cleanup: VIR_FREE(xml_in); VIR_FREE(xml_out); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index f4093f1ff0e82fea15a7702d7b955ec068168b70..cbe6b7821c3391cf7314138b228be621321fee46 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -54,7 +54,8 @@ testXML2XMLActive(const void *opaque) return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName, info->outActiveName, true, - qemuXML2XMLPreFormatCallback, opaque, 0); + qemuXML2XMLPreFormatCallback, opaque, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); } @@ -65,7 +66,8 @@ testXML2XMLInactive(const void *opaque) return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt, info->inName, info->outInactiveName, false, - qemuXML2XMLPreFormatCallback, opaque, 0); + qemuXML2XMLPreFormatCallback, opaque, 0, + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS); } diff --git a/tests/testutils.c b/tests/testutils.c index fc4c339bb7fe9e7c9024a63dbebce88e8c01d62b..79d076378a169bad9d7a9623356f0aaab3b3fa82 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -1079,10 +1079,12 @@ int testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt, const char *infile, const char *outfile, bool live, testCompareDomXML2XMLPreFormatCallback cb, - const void *opaque, unsigned int parseFlags) + const void *opaque, unsigned int parseFlags, + testCompareDomXML2XMLResult expectResult) { char *actual = NULL; int ret = -1; + testCompareDomXML2XMLResult result; virDomainDefPtr def = NULL; unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE; unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE; @@ -1092,25 +1094,47 @@ testCompareDomXML2XMLFiles(virCapsPtr caps, virDomainXMLOptionPtr xmlopt, if (!live) format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE; - if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags))) - goto fail; + if (!(def = virDomainDefParseFile(infile, caps, xmlopt, parse_flags))) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE; + goto out; + } if (!virDomainDefCheckABIStability(def, def)) { VIR_TEST_DEBUG("ABI stability check failed on %s", infile); - goto fail; + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_STABILITY; + goto out; } - if (cb && cb(def, opaque) < 0) - goto fail; + if (cb && cb(def, opaque) < 0) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_CB; + goto out; + } - if (!(actual = virDomainDefFormat(def, caps, format_flags))) - goto fail; + if (!(actual = virDomainDefFormat(def, caps, format_flags))) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_FORMAT; + goto out; + } - if (virtTestCompareToFile(actual, outfile) < 0) - goto fail; + if (virtTestCompareToFile(actual, outfile) < 0) { + result = TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_COMPARE; + goto out; + } + + result = TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS; + + out: + if (result == expectResult) { + ret = 0; + if (expectResult != TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS) { + VIR_TEST_DEBUG("Got expected failure code=%d msg=%s", + result, virGetLastErrorMessage()); + } + } else { + ret = -1; + VIR_TEST_DEBUG("Expected result code=%d but received code=%d", + expectResult, result); + } - ret = 0; - fail: VIR_FREE(actual); virDomainDefFree(def); return ret; diff --git a/tests/testutils.h b/tests/testutils.h index 058be55cdf04b38d8f5d7d7b64989ff7fa75f765..0417a0b9feba63af5fe38cf06de1eb85cbbc0014 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -134,6 +134,15 @@ int virtTestMain(int argc, virCapsPtr virTestGenericCapsInit(void); virDomainXMLOptionPtr virTestGenericDomainXMLConfInit(void); +typedef enum { + TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_STABILITY, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_CB, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_FORMAT, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_COMPARE, +} testCompareDomXML2XMLResult; + typedef int (*testCompareDomXML2XMLPreFormatCallback)(virDomainDefPtr def, const void *opaque); int testCompareDomXML2XMLFiles(virCapsPtr caps, @@ -143,6 +152,7 @@ int testCompareDomXML2XMLFiles(virCapsPtr caps, bool live, testCompareDomXML2XMLPreFormatCallback cb, const void *opaque, - unsigned int parseFlags); + unsigned int parseFlags, + testCompareDomXML2XMLResult expectResult); #endif /* __VIR_TEST_UTILS_H__ */