From 71c6f87eb3dacffbd489c83acfe95baf613d20cb Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Wed, 26 Mar 2014 15:09:23 +0100 Subject: [PATCH] lib/igt_core: fix igt_skip_on_simulation regression I've forgotten that we might want to call this from within specific subtests (or special helpers like the autoresume one). Also props for being competent enough to write a testcase, but incompetent enough to botch the job up. Fix both things and remove a leftover debug printf while at it. Signed-off-by: Daniel Vetter --- lib/igt_core.c | 2 +- tests/igt_simulation.c | 29 ++++++++++++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/igt_core.c b/lib/igt_core.c index cf445ef..6f137ab 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -1132,7 +1132,7 @@ void igt_skip_on_simulation(void) if (igt_only_list_subtests()) return; - if (!in_fixture) { + if (!in_fixture && !in_subtest) { igt_fixture igt_require(!igt_run_in_simulation()); } else diff --git a/tests/igt_simulation.c b/tests/igt_simulation.c index d333117..6c076ff 100644 --- a/tests/igt_simulation.c +++ b/tests/igt_simulation.c @@ -37,6 +37,7 @@ bool simple; bool list_subtests; bool in_fixture; +bool in_subtest; char test[] = "test"; char list[] = "--list-subtests"; @@ -66,13 +67,16 @@ static int do_fork(void) if (in_fixture) { igt_fixture igt_skip_on_simulation(); + } if (in_subtest) { + igt_subtest("sim") + igt_skip_on_simulation(); } else igt_skip_on_simulation(); - igt_subtest("foo") - ; + if (!in_subtest) + igt_subtest("foo") + ; - printf("baz\n"); igt_exit(); } default: @@ -104,7 +108,6 @@ int main(int argc, char **argv) assert(setenv("INTEL_SIMULATION", "1", 1) == 0); assert(do_fork() == 0); - in_fixture = false; assert(setenv("INTEL_SIMULATION", "0", 1) == 0); assert(do_fork() == 0); @@ -112,7 +115,14 @@ int main(int argc, char **argv) assert(setenv("INTEL_SIMULATION", "1", 1) == 0); assert(do_fork() == 0); - in_fixture = true; + assert(setenv("INTEL_SIMULATION", "0", 1) == 0); + assert(do_fork() == 0); + + in_fixture = false; + in_subtest = true; + assert(setenv("INTEL_SIMULATION", "1", 1) == 0); + assert(do_fork() == 0); + assert(setenv("INTEL_SIMULATION", "0", 1) == 0); assert(do_fork() == 0); @@ -124,7 +134,6 @@ int main(int argc, char **argv) assert(setenv("INTEL_SIMULATION", "1", 1) == 0); assert(do_fork() == 77); - in_fixture = false; assert(setenv("INTEL_SIMULATION", "0", 1) == 0); assert(do_fork() == 0); @@ -132,10 +141,16 @@ int main(int argc, char **argv) assert(setenv("INTEL_SIMULATION", "1", 1) == 0); assert(do_fork() == 77); - in_fixture = true; assert(setenv("INTEL_SIMULATION", "0", 1) == 0); assert(do_fork() == 0); + in_fixture = false; + in_subtest = true; + assert(setenv("INTEL_SIMULATION", "1", 1) == 0); + assert(do_fork() == 77); + + assert(setenv("INTEL_SIMULATION", "0", 1) == 0); + assert(do_fork() == 0); return 0; } -- 2.7.4