- Guard setup with test_expect_success Signed-off-by: Tom Grennan <tmgrennan@xxxxxxxxx> --- t/t0040-parse-options.sh | 96 +++++++++++++++++++-------------------------- 1 files changed, 41 insertions(+), 55 deletions(-) diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh index a1e4616..4a0b991 100755 --- a/t/t0040-parse-options.sh +++ b/t/t0040-parse-options.sh @@ -7,7 +7,8 @@ test_description='our own option parser' . ./test-lib.sh -cat > expect << EOF +test_expect_success 'test help' ' + cat >expect <<-EOF && usage: test-parse-options <options> -b, --boolean get a boolean @@ -23,7 +24,7 @@ usage: test-parse-options <options> String options -s, --string <string> - get a string + '' get a string --string2 <str> get another string --st <st> get another string (pervert ordering) -o <str> get another string @@ -44,16 +45,14 @@ Standard options -q, --quiet be quiet EOF - -test_expect_success 'test help' ' + cp expect expect.err && test_must_fail test-parse-options -h > output 2> output.err && test ! -s output.err && test_cmp expect output ' -mv expect expect.err - -cat > expect << EOF +test_expect_success 'short options' ' + cat >expect <<-\EOF && boolean: 2 integer: 1729 timestamp: 0 @@ -64,15 +63,14 @@ quiet: no dry run: yes file: prefix/my.file EOF - -test_expect_success 'short options' ' test-parse-options -s123 -b -i 1729 -b -vv -n -F my.file \ > output 2> output.err && test_cmp expect output && test ! -s output.err ' -cat > expect << EOF +test_expect_success 'long options' ' + cat >expect <<-\EOF && boolean: 2 integer: 1729 timestamp: 0 @@ -83,8 +81,6 @@ quiet: no dry run: no file: prefix/fi.le EOF - -test_expect_success 'long options' ' test-parse-options --boolean --integer 1729 --boolean --string2=321 \ --verbose --verbose --no-dry-run --abbrev=10 --file fi.le\ --obsolete > output 2> output.err && @@ -101,7 +97,8 @@ test_expect_success 'missing required value' ' test $? = 129 ' -cat > expect << EOF +test_expect_success 'intermingled arguments' ' + cat >expect <<-\EOF && boolean: 1 integer: 13 timestamp: 0 @@ -115,15 +112,14 @@ arg 00: a1 arg 01: b1 arg 02: --boolean EOF - -test_expect_success 'intermingled arguments' ' test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \ > output 2> output.err && test ! -s output.err && test_cmp expect output ' -cat > expect << EOF +test_expect_success 'unambiguously abbreviated option' ' + cat >expect <<-\EOF && boolean: 0 integer: 2 timestamp: 0 @@ -134,8 +130,6 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'unambiguously abbreviated option' ' test-parse-options --int 2 --boolean --no-bo > output 2> output.err && test ! -s output.err && test_cmp expect output @@ -152,7 +146,8 @@ test_expect_success 'ambiguously abbreviated option' ' test $? = 129 ' -cat > expect << EOF +test_expect_success 'non ambiguous option (after two options it abbreviates)' ' + cat >expect <<-\EOF && boolean: 0 integer: 0 timestamp: 0 @@ -163,24 +158,23 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'non ambiguous option (after two options it abbreviates)' ' test-parse-options --st 123 > output 2> output.err && test ! -s output.err && test_cmp expect output ' -cat > typo.err << EOF -error: did you mean \`--boolean\` (with two dashes ?) -EOF - test_expect_success 'detect possible typos' ' + cat >typo.err <<-\EOF && + error: did you mean `--boolean` (with two dashes ?) + EOF + >expect test_must_fail test-parse-options -boolean > output 2> output.err && - test ! -s output && - test_cmp typo.err output.err + test_cmp typo.err output.err && + test_cmp expect output ' -cat > expect <<EOF +test_expect_success 'keep some options as arguments' ' + cat >expect <<-\EOF && boolean: 0 integer: 0 timestamp: 0 @@ -192,14 +186,13 @@ dry run: no file: (not set) arg 00: --quux EOF - -test_expect_success 'keep some options as arguments' ' test-parse-options --quux > output 2> output.err && test ! -s output.err && test_cmp expect output ' -cat > expect <<EOF +test_expect_success 'OPT_DATE() and OPT_SET_PTR() work' ' + cat >expect <<-\EOF && boolean: 0 integer: 0 timestamp: 1 @@ -211,15 +204,14 @@ dry run: no file: (not set) arg 00: foo EOF - -test_expect_success 'OPT_DATE() and OPT_SET_PTR() work' ' - test-parse-options -t "1970-01-01 00:00:01 +0000" --default-string \ - foo -q > output 2> output.err && + test-parse-options -t "1970-01-01 00:00:01 +0000" \ + --default-string foo -q >output 2>output.err && test ! -s output.err && test_cmp expect output ' -cat > expect <<EOF +test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' ' + cat >expect <<-\EOF && Callback: "four", 0 boolean: 5 integer: 4 @@ -231,24 +223,22 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'OPT_CALLBACK() and OPT_BIT() work' ' test-parse-options --length=four -b -4 > output 2> output.err && test ! -s output.err && test_cmp expect output ' -cat > expect <<EOF +test_expect_success 'OPT_CALLBACK() and callback errors work' ' + cat >expect <<-\EOF && Callback: "not set", 1 EOF - -test_expect_success 'OPT_CALLBACK() and callback errors work' ' test_must_fail test-parse-options --no-length > output 2> output.err && test_cmp expect output && test_cmp expect.err output.err ' -cat > expect <<EOF +test_expect_success 'OPT_BIT() and OPT_SET_INT() work' ' + cat >expect <<-\EOF && boolean: 1 integer: 23 timestamp: 0 @@ -259,8 +249,6 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'OPT_BIT() and OPT_SET_INT() work' ' test-parse-options --set23 -bbbbb --no-or4 > output 2> output.err && test ! -s output.err && test_cmp expect output @@ -272,7 +260,8 @@ test_expect_success 'OPT_NEGBIT() and OPT_SET_INT() work' ' test_cmp expect output ' -cat > expect <<EOF +test_expect_success 'OPT_BIT() works' ' + cat >expect <<-\EOF && boolean: 6 integer: 0 timestamp: 0 @@ -283,8 +272,6 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'OPT_BIT() works' ' test-parse-options -bb --or4 > output 2> output.err && test ! -s output.err && test_cmp expect output @@ -302,7 +289,9 @@ test_expect_success 'OPT_BOOLEAN() with PARSE_OPT_NODASH works' ' test_cmp expect output ' -cat > expect <<EOF + +test_expect_success 'OPT_NUMBER_CALLBACK() works' ' + cat >expect <<-\EOF && boolean: 0 integer: 12345 timestamp: 0 @@ -313,14 +302,13 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'OPT_NUMBER_CALLBACK() works' ' test-parse-options -12345 > output 2> output.err && test ! -s output.err && test_cmp expect output ' -cat >expect <<EOF +test_expect_success 'negation of OPT_NONEG flags is not ambiguous' ' + cat >expect <<-\EOF && boolean: 0 integer: 0 timestamp: 0 @@ -331,19 +319,17 @@ quiet: no dry run: no file: (not set) EOF - -test_expect_success 'negation of OPT_NONEG flags is not ambiguous' ' test-parse-options --no-ambig >output 2>output.err && test ! -s output.err && test_cmp expect output ' -cat >>expect <<'EOF' +test_expect_success '--list keeps list of strings' ' + cat >>expect <<-\EOF && list: foo list: bar list: baz EOF -test_expect_success '--list keeps list of strings' ' test-parse-options --list foo --list=bar --list=baz >output && test_cmp expect output ' -- 1.7.8 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html