summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2014-12-28 16:34:23 +0000
committerjsing <jsing@openbsd.org>2014-12-28 16:34:23 +0000
commitacd043e017d6b40a6cca48f2be359ace029244fc (patch)
treef0859f6362bbed9afc0f1dae497a1dee98cd128f
parentAllow a default option to be specified by having a NULL name, but a valid (diff)
downloadwireguard-openbsd-acd043e017d6b40a6cca48f2be359ace029244fc.tar.xz
wireguard-openbsd-acd043e017d6b40a6cca48f2be359ace029244fc.zip
Add regress tests for default option handling.
-rw-r--r--regress/usr.bin/openssl/options/optionstest.c49
1 files changed, 48 insertions, 1 deletions
diff --git a/regress/usr.bin/openssl/options/optionstest.c b/regress/usr.bin/openssl/options/optionstest.c
index 771e436fe54..c10c70b8c3f 100644
--- a/regress/usr.bin/openssl/options/optionstest.c
+++ b/regress/usr.bin/openssl/options/optionstest.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: optionstest.c,v 1.6 2014/12/28 16:24:48 jsing Exp $ */
+/* $OpenBSD: optionstest.c,v 1.7 2014/12/28 16:34:23 jsing Exp $ */
/*
* Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
*
@@ -29,6 +29,7 @@ BIO *bio_err;
CONF *config;
static int argfunc(char *arg);
+static int defaultarg(int argc, char **argv, int *argsused);
static int multiarg(int argc, char **argv, int *argsused);
static struct {
@@ -59,6 +60,11 @@ static struct option test_options[] = {
.type = OPTION_ARGV_FUNC,
.opt.argvfunc = multiarg,
},
+ {
+ .name = NULL,
+ .type = OPTION_ARGV_FUNC,
+ .opt.argvfunc = defaultarg,
+ },
{ NULL },
};
@@ -74,6 +80,7 @@ char *args9[] = { "opts", "-arg", "arg", "-flag", "file1", "-file2", "file3" };
char *args10[] = { "opts", "-arg", "arg", "-flag", "-", "file1", "file2" };
char *args11[] = { "opts", "-arg", "arg", "-flag", "-", "-file1", "-file2" };
char *args12[] = { "opts", "-multiarg", "arg1", "arg2", "-flag", "unnamed" };
+char *args13[] = { "opts", "-multiargz", "arg1", "arg2", "-flagz", "unnamed" };
struct options_test {
int argc;
@@ -242,6 +249,26 @@ struct options_test options_tests[] = {
.wantarg = NULL,
.wantflag = 1,
},
+ {
+ /* Test 17 - Default callback. */
+ .argc = 6,
+ .argv = args13,
+ .unnamed = "unnamed",
+ .type = OPTIONS_TEST_UNNAMED,
+ .want = 0,
+ .wantarg = NULL,
+ .wantflag = 1,
+ },
+ {
+ /* Test 18 - Default callback. */
+ .argc = 6,
+ .argv = args13,
+ .used = 5,
+ .type = OPTIONS_TEST_ARGSUSED,
+ .want = 0,
+ .wantarg = NULL,
+ .wantflag = 1,
+ },
};
#define N_OPTIONS_TESTS \
@@ -255,6 +282,26 @@ argfunc(char *arg)
}
static int
+defaultarg(int argc, char **argv, int *argsused)
+{
+ if (argc < 1)
+ return (1);
+
+ if (strcmp(argv[0], "-multiargz") == 0) {
+ if (argc < 3)
+ return (1);
+ *argsused = 3;
+ return (0);
+ } else if (strcmp(argv[0], "-flagz") == 0) {
+ test_config.flag = 1;
+ *argsused = 1;
+ return (0);
+ }
+
+ return (1);
+}
+
+static int
multiarg(int argc, char **argv, int *argsused)
{
if (argc < 3)