mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
tests: schema: Add possibility to validate individual files
Sometimes it may be desired to validate individual files against a schema. Refactor the data structures to unify them and introduce a new macro DO_TEST_FILE(schema, xmlfile) which will test the XML file against the given schema file.
This commit is contained in:
parent
462c4b66fa
commit
e19505daa6
@ -35,6 +35,7 @@ VIR_LOG_INIT("tests.schematest");
|
|||||||
|
|
||||||
struct testSchemaData {
|
struct testSchemaData {
|
||||||
virXMLValidatorPtr validator;
|
virXMLValidatorPtr validator;
|
||||||
|
const char *schema;
|
||||||
const char *xml_path;
|
const char *xml_path;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -140,15 +141,10 @@ testSchemaDirs(const char *schema, virXMLValidatorPtr validator, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
struct testSchemaFileData {
|
|
||||||
virXMLValidatorPtr validator;
|
|
||||||
const char *schema;
|
|
||||||
};
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
testSchemaGrammar(const void *opaque)
|
testSchemaGrammar(const void *opaque)
|
||||||
{
|
{
|
||||||
struct testSchemaFileData *data = (struct testSchemaFileData *) opaque;
|
struct testSchemaData *data = (struct testSchemaData *) opaque;
|
||||||
char *schema_path;
|
char *schema_path;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
@ -171,11 +167,11 @@ static int
|
|||||||
mymain(void)
|
mymain(void)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct testSchemaFileData data;
|
struct testSchemaData data;
|
||||||
|
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
|
|
||||||
#define DO_TEST(sch, ...) \
|
#define DO_TEST_DIR(sch, ...) \
|
||||||
do { \
|
do { \
|
||||||
data.schema = sch; \
|
data.schema = sch; \
|
||||||
if (virTestRun("test schema grammar file: " sch, \
|
if (virTestRun("test schema grammar file: " sch, \
|
||||||
@ -196,26 +192,49 @@ mymain(void)
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
DO_TEST("capability.rng", "capabilityschemadata", "xencapsdata");
|
#define DO_TEST_FILE(sch, xmlfile) \
|
||||||
DO_TEST("domain.rng", "domainschemadata", "qemuargv2xmldata",
|
do { \
|
||||||
"qemuxml2argvdata", "sexpr2xmldata", "xmconfigdata",
|
data.schema = sch; \
|
||||||
"xml2sexprdata", "qemuxml2xmloutdata", "lxcxml2xmldata",
|
data.xml_path = abs_srcdir "/" xmlfile; \
|
||||||
"lxcxml2xmloutdata", "bhyvexml2argvdata", "genericxml2xmlindata",
|
if (virTestRun("test schema grammar file: " sch, \
|
||||||
"genericxml2xmloutdata", "xlconfigdata",
|
testSchemaGrammar, &data) == 0) { \
|
||||||
"qemuhotplugtestdomains");
|
/* initialize the validator even if the schema test \
|
||||||
DO_TEST("domaincaps.rng", "domaincapsschemadata");
|
* was skipped because of VIR_TEST_RANGE */ \
|
||||||
DO_TEST("domainsnapshot.rng", "domainsnapshotxml2xmlin",
|
if (!data.validator && testSchemaGrammar(&data) < 0) { \
|
||||||
"domainsnapshotxml2xmlout");
|
ret = -1; \
|
||||||
DO_TEST("interface.rng", "interfaceschemadata");
|
break; \
|
||||||
DO_TEST("network.rng", "../src/network", "networkxml2xmlin",
|
} \
|
||||||
"networkxml2xmlout", "networkxml2confdata");
|
if (virTestRun("Checking " xmlfile " against " sch, \
|
||||||
DO_TEST("nodedev.rng", "nodedevschemadata");
|
testSchemaFile, &data) < 0) \
|
||||||
DO_TEST("nwfilter.rng", "nwfilterxml2xmlout");
|
ret = -1; \
|
||||||
DO_TEST("secret.rng", "secretxml2xmlin");
|
\
|
||||||
DO_TEST("storagepool.rng", "storagepoolxml2xmlin", "storagepoolxml2xmlout",
|
virXMLValidatorFree(data.validator); \
|
||||||
"storagepoolschemadata");
|
data.validator = NULL; \
|
||||||
DO_TEST("storagevol.rng", "storagevolxml2xmlin", "storagevolxml2xmlout",
|
} else { \
|
||||||
"storagevolschemadata");
|
ret = -1; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
DO_TEST_DIR("capability.rng", "capabilityschemadata", "xencapsdata");
|
||||||
|
DO_TEST_DIR("domain.rng", "domainschemadata", "qemuargv2xmldata",
|
||||||
|
"qemuxml2argvdata", "sexpr2xmldata", "xmconfigdata",
|
||||||
|
"xml2sexprdata", "qemuxml2xmloutdata", "lxcxml2xmldata",
|
||||||
|
"lxcxml2xmloutdata", "bhyvexml2argvdata", "genericxml2xmlindata",
|
||||||
|
"genericxml2xmloutdata", "xlconfigdata",
|
||||||
|
"qemuhotplugtestdomains");
|
||||||
|
DO_TEST_DIR("domaincaps.rng", "domaincapsschemadata");
|
||||||
|
DO_TEST_DIR("domainsnapshot.rng", "domainsnapshotxml2xmlin",
|
||||||
|
"domainsnapshotxml2xmlout");
|
||||||
|
DO_TEST_DIR("interface.rng", "interfaceschemadata");
|
||||||
|
DO_TEST_DIR("network.rng", "../src/network", "networkxml2xmlin",
|
||||||
|
"networkxml2xmlout", "networkxml2confdata");
|
||||||
|
DO_TEST_DIR("nodedev.rng", "nodedevschemadata");
|
||||||
|
DO_TEST_DIR("nwfilter.rng", "nwfilterxml2xmlout");
|
||||||
|
DO_TEST_DIR("secret.rng", "secretxml2xmlin");
|
||||||
|
DO_TEST_DIR("storagepool.rng", "storagepoolxml2xmlin", "storagepoolxml2xmlout",
|
||||||
|
"storagepoolschemadata");
|
||||||
|
DO_TEST_DIR("storagevol.rng", "storagevolxml2xmlin", "storagevolxml2xmlout",
|
||||||
|
"storagevolschemadata");
|
||||||
|
|
||||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user