]> git.ipfire.org Git - thirdparty/git.git/commitdiff
chainlint.pl: don't require `&` background command to end with `&&`
authorEric Sunshine <sunshine@sunshineco.com>
Thu, 1 Sep 2022 00:29:47 +0000 (00:29 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 1 Sep 2022 17:07:40 +0000 (10:07 -0700)
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>
t/chainlint.pl
t/chainlint/chain-break-background.expect [new file with mode: 0644]
t/chainlint/chain-break-background.test [new file with mode: 0644]

index 31c444067cee8c261c34848c40b3ee29bdbc6c2d..ba3fcb0c8e613be4b02a2a564d9dd899fe136ad1 100755 (executable)
@@ -483,7 +483,7 @@ sub match_ending {
 }
 
 my @safe_endings = (
-       [qr/^(?:&&|\|\||\|)$/],
+       [qr/^(?:&&|\|\||\||&)$/],
        [qr/^(?:exit|return)$/, qr/^(?:\d+|\$\?)$/],
        [qr/^(?:exit|return)$/, qr/^(?:\d+|\$\?)$/, qr/^;$/],
        [qr/^(?:exit|return|continue)$/],
diff --git a/t/chainlint/chain-break-background.expect b/t/chainlint/chain-break-background.expect
new file mode 100644 (file)
index 0000000..28f9114
--- /dev/null
@@ -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
diff --git a/t/chainlint/chain-break-background.test b/t/chainlint/chain-break-background.test
new file mode 100644 (file)
index 0000000..e10f656
--- /dev/null
@@ -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