mirror of
https://github.com/libvirt/libvirt.git
synced 2026-10-02 12:20:06 -05:00
qemuxmlconftest: Switch to virTestEnumerateTestCases()
The qemuxmlconftest detects unused files in qemuxmlconfdata/ directory. But it uses its own implementation for that. But now that there's a generic implementation available, switch to that. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
1 parent
3d60ba0685
commit
5e7265d97c
1 file changed
+19
-63
+19
-63
@@ -372,15 +372,6 @@ testInfoCheckDuplicate(testQemuInfo *info)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
testQemuConfMarkUsed(testQemuInfo *info,
|
||||
const char *file)
|
||||
{
|
||||
if (file)
|
||||
ignore_value(g_hash_table_remove(info->conf->existingTestCases, file));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* testQemuConfXMLCommon: Prepare common test data (e.g. parse input XML)
|
||||
* for a test case.
|
||||
@@ -413,10 +404,10 @@ testQemuConfXMLCommon(testQemuInfo *info,
|
||||
if (info->prepared)
|
||||
goto cleanup;
|
||||
|
||||
testQemuConfMarkUsed(info, info->infile);
|
||||
testQemuConfMarkUsed(info, info->outfile);
|
||||
testQemuConfMarkUsed(info, info->errfile);
|
||||
testQemuConfMarkUsed(info, info->out_xml_inactive);
|
||||
virTestCaseMarkUsed(info->conf->existingTestCases, info->infile);
|
||||
virTestCaseMarkUsed(info->conf->existingTestCases, info->outfile);
|
||||
virTestCaseMarkUsed(info->conf->existingTestCases, info->errfile);
|
||||
virTestCaseMarkUsed(info->conf->existingTestCases, info->out_xml_inactive);
|
||||
|
||||
if (testQemuInfoInitArgs((testQemuInfo *) info) < 0)
|
||||
goto cleanup;
|
||||
@@ -591,7 +582,7 @@ testExtDeviceArgv(testQemuInfo *info,
|
||||
outfile = g_strdup_printf("%s/qemuxmlconfdata/%s%s%s.%s%zu.args",
|
||||
abs_srcdir, info->name, info->suffix,
|
||||
info->args.capsvariant, helper, idx);
|
||||
testQemuConfMarkUsed(info, outfile);
|
||||
virTestCaseMarkUsed(info->conf->existingTestCases, outfile);
|
||||
|
||||
if (!cmd) {
|
||||
err = virGetLastError();
|
||||
@@ -787,51 +778,12 @@ testCompareXMLToArgv(const void *data)
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
testConfXMLCheck(GHashTable *existingTestCases)
|
||||
static bool
|
||||
testConfXMLEnumerate(struct dirent *ent)
|
||||
{
|
||||
g_autofree virHashKeyValuePair *items = virHashGetItems(existingTestCases, NULL, true);
|
||||
size_t i;
|
||||
int ret = 0;
|
||||
|
||||
for (i = 0; items[i].key; i++) {
|
||||
if (ret == 0)
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
fprintf(stderr, "unused file: %s\n", (const char *) items[i].key);
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
testConfXMLEnumerate(GHashTable *existingTestCases)
|
||||
{
|
||||
struct dirent *ent;
|
||||
g_autoptr(DIR) dir = NULL;
|
||||
int rc;
|
||||
|
||||
/* If VIR_TEST_RANGE is in use don't bother filling in the data, which
|
||||
* also makes testConfXMLCheck succeed. */
|
||||
if (virTestHasRangeBitmap())
|
||||
return 0;
|
||||
|
||||
if (virDirOpen(&dir, abs_srcdir "/qemuxmlconfdata") < 0)
|
||||
return -1;
|
||||
|
||||
while ((rc = virDirRead(dir, &ent, abs_srcdir "/qemuxmlconfdata")) > 0) {
|
||||
if (virStringHasSuffix(ent->d_name, ".xml") ||
|
||||
virStringHasSuffix(ent->d_name, ".args") ||
|
||||
virStringHasSuffix(ent->d_name, ".err")) {
|
||||
g_hash_table_insert(existingTestCases,
|
||||
g_strdup_printf(abs_srcdir "/qemuxmlconfdata/%s", ent->d_name),
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
return virStringHasSuffix(ent->d_name, ".xml") ||
|
||||
virStringHasSuffix(ent->d_name, ".args") ||
|
||||
virStringHasSuffix(ent->d_name, ".err");
|
||||
}
|
||||
|
||||
|
||||
@@ -902,23 +854,27 @@ mymain(void)
|
||||
int ret = 0;
|
||||
g_autoptr(virConnect) conn = NULL;
|
||||
g_autoptr(GHashTable) duplicateTests = virHashNew(NULL);
|
||||
g_autoptr(GHashTable) existingTestCases = virHashNew(NULL);
|
||||
g_autoptr(GHashTable) existingTestCases = NULL;
|
||||
g_autoptr(GHashTable) capslatest = testQemuGetLatestCaps();
|
||||
g_autoptr(GHashTable) qapiSchemaCache = virHashNew((GDestroyNotify) g_hash_table_unref);
|
||||
g_autoptr(GHashTable) capscache = virHashNew(virObjectUnref);
|
||||
struct testQemuConf testConf = { .capslatest = capslatest,
|
||||
.capscache = capscache,
|
||||
.qapiSchemaCache = qapiSchemaCache,
|
||||
.duplicateTests = duplicateTests,
|
||||
.existingTestCases = existingTestCases };
|
||||
.duplicateTests = duplicateTests };
|
||||
|
||||
if (!capslatest)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
/* enumerate and store all available test cases to verify at the end that
|
||||
* all of them were invoked */
|
||||
if (testConfXMLEnumerate(existingTestCases) < 0)
|
||||
if (virTestEnumerateTestCases(abs_srcdir "/qemuxmlconfdata",
|
||||
testConfXMLEnumerate,
|
||||
&existingTestCases) < 0) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
testConf.existingTestCases = existingTestCases;
|
||||
|
||||
/* Set the timezone because we are mocking the time() function.
|
||||
* If we don't do that, then localtime() may return unpredictable
|
||||
@@ -3078,7 +3034,7 @@ mymain(void)
|
||||
DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-virtualization", "aarch64");
|
||||
|
||||
/* check that all input files were actually used here */
|
||||
if (testConfXMLCheck(existingTestCases) < 0)
|
||||
if (virTestCheckUnusedTestCases(existingTestCases) < 0)
|
||||
ret = -1;
|
||||
|
||||
qemuTestDriverFree(&driver);
|
||||
|
||||
Reference in new issue
Block a user