From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49373) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCUQ0-0003F5-FM for qemu-devel@nongnu.org; Mon, 13 Jun 2016 12:08:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bCUPu-0004Cp-3m for qemu-devel@nongnu.org; Mon, 13 Jun 2016 12:08:51 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:63133 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCUPt-0004CM-V2 for qemu-devel@nongnu.org; Mon, 13 Jun 2016 12:08:46 -0400 Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u5DG8bs7106708 for ; Mon, 13 Jun 2016 12:08:45 -0400 Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by mx0b-001b2d01.pphosted.com with ESMTP id 23gbjv0e6e-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Mon, 13 Jun 2016 12:08:44 -0400 Received: from localhost by e32.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 13 Jun 2016 10:08:44 -0600 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Michael Roth In-Reply-To: <198901162.5803520.1465821059076.JavaMail.zimbra@redhat.com> References: <1465820746-25664-1-git-send-email-marcandre.lureau@redhat.com> <198901162.5803520.1465821059076.JavaMail.zimbra@redhat.com> Date: Mon, 13 Jun 2016 11:08:29 -0500 Message-Id: <20160613160829.31382.26968@loki> Subject: Re: [Qemu-devel] [PATCH] tests: use static qga config file List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , marcandre lureau Cc: qemu-devel@nongnu.org, peter maydell Quoting Marc-Andr=C3=A9 Lureau (2016-06-13 07:30:59) > Hi > = > ----- Original Message ----- > > From: Marc-Andr=C3=A9 Lureau > > = > > Do not create a leaking temporary file, but use a static file instead. > > = > > Signed-off-by: Marc-Andr=C3=A9 Lureau > > Reported-by: Peter Maydell > > --- > > tests/test-qga-config | 8 ++++++++ > > tests/test-qga.c | 27 ++++----------------------- > > 2 files changed, 12 insertions(+), 23 deletions(-) > > create mode 100644 tests/test-qga-config > > = > > diff --git a/tests/test-qga-config b/tests/test-qga-config > > new file mode 100644 > > index 0000000..4bb721a > > --- /dev/null > > +++ b/tests/test-qga-config > > @@ -0,0 +1,8 @@ > > +[general] > > +daemon=3Dfalse > > +method=3Dvirtio-serial > > +path=3D/path/to/org.qemu.guest_agent.0 > > +pidfile=3D/var/foo/qemu-ga.pid > > +statedir=3D/var/state > > +verbose=3Dtrue > > +blacklist=3Dguest-ping;guest-get-time > > diff --git a/tests/test-qga.c b/tests/test-qga.c > > index 251b201..7d206ec 100644 > > --- a/tests/test-qga.c > > +++ b/tests/test-qga.c > > @@ -691,28 +691,11 @@ static void test_qga_blacklist(gconstpointer data) > > static void test_qga_config(gconstpointer data) > > { > > GError *error =3D NULL; > > - char *cwd, *cmd, *out, *err, *str, **strv, *conf, **argv =3D NULL; > > + char *cwd, *cmd, *out, *err, *str, **strv, **argv =3D NULL; > > char *env[2]; > > - int status, tmp; > > + int status; > > gsize n; > > GKeyFile *kf; > > - const char *qga_config =3D > > - "[general]\n" > > - "daemon=3Dfalse\n" > > - "method=3Dvirtio-serial\n" > > - "path=3D/path/to/org.qemu.guest_agent.0\n" > > - "pidfile=3D/var/foo/qemu-ga.pid\n" > > - "statedir=3D/var/state\n" > > - "verbose=3Dtrue\n" > > - "blacklist=3Dguest-ping;guest-get-time\n"; > > - > > - tmp =3D g_file_open_tmp(NULL, &conf, &error); > > - g_assert_no_error(error); > > - g_assert_cmpint(tmp, >=3D, 0); > > - g_assert_cmpstr(conf, !=3D, ""); > > - > > - g_file_set_contents(conf, qga_config, -1, &error); > > - g_assert_no_error(error); > > = > > cwd =3D g_get_current_dir(); > > cmd =3D g_strdup_printf("%s%cqemu-ga -D", > > @@ -720,7 +703,8 @@ static void test_qga_config(gconstpointer data) > > g_shell_parse_argv(cmd, NULL, &argv, &error); > > g_assert_no_error(error); > > = > > - env[0] =3D g_strdup_printf("QGA_CONF=3D%s", conf); > > + env[0] =3D g_strdup_printf("QGA_CONF=3D%s%ctests%ctest-qga-config", > > + cwd, G_DIR_SEPARATOR, G_DIR_SEPARATOR); > = > Actually instead of cwd here, it would be nice to have srcdir or testdir.= There is g_test_build_filename() in glib 2.38, not sure what we should do = without it. Ideas? Maybe just via environment variables? --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -660,6 +662,7 @@ $(patsubst %, check-%, $(check-unit-y)): check-%: % $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,) $(call quiet-command, \ MALLOC_PERTURB_=3D$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \ + QEMU_TEST_SRC_PATH=3D$(SRC_PATH)/tests \ gtester $(GTESTER_OPTIONS) -m=3D$(SPEED) $*,"GTESTER $*") $(if $(CONFIG_GCOV),@for f in $(gcov-files-$(subst tests/,,$*)-y) $(gco= v-files-generic-y); do \ echo Gcov report for $$f:;\ We seem to do the same with MALLOC_PERTURB_ already (though there's probably less options there), and it's consistent with how we control QGA_TEST_SIDE_EFFECTING currently. Also, if we default to cwd things should still work for running the test executable directly. g_test_build_filename seems to do similar under the covers as well, though it is a bit more tedious to have to add to every test target we want access environment variables in. Would be nice if tests/Makefile.include could do it automatically via common dependencies, but I'm not sure if that's doable. > = > > env[1] =3D NULL; > > g_spawn_sync(NULL, argv, env, 0, > > NULL, NULL, &out, &err, &status, &error); > > @@ -775,11 +759,8 @@ static void test_qga_config(gconstpointer data) > > = > > g_free(out); > > g_free(err); > > - g_free(conf); > > g_free(env[0]); > > g_key_file_free(kf); > > - > > - close(tmp); > > } > > = > > static void test_qga_fsfreeze_status(gconstpointer fix) > > -- > > 2.7.4 > > = > > = >=20