2 test_description="argument parsing"
3 . $(dirname "$0")/test-lib.sh || exit 1
5 if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
9 test_begin_subtest "sanity check"
10 $TEST_DIRECTORY/arg-test pos1 --keyword=one --boolean --string=foo pos2 --int=7 --flag=one --flag=three > OUTPUT
20 test_expect_equal_file EXPECTED OUTPUT
22 test_begin_subtest "sanity check zero values"
23 $TEST_DIRECTORY/arg-test --keyword=zero --boolean=false --int=0 > OUTPUT
29 test_expect_equal_file EXPECTED OUTPUT
31 test_begin_subtest "space instead of = between parameter name and value"
32 # Note: spaces aren't allowed for booleans. false turns into a positional arg!
33 $TEST_DIRECTORY/arg-test --keyword one --boolean false --string foo --int 7 --flag one --flag three > OUTPUT
40 positional arg 1 false
42 test_expect_equal_file EXPECTED OUTPUT
44 test_begin_subtest "--boolean=true"
45 $TEST_DIRECTORY/arg-test --boolean=true > OUTPUT
49 test_expect_equal_file EXPECTED OUTPUT
51 test_begin_subtest "--boolean=false"
52 $TEST_DIRECTORY/arg-test --boolean=false > OUTPUT
56 test_expect_equal_file EXPECTED OUTPUT
58 test_begin_subtest "--no-boolean"
59 $TEST_DIRECTORY/arg-test --no-boolean > OUTPUT
63 test_expect_equal_file EXPECTED OUTPUT
65 test_begin_subtest "--no-flag"
66 $TEST_DIRECTORY/arg-test --flag=one --flag=three --no-flag=three > OUTPUT
70 test_expect_equal_file EXPECTED OUTPUT
72 test_begin_subtest "test keyword arguments without value"
73 $TEST_DIRECTORY/arg-test --boolkeyword bananas > OUTPUT
76 positional arg 1 bananas
78 test_expect_equal_file EXPECTED OUTPUT
80 test_begin_subtest "test keyword arguments with non-default value separated by a space"
81 $TEST_DIRECTORY/arg-test --boolkeyword false bananas > OUTPUT
84 positional arg 1 bananas
86 test_expect_equal_file EXPECTED OUTPUT
88 test_begin_subtest "test keyword arguments without value at the end"
89 $TEST_DIRECTORY/arg-test bananas --boolkeyword > OUTPUT
92 positional arg 1 bananas
94 test_expect_equal_file EXPECTED OUTPUT
96 test_begin_subtest "test keyword arguments without value but with = (should be an error)"
97 $TEST_DIRECTORY/arg-test bananas --boolkeyword= > OUTPUT 2>&1
99 Unknown keyword argument "" for option "boolkeyword".
100 Unrecognized option: --boolkeyword=
102 test_expect_equal_file EXPECTED OUTPUT