1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
proc setup {} {
save_env
}
proc teardown {} {
assert_env_unmodified {
/declare -f fn/d
/PIPESTATUS=/d
}
}
setup
set cmd {fn() { printf '%s\n' ""; }; _parse_usage fn}
assert_bash_list "" $cmd "empty"
sync_after_int
set cmd {fn() { printf '%s\n' "no dashes here"; }; _parse_usage fn}
assert_bash_list "" $cmd "no dashes"
sync_after_int
set cmd {fn() { printf '%s\n' "foo [-f]"; }; _parse_usage fn}
assert_bash_list "-f" $cmd "simple"
sync_after_int
set cmd {fn() { printf '%s\n' "bar [-aBcD] [-e X]"; }; _parse_usage fn}
assert_bash_list "-a -B -c -D -e" $cmd "bundled + separate 1 short"
sync_after_int
set cmd {fn() { printf '%s\n' "[-[XyZ]] [--long=arg]"; }; _parse_usage fn}
assert_bash_list "-X -y -Z --long=" $cmd "bundled in brackets + separate long"
sync_after_int
set cmd {fn() { printf '%s\n' "[-s|--long]"; }; _parse_usage fn}
assert_bash_list "--long" $cmd "short or long"
sync_after_int
set cmd {fn() { printf '%s\n' "[-s, --long=arg]"; }; _parse_usage fn}
assert_bash_list "--long=" $cmd "short or long with arg, comma"
sync_after_int
set cmd {fn() { printf '%s\n' "[--long/-s] [-S/--longer]"; }; _parse_usage fn}
assert_bash_list "--long\n--longer" $cmd "long or short, slash"
sync_after_int
set cmd {fn() { printf '%s\n' "[ -a ] [ -b foo ]"; }; _parse_usage fn}
assert_bash_list "-a\n-b" $cmd "whitespace in brackets"
sync_after_int
set cmd {fn() { printf '%s\n' "[ -a | --aa ]"; }; _parse_usage fn}
assert_bash_list "--aa" $cmd "whitespace in brackets 2"
sync_after_int
set cmd {fn() { printf '%s\n' "----\n---foo\n----- bar"; }; _parse_usage fn}
assert_bash_list "" $cmd "many dashes"
sync_after_int
set cmd { printf '%s\n' "[-duh]" | _parse_usage - }
assert_bash_list "-d -u -h" $cmd "from stdin"
sync_after_int
teardown
|