1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-23 21:34:54 +03:00

test: xml2xml: Print full filenames if xml2xml test fails

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.
This commit is contained in:
Peter Krempa 2014-10-29 15:53:36 +01:00
parent df44e3ee80
commit c5942a9faa
3 changed files with 36 additions and 6 deletions

View File

@ -50,7 +50,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live)
goto fail; goto fail;
if (STRNEQ(outXmlData, actual)) { if (STRNEQ(outXmlData, actual)) {
virtTestDifference(stderr, outXmlData, actual); virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml);
goto fail; goto fail;
} }

View File

@ -450,14 +450,19 @@ virtTestCaptureProgramOutput(const char *const argv[] ATTRIBUTE_UNUSED,
/** /**
* @param stream: output stream write to differences to * @param stream: output stream write to differences to
* @param expect: expected output text * @param expect: expected output text
* @param expectName: name designator of the expected text
* @param actual: actual output text * @param actual: actual output text
* @param actualName: name designator of the actual text
* *
* Display expected and actual output text, trimmed to * Display expected and actual output text, trimmed to first and last
* first and last characters at which differences occur * characters at which differences occur. Displays names of the text strings if
* non-NULL.
*/ */
int virtTestDifference(FILE *stream, int virtTestDifferenceFull(FILE *stream,
const char *expect, const char *expect,
const char *actual) const char *expectName,
const char *actual,
const char *actualName)
{ {
const char *expectStart; const char *expectStart;
const char *expectEnd; const char *expectEnd;
@ -495,11 +500,15 @@ int virtTestDifference(FILE *stream,
} }
/* Show the trimmed differences */ /* Show the trimmed differences */
if (expectName)
fprintf(stream, "\nIn '%s':", expectName);
fprintf(stream, "\nOffset %d\nExpect [", (int) (expectStart - expect)); fprintf(stream, "\nOffset %d\nExpect [", (int) (expectStart - expect));
if ((expectEnd - expectStart + 1) && if ((expectEnd - expectStart + 1) &&
fwrite(expectStart, (expectEnd-expectStart+1), 1, stream) != 1) fwrite(expectStart, (expectEnd-expectStart+1), 1, stream) != 1)
return -1; return -1;
fprintf(stream, "]\n"); fprintf(stream, "]\n");
if (actualName)
fprintf(stream, "In '%s':\n", actualName);
fprintf(stream, "Actual ["); fprintf(stream, "Actual [");
if ((actualEnd - actualStart + 1) && if ((actualEnd - actualStart + 1) &&
fwrite(actualStart, (actualEnd-actualStart+1), 1, stream) != 1) fwrite(actualStart, (actualEnd-actualStart+1), 1, stream) != 1)
@ -512,6 +521,22 @@ int virtTestDifference(FILE *stream,
return 0; return 0;
} }
/**
* @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 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 stream: output stream write to differences to
* @param expect: expected output text * @param expect: expected output text

View File

@ -64,6 +64,11 @@ void virtTestClearCommandPath(char *cmdset);
int virtTestDifference(FILE *stream, int virtTestDifference(FILE *stream,
const char *expect, const char *expect,
const char *actual); const char *actual);
int virtTestDifferenceFull(FILE *stream,
const char *expect,
const char *expectName,
const char *actual,
const char *actualName);
int virtTestDifferenceBin(FILE *stream, int virtTestDifferenceBin(FILE *stream,
const char *expect, const char *expect,
const char *actual, const char *actual,