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;
if (STRNEQ(outXmlData, actual)) {
virtTestDifference(stderr, outXmlData, actual);
virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml);
goto fail;
}

View File

@ -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)
@ -512,6 +521,22 @@ int virtTestDifference(FILE *stream,
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 expect: expected output text

View File

@ -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,