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.)


+
+       if (data) {

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

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



--

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