diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/regress/usr.bin/openssl/options/optionstest.c | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/src/regress/usr.bin/openssl/options/optionstest.c b/src/regress/usr.bin/openssl/options/optionstest.c index 297cf8506f..d493f7801d 100644 --- a/src/regress/usr.bin/openssl/options/optionstest.c +++ b/src/regress/usr.bin/openssl/options/optionstest.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: optionstest.c,v 1.3 2014/12/28 15:07:52 jsing Exp $ */ | 1 | /* $OpenBSD: optionstest.c,v 1.4 2014/12/28 15:49:36 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -62,6 +62,8 @@ char *args3[] = { "opts", "-arg", "arg", "-flag", "unnamed" }; | |||
| 62 | char *args4[] = { "opts", "-arg", "arg", "unnamed", "-flag" }; | 62 | char *args4[] = { "opts", "-arg", "arg", "unnamed", "-flag" }; |
| 63 | char *args5[] = { "opts", "unnamed1", "-arg", "arg", "-flag", "unnamed2" }; | 63 | char *args5[] = { "opts", "unnamed1", "-arg", "arg", "-flag", "unnamed2" }; |
| 64 | char *args6[] = { "opts", "-argfunc", "arg", "-flag" }; | 64 | char *args6[] = { "opts", "-argfunc", "arg", "-flag" }; |
| 65 | char *args7[] = { "opts", "-arg", "arg", "-flag", "file1", "file2", "file3" }; | ||
| 66 | char *args8[] = { "opts", "-arg", "arg", "-flag", "file1", "-file2", "file3" }; | ||
| 65 | 67 | ||
| 66 | struct options_test { | 68 | struct options_test { |
| 67 | int argc; | 69 | int argc; |
| @@ -69,6 +71,7 @@ struct options_test { | |||
| 69 | enum { | 71 | enum { |
| 70 | OPTIONS_TEST_NONE, | 72 | OPTIONS_TEST_NONE, |
| 71 | OPTIONS_TEST_UNNAMED, | 73 | OPTIONS_TEST_UNNAMED, |
| 74 | OPTIONS_TEST_ARGSUSED, | ||
| 72 | } type; | 75 | } type; |
| 73 | char *unnamed; | 76 | char *unnamed; |
| 74 | int used; | 77 | int used; |
| @@ -149,12 +152,42 @@ struct options_test options_tests[] = { | |||
| 149 | .wantarg = "arg", | 152 | .wantarg = "arg", |
| 150 | .wantflag = 1, | 153 | .wantflag = 1, |
| 151 | }, | 154 | }, |
| 155 | { | ||
| 156 | /* Named and multiple unnamed. */ | ||
| 157 | .argc = 7, | ||
| 158 | .argv = args7, | ||
| 159 | .used = 4, | ||
| 160 | .type = OPTIONS_TEST_ARGSUSED, | ||
| 161 | .want = 0, | ||
| 162 | .wantarg = "arg", | ||
| 163 | .wantflag = 1, | ||
| 164 | }, | ||
| 165 | { | ||
| 166 | /* Named and multiple unnamed. */ | ||
| 167 | .argc = 7, | ||
| 168 | .argv = args8, | ||
| 169 | .used = 4, | ||
| 170 | .type = OPTIONS_TEST_ARGSUSED, | ||
| 171 | .want = 0, | ||
| 172 | .wantarg = "arg", | ||
| 173 | .wantflag = 1, | ||
| 174 | }, | ||
| 175 | { | ||
| 176 | /* Named only. */ | ||
| 177 | .argc = 4, | ||
| 178 | .argv = args2, | ||
| 179 | .used = 4, | ||
| 180 | .type = OPTIONS_TEST_ARGSUSED, | ||
| 181 | .want = 0, | ||
| 182 | .wantarg = "arg", | ||
| 183 | .wantflag = 1, | ||
| 184 | }, | ||
| 152 | }; | 185 | }; |
| 153 | 186 | ||
| 154 | #define N_OPTIONS_TESTS \ | 187 | #define N_OPTIONS_TESTS \ |
| 155 | (sizeof(options_tests) / sizeof(*options_tests)) | 188 | (sizeof(options_tests) / sizeof(*options_tests)) |
| 156 | 189 | ||
| 157 | int | 190 | static int |
| 158 | argfunc(char *arg) | 191 | argfunc(char *arg) |
| 159 | { | 192 | { |
| 160 | test_config.arg = arg; | 193 | test_config.arg = arg; |
| @@ -164,15 +197,19 @@ argfunc(char *arg) | |||
| 164 | static int | 197 | static int |
| 165 | do_options_test(int test_no, struct options_test *ot) | 198 | do_options_test(int test_no, struct options_test *ot) |
| 166 | { | 199 | { |
| 200 | int *argsused = NULL; | ||
| 167 | char *unnamed = NULL; | 201 | char *unnamed = NULL; |
| 168 | char **arg = NULL; | 202 | char **arg = NULL; |
| 203 | int used = 0; | ||
| 169 | int ret; | 204 | int ret; |
| 170 | 205 | ||
| 171 | if (ot->type == OPTIONS_TEST_UNNAMED) | 206 | if (ot->type == OPTIONS_TEST_UNNAMED) |
| 172 | arg = &unnamed; | 207 | arg = &unnamed; |
| 208 | else if (ot->type == OPTIONS_TEST_ARGSUSED) | ||
| 209 | argsused = &used; | ||
| 173 | 210 | ||
| 174 | memset(&test_config, 0, sizeof(test_config)); | 211 | memset(&test_config, 0, sizeof(test_config)); |
| 175 | ret = options_parse(ot->argc, ot->argv, test_options, arg); | 212 | ret = options_parse(ot->argc, ot->argv, test_options, arg, argsused); |
| 176 | if (ret != ot->want) { | 213 | if (ret != ot->want) { |
| 177 | fprintf(stderr, "FAIL: test %i options_parse() returned %i, " | 214 | fprintf(stderr, "FAIL: test %i options_parse() returned %i, " |
| 178 | "want %i\n", test_no, ret, ot->want); | 215 | "want %i\n", test_no, ret, ot->want); |
| @@ -201,6 +238,11 @@ do_options_test(int test_no, struct options_test *ot) | |||
| 201 | test_no, unnamed, ot->unnamed); | 238 | test_no, unnamed, ot->unnamed); |
| 202 | return (1); | 239 | return (1); |
| 203 | } | 240 | } |
| 241 | if (ot->type == OPTIONS_TEST_ARGSUSED && used != ot->used) { | ||
| 242 | fprintf(stderr, "FAIL: test %i got used %i, want %i\n", | ||
| 243 | test_no, used, ot->used); | ||
| 244 | return (1); | ||
| 245 | } | ||
| 204 | 246 | ||
| 205 | return (0); | 247 | return (0); |
| 206 | } | 248 | } |
