
On Mon, Sep 21, 2020 at 15:07:31 +0200, Tim Wiederhake wrote:
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- tests/cputest.c | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-)
diff --git a/tests/cputest.c b/tests/cputest.c index b40fd7f7f2..30a125c3da 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -68,7 +68,7 @@ static virQEMUDriver driver;
static virCPUDefPtr -cpuTestLoadXML(virArch arch, const char *name) +cpuTestLoadXML(virArch arch, const char *name, bool validate) { char *xml = NULL; xmlDocPtr doc = NULL; @@ -81,7 +81,7 @@ cpuTestLoadXML(virArch arch, const char *name) if (!(doc = virXMLParseFileCtxt(xml, &ctxt))) goto cleanup;
- virCPUDefParseXML(ctxt, NULL, VIR_CPU_TYPE_AUTO, &cpu, false); + virCPUDefParseXML(ctxt, NULL, VIR_CPU_TYPE_AUTO, &cpu, validate);
Is there any reason why we can't just always pass 'true' here?
cleanup: xmlXPathFreeContext(ctxt); @@ -203,12 +203,20 @@ cpuTestCompare(const void *arg) virCPUDefPtr host = NULL; virCPUDefPtr cpu = NULL; virCPUCompareResult result; + bool validate = !!(data->flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
- if (!(host = cpuTestLoadXML(data->arch, data->host)) || - !(cpu = cpuTestLoadXML(data->arch, data->name))) - goto cleanup; + host = cpuTestLoadXML(data->arch, data->host, validate); + cpu = cpuTestLoadXML(data->arch, data->name, validate); + + if (!host || !cpu) { + if (validate) + result = VIR_CPU_COMPARE_ERROR; + else + goto cleanup; + } else { + result = virCPUCompare(host->arch, host, cpu, false); + }
Same here, we should always validate the XML files. Also reporting a validation failure as a COMPARE_ERROR seems wrong IMO.