[PATCH weston 4/7] tests: implement get_test_name()

Pekka Paalanen pekka.paalanen at collabora.co.uk
Tue Feb 7 11:34:28 UTC 2017


On Tue, 7 Feb 2017 11:39:38 +0100
Quentin Glidic <sardemff7+wayland at sardemff7.net> wrote:

> On 27/01/2017 17:30, Emilio Pozuelo Monfort wrote:
> > From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > 
> > Screenshot tests often want to use the test name for writing out images.
> > This is a helper to get the test name without writing it multiple times
> > in the source.
> > 
> > Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > Reviewed-by: Emilio Pozuelo Monfort <emilio.pozuelo at collabora.co.uk>
> > ---
> >   tests/weston-test-runner.c | 21 +++++++++++++++++++--
> >   tests/weston-test-runner.h | 12 ++++++++++++
> >   2 files changed, 31 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tests/weston-test-runner.c b/tests/weston-test-runner.c
> > index b1e89bc2..f197265d 100644
> > --- a/tests/weston-test-runner.c
> > +++ b/tests/weston-test-runner.c
> > @@ -42,6 +42,14 @@ char __attribute__((weak)) *server_parameters="";
> >   
> >   extern const struct weston_test __start_test_section, __stop_test_section;
> >   
> > +static const char *test_name_;
> > +
> > +const char *
> > +get_test_name(void)
> > +{
> > +	return test_name_;
> > +}
> > +
> >   static const struct weston_test *
> >   find_test(const char *name)
> >   {
> > @@ -55,8 +63,17 @@ find_test(const char *name)
> >   }
> >   
> >   static void
> > -run_test(const struct weston_test *t, void *data)
> > +run_test(const struct weston_test *t, void *data, int iteration)
> >   {
> > +	char str[512];  
> 
> Maybe a little comment that this will always be around because this 
> function never returns? (The "never returns" comment is easily missed 
> since it’s in the caller.)
> 

Mm, the only way out from the function is exit() and it's a small
function.

> 
> > +
> > +	if (data) {  
> 
> Isn’t that supposed to be testing "iteration" instead?
> With that fixed (or explained):
> Reviewed-by: Quentin Glidic <sardemff7+git at sardemff7.net>

The caller exec_and_report_test() already uses 'data' as the condition
for an iterated test. 'iteration' OTOH will always be a valid index so
it cannot be used to detect a (non-)iterated test.

Do you want some comments added in the code or commit message?


Thanks,
pq

> > +		snprintf(str, sizeof(str), "%s[%d]", t->name, iteration);
> > +		test_name_ = str;
> > +	} else {
> > +		test_name_ = t->name;
> > +	}
> > +
> >   	t->run(data);
> >   	exit(EXIT_SUCCESS);
> >   }
> > @@ -83,7 +100,7 @@ exec_and_report_test(const struct weston_test *t, void *test_data, int iteration
> >   	assert(pid >= 0);
> >   
> >   	if (pid == 0)
> > -		run_test(t, test_data); /* never returns */
> > +		run_test(t, test_data, iteration); /* never returns */
> >   
> >   	if (waitid(P_ALL, 0, &info, WEXITED)) {
> >   		fprintf(stderr, "waitid failed: %m\n");
> > diff --git a/tests/weston-test-runner.h b/tests/weston-test-runner.h
> > index a4436919..21a059d6 100644
> > --- a/tests/weston-test-runner.h
> > +++ b/tests/weston-test-runner.h
> > @@ -80,4 +80,16 @@ struct weston_test {
> >   #define TEST_P(name, data) ARG_TEST(name, 0, data)
> >   #define FAIL_TEST_P(name, data) ARG_TEST(name, 1, data)
> >   
> > +/**
> > + * Get the test name string with counter
> > + *
> > + * \return The test name. For an iterated test, e.g. defined with TEST_P(),
> > + * the name has a '[%d]' suffix to indicate the iteration.
> > + *
> > + * This is only usable from code paths inside TEST(), TEST_P(), etc.
> > + * defined functions.
> > + */
> > +const char *
> > +get_test_name(void);
> > +
> >   #endif
> >   
> 
> 



More information about the wayland-devel mailing list