[igt-dev] [PATCH i-g-t 1/1] Rename dynamic subtest blocks
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Mon Nov 18 11:50:42 UTC 2019
On 18/11/2019 11:09, Petri Latvala wrote:
> The final naming for the magic block identifiers is:
>
> igt_subtest_with_dynamic("do-stuff-on-things") {
> for_each_thing(x) {
> igt_dynamic_f("%s", x->name) {
> do_stuff(x);
> }
> }
> }
>
> Signed-off-by: Petri Latvala <petri.latvala at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
> Cc: Katarzyna Dec <katarzyna.dec at intel.com>
igt_dynamic sounds a bit generic but first come first served! :)
Acked-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
> ---
>
> NOTE!
>
> The commit message is worded as being the final decision, but it's of
> course just a suggestion for the final naming and won't be used
> without acks, especially the people who have pointed out the awfulness
> of the naming. With luck I might have succeeded in CCing all of them
> and people otherwise involved in reviewing dynamic subtests.
>
> These names meet the requirements laid out in words on the mailing
> list:
>
> * makes it clear that the subtest that can have dynamic runtime parts
> is a subtest more than an igt_subtest_group
> * don't completely destroy ickle's keyboard
>
>
> lib/igt_core.c | 4 +--
> lib/igt_core.h | 46 ++++++++++++++++----------------
> lib/tests/igt_describe.c | 4 +--
> lib/tests/igt_dynamic_subtests.c | 18 ++++++-------
> 4 files changed, 36 insertions(+), 36 deletions(-)
>
> diff --git a/lib/igt_core.c b/lib/igt_core.c
> index a0c673d1..99aa0bee 100644
> --- a/lib/igt_core.c
> +++ b/lib/igt_core.c
> @@ -127,7 +127,7 @@
> *
> * - Code blocks with magic control flow are implemented with setjmp()
> * and longjmp(). This applies to #igt_fixture, #igt_subtest,
> - * #igt_subtest_with_dynamic_subsubtests and #igt_dynamic_subsubtest
> + * #igt_subtest_with_dynamic and #igt_dynamic
> * blocks and all the three variants to finish test: igt_success(),
> * igt_skip() and igt_fail(). Mostly this is of no concern, except
> * when such a control block changes stack variables defined in the
> @@ -1281,7 +1281,7 @@ static void exit_subtest(const char *result)
> const char *subtest_text = in_dynamic_subtest ? "Dynamic subtest" : "Subtest";
> const char **subtest_name = in_dynamic_subtest ? &in_dynamic_subtest : &in_subtest;
> struct timespec *thentime = in_dynamic_subtest ? &dynamic_subtest_time : &subtest_time;
> - jmp_buf *jmptarget = in_dynamic_subtest ? &igt_dynamic_subsubtest_jmpbuf : &igt_subtest_jmpbuf;
> + jmp_buf *jmptarget = in_dynamic_subtest ? &igt_dynamic_jmpbuf : &igt_subtest_jmpbuf;
>
> igt_gettime(&now);
>
> diff --git a/lib/igt_core.h b/lib/igt_core.h
> index 86bc1b41..c17a7ba8 100644
> --- a/lib/igt_core.h
> +++ b/lib/igt_core.h
> @@ -146,7 +146,7 @@ void __igt_fixture_end(void) __attribute__((noreturn));
>
> /* subtest infrastructure */
> jmp_buf igt_subtest_jmpbuf;
> -jmp_buf igt_dynamic_subsubtest_jmpbuf;
> +jmp_buf igt_dynamic_jmpbuf;
> typedef int (*igt_opt_handler_t)(int opt, int opt_index, void *data);
> #define IGT_OPT_HANDLER_SUCCESS 0
> #define IGT_OPT_HANDLER_ERROR -2
> @@ -230,7 +230,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> __igt_subtest_f(igt_tokencat(__tmpchar, __LINE__), f)
>
> /**
> - * igt_subtest_with_dynamic_subsubtests:
> + * igt_subtest_with_dynamic:
> * @name: name of the subtest
> *
> * This is a magic control flow block which denotes a subtest code
> @@ -238,13 +238,13 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> * printf format string, which is useful for constructing
> * combinatorial tests.
> *
> - * See igt_subtest_with_dynamic_subsubtests_f() for documentation.
> + * See igt_subtest_with_dynamic_f() for documentation.
> */
> -#define igt_subtest_with_dynamic_subsubtests(name) for (; __igt_run_subtest((name), __FILE__, __LINE__) && \
> +#define igt_subtest_with_dynamic(name) for (; __igt_run_subtest((name), __FILE__, __LINE__) && \
> __igt_enter_dynamic_container() && \
> (sigsetjmp(igt_subtest_jmpbuf, 1) == 0); \
> igt_success())
> -#define __igt_subtest_with_dynamic_subsubtests_f(tmp, format...) \
> +#define __igt_subtest_with_dynamic_f(tmp, format...) \
> for (char tmp [256]; \
> snprintf( tmp , sizeof( tmp ), \
> format), \
> @@ -254,7 +254,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> igt_success())
>
> /**
> - * igt_subtest_with_dynamic_subsubtests_f:
> + * igt_subtest_with_dynamic_f:
> * @...: format string and optional arguments
> *
> * This is a magic control flow block which denotes a subtest code
> @@ -275,12 +275,12 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> * subsubtest for each pipe and performs the operation for that pipe
> * in there.
> *
> - * The result of a subtest igt_subtest_with_dynamic_subsubtests will be
> + * The result of a subtest igt_subtest_with_dynamic will be
> * * SKIP, if no dynamic subsubtests are entered
> * * PASS, if _all_ dynamic subsubtests PASS
> * * FAIL, if _any_ dynamic subsubtests FAIL
> *
> - * Within a igt_subtest_with_dynamic_subsubtests block, explicit
> + * Within a igt_subtest_with_dynamic block, explicit
> * failure (e.g. igt_assert) is not allowed, only dynamic subsubtests
> * themselves will produce test results. igt_skip()/igt_require() is
> * allowed. Example:
> @@ -288,7 +288,7 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> * |[<!-- language="C" -->
> * igt_main
> * {
> - * igt_subtest_with_dynamic_subsubtests("engine-tests") {
> + * igt_subtest_with_dynamic("engine-tests") {
> * igt_require(is_awesome(fd)); // requires ok here
> *
> * for_each_engine(fd, e) {
> @@ -300,14 +300,14 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> * }
> * ]|
> *
> - * Like igt_subtest_with_dynamic_subsubtests(), but also accepts a printf
> + * Like igt_subtest_with_dynamic(), but also accepts a printf
> * format string instead of a static string.
> */
> -#define igt_subtest_with_dynamic_subsubtests_f(f...) \
> - __igt_subtest_with_dynamic_subsubtests_f(igt_tokencat(__tmpchar, __LINE__), f)
> +#define igt_subtest_with_dynamic_f(f...) \
> + __igt_subtest_with_dynamic_f(igt_tokencat(__tmpchar, __LINE__), f)
>
> /**
> - * igt_dynamic_subsubtest:
> + * igt_dynamic:
> * @name: name of the dynamic subtest
> *
> * This is a magic control flow block which denotes a dynamic
> @@ -316,22 +316,22 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> * variant accepts a printf format string, which is useful for
> * constructing combinatorial tests.
> *
> - * See igt_subtest_with_dynamic_subsubtests_f() for documentation on
> + * See igt_subtest_with_dynamic_f() for documentation on
> * dynamic subsubtests.
> */
> -#define igt_dynamic_subsubtest(name) for (; __igt_run_dynamic_subtest((name)) && \
> - (sigsetjmp(igt_dynamic_subsubtest_jmpbuf, 1) == 0); \
> +#define igt_dynamic(name) for (; __igt_run_dynamic_subtest((name)) && \
> + (sigsetjmp(igt_dynamic_jmpbuf, 1) == 0); \
> igt_success())
> -#define __igt_dynamic_subsubtest_f(tmp, format...) \
> +#define __igt_dynamic_f(tmp, format...) \
> for (char tmp [256]; \
> snprintf( tmp , sizeof( tmp ), \
> format), \
> __igt_run_dynamic_subtest( tmp ) && \
> - (sigsetjmp(igt_dynamic_subsubtest_jmpbuf, 1) == 0); \
> + (sigsetjmp(igt_dynamic_jmpbuf, 1) == 0); \
> igt_success())
>
> /**
> - * igt_dynamic_subsubtest_f:
> + * igt_dynamic_f:
> * @...: format string and optional arguments
> *
> * This is a magic control flow block which denotes a dynamic
> @@ -340,14 +340,14 @@ bool __igt_run_dynamic_subtest(const char *dynamic_subtest_name);
> * variant accepts a printf format string, which is useful for
> * constructing combinatorial tests.
> *
> - * See igt_subtest_with_dynamic_subsubtests_f() for documentation on
> + * See igt_subtest_with_dynamic_f() for documentation on
> * dynamic subsubtests.
> *
> - * Like igt_dynamic_subsubtest(), but also accepts a printf format string
> + * Like igt_dynamic(), but also accepts a printf format string
> * instead of a static string.
> */
> -#define igt_dynamic_subsubtest_f(f...) \
> - __igt_dynamic_subsubtest_f(igt_tokencat(__tmpchar, __LINE__), f)
> +#define igt_dynamic_f(f...) \
> + __igt_dynamic_f(igt_tokencat(__tmpchar, __LINE__), f)
>
> const char *igt_subtest_name(void);
> bool igt_only_list_subtests(void);
> diff --git a/lib/tests/igt_describe.c b/lib/tests/igt_describe.c
> index 7ea3b961..6f3a4319 100644
> --- a/lib/tests/igt_describe.c
> +++ b/lib/tests/igt_describe.c
> @@ -88,10 +88,10 @@ static void fake_main(int argc, char **argv) {
> ;
>
> igt_describe("Subtest with dynamic subsubtests");
> - igt_subtest_with_dynamic_subsubtests("G") {
> + igt_subtest_with_dynamic("G") {
> printf("should not be executed!\n");
> igt_describe("should assert on execution");
> - igt_dynamic_subsubtest("should-not-list")
> + igt_dynamic("should-not-list")
> printf("should not be executed!\n");
> }
>
> diff --git a/lib/tests/igt_dynamic_subtests.c b/lib/tests/igt_dynamic_subtests.c
> index 82d80a77..606104c5 100644
> --- a/lib/tests/igt_dynamic_subtests.c
> +++ b/lib/tests/igt_dynamic_subtests.c
> @@ -56,7 +56,7 @@ static void dynamic_subtest_in_normal_subtest(void)
> igt_subtest_init(fake_argc, fake_argv);
>
> igt_subtest("normal-subtest") {
> - igt_dynamic_subsubtest("dynamic") {
> + igt_dynamic("dynamic") {
> igt_info("Dynamic subtest in normal subtest\n");
> }
> }
> @@ -72,8 +72,8 @@ static void invalid_dynamic_subtest_name(void)
>
> igt_subtest_init(fake_argc, fake_argv);
>
> - igt_subtest_with_dynamic_subsubtests("subtest") {
> - igt_dynamic_subsubtest("# invalid name !") {
> + igt_subtest_with_dynamic("subtest") {
> + igt_dynamic("# invalid name !") {
> igt_info("Invalid dynamic subtest name test\n");
> }
> }
> @@ -89,7 +89,7 @@ static void dynamic_subtest_in_toplevel(void)
>
> igt_subtest_init(fake_argc, fake_argv);
>
> - igt_dynamic_subsubtest("dynamic-subtest-in-toplevel") {
> + igt_dynamic("dynamic-subtest-in-toplevel") {
> igt_info("Dynamic subtests need to be in a subtest\n");
> }
>
> @@ -104,7 +104,7 @@ static void subtest_itself_failing(void)
>
> igt_subtest_init(fake_argc, fake_argv);
>
> - igt_subtest_with_dynamic_subsubtests("subtest") {
> + igt_subtest_with_dynamic("subtest") {
> igt_assert(false);
> }
>
> @@ -119,7 +119,7 @@ static void subtest_itself_skipping(void)
>
> igt_subtest_init(fake_argc, fake_argv);
>
> - igt_subtest_with_dynamic_subsubtests("subtest") {
> + igt_subtest_with_dynamic("subtest") {
> igt_skip("Skipping\n");
> }
>
> @@ -134,8 +134,8 @@ static void dynamic_subtest_failure_leads_to_fail(void)
>
> igt_subtest_init(fake_argc, fake_argv);
>
> - igt_subtest_with_dynamic_subsubtests("subtest") {
> - igt_dynamic_subsubtest("dynamic") {
> + igt_subtest_with_dynamic("subtest") {
> + igt_dynamic("dynamic") {
> igt_assert(false);
> }
> }
> @@ -151,7 +151,7 @@ static void no_dynamic_subtests_entered_leads_to_skip(void)
>
> igt_subtest_init(fake_argc, fake_argv);
>
> - igt_subtest_with_dynamic_subsubtests("subtest") {
> + igt_subtest_with_dynamic("subtest") {
> }
>
> igt_exit();
>
More information about the igt-dev
mailing list