Browse Source

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>
maint
Eric Sunshine 7 years ago committed by Junio C Hamano
parent
commit
4f69176feb
  1. 10
      t/chainlint/t7900-subtree.expect
  2. 22
      t/chainlint/t7900-subtree.test

10
t/chainlint/t7900-subtree.expect

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
(
chks="sub1sub2sub3sub4" &&
chks_sub=$(cat | sed 's,^,sub dir/,'
>>) &&
chkms="main-sub1main-sub2main-sub3main-sub4" &&
chkms_sub=$(cat | sed 's,^,sub dir/,'
>>) &&
subfiles=$(git ls-files) &&
check_equal "$subfiles" "$chkms$chks"
>)

22
t/chainlint/t7900-subtree.test

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
(
chks="sub1
sub2
sub3
sub4" &&
chks_sub=$(cat <<TXT | sed 's,^,sub dir/,'
$chks
TXT
) &&
chkms="main-sub1
main-sub2
main-sub3
main-sub4" &&
chkms_sub=$(cat <<TXT | sed 's,^,sub dir/,'
$chkms
TXT
) &&

subfiles=$(git ls-files) &&
check_equal "$subfiles" "$chkms
$chks"
)
Loading…
Cancel
Save