Browse Source

chainlint.sed: improve ?!SEMI?! placement accuracy

When chainlint.sed detects commands separated by a semicolon rather than
by `&&`, it places a ?!SEMI?! annotation at the beginning of the line.
However, this is an unusual location for programmers accustomed to error
messages (from compilers, for instance) indicating the exact point of
the problem. Therefore, relocate the ?!SEMI?! annotation to the location
of the semicolon in order to better direct the programmer's attention to
the source of the problem.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Eric Sunshine 3 years ago committed by Junio C Hamano
parent
commit
fbd992b61b
  1. 4
      t/chainlint.sed
  2. 4
      t/chainlint/negated-one-liner.expect
  3. 6
      t/chainlint/one-liner.expect
  4. 14
      t/chainlint/semicolon.expect
  5. 8
      t/chainlint/subshell-one-liner.expect

4
t/chainlint.sed

@ -126,7 +126,7 @@ b @@ -126,7 +126,7 @@ b
# "&&" (but not ";" in a string)
:oneline
/;/{
/"[^"]*;[^"]*"/!s/^/?!SEMI?!/
/"[^"]*;[^"]*"/!s/;/; ?!SEMI?!/
}
b

@ -230,7 +230,7 @@ s/.*\n// @@ -230,7 +230,7 @@ s/.*\n//
# string and not ";;" in one-liner "case...esac")
/;/{
/;;/!{
/"[^"]*;[^"]*"/!s/^/?!SEMI?!/
/"[^"]*;[^"]*"/!s/;/; ?!SEMI?!/
}
}
# line ends with pipe "...|" -- valid; not missing "&&"

4
t/chainlint/negated-one-liner.expect

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
! (foo && bar) &&
! (foo && bar) >baz &&

?!SEMI?!! (foo; bar) &&
?!SEMI?!! (foo; bar) >baz
! (foo; ?!SEMI?! bar) &&
! (foo; ?!SEMI?! bar) >baz

6
t/chainlint/one-liner.expect

@ -2,8 +2,8 @@ @@ -2,8 +2,8 @@
(foo && bar) |
(foo && bar) >baz &&

?!SEMI?!(foo; bar) &&
?!SEMI?!(foo; bar) |
?!SEMI?!(foo; bar) >baz &&
(foo; ?!SEMI?! bar) &&
(foo; ?!SEMI?! bar) |
(foo; ?!SEMI?! bar) >baz &&

(foo "bar; baz")

14
t/chainlint/semicolon.expect

@ -1,20 +1,20 @@ @@ -1,20 +1,20 @@
(
?!SEMI?! cat foo ; echo bar ?!AMP?!
?!SEMI?! cat foo ; echo bar
cat foo ; ?!SEMI?! echo bar ?!AMP?!
cat foo ; ?!SEMI?! echo bar
>) &&
(
?!SEMI?! cat foo ; echo bar &&
?!SEMI?! cat foo ; echo bar
cat foo ; ?!SEMI?! echo bar &&
cat foo ; ?!SEMI?! echo bar
>) &&
(
echo "foo; bar" &&
?!SEMI?! cat foo; echo bar
cat foo; ?!SEMI?! echo bar
>) &&
(
?!SEMI?! foo;
foo; ?!SEMI?!
>) &&
(
cd foo &&
for i in a b c; do
?!SEMI?! echo;
echo; ?!SEMI?!
> done)

8
t/chainlint/subshell-one-liner.expect

@ -2,13 +2,13 @@ @@ -2,13 +2,13 @@
(foo && bar) &&
(foo && bar) |
(foo && bar) >baz &&
?!SEMI?! (foo; bar) &&
?!SEMI?! (foo; bar) |
?!SEMI?! (foo; bar) >baz &&
(foo; ?!SEMI?! bar) &&
(foo; ?!SEMI?! bar) |
(foo; ?!SEMI?! bar) >baz &&
(foo || exit 1) &&
(foo || exit 1) |
(foo || exit 1) >baz &&
(foo && bar) ?!AMP?!
?!SEMI?! (foo && bar; baz) ?!AMP?!
(foo && bar; ?!SEMI?! baz) ?!AMP?!
foobar
>)

Loading…
Cancel
Save