mirror of
https://github.com/git/git.git
synced 2026-04-02 21:10:10 +02:00
This reverts the following commits:abd1fa1test-suite: Log everything to a file in non-verbose mode50f37d1Implement test-stat the prints the modification time.fc7fe85gitk: Swap positions of 'next' and 'prev' buttons in the 'Find' section.f80f1dbNeed diff -u -b in t7401 because some lines end in CRLF.85763c8Implement thread-specific die() routines; use one in start_async().4eb0463Make report() from usage.c public as vreport().ddce705Skip tests that fail due to incomplete implementations, missing tools...a094080Do not issue the warning about the fallback of the PREFIX. These were brought in by the merge commitdc8b641that merged my private work-in-progress branch. Only these two commits remain:1e52e22Windows: Work around intermittent failures in mingw_renameccd3859Windows: Better support PAGER settings with spaces in the path Signed-off-by: Johannes Sixt <j6t@kdbg.org>
252 lines
4.9 KiB
Bash
Executable File
252 lines
4.9 KiB
Bash
Executable File
#!/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
|
|
-4, --or4 bitwise-or boolean with ...0100
|
|
|
|
-i, --integer <n> get a integer
|
|
-j <n> get a integer, too
|
|
--set23 set integer to 23
|
|
-t <time> get timestamp of <time>
|
|
-L, --length <str> get length of <str>
|
|
|
|
String options
|
|
-s, --string <string>
|
|
get a string
|
|
--string2 <str> get another string
|
|
--st <st> get another string (pervert ordering)
|
|
-o <str> get another string
|
|
--default-string set string to default
|
|
|
|
Magic arguments
|
|
--quux means --quux
|
|
|
|
Standard options
|
|
--abbrev[=<n>] use <n> digits to display SHA-1s
|
|
-v, --verbose be verbose
|
|
-n, --dry-run dry run
|
|
-q, --quiet be quiet
|
|
|
|
EOF
|
|
|
|
test_expect_success 'test help' '
|
|
test_must_fail test-parse-options -h > output 2> output.err &&
|
|
test ! -s output &&
|
|
test_cmp expect.err output.err
|
|
'
|
|
|
|
cat > expect << EOF
|
|
boolean: 2
|
|
integer: 1729
|
|
timestamp: 0
|
|
string: 123
|
|
abbrev: 7
|
|
verbose: 2
|
|
quiet: no
|
|
dry run: yes
|
|
EOF
|
|
|
|
test_expect_success 'short options' '
|
|
test-parse-options -s123 -b -i 1729 -b -vv -n > output 2> output.err &&
|
|
test_cmp expect output &&
|
|
test ! -s output.err
|
|
'
|
|
|
|
cat > expect << EOF
|
|
boolean: 2
|
|
integer: 1729
|
|
timestamp: 0
|
|
string: 321
|
|
abbrev: 10
|
|
verbose: 2
|
|
quiet: no
|
|
dry run: no
|
|
EOF
|
|
|
|
test_expect_success 'long options' '
|
|
test-parse-options --boolean --integer 1729 --boolean --string2=321 \
|
|
--verbose --verbose --no-dry-run --abbrev=10 \
|
|
> output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
test_expect_success 'missing required value' '
|
|
test-parse-options -s;
|
|
test $? = 129 &&
|
|
test-parse-options --string;
|
|
test $? = 129
|
|
'
|
|
|
|
cat > expect << EOF
|
|
boolean: 1
|
|
integer: 13
|
|
timestamp: 0
|
|
string: 123
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: no
|
|
dry run: no
|
|
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 &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
cat > expect << EOF
|
|
boolean: 0
|
|
integer: 2
|
|
timestamp: 0
|
|
string: (not set)
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: no
|
|
dry run: no
|
|
EOF
|
|
|
|
test_expect_success 'unambiguously abbreviated option' '
|
|
test-parse-options --int 2 --boolean --no-bo > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
test_expect_success 'unambiguously abbreviated option with "="' '
|
|
test-parse-options --int=2 > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
test_expect_success 'ambiguously abbreviated option' '
|
|
test-parse-options --strin 123;
|
|
test $? = 129
|
|
'
|
|
|
|
cat > expect << EOF
|
|
boolean: 0
|
|
integer: 0
|
|
timestamp: 0
|
|
string: 123
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: no
|
|
dry run: no
|
|
EOF
|
|
|
|
test_expect_success 'non ambiguous option (after two options it abbreviates)' '
|
|
test-parse-options --st 123 > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
cat > typo.err << EOF
|
|
error: did you mean \`--boolean\` (with two dashes ?)
|
|
EOF
|
|
|
|
test_expect_success 'detect possible typos' '
|
|
test_must_fail test-parse-options -boolean > output 2> output.err &&
|
|
test ! -s output &&
|
|
test_cmp typo.err output.err
|
|
'
|
|
|
|
cat > expect <<EOF
|
|
boolean: 0
|
|
integer: 0
|
|
timestamp: 0
|
|
string: (not set)
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: no
|
|
dry run: no
|
|
arg 00: --quux
|
|
EOF
|
|
|
|
test_expect_success 'keep some options as arguments' '
|
|
test-parse-options --quux > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
cat > expect <<EOF
|
|
boolean: 0
|
|
integer: 0
|
|
timestamp: 1
|
|
string: default
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: yes
|
|
dry run: no
|
|
arg 00: foo
|
|
EOF
|
|
|
|
test_expect_success 'OPT_DATE() and OPT_SET_PTR() work' '
|
|
test-parse-options -t "1970-01-01 00:00:01 +0000" --default-string \
|
|
foo -q > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
cat > expect <<EOF
|
|
Callback: "four", 0
|
|
boolean: 5
|
|
integer: 4
|
|
timestamp: 0
|
|
string: (not set)
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: no
|
|
dry run: no
|
|
EOF
|
|
|
|
test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' '
|
|
test-parse-options --length=four -b -4 > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
cat > expect <<EOF
|
|
Callback: "not set", 1
|
|
EOF
|
|
|
|
test_expect_success 'OPT_CALLBACK() and callback errors work' '
|
|
test_must_fail test-parse-options --no-length > output 2> output.err &&
|
|
test_cmp expect output &&
|
|
test_cmp expect.err output.err
|
|
'
|
|
|
|
cat > expect <<EOF
|
|
boolean: 1
|
|
integer: 23
|
|
timestamp: 0
|
|
string: (not set)
|
|
abbrev: 7
|
|
verbose: 0
|
|
quiet: no
|
|
dry run: no
|
|
EOF
|
|
|
|
test_expect_success 'OPT_BIT() and OPT_SET_INT() work' '
|
|
test-parse-options --set23 -bbbbb --no-or4 > output 2> output.err &&
|
|
test ! -s output.err &&
|
|
test_cmp expect output
|
|
'
|
|
|
|
# --or4
|
|
# --no-or4
|
|
|
|
test_done
|