Browse Source
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>maint


4 changed files with 107 additions and 1 deletions
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2007 Johannes Schindelin |
||||
# |
||||
|
||||
test_description='our own option parser' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
cat > expect.err << EOF |
||||
usage: test-parse-options <options> |
||||
|
||||
-b, --boolean get a boolean |
||||
-i, --integer <n> get a integer |
||||
-j <n> get a integer, too |
||||
|
||||
string options |
||||
-s, --string <string> |
||||
get a string |
||||
--string2 <str> get another string |
||||
|
||||
EOF |
||||
|
||||
test_expect_success 'test help' ' |
||||
! test-parse-options -h > output 2> output.err && |
||||
test ! -s output && |
||||
git diff expect.err output.err |
||||
' |
||||
|
||||
cat > expect << EOF |
||||
boolean: 2 |
||||
integer: 1729 |
||||
string: 123 |
||||
EOF |
||||
|
||||
test_expect_success 'short options' ' |
||||
test-parse-options -s123 -b -i 1729 -b > output 2> output.err && |
||||
git diff expect output && |
||||
test ! -s output.err |
||||
' |
||||
cat > expect << EOF |
||||
boolean: 2 |
||||
integer: 1729 |
||||
string: 321 |
||||
EOF |
||||
|
||||
test_expect_success 'long options' ' |
||||
test-parse-options --boolean --integer 1729 --boolean --string2=321 \ |
||||
> output 2> output.err && |
||||
test ! -s output.err && |
||||
git diff expect output |
||||
' |
||||
|
||||
cat > expect << EOF |
||||
boolean: 1 |
||||
integer: 13 |
||||
string: 123 |
||||
arg 00: a1 |
||||
arg 01: b1 |
||||
arg 02: --boolean |
||||
EOF |
||||
|
||||
test_expect_success 'intermingled arguments' ' |
||||
test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \ |
||||
> output 2> output.err && |
||||
test ! -s output.err && |
||||
git diff expect output |
||||
' |
||||
|
||||
test_done |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#include "cache.h" |
||||
#include "parse-options.h" |
||||
|
||||
static int boolean = 0; |
||||
static int integer = 0; |
||||
static char *string = NULL; |
||||
|
||||
int main(int argc, const char **argv) |
||||
{ |
||||
const char *usage[] = { |
||||
"test-parse-options <options>", |
||||
NULL |
||||
}; |
||||
struct option options[] = { |
||||
OPT_BOOLEAN('b', "boolean", &boolean, "get a boolean"), |
||||
OPT_INTEGER('i', "integer", &integer, "get a integer"), |
||||
OPT_INTEGER('j', NULL, &integer, "get a integer, too"), |
||||
OPT_GROUP("string options"), |
||||
OPT_STRING('s', "string", &string, "string", "get a string"), |
||||
OPT_STRING(0, "string2", &string, "str", "get another string"), |
||||
OPT_END(), |
||||
}; |
||||
int i; |
||||
|
||||
argc = parse_options(argc, argv, options, usage, 0); |
||||
|
||||
printf("boolean: %d\n", boolean); |
||||
printf("integer: %d\n", integer); |
||||
printf("string: %s\n", string ? string : "(not set)"); |
||||
|
||||
for (i = 0; i < argc; i++) |
||||
printf("arg %02d: %s\n", i, argv[i]); |
||||
|
||||
return 0; |
||||
} |
Loading…
Reference in new issue