From: Ian Romanick <[email protected]> This required some ugly hacking about to get the list of subtests to process_args. Suggestions?
The utility is that all.tests can do 'sometest -list-subtests' to automatically get the list of subtests to run. Since the syntax for selecting subtests is regularized, this works quite well. Signed-off-by: Ian Romanick <[email protected]> Cc: Chad Versace <[email protected]> --- tests/util/piglit-framework-gl.c | 14 +++++++++++++- tests/util/piglit-framework-gl.h | 18 ++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/tests/util/piglit-framework-gl.c b/tests/util/piglit-framework-gl.c index 975c1a9..ea109da 100644 --- a/tests/util/piglit-framework-gl.c +++ b/tests/util/piglit-framework-gl.c @@ -45,12 +45,14 @@ process_args(int *argc, char *argv[], unsigned *force_samples, void piglit_gl_test_config_init(int *argc, char *argv[], - struct piglit_gl_test_config *config) + struct piglit_gl_test_config *config, + const struct piglit_gl_subtest *subtests) { unsigned force_samples = 0; memset(config, 0, sizeof(*config)); + config->subtests = subtests; process_args(argc, argv, &force_samples, config); if (force_samples > 1) @@ -149,6 +151,16 @@ process_args(int *argc, char *argv[], unsigned *force_samples, } *argc -= 2; j -= 2; + } else if (!strcmp(argv[j], "-list-subtests")) { + unsigned i; + + for (i = 0; config->subtests[i].name != NULL; i++) { + printf("%s: %s\n", + config->subtests[i].option, + config->subtests[i].name); + } + + exit(0); } } } diff --git a/tests/util/piglit-framework-gl.h b/tests/util/piglit-framework-gl.h index 3357793..d008809 100644 --- a/tests/util/piglit-framework-gl.h +++ b/tests/util/piglit-framework-gl.h @@ -184,6 +184,14 @@ struct piglit_gl_test_config { (*display)(void); /** + * List of subtests supported by this test case + * + * This is only used during command line argument parsing to implement + * the -list-subtests option. + */ + const struct piglit_gl_subtest *subtests; + + /** * Names of subtests supplied on the command line. * * The paramaters passed to each -subtest command line option is @@ -199,7 +207,8 @@ struct piglit_gl_test_config { */ void piglit_gl_test_config_init(int *argc, char *argv[], - struct piglit_gl_test_config *config); + struct piglit_gl_test_config *config, + const struct piglit_gl_subtest *subtests); /** * Run the OpenGL test described by @a config. Does not return. @@ -216,6 +225,10 @@ piglit_gl_test_run(int argc, char *argv[], # define PIGLIT_EXTERN_C_END #endif +#ifndef PIGLIT_SUBTEST_LIST +#define PIGLIT_SUBTEST_LIST NULL +#endif + #define PIGLIT_GL_TEST_CONFIG_BEGIN \ \ PIGLIT_EXTERN_C_BEGIN \ @@ -233,7 +246,8 @@ piglit_gl_test_run(int argc, char *argv[], int \ main(int argc, char *argv[]) \ { \ - piglit_gl_test_config_init(&argc, argv, &config); \ + piglit_gl_test_config_init(&argc, argv, &config, \ + PIGLIT_SUBTEST_LIST); \ \ config.init = piglit_init; \ config.display = piglit_display; \ -- 1.8.1.4 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
