t/chainlint/*.test: fix invalid test cases due to mixing quote types

The chainlint self-test code snippets are supposed to represent the body
of a test_expect_success() or test_expect_failure(), yet the contents of
a few tests would have caused the shell to report syntax errors had they
been real test bodies due to the mix of single- and double-quotes.
Although chainlint.sed, with its simplistic heuristics, is blind to this
problem, a future more robust chainlint implementation might not have
such a limitation. Therefore, stop mixing quote types haphazardly in
those tests and unify quoting throughout. While at it, drop chunks of
tests which merely repeat what is already tested elsewhere but with
alternative quotes.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Eric Sunshine 2021-12-13 01:30:46 -05:00 committed by Junio C Hamano
parent 925d7304d2
commit 5459bc1bbb
20 changed files with 38 additions and 70 deletions

View File

@ -1,6 +1,6 @@
(
foo &&
# LINT: missing "&&" from 'bar'
# LINT: missing "&&" from "bar"
bar
baz &&
# LINT: final statement before closing ")" legitimately lacks "&&"

View File

@ -1,5 +1,5 @@
(
# LINT: "...)" arms in 'case' not misinterpreted as subshell-closing ")"
# LINT: "...)" arms in "case" not misinterpreted as subshell-closing ")"
case "$x" in
x) foo ;;
*) bar ;;
@ -7,7 +7,7 @@
foobar
) &&
(
# LINT: missing "&&" on 'esac'
# LINT: missing "&&" on "esac"
case "$x" in
x) foo ;;
*) bar ;;
@ -15,7 +15,7 @@
foobar
) &&
(
# LINT: "...)" arm in one-liner 'case' not misinterpreted as closing ")"
# LINT: "...)" arm in one-liner "case" not misinterpreted as closing ")"
case "$x" in 1) true;; esac &&
# LINT: same but missing "&&"
case "$y" in 2) false;; esac

View File

@ -1,4 +1,4 @@
# LINT: 'for' loop cuddled with "(" and ")" and nested 'if' with complex
# LINT: "for" loop cuddled with "(" and ")" and nested "if" with complex
# LINT: multi-line condition; indented with spaces, not tabs
(for i in a b c; do
if test "$(echo $(waffle bat))" = "eleventeen" &&

View File

@ -1,4 +1,4 @@
# LINT: 'if' cuddled with "(" and ")"; indented with spaces, not tabs
# LINT: "if" cuddled with "(" and ")"; indented with spaces, not tabs
(if test -z ""; then
echo empty
else

View File

@ -1,4 +1,4 @@
# LINT: 'while' loop cuddled with "(" and ")", with embedded (allowed)
# LINT: "while" loop cuddled with "(" and ")", with embedded (allowed)
# LINT: "|| exit {n}" to exit loop early, and using redirection "<" to feed
# LINT: loop; indented with spaces, not tabs
( while read x

View File

@ -1,17 +1,17 @@
(
# LINT: 'for', 'do', 'done' do not need "&&"
# LINT: "for", "do", "done" do not need "&&"
for i in a b c
do
# LINT: missing "&&" on 'echo'
# LINT: missing "&&" on "echo"
echo $i
# LINT: last statement of while does not need "&&"
cat <<-\EOF
bar
EOF
# LINT: missing "&&" on 'done'
# LINT: missing "&&" on "done"
done
# LINT: 'do' on same line as 'for'
# LINT: "do" on same line as "for"
for i in a b c; do
echo $i &&
cat $i

View File

@ -2,8 +2,6 @@ boodle wobba gorgo snoot wafta snurb &&
cat >foo &&
cat >bar &&
cat >boo &&
horticulture

View File

@ -14,13 +14,6 @@ boz
woz
Arbitrary_Tag_42
# LINT: swallow 'quoted' here-doc
cat <<'FUMP' >bar &&
snoz
boz
woz
FUMP
# LINT: swallow "quoted" here-doc
cat <<"zump" >boo &&
snoz

View File

@ -3,13 +3,13 @@
do
if false
then
# LINT: missing "&&" on 'echo'
# LINT: missing "&&" on "echo"
echo "err"
exit 1
# LINT: missing "&&" on 'fi'
# LINT: missing "&&" on "fi"
fi
foo
# LINT: missing "&&" on 'done'
# LINT: missing "&&" on "done"
done
bar
)

View File

@ -1,27 +1,27 @@
(
# LINT: 'if', 'then', 'elif', 'else', 'fi' do not need "&&"
# LINT: "if", "then", "elif", "else", "fi" do not need "&&"
if test -n ""
then
# LINT: missing "&&" on 'echo'
# LINT: missing "&&" on "echo"
echo very
# LINT: last statement before 'elif' does not need "&&"
# LINT: last statement before "elif" does not need "&&"
echo empty
elif test -z ""
then
# LINT: last statement before 'else' does not need "&&"
# LINT: last statement before "else" does not need "&&"
echo foo
else
echo foo &&
# LINT: last statement before 'fi' does not need "&&"
# LINT: last statement before "fi" does not need "&&"
cat <<-\EOF
bar
EOF
# LINT: missing "&&" on 'fi'
# LINT: missing "&&" on "fi"
fi
echo poodle
) &&
(
# LINT: 'then' on same line as 'if'
# LINT: "then" on same line as "if"
if test -n ""; then
echo very &&
echo empty

View File

@ -3,13 +3,13 @@
then
while true
do
# LINT: missing "&&" on 'echo'
# LINT: missing "&&" on "echo"
echo "pop"
echo "glup"
# LINT: missing "&&" on 'done'
# LINT: missing "&&" on "done"
done
foo
# LINT: missing "&&" on 'fi'
# LINT: missing "&&" on "fi"
fi
bar
)

View File

@ -1,15 +1,9 @@
(
x="line 1 line 2 line 3" &&
?!AMP?! y='line 1 line2'
?!AMP?! y="line 1 line2"
foobar
>) &&
(
echo "there's nothing to see here" &&
exit
>) &&
(
echo "xyz" "abc def ghi" &&
echo 'xyz' 'abc def ghi' &&
echo 'xyz' "abc def ghi" &&
barfoo
>)

View File

@ -3,25 +3,13 @@
line 2
line 3" &&
# LINT: missing "&&" on assignment
y='line 1
line2'
y="line 1
line2"
foobar
) &&
(
# LINT: apostrophe (in a contraction) within string not misinterpreted as
# LINT: starting multi-line single-quoted string
echo "there's nothing to see here" &&
exit
) &&
(
echo "xyz" "abc
def
ghi" &&
echo 'xyz' 'abc
def
ghi' &&
echo 'xyz' "abc
def
ghi" &&
barfoo
)

View File

@ -7,7 +7,7 @@
# minor numbers of cows (or do they?)
baz &&
snaff
# LINT: missing "&&" on ')'
# LINT: missing "&&" on ")"
)
fuzzy
)

View File

@ -4,7 +4,7 @@
bar |
baz &&
# LINT: final line of pipe sequence ('cow') lacking "&&"
# LINT: final line of pipe sequence ("cow") lacking "&&"
fish |
cow

View File

@ -5,7 +5,6 @@
>) &&
(
cat >bup &&
cat >bup2 &&
cat >bup3 &&
meep
>)

View File

@ -8,7 +8,7 @@
nevermore...
EOF
# LINT: missing "&&" on 'cat'
# LINT: missing "&&" on "cat"
cat <<EOF >bip
fish fly high
EOF
@ -27,10 +27,6 @@ EOF
glink
FIZZ
ARBITRARY
cat <<-'ARBITRARY2' >bup2 &&
glink
FIZZ
ARBITRARY2
cat <<-"ARBITRARY3" >bup3 &&
glink
FIZZ

View File

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

View File

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

View File

@ -1,17 +1,17 @@
(
# LINT: 'while, 'do', 'done' do not need "&&"
# LINT: "while", "do", "done" do not need "&&"
while true
do
# LINT: missing "&&" on 'echo'
# LINT: missing "&&" on "echo"
echo foo
# LINT: last statement of while does not need "&&"
cat <<-\EOF
bar
EOF
# LINT: missing "&&" on 'done'
# LINT: missing "&&" on "done"
done
# LINT: 'do' on same line as 'while'
# LINT: "do" on same line as "while"
while true; do
echo foo &&
cat bar