[PATCH igt 5/7] igt/gem_workarounds: Reduce manual list to combinatorial loops

Chris Wilson
2017-09-29T15:27:00Z

tests/gem_workarounds.c | 50 ++++++++++++++++++++++++-------------------------
1 file changed, 24 insertions(+), 26 deletions(-)

diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
index 2a328959..55cab561 100644
--- a/tests/gem_workarounds.c
+++ b/tests/gem_workarounds.c
@@ -217,6 +217,24 @@ static void check_workarounds(int fd, enum operation op, unsigned int flags)
igt_main
{
int device = -1;
+ const struct {
+ const char *name;
+ enum operation op;
+ } ops[] = {
+ { "basic-read", SIMPLE_READ },
+ { "reset", GPU_RESET },
+ { "suspend-resume", SUSPEND_RESUME },
+ { }
+ }, *op;
+ const struct {
+ const char *name;
+ unsigned int flags;
+ } modes[] = {
+ { "", 0 },
+ { "-context", CONTEXT },
+ { "-fd", FDS },
+ { }
+ }, *m;

igt_fixture {
FILE *file;
@@ -256,30 +274,10 @@ igt_main
close(fd);
}

- igt_subtest("basic-read")
- check_workarounds(device, SIMPLE_READ, 0);
-
- igt_subtest("basic-read-context")
- check_workarounds(device, SIMPLE_READ, CONTEXT);
-
- igt_subtest("basic-read-fd")
- check_workarounds(device, SIMPLE_READ, FDS);
-
- igt_subtest("reset")
- check_workarounds(device, GPU_RESET, 0);
-
- igt_subtest("reset-context")
- check_workarounds(device, GPU_RESET, CONTEXT);
-
- igt_subtest("reset-fd")
- check_workarounds(device, GPU_RESET, FDS);
-
- igt_subtest("suspend-resume")
- check_workarounds(device, SUSPEND_RESUME, 0);
-
- igt_subtest("suspend-resume-context")
- check_workarounds(device, SUSPEND_RESUME, CONTEXT);
-
- igt_subtest("suspend-resume-fd")
- check_workarounds(device, SUSPEND_RESUME, FDS);
+ for (op = ops; op->name; op++) {
+ for (m = modes; m->name; m++) {
+ igt_subtest_f("%s%s", op->name, m->name)
+ check_workarounds(device, op->op, m->flags);
+ }
+ }
}