diff options
author | June McEnroe <june@causal.agency> | 2019-11-11 23:09:57 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-11-11 23:09:57 -0500 |
commit | c8a771828e1d5fc8c476bbd650fafcfb7ba390a8 (patch) | |
tree | 7d90049c6668c3fe54fc69ba12afcafec2440ce9 | |
parent | Add userhost-in-names to manual (diff) | |
download | pounce-c8a771828e1d5fc8c476bbd650fafcfb7ba390a8.tar.gz pounce-c8a771828e1d5fc8c476bbd650fafcfb7ba390a8.zip |
Test getopt_config
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | config.c | 47 |
3 files changed, 61 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore index c7ce8fe..8af4cb8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ *.conf *.o +*.t /calico /pounce config.mk localhost.crt localhost.key tags +test diff --git a/Makefile b/Makefile index c0ea331..d8f8504 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,9 @@ OBJS += ring.o OBJS += server.o OBJS += state.o -dev: tags all +TESTS += config.t + +dev: tags all test all: ${BINS} @@ -37,6 +39,15 @@ ${OBJS}: bounce.h compat.h dispatch.o: compat.h +test: ${TESTS} + set -e; ${TESTS:%=./%;} + touch test + +.SUFFIXES: .t + +.c.t: + ${CC} ${CFLAGS} -DTEST ${LDFLAGS} $< ${LDLIBS} -o $@ + tags: *.c *.h ctags -w *.c *.h diff --git a/config.c b/config.c index 653ae16..befb1fc 100644 --- a/config.c +++ b/config.c @@ -136,3 +136,50 @@ int getopt_config( file = NULL; } } + +#ifdef TEST +#include <assert.h> +#include <sysexits.h> + +static const struct option LongOpts[] = { + { "foo", no_argument, NULL, 'f' }, + { "bar", required_argument, NULL, 'b' }, + {0}, +}; + +static char Test[] = { + "\n" + WS "\n" + "#foo\n" + WS "#foo\n" + "foo\n" + WS "foo\n" + "foo" WS "\n" + "bar=baz\n" + "bar" WS "=baz\n" + "bar=" WS "baz\n" + "bar" WS "=" WS "baz\n" + "bar = # baz \n" + "foo" +}; + +int main(void) { + int argc = 1; + char *argv[] = { "test", NULL }; + file = fmemopen(Test, sizeof(Test) - 1, "r"); + if (!file) err(EX_OSERR, "fmemopen"); + + for (int i = 0; i < 3; ++i) { + assert('f' == getopt_config(argc, argv, "", LongOpts, NULL)); + } + for (int i = 0; i < 4; ++i) { + assert('b' == getopt_config(argc, argv, "", LongOpts, NULL)); + assert(!strcmp("baz", optarg)); + } + assert('b' == getopt_config(argc, argv, "", LongOpts, NULL)); + assert(!strcmp("# baz ", optarg)); + assert('f' == getopt_config(argc, argv, "", LongOpts, NULL)); + assert(-1 == getopt_config(argc, argv, "", LongOpts, NULL)); +} + +#endif |