From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47894) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUfUU-00051e-OT for qemu-devel@nongnu.org; Thu, 18 Sep 2014 13:27:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XUfUO-00088v-G2 for qemu-devel@nongnu.org; Thu, 18 Sep 2014 13:27:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:7874) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUfUO-00085q-8c for qemu-devel@nongnu.org; Thu, 18 Sep 2014 13:27:28 -0400 Date: Thu, 18 Sep 2014 14:27:12 -0300 From: Eduardo Habkost Message-ID: <20140918172712.GA32084@thinpad.lan.raisama.net> References: <1410719879-25181-1-git-send-email-mst@redhat.com> <1410719879-25181-4-git-send-email-mst@redhat.com> <20140918162947.16792.44892@loki> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140918162947.16792.44892@loki> Subject: Re: [Qemu-devel] [PULL 03/12] test-qdev-global-props: Run tests on subprocess List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Roth Cc: Peter Maydell , Anthony Liguori , qemu-devel@nongnu.org, Don Slutz , "Michael S. Tsirkin" On Thu, Sep 18, 2014 at 11:29:47AM -0500, Michael Roth wrote: > Quoting Michael S. Tsirkin (2014-09-14 13:41:23) > > From: Eduardo Habkost > > > > There are multiple reasons for running the global property tests on a > > subprocess: > > > > * We need the global_props lists to be empty for each test case, so > > global properties from the previous test won't affect the next one; > > * We don't want the qdev_prop_check_global() warnings to pollute test > > output; > > * With a subprocess, we can ensure qdev_prop_check_global() is printing > > the warning messages it should. > > > > Signed-off-by: Eduardo Habkost > > Acked-by: Michael S. Tsirkin > > Signed-off-by: Michael S. Tsirkin > > --- > > tests/test-qdev-global-props.c | 49 ++++++++++++++++++++++++++++++++++++------ > > 1 file changed, 43 insertions(+), 6 deletions(-) > > > > diff --git a/tests/test-qdev-global-props.c b/tests/test-qdev-global-props.c > > index e1a1317..34223a7 100644 > > --- a/tests/test-qdev-global-props.c > > +++ b/tests/test-qdev-global-props.c > > @@ -65,7 +65,7 @@ static const TypeInfo static_prop_type = { > > }; > > > > /* Test simple static property setting to default value */ > > -static void test_static_prop(void) > > +static void test_static_prop_subprocess(void) > > { > > MyType *mt; > > > > @@ -75,8 +75,16 @@ static void test_static_prop(void) > > g_assert_cmpuint(mt->prop1, ==, PROP_DEFAULT); > > } > > > > +static void test_static_prop(void) > > +{ > > + g_test_trap_subprocess("/qdev/properties/static/default/subprocess", 0, 0); > > + g_test_trap_assert_passed(); > > + g_test_trap_assert_stderr(""); > > + g_test_trap_assert_stdout(""); > > +} > > > > > int main(int argc, char **argv) > > { > > g_test_init(&argc, &argv, NULL); > > @@ -174,9 +200,20 @@ int main(int argc, char **argv) > > type_register_static(&static_prop_type); > > type_register_static(&dynamic_prop_type); > > > > - g_test_add_func("/qdev/properties/static/default", test_static_prop); > > - g_test_add_func("/qdev/properties/static/global", test_static_globalprop); > > - g_test_add_func("/qdev/properties/dynamic/global", test_dynamic_globalprop); > > + g_test_add_func("/qdev/properties/static/default/subprocess", > > + test_static_prop_subprocess); > > + g_test_add_func("/qdev/properties/static/default", > > + test_static_prop); > > Since in the code above test_static_prop is actually the test that re-runs > /qdev/properties/static/default/subprocess under g_test_trap_subprocess, aren't > the tests (or test function implementations) backwards? Your description is correct: ./static/default is test_static_prop(), which runs ./static/default/subprocess (test_static_prop_subprocess()) in a subprocess. But I don't understand what's backwards. Are you talking about the function names, test path strings, or about the ordering of the g_test_add_func() calls? Note that the test case that will be run in a subprocess must contain the "subprocess" component in its path, otherwise g_test_run() will try to run it as a normal test case. So for the test path, we don't have a choice. For the function names, I am just following the same convention used for the test path. -- Eduardo