]> git.cworth.org Git - notmuch/blob - test/T410-argument-parsing.sh
emacs: Add new option notmuch-search-hide-excluded
[notmuch] / test / T410-argument-parsing.sh
1 #!/usr/bin/env bash
2 test_description="argument parsing"
3 . $(dirname "$0")/test-lib.sh || exit 1
4
5 if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
6     test_done
7 fi
8
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
11 cat <<EOF > EXPECTED
12 boolean 1
13 keyword 1
14 flags 5
15 int 7
16 string foo
17 positional arg 1 pos1
18 positional arg 2 pos2
19 EOF
20 test_expect_equal_file EXPECTED OUTPUT
21
22 test_begin_subtest "sanity check zero values"
23 $TEST_DIRECTORY/arg-test --keyword=zero --boolean=false --int=0 > OUTPUT
24 cat <<EOF > EXPECTED
25 boolean 0
26 keyword 0
27 int 0
28 EOF
29 test_expect_equal_file EXPECTED OUTPUT
30
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
34 cat <<EOF > EXPECTED
35 boolean 1
36 keyword 1
37 flags 5
38 int 7
39 string foo
40 positional arg 1 false
41 EOF
42 test_expect_equal_file EXPECTED OUTPUT
43
44 test_begin_subtest "--boolean=true"
45 $TEST_DIRECTORY/arg-test --boolean=true > OUTPUT
46 cat <<EOF > EXPECTED
47 boolean 1
48 EOF
49 test_expect_equal_file EXPECTED OUTPUT
50
51 test_begin_subtest "--boolean=false"
52 $TEST_DIRECTORY/arg-test --boolean=false > OUTPUT
53 cat <<EOF > EXPECTED
54 boolean 0
55 EOF
56 test_expect_equal_file EXPECTED OUTPUT
57
58 test_begin_subtest "--no-boolean"
59 $TEST_DIRECTORY/arg-test --no-boolean > OUTPUT
60 cat <<EOF > EXPECTED
61 boolean 0
62 EOF
63 test_expect_equal_file EXPECTED OUTPUT
64
65 test_begin_subtest "--no-flag"
66 $TEST_DIRECTORY/arg-test --flag=one --flag=three --no-flag=three > OUTPUT
67 cat <<EOF > EXPECTED
68 flags 1
69 EOF
70 test_expect_equal_file EXPECTED OUTPUT
71
72 test_begin_subtest "test keyword arguments without value"
73 $TEST_DIRECTORY/arg-test --boolkeyword bananas > OUTPUT
74 cat <<EOF > EXPECTED
75 boolkeyword 1
76 positional arg 1 bananas
77 EOF
78 test_expect_equal_file EXPECTED OUTPUT
79
80 test_begin_subtest "test keyword arguments with non-default value separated by a space"
81 $TEST_DIRECTORY/arg-test --boolkeyword false bananas > OUTPUT
82 cat <<EOF > EXPECTED
83 boolkeyword 0
84 positional arg 1 bananas
85 EOF
86 test_expect_equal_file EXPECTED OUTPUT
87
88 test_begin_subtest "test keyword arguments without value at the end"
89 $TEST_DIRECTORY/arg-test bananas --boolkeyword > OUTPUT
90 cat <<EOF > EXPECTED
91 boolkeyword 1
92 positional arg 1 bananas
93 EOF
94 test_expect_equal_file EXPECTED OUTPUT
95
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
98 cat <<EOF > EXPECTED
99 Unknown keyword argument "" for option "boolkeyword".
100 Unrecognized option: --boolkeyword=
101 EOF
102 test_expect_equal_file EXPECTED OUTPUT
103
104 test_done