X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT410-argument-parsing.sh;h=b31d239a6f8330bfe8ec33018ce3d4598d83130b;hp=4505c58301ead7531822d1d796174a98c699547a;hb=c117306f2dfcdf705ef3433962d227d1cb39eb90;hpb=e8cba9da18a8ed946738fdd9f47d117c1110c1b4 diff --git a/test/T410-argument-parsing.sh b/test/T410-argument-parsing.sh index 4505c583..b31d239a 100755 --- a/test/T410-argument-parsing.sh +++ b/test/T410-argument-parsing.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash test_description="argument parsing" -. ./test-lib.sh || exit 1 +. $(dirname "$0")/test-lib.sh || exit 1 test_begin_subtest "sanity check" $TEST_DIRECTORY/arg-test pos1 --keyword=one --boolean --string=foo pos2 --int=7 --flag=one --flag=three > OUTPUT @@ -15,4 +15,86 @@ positional arg 2 pos2 EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "sanity check zero values" +$TEST_DIRECTORY/arg-test --keyword=zero --boolean=false --int=0 > OUTPUT +cat < EXPECTED +boolean 0 +keyword 0 +int 0 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "space instead of = between parameter name and value" +# Note: spaces aren't allowed for booleans. false turns into a positional arg! +$TEST_DIRECTORY/arg-test --keyword one --boolean false --string foo --int 7 --flag one --flag three > OUTPUT +cat < EXPECTED +boolean 1 +keyword 1 +flags 5 +int 7 +string foo +positional arg 1 false +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "--boolean=true" +$TEST_DIRECTORY/arg-test --boolean=true > OUTPUT +cat < EXPECTED +boolean 1 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "--boolean=false" +$TEST_DIRECTORY/arg-test --boolean=false > OUTPUT +cat < EXPECTED +boolean 0 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "--no-boolean" +$TEST_DIRECTORY/arg-test --no-boolean > OUTPUT +cat < EXPECTED +boolean 0 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "--no-flag" +$TEST_DIRECTORY/arg-test --flag=one --flag=three --no-flag=three > OUTPUT +cat < EXPECTED +flags 1 +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "test keyword arguments without value" +$TEST_DIRECTORY/arg-test --boolkeyword bananas > OUTPUT +cat < EXPECTED +boolkeyword 1 +positional arg 1 bananas +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "test keyword arguments with non-default value separated by a space" +$TEST_DIRECTORY/arg-test --boolkeyword false bananas > OUTPUT +cat < EXPECTED +boolkeyword 0 +positional arg 1 bananas +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "test keyword arguments without value at the end" +$TEST_DIRECTORY/arg-test bananas --boolkeyword > OUTPUT +cat < EXPECTED +boolkeyword 1 +positional arg 1 bananas +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "test keyword arguments without value but with = (should be an error)" +$TEST_DIRECTORY/arg-test bananas --boolkeyword= > OUTPUT 2>&1 +cat < EXPECTED +Unknown keyword argument "" for option "boolkeyword". +Unrecognized option: --boolkeyword= +EOF +test_expect_equal_file EXPECTED OUTPUT + test_done