diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c index a6d84feba483..db76d7d10749 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -142,6 +142,9 @@ static const char *skip_reason(const struct test_suite *t, int subtest) if (t->subtest.skip_reason) return t->subtest.skip_reason(subtest); + if (t->test_cases && subtest >= 0) + return t->test_cases[subtest].skip_reason; + return NULL; } diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 71b8d2c88e5c..f87129b63d92 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -34,6 +34,7 @@ typedef int (*test_fnptr)(struct test_suite *, int); struct test_case { const char *name; const char *desc; + const char *skip_reason; test_fnptr run_case; }; @@ -61,7 +62,15 @@ struct test_suite { .run_case = test__##_name, \ } -#define DEFINE_SUITE(description, _name) \ +#define TEST_CASE_REASON(description, _name, _reason) \ + { \ + .name = #_name, \ + .desc = description, \ + .run_case = test__##_name, \ + .skip_reason = _reason, \ + } + +#define DEFINE_SUITE(description, _name) \ struct test_case tests__##_name[] = { \ TEST_CASE(description, _name), \ { .name = NULL, } \