Browse Source

chainlint.pl: don't require `&` background command to end with `&&`

The exit status of the `&` asynchronous operator which starts a command
in the background is unconditionally zero, and the few places in the
test scripts which launch commands asynchronously are not interested in
the exit status of the `&` operator (though they often capture the
background command's PID). As such, there is little value in complaining
about broken &&-chain for a command launched in the background, and
doing so would only make busy-work for test authors. Therefore, take
this special case into account when checking for &&-chain breakage.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Eric Sunshine 2 years ago committed by Junio C Hamano
parent
commit
aabc3258a1
  1. 2
      t/chainlint.pl
  2. 9
      t/chainlint/chain-break-background.expect
  3. 10
      t/chainlint/chain-break-background.test

2
t/chainlint.pl

@ -483,7 +483,7 @@ sub match_ending {
} }


my @safe_endings = ( my @safe_endings = (
[qr/^(?:&&|\|\||\|)$/], [qr/^(?:&&|\|\||\||&)$/],
[qr/^(?:exit|return)$/, qr/^(?:\d+|\$\?)$/], [qr/^(?:exit|return)$/, qr/^(?:\d+|\$\?)$/],
[qr/^(?:exit|return)$/, qr/^(?:\d+|\$\?)$/, qr/^;$/], [qr/^(?:exit|return)$/, qr/^(?:\d+|\$\?)$/, qr/^;$/],
[qr/^(?:exit|return|continue)$/], [qr/^(?:exit|return|continue)$/],

9
t/chainlint/chain-break-background.expect

@ -0,0 +1,9 @@
JGIT_DAEMON_PID= &&
git init --bare empty.git &&
> empty.git/git-daemon-export-ok &&
mkfifo jgit_daemon_output &&
{
jgit daemon --port="$JGIT_DAEMON_PORT" . > jgit_daemon_output &
JGIT_DAEMON_PID=$!
} &&
test_expect_code 2 git ls-remote --exit-code git://localhost:$JGIT_DAEMON_PORT/empty.git

10
t/chainlint/chain-break-background.test

@ -0,0 +1,10 @@
JGIT_DAEMON_PID= &&
git init --bare empty.git &&
>empty.git/git-daemon-export-ok &&
mkfifo jgit_daemon_output &&
{
# LINT: exit status of "&" is always 0 so &&-chaining immaterial
jgit daemon --port="$JGIT_DAEMON_PORT" . >jgit_daemon_output &
JGIT_DAEMON_PID=$!
} &&
test_expect_code 2 git ls-remote --exit-code git://localhost:$JGIT_DAEMON_PORT/empty.git
Loading…
Cancel
Save