提交 ee3e23a7 编写于 作者: J Ján Tomko

virjsontest: switch AddAndRemove tests to work with files

Instead of using JSON in C strings, put it in separate files
for easier manipulation.
Signed-off-by: NJán Tomko <jtomko@redhat.com>
Reviewed-by: NAndrea Bolognani <abologna@redhat.com>
上级 650e62e0
{"name": "sample", "value": true}
......@@ -68,12 +68,24 @@ static int
testJSONAddRemove(const void *data)
{
const struct testInfo *info = data;
virJSONValuePtr json;
virJSONValuePtr json = NULL;
virJSONValuePtr name = NULL;
char *result = NULL;
VIR_AUTOFREE(char *) infile = NULL;
VIR_AUTOFREE(char *) indata = NULL;
VIR_AUTOFREE(char *) outfile = NULL;
VIR_AUTOFREE(char *) actual = NULL;
int ret = -1;
json = virJSONValueFromString(info->doc);
if (virAsprintf(&infile, "%s/virjsondata/add-remove-%s-in.json",
abs_srcdir, info->name) < 0 ||
virAsprintf(&outfile, "%s/virjsondata/add-remove-%s-out.json",
abs_srcdir, info->name) < 0)
goto cleanup;
if (virTestLoadFile(infile, &indata) < 0)
goto cleanup;
json = virJSONValueFromString(indata);
if (!json) {
VIR_TEST_VERBOSE("Fail to parse %s\n", info->name);
ret = -1;
......@@ -113,20 +125,18 @@ testJSONAddRemove(const void *data)
VIR_TEST_VERBOSE("%s", "unexpected failure adding new key\n");
goto cleanup;
}
if (!(result = virJSONValueToString(json, false))) {
if (!(actual = virJSONValueToString(json, false))) {
VIR_TEST_VERBOSE("%s", "failed to stringize result\n");
goto cleanup;
}
if (STRNEQ(info->expect, result)) {
virTestDifference(stderr, info->expect, result);
if (virTestCompareToFile(actual, outfile) < 0)
goto cleanup;
}
ret = 0;
cleanup:
virJSONValueFree(json);
virJSONValueFree(name);
VIR_FREE(result);
return ret;
}
......@@ -543,12 +553,8 @@ mymain(void)
"\"query-uuid\"},{\"name\":\"query-migrate\"},{\"name\":"
"\"query-balloon\"}],\"id\":\"libvirt-2\"}", NULL);
DO_TEST_FULL("add and remove", AddRemove,
"{\"name\": \"sample\", \"value\": true}",
"{\"value\":true,\"newname\":\"foo\"}",
true);
DO_TEST_FULL("add and remove", AddRemove,
"[ 1 ]", NULL, false);
DO_TEST_FULL("success", AddRemove, NULL, NULL, true);
DO_TEST_FULL("failure", AddRemove, NULL, NULL, false);
DO_TEST_FULL("copy and free", Copy,
"{\"return\": [{\"name\": \"quit\"}, {\"name\": \"eject\"},"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册