diff options
author | Stephan Beyer <s-beyer@gmx.net> | 2008-06-22 17:04:26 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-06-22 18:15:18 -0700 |
commit | 010a2dacc1acf3305e399ef1eb2e620110b95d5e (patch) | |
tree | f65d1bc57a86ae4b1ec7efe474741bfcebd7e56d /test-parse-options.c | |
parent | 224712e521c6d4f740045affa4d1ee1454db10d4 (diff) | |
download | git-010a2dacc1acf3305e399ef1eb2e620110b95d5e.tar.gz |
Extend parse-options test suite
This patch serves two purposes:
1. test-parse-option.c should be a more complete
example for the parse-options API, and
2. there have been no tests for OPT_CALLBACK,
OPT_DATE, OPT_BIT, OPT_SET_INT and OPT_SET_PTR
before.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'test-parse-options.c')
-rw-r--r-- | test-parse-options.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/test-parse-options.c b/test-parse-options.c index 73360d7512..2a79e729a4 100644 --- a/test-parse-options.c +++ b/test-parse-options.c @@ -2,9 +2,22 @@ #include "parse-options.h" static int boolean = 0; -static int integer = 0; +static unsigned long integer = 0; +static int abbrev = 7; +static int verbose = 0, dry_run = 0, quiet = 0; static char *string = NULL; +int length_callback(const struct option *opt, const char *arg, int unset) +{ + printf("Callback: \"%s\", %d\n", + (arg ? arg : "not set"), unset); + if (unset) + return 1; /* do not support unset */ + + *(unsigned long *)opt->value = strlen(arg); + return 0; +} + int main(int argc, const char **argv) { const char *usage[] = { @@ -13,15 +26,29 @@ int main(int argc, const char **argv) }; struct option options[] = { OPT_BOOLEAN('b', "boolean", &boolean, "get a boolean"), + OPT_BIT('4', "or4", &boolean, + "bitwise-or boolean with ...0100", 4), + OPT_GROUP(""), OPT_INTEGER('i', "integer", &integer, "get a integer"), OPT_INTEGER('j', NULL, &integer, "get a integer, too"), - OPT_GROUP("string options"), + OPT_SET_INT(0, "set23", &integer, "set integer to 23", 23), + OPT_DATE('t', NULL, &integer, "get timestamp of <time>"), + OPT_CALLBACK('L', "length", &integer, "str", + "get length of <str>", length_callback), + OPT_GROUP("String options"), OPT_STRING('s', "string", &string, "string", "get a string"), OPT_STRING(0, "string2", &string, "str", "get another string"), OPT_STRING(0, "st", &string, "st", "get another string (pervert ordering)"), OPT_STRING('o', NULL, &string, "str", "get another string"), - OPT_GROUP("magic arguments"), + OPT_SET_PTR(0, "default-string", &string, + "set string to default", (unsigned long)"default"), + OPT_GROUP("Magic arguments"), OPT_ARGUMENT("quux", "means --quux"), + OPT_GROUP("Standard options"), + OPT__ABBREV(&abbrev), + OPT__VERBOSE(&verbose), + OPT__DRY_RUN(&dry_run), + OPT__QUIET(&quiet), OPT_END(), }; int i; @@ -29,8 +56,12 @@ int main(int argc, const char **argv) argc = parse_options(argc, argv, options, usage, 0); printf("boolean: %d\n", boolean); - printf("integer: %d\n", integer); + printf("integer: %lu\n", integer); printf("string: %s\n", string ? string : "(not set)"); + printf("abbrev: %d\n", abbrev); + printf("verbose: %d\n", verbose); + printf("quiet: %s\n", quiet ? "yes" : "no"); + printf("dry run: %s\n", dry_run ? "yes" : "no"); for (i = 0; i < argc; i++) printf("arg %02d: %s\n", i, argv[i]); |