On 07/02/2017 12:34, Pekka Paalanen wrote:
On Tue, 7 Feb 2017 11:39:38 +0100
Quentin Glidic <sardemff7+wayl...@sardemff7.net> wrote:

On 27/01/2017 17:30, Emilio Pozuelo Monfort wrote:
From: Pekka Paalanen <pekka.paala...@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.paala...@collabora.co.uk>
Reviewed-by: Emilio Pozuelo Monfort <emilio.pozu...@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+...@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?

Yeah, the less obscure the test code is, the better, I think. :-)

Thanks,

+               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



_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel



--

Quentin “Sardem FF7” Glidic
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to