]> git.notmuchmail.org Git - notmuch/blob - test/T410-argument-parsing.sh
emacs: remove non-batch code path from function notmuch-tag
[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 test_begin_subtest "sanity check"
6 $TEST_DIRECTORY/arg-test pos1 --keyword=one --boolean --string=foo pos2 --int=7 --flag=one --flag=three > OUTPUT
7 cat <<EOF > EXPECTED
8 boolean 1
9 keyword 1
10 flags 5
11 int 7
12 string foo
13 positional arg 1 pos1
14 positional arg 2 pos2
15 EOF
16 test_expect_equal_file EXPECTED OUTPUT
17
18 test_begin_subtest "sanity check zero values"
19 $TEST_DIRECTORY/arg-test --keyword=zero --boolean=false --int=0 > OUTPUT
20 cat <<EOF > EXPECTED
21 boolean 0
22 keyword 0
23 int 0
24 EOF
25 test_expect_equal_file EXPECTED OUTPUT
26
27 test_begin_subtest "space instead of = between parameter name and value"
28 # Note: spaces aren't allowed for booleans. false turns into a positional arg!
29 $TEST_DIRECTORY/arg-test --keyword one --boolean false --string foo --int 7 --flag one --flag three > OUTPUT
30 cat <<EOF > EXPECTED
31 boolean 1
32 keyword 1
33 flags 5
34 int 7
35 string foo
36 positional arg 1 false
37 EOF
38 test_expect_equal_file EXPECTED OUTPUT
39
40 test_begin_subtest "--boolean=true"
41 $TEST_DIRECTORY/arg-test --boolean=true > OUTPUT
42 cat <<EOF > EXPECTED
43 boolean 1
44 EOF
45 test_expect_equal_file EXPECTED OUTPUT
46
47 test_begin_subtest "--boolean=false"
48 $TEST_DIRECTORY/arg-test --boolean=false > OUTPUT
49 cat <<EOF > EXPECTED
50 boolean 0
51 EOF
52 test_expect_equal_file EXPECTED OUTPUT
53
54 test_begin_subtest "--no-boolean"
55 $TEST_DIRECTORY/arg-test --no-boolean > OUTPUT
56 cat <<EOF > EXPECTED
57 boolean 0
58 EOF
59 test_expect_equal_file EXPECTED OUTPUT
60
61 test_begin_subtest "--no-flag"
62 $TEST_DIRECTORY/arg-test --flag=one --flag=three --no-flag=three > OUTPUT
63 cat <<EOF > EXPECTED
64 flags 1
65 EOF
66 test_expect_equal_file EXPECTED OUTPUT
67
68 test_begin_subtest "test keyword arguments without value"
69 $TEST_DIRECTORY/arg-test --boolkeyword bananas > OUTPUT
70 cat <<EOF > EXPECTED
71 boolkeyword 1
72 positional arg 1 bananas
73 EOF
74 test_expect_equal_file EXPECTED OUTPUT
75
76 test_begin_subtest "test keyword arguments with non-default value separated by a space"
77 $TEST_DIRECTORY/arg-test --boolkeyword false bananas > OUTPUT
78 cat <<EOF > EXPECTED
79 boolkeyword 0
80 positional arg 1 bananas
81 EOF
82 test_expect_equal_file EXPECTED OUTPUT
83
84 test_begin_subtest "test keyword arguments without value at the end"
85 $TEST_DIRECTORY/arg-test bananas --boolkeyword > OUTPUT
86 cat <<EOF > EXPECTED
87 boolkeyword 1
88 positional arg 1 bananas
89 EOF
90 test_expect_equal_file EXPECTED OUTPUT
91
92 test_begin_subtest "test keyword arguments without value but with = (should be an error)"
93 $TEST_DIRECTORY/arg-test bananas --boolkeyword= > OUTPUT 2>&1
94 cat <<EOF > EXPECTED
95 Unknown keyword argument "" for option "boolkeyword".
96 Unrecognized option: --boolkeyword=
97 EOF
98 test_expect_equal_file EXPECTED OUTPUT
99
100 test_done