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)
{
}
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];
+
+ if (data) {
+ snprintf(str, sizeof(str), "%s[%d]", t->name, iteration);
+ test_name_ = str;
+ } else {
+ test_name_ = t->name;
+ }
+
t->run(data);
exit(EXIT_SUCCESS);
}
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");
#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