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