summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2014-12-28 16:11:54 +0000
committerjsing <>2014-12-28 16:11:54 +0000
commit84bb0d054839eafa37a0ae06c864c16155188d05 (patch)
tree97f2b09b8d9de60d25c92fd71f5c6b126aec117d
parent5b99ab3aef9652baafedf8a5e0aafa1fca73aabf (diff)
downloadopenbsd-84bb0d054839eafa37a0ae06c864c16155188d05.tar.gz
openbsd-84bb0d054839eafa37a0ae06c864c16155188d05.tar.bz2
openbsd-84bb0d054839eafa37a0ae06c864c16155188d05.zip
Add option parsing regress tests with end of options handling.
-rw-r--r--src/regress/usr.bin/openssl/options/optionstest.c67
1 files changed, 50 insertions, 17 deletions
diff --git a/src/regress/usr.bin/openssl/options/optionstest.c b/src/regress/usr.bin/openssl/options/optionstest.c
index d493f7801d..ee756b7880 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.4 2014/12/28 15:49:36 jsing Exp $ */ 1/* $OpenBSD: optionstest.c,v 1.5 2014/12/28 16:11:54 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,8 +62,11 @@ char *args3[] = { "opts", "-arg", "arg", "-flag", "unnamed" };
62char *args4[] = { "opts", "-arg", "arg", "unnamed", "-flag" }; 62char *args4[] = { "opts", "-arg", "arg", "unnamed", "-flag" };
63char *args5[] = { "opts", "unnamed1", "-arg", "arg", "-flag", "unnamed2" }; 63char *args5[] = { "opts", "unnamed1", "-arg", "arg", "-flag", "unnamed2" };
64char *args6[] = { "opts", "-argfunc", "arg", "-flag" }; 64char *args6[] = { "opts", "-argfunc", "arg", "-flag" };
65char *args7[] = { "opts", "-arg", "arg", "-flag", "file1", "file2", "file3" }; 65char *args7[] = { "opts", "-arg", "arg", "-flag", "-", "-unnamed" };
66char *args8[] = { "opts", "-arg", "arg", "-flag", "file1", "-file2", "file3" }; 66char *args8[] = { "opts", "-arg", "arg", "-flag", "file1", "file2", "file3" };
67char *args9[] = { "opts", "-arg", "arg", "-flag", "file1", "-file2", "file3" };
68char *args10[] = { "opts", "-arg", "arg", "-flag", "-", "file1", "file2" };
69char *args11[] = { "opts", "-arg", "arg", "-flag", "-", "-file1", "-file2" };
67 70
68struct options_test { 71struct options_test {
69 int argc; 72 int argc;
@@ -82,7 +85,7 @@ struct options_test {
82 85
83struct options_test options_tests[] = { 86struct options_test options_tests[] = {
84 { 87 {
85 /* No arguments (only program name). */ 88 /* Test 1 - No arguments (only program name). */
86 .argc = 1, 89 .argc = 1,
87 .argv = args1, 90 .argv = args1,
88 .type = OPTIONS_TEST_NONE, 91 .type = OPTIONS_TEST_NONE,
@@ -91,7 +94,7 @@ struct options_test options_tests[] = {
91 .wantflag = 0, 94 .wantflag = 0,
92 }, 95 },
93 { 96 {
94 /* Named arguments (unnamed not permitted). */ 97 /* Test 2 - Named arguments (unnamed not permitted). */
95 .argc = 4, 98 .argc = 4,
96 .argv = args2, 99 .argv = args2,
97 .type = OPTIONS_TEST_NONE, 100 .type = OPTIONS_TEST_NONE,
@@ -100,7 +103,7 @@ struct options_test options_tests[] = {
100 .wantflag = 1, 103 .wantflag = 1,
101 }, 104 },
102 { 105 {
103 /* Named arguments (unnamed permitted). */ 106 /* Test 3 - Named arguments (unnamed permitted). */
104 .argc = 4, 107 .argc = 4,
105 .argv = args2, 108 .argv = args2,
106 .type = OPTIONS_TEST_UNNAMED, 109 .type = OPTIONS_TEST_UNNAMED,
@@ -110,14 +113,14 @@ struct options_test options_tests[] = {
110 .wantflag = 1, 113 .wantflag = 1,
111 }, 114 },
112 { 115 {
113 /* Named and single unnamed (unnamed not permitted). */ 116 /* Test 4 - Named and single unnamed (unnamed not permitted). */
114 .argc = 5, 117 .argc = 5,
115 .argv = args3, 118 .argv = args3,
116 .type = OPTIONS_TEST_NONE, 119 .type = OPTIONS_TEST_NONE,
117 .want = 1, 120 .want = 1,
118 }, 121 },
119 { 122 {
120 /* Named and single unnamed (unnamed permitted). */ 123 /* Test 5 - Named and single unnamed (unnamed permitted). */
121 .argc = 5, 124 .argc = 5,
122 .argv = args3, 125 .argv = args3,
123 .type = OPTIONS_TEST_UNNAMED, 126 .type = OPTIONS_TEST_UNNAMED,
@@ -127,7 +130,7 @@ struct options_test options_tests[] = {
127 .wantflag = 1, 130 .wantflag = 1,
128 }, 131 },
129 { 132 {
130 /* Named and single unnamed (different sequence). */ 133 /* Test 6 - Named and single unnamed (different sequence). */
131 .argc = 5, 134 .argc = 5,
132 .argv = args4, 135 .argv = args4,
133 .type = OPTIONS_TEST_UNNAMED, 136 .type = OPTIONS_TEST_UNNAMED,
@@ -137,14 +140,14 @@ struct options_test options_tests[] = {
137 .wantflag = 1, 140 .wantflag = 1,
138 }, 141 },
139 { 142 {
140 /* Multiple unnamed arguments (should fail). */ 143 /* Test 7 - Multiple unnamed arguments (should fail). */
141 .argc = 6, 144 .argc = 6,
142 .argv = args5, 145 .argv = args5,
143 .type = OPTIONS_TEST_UNNAMED, 146 .type = OPTIONS_TEST_UNNAMED,
144 .want = 1, 147 .want = 1,
145 }, 148 },
146 { 149 {
147 /* Function. */ 150 /* Test 8 - Function. */
148 .argc = 4, 151 .argc = 4,
149 .argv = args6, 152 .argv = args6,
150 .type = OPTIONS_TEST_NONE, 153 .type = OPTIONS_TEST_NONE,
@@ -153,9 +156,19 @@ struct options_test options_tests[] = {
153 .wantflag = 1, 156 .wantflag = 1,
154 }, 157 },
155 { 158 {
156 /* Named and multiple unnamed. */ 159 /* Test 9 - Named and single unnamed (hyphen separated). */
157 .argc = 7, 160 .argc = 6,
158 .argv = args7, 161 .argv = args7,
162 .type = OPTIONS_TEST_UNNAMED,
163 .unnamed = "-unnamed",
164 .want = 0,
165 .wantarg = "arg",
166 .wantflag = 1,
167 },
168 {
169 /* Test 10 - Named and multiple unnamed. */
170 .argc = 7,
171 .argv = args8,
159 .used = 4, 172 .used = 4,
160 .type = OPTIONS_TEST_ARGSUSED, 173 .type = OPTIONS_TEST_ARGSUSED,
161 .want = 0, 174 .want = 0,
@@ -163,9 +176,9 @@ struct options_test options_tests[] = {
163 .wantflag = 1, 176 .wantflag = 1,
164 }, 177 },
165 { 178 {
166 /* Named and multiple unnamed. */ 179 /* Test 11 - Named and multiple unnamed. */
167 .argc = 7, 180 .argc = 7,
168 .argv = args8, 181 .argv = args9,
169 .used = 4, 182 .used = 4,
170 .type = OPTIONS_TEST_ARGSUSED, 183 .type = OPTIONS_TEST_ARGSUSED,
171 .want = 0, 184 .want = 0,
@@ -173,7 +186,27 @@ struct options_test options_tests[] = {
173 .wantflag = 1, 186 .wantflag = 1,
174 }, 187 },
175 { 188 {
176 /* Named only. */ 189 /* Test 12 - Named and multiple unnamed. */
190 .argc = 7,
191 .argv = args10,
192 .used = 5,
193 .type = OPTIONS_TEST_ARGSUSED,
194 .want = 0,
195 .wantarg = "arg",
196 .wantflag = 1,
197 },
198 {
199 /* Test 13 - Named and multiple unnamed. */
200 .argc = 7,
201 .argv = args11,
202 .used = 5,
203 .type = OPTIONS_TEST_ARGSUSED,
204 .want = 0,
205 .wantarg = "arg",
206 .wantflag = 1,
207 },
208 {
209 /* Test 14 - Named only. */
177 .argc = 4, 210 .argc = 4,
178 .argv = args2, 211 .argv = args2,
179 .used = 4, 212 .used = 4,
@@ -254,7 +287,7 @@ main(int argc, char **argv)
254 size_t i; 287 size_t i;
255 288
256 for (i = 0; i < N_OPTIONS_TESTS; i++) 289 for (i = 0; i < N_OPTIONS_TESTS; i++)
257 failed += do_options_test(i, &options_tests[i]); 290 failed += do_options_test(i + 1, &options_tests[i]);
258 291
259 return (failed); 292 return (failed);
260} 293}