It looks like qga's working directory is in a tempdir. So the relative
path that the test case gives qga through the QGA_OS_RELEASE=
env variable does not resolve correctly.
Fix by doing a poor man's path canonicalization of the test data file.
Note we cannot use g_canonicalize_filename() b/c that helper was only
introduced in glib 2.58 and the current GLIB_VERSION_MAX_ALLOWED is
pinned to 2.56.
Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
---
tests/unit/test-qga.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/tests/unit/test-qga.c b/tests/unit/test-qga.c
index b4e0a14573..9d8e1d1cd3 100644
--- a/tests/unit/test-qga.c
+++ b/tests/unit/test-qga.c
@@ -881,13 +881,16 @@ static void test_qga_guest_get_osinfo(gconstpointer data)
{
TestFixture fixture;
const gchar *str;
+ g_autofree const gchar *cwd;
g_autoptr(QDict) ret = NULL;
char *env[2];
QDict *val;
+ cwd = g_get_current_dir();
env[0] = g_strdup_printf(
- "QGA_OS_RELEASE=%s%c..%cdata%ctest-qga-os-release",
- g_test_get_dir(G_TEST_DIST), G_DIR_SEPARATOR, G_DIR_SEPARATOR, G_DIR_SEPARATOR);
+ "QGA_OS_RELEASE=%s%c%s%c..%cdata%ctest-qga-os-release",
+ cwd, G_DIR_SEPARATOR, g_test_get_dir(G_TEST_DIST), G_DIR_SEPARATOR,
+ G_DIR_SEPARATOR, G_DIR_SEPARATOR);
env[1] = NULL;
fixture_setup(&fixture, NULL, env);
--
2.39.1
Hi On Fri, Feb 24, 2023 at 8:31 AM Daniel Xu <dxu@dxuuu.xyz> wrote: > > It looks like qga's working directory is in a tempdir. So the relative > path that the test case gives qga through the QGA_OS_RELEASE= > env variable does not resolve correctly. > > Fix by doing a poor man's path canonicalization of the test data file. > > Note we cannot use g_canonicalize_filename() b/c that helper was only > introduced in glib 2.58 and the current GLIB_VERSION_MAX_ALLOWED is > pinned to 2.56. > > Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> This breaks "meson test test-qga" for me. How do you run the tests? > --- > tests/unit/test-qga.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/tests/unit/test-qga.c b/tests/unit/test-qga.c > index b4e0a14573..9d8e1d1cd3 100644 > --- a/tests/unit/test-qga.c > +++ b/tests/unit/test-qga.c > @@ -881,13 +881,16 @@ static void test_qga_guest_get_osinfo(gconstpointer data) > { > TestFixture fixture; > const gchar *str; > + g_autofree const gchar *cwd; const is not appropriate here, interesting I don't get a warning > g_autoptr(QDict) ret = NULL; > char *env[2]; > QDict *val; > > + cwd = g_get_current_dir(); > env[0] = g_strdup_printf( > - "QGA_OS_RELEASE=%s%c..%cdata%ctest-qga-os-release", > - g_test_get_dir(G_TEST_DIST), G_DIR_SEPARATOR, G_DIR_SEPARATOR, G_DIR_SEPARATOR); > + "QGA_OS_RELEASE=%s%c%s%c..%cdata%ctest-qga-os-release", > + cwd, G_DIR_SEPARATOR, g_test_get_dir(G_TEST_DIST), G_DIR_SEPARATOR, > + G_DIR_SEPARATOR, G_DIR_SEPARATOR); > env[1] = NULL; > fixture_setup(&fixture, NULL, env); > > -- > 2.39.1 > > -- Marc-André Lureau
Hi Marc-André, Thanks for reviewing the series. On Mon, Feb 27, 2023, at 1:16 AM, Marc-André Lureau wrote: > Hi > > On Fri, Feb 24, 2023 at 8:31 AM Daniel Xu <dxu@dxuuu.xyz> wrote: >> >> It looks like qga's working directory is in a tempdir. So the relative >> path that the test case gives qga through the QGA_OS_RELEASE= >> env variable does not resolve correctly. >> >> Fix by doing a poor man's path canonicalization of the test data file. >> >> Note we cannot use g_canonicalize_filename() b/c that helper was only >> introduced in glib 2.58 and the current GLIB_VERSION_MAX_ALLOWED is >> pinned to 2.56. >> >> Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> > > This breaks "meson test test-qga" for me. How do you run the tests? Ah, thanks for the hint. I was running the qga tests in build/ with: $ ./tests/unit/test-qga Using meson to drive the tests fixed it for me. I will drop this patch. [...] Thanks, Daniel
© 2016 - 2025 Red Hat, Inc.