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 <[email protected]>
---
 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 cf445efa51a5..6f137ab93ad4 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 d3331176cf2c..6c076ff31707 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;
 }
-- 
1.8.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to