<...snip...?>> diff --git a/tests/storagevolxml2argvtest.c
b/tests/storagevolxml2argvtest.c
index b220994..3c338ce 100644
--- a/tests/storagevolxml2argvtest.c
+++ b/tests/storagevolxml2argvtest.c
@@ -11,10 +11,32 @@
const char create_tool[] = "qemu-img";
+/* createVol sets this on volume creation */
+static void
+testSetVolumeType(virStorageVolDefPtr vol,
+ virStoragePoolDefPtr pool)
+{
+ if (!vol)
+ return;
+
+ switch (pool->type) {
+ case VIR_STORAGE_POOL_DIR:
+ case VIR_STORAGE_POOL_FS:
+ case VIR_STORAGE_POOL_NETFS:
+ vol->type = VIR_STORAGE_VOL_FILE;
+ return;
+
+ case VIR_STORAGE_POOL_LOGICAL:
+ vol->type = VIR_STORAGE_VOL_BLOCK;
+ return;
+ }
+}
+
static int
testCompareXMLToArgvFiles(bool shouldFail,
const char *poolxml,
const char *volxml,
+ const char *inputpoolxml,
const char *inputvolxml,
const char *cmdline,
unsigned int flags,
@@ -22,6 +44,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
{
char *volXmlData = NULL;
char *poolXmlData = NULL;
+ char *inputpoolXmlData = NULL;
char *inputvolXmlData = NULL;
char *expectedCmdline = NULL;
char *actualCmdline = NULL;
@@ -34,6 +57,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
virStorageVolDefPtr vol = NULL, inputvol = NULL;
virStoragePoolDefPtr pool = NULL;
+ virStoragePoolDefPtr inputpool = NULL;
virStoragePoolObj poolobj = {.def = NULL };
@@ -53,13 +77,23 @@ testCompareXMLToArgvFiles(bool shouldFail,
poolobj.def = pool;
+ if (inputpoolxml) {
+ if (virtTestLoadFile(inputpoolxml, &inputpoolXmlData) < 0)
+ goto cleanup;
+ if (!(inputpool = virStoragePoolDefParseString(inputpoolXmlData)))
+ goto cleanup;
+ }
+
if (!(vol = virStorageVolDefParseString(pool, volXmlData)))
goto cleanup;
if (inputvolxml &&
- !(inputvol = virStorageVolDefParseString(pool, inputvolXmlData)))
+ !(inputvol = virStorageVolDefParseString(inputpool, inputvolXmlData)))
goto cleanup;
+ testSetVolumeType(vol, pool);
+ testSetVolumeType(inputvol, inputpool);
Coverity is grumpy (FORWARD_NULL) right here as inputpool could be NULL
since setting 'inputpool' has been based upon 'inputpoolxml' being true
up to this point
94 testSetVolumeType(vol, pool);
(13) Event var_deref_model: Passing null pointer "inputpool" to
function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)",
which dereferences it. [details]
Also see events: [assign_zero]
95 testSetVolumeType(inputvol, inputpool);
+
cmd = virStorageBackendCreateQemuImgCmd(conn, &poolobj, vol, inputvol,
flags, create_tool, imgformat);
if (!cmd) {
@@ -88,11 +122,13 @@ testCompareXMLToArgvFiles(bool shouldFail,
cleanup:
virStoragePoolDefFree(pool);
+ virStoragePoolDefFree(inputpool);
virStorageVolDefFree(vol);
virStorageVolDefFree(inputvol);
virCommandFree(cmd);
VIR_FREE(actualCmdline);
VIR_FREE(expectedCmdline);
+ VIR_FREE(inputpoolXmlData);
VIR_FREE(poolXmlData);
VIR_FREE(volXmlData);
VIR_FREE(inputvolXmlData);
@@ -104,6 +140,7 @@ struct testInfo {
bool shouldFail;
const char *pool;
const char *vol;
+ const char *inputpool;
const char *inputvol;
const char *cmdline;
unsigned int flags;
@@ -116,6 +153,7 @@ testCompareXMLToArgvHelper(const void *data)
int result = -1;
const struct testInfo *info = data;
char *poolxml = NULL;
+ char *inputpoolxml = NULL;
char *volxml = NULL;
char *inputvolxml = NULL;
char *cmdline = NULL;
@@ -124,6 +162,10 @@ testCompareXMLToArgvHelper(const void *data)
virAsprintf(&inputvolxml, "%s/storagevolxml2xmlin/%s.xml",
abs_srcdir, info->inputvol) < 0)
goto cleanup;
+ if (info->inputpool &&
+ virAsprintf(&inputpoolxml, "%s/storagepoolxml2xmlin/%s.xml",
+ abs_srcdir, info->inputpool) < 0)
+ goto cleanup;
if (virAsprintf(&poolxml, "%s/storagepoolxml2xmlin/%s.xml",
abs_srcdir, info->pool) < 0 ||
virAsprintf(&volxml, "%s/storagevolxml2xmlin/%s.xml",
@@ -135,13 +177,15 @@ testCompareXMLToArgvHelper(const void *data)
goto cleanup;
result = testCompareXMLToArgvFiles(info->shouldFail, poolxml, volxml,
- inputvolxml, cmdline, info->flags,
+ inputpoolxml, inputvolxml,
+ cmdline, info->flags,
info->imgformat);
cleanup:
VIR_FREE(poolxml);
VIR_FREE(volxml);
VIR_FREE(inputvolxml);
+ VIR_FREE(inputpoolxml);
VIR_FREE(cmdline);
return result;
<...snip...>