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]); | 
