On 06/27/2017 08:46 AM, Peter Krempa wrote: > Add a few test cases to verify that the old behaviour does not break and > that new one behaves sanely. > --- > tests/virjsondata/deflatten-basic-file-in.json | 8 +++ > tests/virjsondata/deflatten-basic-file-out.json | 10 +++ > tests/virjsondata/deflatten-basic-generic-in.json | 14 ++++ > .../deflatten-concat-double-key-in.json | 7 ++ > .../deflatten-concat-double-key-out.json | 9 +++ > tests/virjsondata/deflatten-concat-in.json | 5 ++ > tests/virjsondata/deflatten-concat-out.json | 9 +++ > tests/virjsondata/deflatten-deep-file-in.json | 9 +++ > tests/virjsondata/deflatten-deep-file-out.json | 11 ++++ > tests/virjsondata/deflatten-deep-generic-in.json | 9 +++ > tests/virjsondata/deflatten-double-key-in.json | 4 ++ > tests/virjsondata/deflatten-double-key-out.json | 6 ++ > tests/virjsondata/deflatten-nested-in.json | 16 +++++ > tests/virjsondata/deflatten-nested-out.json | 18 ++++++ > tests/virjsondata/deflatten-unflattened-in.json | 12 ++++ > tests/virjsondata/deflatten-unflattened-out.json | 14 ++++ > tests/virjsontest.c | 74 ++++++++++++++++++++++ > 17 files changed, 235 insertions(+) > create mode 100644 tests/virjsondata/deflatten-basic-file-in.json > create mode 100644 tests/virjsondata/deflatten-basic-file-out.json > create mode 100644 tests/virjsondata/deflatten-basic-generic-in.json > create mode 100644 tests/virjsondata/deflatten-concat-double-key-in.json > create mode 100644 tests/virjsondata/deflatten-concat-double-key-out.json > create mode 100644 tests/virjsondata/deflatten-concat-in.json > create mode 100644 tests/virjsondata/deflatten-concat-out.json > create mode 100644 tests/virjsondata/deflatten-deep-file-in.json > create mode 100644 tests/virjsondata/deflatten-deep-file-out.json > create mode 100644 tests/virjsondata/deflatten-deep-generic-in.json > create mode 100644 tests/virjsondata/deflatten-double-key-in.json > create mode 100644 tests/virjsondata/deflatten-double-key-out.json > create mode 100644 tests/virjsondata/deflatten-nested-in.json > create mode 100644 tests/virjsondata/deflatten-nested-out.json > create mode 100644 tests/virjsondata/deflatten-unflattened-in.json > create mode 100644 tests/virjsondata/deflatten-unflattened-out.json > [...] > > static int > +testJSONDeflatten(const void *data) > +{ > + const struct testInfo *info = data; > + virJSONValuePtr injson = NULL; > + virJSONValuePtr deflattened = NULL; > + char *infile = NULL; > + char *indata = NULL; > + char *outfile = NULL; > + char *actual = NULL; > + int ret = -1; > + > + if (virAsprintf(&infile, "%s/virjsondata/deflatten-%s-in.json", > + abs_srcdir, info->doc) < 0 || > + virAsprintf(&outfile, "%s/virjsondata/deflatten-%s-out.json", > + abs_srcdir, info->doc) < 0) > + goto cleanup; > + > + if (virTestLoadFile(infile, &indata) < 0) > + goto cleanup; > + > + if (!(injson = virJSONValueFromString(indata))) > + goto cleanup; > + > + if ((deflattened = virJSONValueObjectDeflatten(injson))) { > + if (!info->pass) { > + if (virTestGetVerbose()) > + fprintf(stderr, "deflattening should have failed\n"); This (and Copy) should probably use VIR_TEST_VERBOSE, right? At least fix this one - and consider fixing Copy in separate patch which could be considered trivial if you'd like ... For extra, extra credit you could prefix with %s: and use info->doc to further specify which test tailed. > + > + goto cleanup; > + } > + } else { > + if (!info->pass) > + ret = 0; > + > + goto cleanup; > + } > + > + if (!(actual = virJSONValueToString(deflattened, true))) > + goto cleanup; > + > + if (virTestCompareToFile(actual, outfile) < 0) > + goto cleanup; > + > + ret = 0; > + > + cleanup: > + virJSONValueFree(injson); > + virJSONValueFree(deflattened); > + VIR_FREE(infile); > + VIR_FREE(outfile); > + VIR_FREE(outfile); DRD - only need to free once, but the first one could be replaced w/ indata Reviewed-by: John Ferlan <jferlan@xxxxxxxxxx> John > + VIR_FREE(actual); > + > + return ret; > + > +} > + > + > +static int > mymain(void) > { > int ret = 0; > @@ -448,6 +509,19 @@ mymain(void) > "{ \"a\": {}, \"b\": 1, \"c\": \"str\", \"d\": [] }", > NULL, true); > > +#define DO_TEST_DEFLATTEN(name, pass) \ > + DO_TEST_FULL(name, Deflatten, name, NULL, pass) > + > + DO_TEST_DEFLATTEN("unflattened", true); > + DO_TEST_DEFLATTEN("basic-file", true); > + DO_TEST_DEFLATTEN("basic-generic", false); > + DO_TEST_DEFLATTEN("deep-file", true); > + DO_TEST_DEFLATTEN("deep-generic", false); > + DO_TEST_DEFLATTEN("nested", true); > + DO_TEST_DEFLATTEN("double-key", true); > + DO_TEST_DEFLATTEN("concat", true); > + DO_TEST_DEFLATTEN("concat-double-key", true); > + > return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE; > } > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list