mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
tests: utils: Add virTestLoadFilePath helper
This new helper loads and returns a 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
3c60388591
commit
d492b19259
@ -356,6 +356,57 @@ virTestLoadFile(const char *file, char **buf)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static char *
|
||||
virTestLoadFileGetPath(const char *p,
|
||||
va_list ap)
|
||||
{
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
char *path = NULL;
|
||||
|
||||
virBufferAddLit(&buf, abs_srcdir "/");
|
||||
|
||||
if (p) {
|
||||
virBufferAdd(&buf, p, -1);
|
||||
virBufferStrcatVArgs(&buf, ap);
|
||||
}
|
||||
|
||||
if (!(path = virBufferContentAndReset(&buf)))
|
||||
VIR_TEST_VERBOSE("failed to format file path");
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* virTestLoadFilePath:
|
||||
* @...: file name components terminated with a NULL
|
||||
*
|
||||
* Constructs the test file path from variable arguments and loads the file.
|
||||
* 'abs_srcdir' is automatically prepended.
|
||||
*/
|
||||
char *
|
||||
virTestLoadFilePath(const char *p, ...)
|
||||
{
|
||||
char *path = NULL;
|
||||
char *ret = NULL;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, p);
|
||||
|
||||
if (!(path = virTestLoadFileGetPath(p, ap)))
|
||||
goto cleanup;
|
||||
|
||||
ignore_value(virTestLoadFile(path, &ret));
|
||||
|
||||
cleanup:
|
||||
va_end(ap);
|
||||
VIR_FREE(path);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
static
|
||||
void virTestCaptureProgramExecChild(const char *const argv[],
|
||||
|
@ -52,6 +52,8 @@ int virTestRun(const char *title,
|
||||
int (*body)(const void *data),
|
||||
const void *data);
|
||||
int virTestLoadFile(const char *file, char **buf);
|
||||
char *virTestLoadFilePath(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