summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Wood <thomas.wood@intel.com>2015-02-18 16:19:59 +0000
committerThomas Wood <thomas.wood@intel.com>2015-02-25 16:48:25 +0000
commit8fb19782f82f25249aaed0ff0e5fa6601dbb0e9d (patch)
tree803568509acd7bfc35f9596cf3db1a59937c2ed4
parent55cc132b3219fbbf8c5705c674ef0f9a9b53d593 (diff)
lib: remove handled option arguments from argv
Remove options from argv that have been handled by getopt to allow additional non-option parameters to be processed in the test application. This fixes issues when using options such as --debug with tests that accept additional non-option parameters. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
-rw-r--r--lib/igt_core.c13
-rw-r--r--lib/igt_core.h12
-rw-r--r--lib/tests/igt_list_only.c3
-rw-r--r--lib/tests/igt_no_exit.c3
-rw-r--r--lib/tests/igt_no_exit_list_only.c3
-rw-r--r--lib/tests/igt_no_subtest.c3
-rw-r--r--lib/tests/igt_simulation.c15
-rw-r--r--tests/gem_ctx_basic.c2
-rw-r--r--tests/gem_render_copy.c2
-rw-r--r--tests/gem_seqno_wrap.c2
-rw-r--r--tests/gem_stress.c2
-rw-r--r--tests/kms_psr_sink_crc.c2
-rw-r--r--tests/kms_setmode.c2
-rw-r--r--tests/pm_rpm.c2
14 files changed, 40 insertions, 26 deletions
diff --git a/lib/igt_core.c b/lib/igt_core.c
index afecdf1b..75b98f62 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -487,7 +487,7 @@ static void oom_adjust_for_doom(void)
low_mem_killer_disable(true);
}
-static int common_init(int argc, char **argv,
+static int common_init(int *argc, char **argv,
const char *extra_short_opts,
struct option *extra_long_opts,
const char *help_str,
@@ -582,7 +582,7 @@ static int common_init(int argc, char **argv,
std_short_opts);
assert(ret >= 0);
- while ((c = getopt_long(argc, argv, short_opts, combined_opts,
+ while ((c = getopt_long(*argc, argv, short_opts, combined_opts,
&option_index)) != -1) {
switch(c) {
case OPT_INTERACTIVE_DEBUG:
@@ -655,6 +655,11 @@ out:
if (!test_with_subtests)
gettime(&subtest_time);
+ for (i = 0; (optind + i) < *argc; i++)
+ argv[i + 1] = argv[optind + i];
+
+ *argc = *argc - optind + 1;
+
return ret;
}
@@ -678,7 +683,7 @@ out:
*
* Returns: Forwards any option parsing errors from getopt_long.
*/
-int igt_subtest_init_parse_opts(int argc, char **argv,
+int igt_subtest_init_parse_opts(int *argc, char **argv,
const char *extra_short_opts,
struct option *extra_long_opts,
const char *help_str,
@@ -707,7 +712,7 @@ enum igt_log_level igt_log_level = IGT_LOG_INFO;
* This initializes a simple test without any support for subtests and allows
* an arbitrary set of additional options.
*/
-void igt_simple_init_parse_opts(int argc, char **argv,
+void igt_simple_init_parse_opts(int *argc, char **argv,
const char *extra_short_opts,
struct option *extra_long_opts,
const char *help_str,
diff --git a/lib/igt_core.h b/lib/igt_core.h
index 88b47bfd..e1833cf4 100644
--- a/lib/igt_core.h
+++ b/lib/igt_core.h
@@ -110,7 +110,7 @@ typedef int (*igt_opt_handler_t)(int opt, int opt_index);
#ifndef __GTK_DOC_IGNORE__ /* gtkdoc wants to document this forward decl */
struct option;
#endif
-int igt_subtest_init_parse_opts(int argc, char **argv,
+int igt_subtest_init_parse_opts(int *argc, char **argv,
const char *extra_short_opts,
struct option *extra_long_opts,
const char *help_str,
@@ -130,7 +130,7 @@ int igt_subtest_init_parse_opts(int argc, char **argv,
* #igt_main block instead of stitching the test's main() function together
* manually.
*/
-#define igt_subtest_init(argc, argv) igt_subtest_init_parse_opts(argc, argv, NULL, NULL, NULL, NULL);
+#define igt_subtest_init(argc, argv) igt_subtest_init_parse_opts(&argc, argv, NULL, NULL, NULL, NULL);
bool __igt_run_subtest(const char *subtest_name);
#define __igt_tokencat2(x, y) x ## y
@@ -195,14 +195,14 @@ bool igt_only_list_subtests(void);
#define igt_main \
static void igt_tokencat(__real_main, __LINE__)(void); \
int main(int argc, char **argv) { \
- igt_subtest_init_parse_opts(argc, argv, NULL, NULL, NULL, NULL); \
+ igt_subtest_init_parse_opts(&argc, argv, NULL, NULL, NULL, NULL); \
igt_tokencat(__real_main, __LINE__)(); \
igt_exit(); \
} \
static void igt_tokencat(__real_main, __LINE__)(void) \
-void igt_simple_init_parse_opts(int argc, char **argv,
+void igt_simple_init_parse_opts(int *argc, char **argv,
const char *extra_short_opts,
struct option *extra_long_opts,
const char *help_str,
@@ -219,7 +219,7 @@ void igt_simple_init_parse_opts(int argc, char **argv,
* #igt_simple_main block instead of stitching the test's main() function together
* manually.
*/
-#define igt_simple_init(argc, argv) igt_simple_init_parse_opts(argc, argv, NULL, NULL, NULL, NULL);
+#define igt_simple_init(argc, argv) igt_simple_init_parse_opts(&argc, argv, NULL, NULL, NULL, NULL);
/**
* igt_simple_main:
@@ -231,7 +231,7 @@ void igt_simple_init_parse_opts(int argc, char **argv,
#define igt_simple_main \
static void igt_tokencat(__real_main, __LINE__)(void); \
int main(int argc, char **argv) { \
- igt_simple_init_parse_opts(argc, argv, NULL, NULL, NULL, NULL); \
+ igt_simple_init_parse_opts(&argc, argv, NULL, NULL, NULL, NULL); \
igt_tokencat(__real_main, __LINE__)(); \
igt_exit(); \
} \
diff --git a/lib/tests/igt_list_only.c b/lib/tests/igt_list_only.c
index d3ea8c27..65fa9da6 100644
--- a/lib/tests/igt_list_only.c
+++ b/lib/tests/igt_list_only.c
@@ -32,8 +32,9 @@ int main(int argc, char **argv)
char prog[] = "igt_list_only";
char arg[] = "--list-subtests";
char *fake_argv[] = {prog, arg};
+ int fake_argc = 2;
- igt_subtest_init(2, fake_argv);
+ igt_subtest_init(fake_argc, fake_argv);
igt_subtest("A")
;
diff --git a/lib/tests/igt_no_exit.c b/lib/tests/igt_no_exit.c
index ba3fae0a..dc89b830 100644
--- a/lib/tests/igt_no_exit.c
+++ b/lib/tests/igt_no_exit.c
@@ -31,8 +31,9 @@ int main(int argc, char **argv)
{
char prog[] = "igt_no_exit";
char *fake_argv[] = {prog};
+ int fake_argc = 1;
- igt_subtest_init(1, fake_argv);
+ igt_subtest_init(fake_argc, fake_argv);
igt_subtest("A")
;
diff --git a/lib/tests/igt_no_exit_list_only.c b/lib/tests/igt_no_exit_list_only.c
index 3b232be7..add3fc25 100644
--- a/lib/tests/igt_no_exit_list_only.c
+++ b/lib/tests/igt_no_exit_list_only.c
@@ -32,8 +32,9 @@ int main(int argc, char **argv)
char prog[] = "igt_list_only";
char arg[] = "--list-subtests";
char *fake_argv[] = {prog, arg};
+ int fake_argc = 2;
- igt_subtest_init(2, fake_argv);
+ igt_subtest_init(fake_argc, fake_argv);
igt_subtest("A")
;
diff --git a/lib/tests/igt_no_subtest.c b/lib/tests/igt_no_subtest.c
index 47f15fce..1ae62cfd 100644
--- a/lib/tests/igt_no_subtest.c
+++ b/lib/tests/igt_no_subtest.c
@@ -31,8 +31,9 @@ int main(int argc, char **argv)
{
char prog[] = "igt_no_exit";
char *fake_argv[] = {prog};
+ int fake_argc = 1;
- igt_subtest_init(1, fake_argv);
+ igt_subtest_init(fake_argc, fake_argv);
igt_exit();
}
diff --git a/lib/tests/igt_simulation.c b/lib/tests/igt_simulation.c
index e5889590..32830ba7 100644
--- a/lib/tests/igt_simulation.c
+++ b/lib/tests/igt_simulation.c
@@ -55,22 +55,27 @@ char *argv_run[] = { test };
static int do_fork(void)
{
int pid, status;
+ int argc;
switch (pid = fork()) {
case -1:
internal_assert(0);
case 0:
if (simple) {
- igt_simple_init(1, argv_run);
+ argc = 1;
+ igt_simple_init(argc, argv_run);
igt_skip_on_simulation();
igt_exit();
} else {
- if (list_subtests)
- igt_subtest_init(2, argv_list);
- else
- igt_subtest_init(1, argv_run);
+ if (list_subtests) {
+ argc = 2;
+ igt_subtest_init(argc, argv_list);
+ } else {
+ argc = 1;
+ igt_subtest_init(argc, argv_run);
+ }
if (in_fixture) {
igt_fixture
diff --git a/tests/gem_ctx_basic.c b/tests/gem_ctx_basic.c
index 2d866b3e..4301b34e 100644
--- a/tests/gem_ctx_basic.c
+++ b/tests/gem_ctx_basic.c
@@ -144,7 +144,7 @@ int main(int argc, char *argv[])
{
int i;
- igt_simple_init_parse_opts(argc, argv, "i:c:n:mu", NULL, NULL,
+ igt_simple_init_parse_opts(&argc, argv, "i:c:n:mu", NULL, NULL,
opt_handler);
fd = drm_open_any_render();
diff --git a/tests/gem_render_copy.c b/tests/gem_render_copy.c
index 6348eee4..df1ac881 100644
--- a/tests/gem_render_copy.c
+++ b/tests/gem_render_copy.c
@@ -141,7 +141,7 @@ int main(int argc, char **argv)
igt_render_copyfunc_t render_copy = NULL;
int opt_dump_aub = igt_aub_dump_enabled();
- igt_simple_init_parse_opts(argc, argv, "da", NULL, NULL, opt_handler);
+ igt_simple_init_parse_opts(&argc, argv, "da", NULL, NULL, opt_handler);
igt_fixture {
data.drm_fd = drm_open_any_render();
diff --git a/tests/gem_seqno_wrap.c b/tests/gem_seqno_wrap.c
index d07ec960..ba58ebd2 100644
--- a/tests/gem_seqno_wrap.c
+++ b/tests/gem_seqno_wrap.c
@@ -503,7 +503,7 @@ int main(int argc, char **argv)
options.prewrap_space = 21;
options.buffers = 10;
- igt_simple_init_parse_opts(argc, argv, "n:bvt:dp:ri:", long_options,
+ igt_simple_init_parse_opts(&argc, argv, "n:bvt:dp:ri:", long_options,
help, parse_options);
card_index = drm_get_card();
diff --git a/tests/gem_stress.c b/tests/gem_stress.c
index f687b2d1..cb951af8 100644
--- a/tests/gem_stress.c
+++ b/tests/gem_stress.c
@@ -854,7 +854,7 @@ int main(int argc, char **argv)
options.tiles_per_buf = options.scratch_buf_size / TILE_BYTES(options.tile_size);
options.check_render_cpyfn = 0;
- igt_simple_init_parse_opts(argc, argv,"ds:g:c:t:rbuxmo:fp:",
+ igt_simple_init_parse_opts(&argc, argv,"ds:g:c:t:rbuxmo:fp:",
long_options, NULL, parse_options);
drm_fd = drm_open_any();
diff --git a/tests/kms_psr_sink_crc.c b/tests/kms_psr_sink_crc.c
index 98b60cf9..92566405 100644
--- a/tests/kms_psr_sink_crc.c
+++ b/tests/kms_psr_sink_crc.c
@@ -489,7 +489,7 @@ int main(int argc, char *argv[])
data_t data = {};
enum operations op;
- igt_subtest_init_parse_opts(argc, argv, "", long_options,
+ igt_subtest_init_parse_opts(&argc, argv, "", long_options,
help_str, opt_handler);
igt_skip_on_simulation();
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index f13871ef..8e6afbff 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -699,7 +699,7 @@ int main(int argc, char **argv)
int i;
int ret;
- ret = igt_subtest_init_parse_opts(argc, argv, "dt:", NULL, help_str,
+ ret = igt_subtest_init_parse_opts(&argc, argv, "dt:", NULL, help_str,
opt_handler);
if (ret < 0)
return ret == -1 ? 0 : ret;
diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
index 84254b79..c2847d01 100644
--- a/tests/pm_rpm.c
+++ b/tests/pm_rpm.c
@@ -1811,7 +1811,7 @@ int main(int argc, char *argv[])
{ 0, 0, 0, 0 }
};
- igt_subtest_init_parse_opts(argc, argv, "", long_options,
+ igt_subtest_init_parse_opts(&argc, argv, "", long_options,
help_str, opt_handler);
/* Skip instead of failing in case the machine is not prepared to reach