mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 13:47:13 +03:00
qemuxmlconftest: Add test cases for broken and missing XML files
Add test cases for few edge cases which excercise the XML reporting from libxml2 in anticipation of upcoming changes of behaviour. 'virschematest' must skip parsing of the broken file altogether so this patch adds infrastructure to allow that. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
4dc889a626
commit
71f14351f9
@ -0,0 +1,3 @@
|
||||
ABS_SRCDIR/qemuxmlconfdata/broken-xml-invalid.xml:2: Couldn't find end of Start Tag dom line 1
|
||||
(null)
|
||||
^
|
1
tests/qemuxmlconfdata/broken-xml-invalid.xml
Normal file
1
tests/qemuxmlconfdata/broken-xml-invalid.xml
Normal file
@ -0,0 +1 @@
|
||||
<dom
|
1
tests/qemuxmlconfdata/nonexistent-file.x86_64-latest.err
Normal file
1
tests/qemuxmlconfdata/nonexistent-file.x86_64-latest.err
Normal file
@ -0,0 +1 @@
|
||||
XML error: failed to parse xml document 'ABS_SRCDIR/qemuxmlconfdata/nonexistent-file.xml'
|
@ -372,6 +372,7 @@ testCheckExclusiveFlags(int flags)
|
||||
FLAG_REAL_CAPS |
|
||||
FLAG_SLIRP_HELPER |
|
||||
FLAG_ALLOW_DUPLICATE_OUTPUT |
|
||||
FLAG_ALLOW_MISSING_INPUT |
|
||||
0, -1);
|
||||
|
||||
return 0;
|
||||
@ -671,7 +672,8 @@ testQemuConfXMLCommon(testQemuInfo *info,
|
||||
if (qemuTestCapsCacheInsert(driver.qemuCapsCache, info->qemuCaps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!virFileExists(info->infile)) {
|
||||
if (!(info->flags & FLAG_ALLOW_MISSING_INPUT) &&
|
||||
!virFileExists(info->infile)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"Input file '%s' not found", info->infile);
|
||||
goto cleanup;
|
||||
@ -1237,6 +1239,10 @@ mymain(void)
|
||||
g_unsetenv("PIPEWIRE_REMOTE");
|
||||
g_unsetenv("PIPEWIRE_RUNTIME_DIR");
|
||||
|
||||
DO_TEST_CAPS_ARCH_LATEST_FULL("nonexistent-file", "x86_64",
|
||||
ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR | FLAG_ALLOW_MISSING_INPUT);
|
||||
DO_TEST_CAPS_LATEST_PARSE_ERROR("broken-xml-invalid");
|
||||
|
||||
DO_TEST_CAPS_LATEST("x86_64-pc-minimal");
|
||||
DO_TEST_CAPS_LATEST_ABI_UPDATE("x86_64-pc-minimal");
|
||||
DO_TEST_CAPS_LATEST("x86_64-q35-minimal");
|
||||
|
@ -61,6 +61,7 @@ typedef enum {
|
||||
FLAG_REAL_CAPS = 1 << 2,
|
||||
FLAG_SLIRP_HELPER = 1 << 3,
|
||||
FLAG_ALLOW_DUPLICATE_OUTPUT = 1 << 4, /* allow multiple tests with the same output file */
|
||||
FLAG_ALLOW_MISSING_INPUT = 1 << 5,
|
||||
} testQemuInfoFlags;
|
||||
|
||||
struct testQemuConf {
|
||||
|
@ -36,6 +36,7 @@ struct testSchemaEntry {
|
||||
const char **exceptions; /* optional NULL terminated list of filenames inside
|
||||
directory where the expected validation result is
|
||||
inverted */
|
||||
const char **skip; /* optional NULL terminated list of files to skip altogether */
|
||||
const char *dirRegex;
|
||||
const char *file;
|
||||
};
|
||||
@ -131,6 +132,10 @@ testSchemaDir(const char *schema,
|
||||
!g_regex_match(filter, ent->d_name, 0, NULL))
|
||||
continue;
|
||||
|
||||
if (entry->skip &&
|
||||
g_strv_contains(entry->skip, ent->d_name))
|
||||
continue;
|
||||
|
||||
if (entry->exceptions)
|
||||
exception = g_strv_contains(entry->exceptions, ent->d_name);
|
||||
|
||||
@ -237,10 +242,17 @@ static const char *exceptions_qemuxmlconfdata[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
/* skip tests with completely broken XML */
|
||||
static const char *skip_qemuxmlconfdata[] = {
|
||||
"broken-xml-invalid.xml",
|
||||
NULL
|
||||
};
|
||||
|
||||
static const struct testSchemaEntry schemaDomain[] = {
|
||||
{ .dir = "tests/domainschemadata" },
|
||||
{ .dir = "tests/qemuxmlconfdata",
|
||||
.exceptions = exceptions_qemuxmlconfdata,
|
||||
.skip = skip_qemuxmlconfdata,
|
||||
},
|
||||
{ .dir = "tests/xmconfigdata" },
|
||||
{ .dir = "tests/lxcxml2xmldata" },
|
||||
|
Loading…
x
Reference in New Issue
Block a user