git/t/chainlint
Eric Sunshine 4f69176feb chainlint: add test of pathological case which triggered false positive
This extract from contrib/subtree/t7900 triggered a false positive due
to three chainlint limitations:

* recognizing only a "blessed" set of here-doc tag names in a subshell
  ("EOF", "EOT", "INPUT_END"), of which "TXT" is not a member

* inability to recognize multi-line $(...) when the first statement of
  the body is cuddled with the opening "$("

* inability to recognize multiple constructs on a single line, such as
  opening a multi-line $(...) and starting a here-doc

Now that all of these shortcomings have been addressed, turn this rather
pathological bit of shell coding into a chainlint test case.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-08-13 12:22:12 -07:00
..
arithmetic-expansion.expect
arithmetic-expansion.test
bash-array.expect t/chainlint: add chainlint "specialized" test cases 2018-07-17 09:15:15 -07:00
bash-array.test t/chainlint: add chainlint "specialized" test cases 2018-07-17 09:15:15 -07:00
blank-line.expect
blank-line.test
block.expect t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
block.test t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
broken-chain.expect
broken-chain.test
case.expect t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
case.test t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
close-nested-and-parent-together.expect t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
close-nested-and-parent-together.test t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
close-subshell.expect
close-subshell.test
command-substitution.expect
command-substitution.test
comment.expect
comment.test
complex-if-in-cuddled-loop.expect t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
complex-if-in-cuddled-loop.test t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
cuddled-if-then-else.expect t/chainlint: add chainlint "cuddled" test cases 2018-07-17 09:15:14 -07:00
cuddled-if-then-else.test t/chainlint: add chainlint "cuddled" test cases 2018-07-17 09:15:14 -07:00
cuddled-loop.expect t/chainlint: add chainlint "cuddled" test cases 2018-07-17 09:15:14 -07:00
cuddled-loop.test t/chainlint: add chainlint "cuddled" test cases 2018-07-17 09:15:14 -07:00
cuddled.expect t/chainlint: add chainlint "cuddled" test cases 2018-07-17 09:15:14 -07:00
cuddled.test t/chainlint: add chainlint "cuddled" test cases 2018-07-17 09:15:14 -07:00
exit-loop.expect t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
exit-loop.test t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
exit-subshell.expect
exit-subshell.test
for-loop.expect t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
for-loop.test t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
here-doc-close-subshell.expect chainlint: let here-doc and multi-line string commence on same line 2018-08-13 12:22:12 -07:00
here-doc-close-subshell.test chainlint: let here-doc and multi-line string commence on same line 2018-08-13 12:22:12 -07:00
here-doc-multi-line-command-subst.expect chainlint: let here-doc and multi-line string commence on same line 2018-08-13 12:22:12 -07:00
here-doc-multi-line-command-subst.test chainlint: let here-doc and multi-line string commence on same line 2018-08-13 12:22:12 -07:00
here-doc-multi-line-string.expect chainlint: recognize multi-line quoted strings more robustly 2018-08-13 12:22:12 -07:00
here-doc-multi-line-string.test chainlint: let here-doc and multi-line string commence on same line 2018-08-13 12:22:12 -07:00
here-doc.expect chainlint: match 'quoted' here-doc tags 2018-08-13 12:22:11 -07:00
here-doc.test chainlint: match 'quoted' here-doc tags 2018-08-13 12:22:11 -07:00
if-in-loop.expect t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
if-in-loop.test t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
if-then-else.expect t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
if-then-else.test t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
incomplete-line.expect
incomplete-line.test
inline-comment.expect
inline-comment.test
loop-in-if.expect t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
loop-in-if.test t/chainlint: add chainlint "complex" test cases 2018-07-17 09:15:15 -07:00
multi-line-nested-command-substitution.expect chainlint: recognize multi-line $(...) when command cuddled with "$(" 2018-08-13 12:22:11 -07:00
multi-line-nested-command-substitution.test chainlint: recognize multi-line $(...) when command cuddled with "$(" 2018-08-13 12:22:11 -07:00
multi-line-string.expect chainlint: recognize multi-line quoted strings more robustly 2018-08-13 12:22:12 -07:00
multi-line-string.test chainlint: recognize multi-line quoted strings more robustly 2018-08-13 12:22:12 -07:00
negated-one-liner.expect t/chainlint: add chainlint "one-liner" test cases 2018-07-17 09:15:14 -07:00
negated-one-liner.test t/chainlint: add chainlint "one-liner" test cases 2018-07-17 09:15:14 -07:00
nested-cuddled-subshell.expect t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
nested-cuddled-subshell.test t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
nested-here-doc.expect chainlint: match arbitrary here-docs tags rather than hard-coded names 2018-08-13 12:22:11 -07:00
nested-here-doc.test chainlint: match arbitrary here-docs tags rather than hard-coded names 2018-08-13 12:22:11 -07:00
nested-subshell-comment.expect t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
nested-subshell-comment.test t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
nested-subshell.expect t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
nested-subshell.test t/chainlint: add chainlint "nested subshell" test cases 2018-07-17 09:15:14 -07:00
one-liner.expect t/chainlint: add chainlint "one-liner" test cases 2018-07-17 09:15:14 -07:00
one-liner.test t/chainlint: add chainlint "one-liner" test cases 2018-07-17 09:15:14 -07:00
p4-filespec.expect t/chainlint: add chainlint "specialized" test cases 2018-07-17 09:15:15 -07:00
p4-filespec.test t/chainlint: add chainlint "specialized" test cases 2018-07-17 09:15:15 -07:00
pipe.expect
pipe.test
semicolon.expect
semicolon.test
subshell-here-doc.expect chainlint: match 'quoted' here-doc tags 2018-08-13 12:22:11 -07:00
subshell-here-doc.test chainlint: match 'quoted' here-doc tags 2018-08-13 12:22:11 -07:00
subshell-one-liner.expect t/chainlint: add chainlint "one-liner" test cases 2018-07-17 09:15:14 -07:00
subshell-one-liner.test t/chainlint: add chainlint "one-liner" test cases 2018-07-17 09:15:14 -07:00
t7900-subtree.expect chainlint: add test of pathological case which triggered false positive 2018-08-13 12:22:12 -07:00
t7900-subtree.test chainlint: add test of pathological case which triggered false positive 2018-08-13 12:22:12 -07:00
while-loop.expect t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00
while-loop.test t/chainlint: add chainlint "loop" and "conditional" test cases 2018-07-17 09:15:14 -07:00