To simplify looking for a problem instrument the XML comparator function with possibility to print the filename of the failed/expected XML output. This is necessary as the VIR_TEST_DIFFERENT macro possibly tests two XML files for the inactive/active state and the resulting error may not be obvious. --- tests/qemuxml2xmltest.c | 2 +- tests/testutils.c | 35 ++++++++++++++++++++++++++++++----- tests/testutils.h | 5 +++++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index ca11e90..a5dccd5 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -50,7 +50,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live) goto fail; if (STRNEQ(outXmlData, actual)) { - virtTestDifference(stderr, outXmlData, actual); + virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml); goto fail; } diff --git a/tests/testutils.c b/tests/testutils.c index 9d6980f..9a79f98 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -450,14 +450,19 @@ virtTestCaptureProgramOutput(const char *const argv[] ATTRIBUTE_UNUSED, /** * @param stream: output stream write to differences to * @param expect: expected output text + * @param expectName: name designator of the expected text * @param actual: actual output text + * @param actualName: name designator of the actual text * - * Display expected and actual output text, trimmed to - * first and last characters at which differences occur + * Display expected and actual output text, trimmed to first and last + * characters at which differences occur. Displays names of the text strings if + * non-NULL. */ -int virtTestDifference(FILE *stream, - const char *expect, - const char *actual) +int virtTestDifferenceFull(FILE *stream, + const char *expect, + const char *expectName, + const char *actual, + const char *actualName) { const char *expectStart; const char *expectEnd; @@ -495,11 +500,15 @@ int virtTestDifference(FILE *stream, } /* Show the trimmed differences */ + if (expectName) + fprintf(stream, "\nIn '%s':", expectName); fprintf(stream, "\nOffset %d\nExpect [", (int) (expectStart - expect)); if ((expectEnd - expectStart + 1) && fwrite(expectStart, (expectEnd-expectStart+1), 1, stream) != 1) return -1; fprintf(stream, "]\n"); + if (actualName) + fprintf(stream, "In '%s':\n", actualName); fprintf(stream, "Actual ["); if ((actualEnd - actualStart + 1) && fwrite(actualStart, (actualEnd-actualStart+1), 1, stream) != 1) @@ -520,6 +529,22 @@ int virtTestDifference(FILE *stream, * Display expected and actual output text, trimmed to * first and last characters at which differences occur */ +int virtTestDifference(FILE *stream, + const char *expect, + const char *actual) +{ + return virtTestDifferenceFull(stream, expect, NULL, actual, NULL); +} + + +/** + * @param stream: output stream write to differences to + * @param expect: expected output text + * @param actual: actual output text + * + * Display expected and actual output text, trimmed to + * first and last characters at which differences occur + */ int virtTestDifferenceBin(FILE *stream, const char *expect, const char *actual, diff --git a/tests/testutils.h b/tests/testutils.h index ad28ea7..d78818d 100644 --- a/tests/testutils.h +++ b/tests/testutils.h @@ -64,6 +64,11 @@ void virtTestClearCommandPath(char *cmdset); int virtTestDifference(FILE *stream, const char *expect, const char *actual); +int virtTestDifferenceFull(FILE *stream, + const char *expect, + const char *expectName, + const char *actual, + const char *actualName); int virtTestDifferenceBin(FILE *stream, const char *expect, const char *actual, -- 2.1.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list