mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
tests: utils: Add virTestLoadFileJSON helper
This new helper loads, parses and returns a JSON file from 'abs_srcdir' By using variable arguments for the function, it's not necessary to format the path separately in the test cases. Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
b650caedf1
commit
e5d03a2c1a
@ -407,6 +407,40 @@ virTestLoadFilePath(const char *p, ...)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* virTestLoadFileJSON:
|
||||
* @...: name components terminated with a NULL
|
||||
*
|
||||
* Constructs the test file path from variable arguments and loads and parses
|
||||
* the JSON file. 'abs_srcdir' is automatically prepended to the path.
|
||||
*/
|
||||
virJSONValuePtr
|
||||
virTestLoadFileJSON(const char *p, ...)
|
||||
{
|
||||
virJSONValuePtr ret = NULL;
|
||||
char *jsonstr = NULL;
|
||||
char *path = NULL;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, p);
|
||||
|
||||
if (!(path = virTestLoadFileGetPath(p, ap)))
|
||||
goto cleanup;
|
||||
|
||||
if (virTestLoadFile(path, &jsonstr) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(ret = virJSONValueFromString(jsonstr)))
|
||||
VIR_TEST_VERBOSE("failed to parse json from file '%s'", path);
|
||||
|
||||
cleanup:
|
||||
va_end(ap);
|
||||
VIR_FREE(jsonstr);
|
||||
VIR_FREE(path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
static
|
||||
void virTestCaptureProgramExecChild(const char *const argv[],
|
||||
|
@ -27,6 +27,7 @@
|
||||
# include "viralloc.h"
|
||||
# include "virfile.h"
|
||||
# include "virstring.h"
|
||||
# include "virjson.h"
|
||||
# include "capabilities.h"
|
||||
# include "domain_conf.h"
|
||||
|
||||
@ -54,6 +55,9 @@ int virTestRun(const char *title,
|
||||
int virTestLoadFile(const char *file, char **buf);
|
||||
char *virTestLoadFilePath(const char *p, ...)
|
||||
ATTRIBUTE_SENTINEL;
|
||||
virJSONValuePtr virTestLoadFileJSON(const char *p, ...)
|
||||
ATTRIBUTE_SENTINEL;
|
||||
|
||||
int virTestCaptureProgramOutput(const char *const argv[], char **buf, int maxlen);
|
||||
|
||||
void virTestClearCommandPath(char *cmdset);
|
||||
|
Loading…
Reference in New Issue
Block a user