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 <ehabk...@redhat.com> > > > > 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 <ehabk...@redhat.com> > > Acked-by: Michael S. Tsirkin <m...@redhat.com> > > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > > --- > > 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(""); > > +} > > <snip> > > > 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