diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-11-02 16:42:23 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-02 16:42:23 -0700 |
commit | 3d66dc9657f195cb241387a87bcdd5709abd8a21 (patch) | |
tree | d60c114be03184c94b040ab531d2908ba1f66849 /t | |
parent | 265ae188267fda441f92e513fb89641f78e982fd (diff) | |
parent | 44c637c8021e44253f0f8cb17391092e08b39e73 (diff) | |
download | git-3d66dc9657f195cb241387a87bcdd5709abd8a21.tar.gz git-3d66dc9657f195cb241387a87bcdd5709abd8a21.tar.xz |
Merge branch 'ph/parseopt'
* ph/parseopt: (24 commits)
gc: use parse_options
Fixed a command line option type for builtin-fsck.c
Make builtin-pack-refs.c use parse_options.
Make builtin-name-rev.c use parse_options.
Make builtin-count-objects.c use parse_options.
Make builtin-fsck.c use parse_options.
Update manpages to reflect new short and long option aliases
Make builtin-for-each-ref.c use parse-opts.
Make builtin-symbolic-ref.c use parse_options.
Make builtin-update-ref.c use parse_options
Make builtin-revert.c use parse_options.
Make builtin-describe.c use parse_options
Make builtin-branch.c use parse_options.
Make builtin-mv.c use parse-options
Make builtin-rm.c use parse_options.
Port builtin-add.c to use the new option parser.
parse-options: allow callbacks to take no arguments at all.
parse-options: Allow abbreviated options when unambiguous
Add shortcuts for very often used options.
parse-options: make some arguments optional, add callbacks.
...
Conflicts:
Makefile
builtin-add.c
Diffstat (limited to 't')
-rwxr-xr-x | t/t0040-parse-options.sh | 93 | ||||
-rwxr-xr-x[-rw-r--r--] | t/t6300-for-each-ref.sh | 0 |
2 files changed, 93 insertions, 0 deletions
diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh new file mode 100755 index 000000000..ae49424aa --- /dev/null +++ b/t/t0040-parse-options.sh @@ -0,0 +1,93 @@ +#!/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 +' + +cat > expect << EOF +boolean: 0 +integer: 2 +string: (not set) +EOF + +test_expect_success 'unambiguously abbreviated option' ' + test-parse-options --int 2 --boolean --no-bo > output 2> output.err && + test ! -s output.err && + git diff expect output +' + +test_expect_success 'unambiguously abbreviated option with "="' ' + test-parse-options --int=2 > output 2> output.err && + test ! -s output.err && + git diff expect output +' + +test_expect_failure 'ambiguously abbreviated option' ' + test-parse-options --strin 123; + test $? != 129 +' + +test_done diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index d0809eb65..d0809eb65 100644..100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh |