git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] t4046: avoid continue in &&-chain for zsh

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Apr 26, 2024, 22:11 UTC
Message-ID
<20240426221154.2194139-2-sandals@crustytoothpaste.net>
In-Reply-To
<20240426221154.2194139-1-sandals@crustytoothpaste.net>

zsh has a bug in which the keyword "continue" within an &&-chain is not effective and the code following it is executed nonetheless. Fortunately, this bug has been fixed upstream in 12e5db145 ("51608: Don't execute commands after "continue &&"", 2023-03-29). However, zsh releases very infrequently, so it is not present in a stable release yet.

That, combined with the fact that almost all zsh users get their shell from their OS vendor, means that it will likely be a long time before this problem is fixed for most users. We have other workarounds in place for FreeBSD ash and dash, so it shouldn't be too difficult to add one here, either.

Replace the existing code with a test and if-block, which comes only at the cost of an additional indentation, and leaves the code a little more idiomatic anyway.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 t/t4046-diff-unmerged.sh | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/t/t4046-diff-unmerged.sh b/t/t4046-diff-unmerged.sh
index ffaf69335f..fb8c51746e 100755
--- a/t/t4046-diff-unmerged.sh
+++ b/t/t4046-diff-unmerged.sh
@@ -20,13 +20,15 @@ test_expect_success setup '
 			for t in o x
 			do
 				path="$b$o$t" &&
-				case "$path" in ooo) continue ;; esac &&
-				paths="$paths$path " &&
-				p="	$path" &&
-				case "$b" in x) echo "$m1$p" ;; esac &&
-				case "$o" in x) echo "$m2$p" ;; esac &&
-				case "$t" in x) echo "$m3$p" ;; esac ||
-				return 1
+				if test "$path" != ooo
+				then
+					paths="$paths$path " &&
+					p="	$path" &&
+					case "$b" in x) echo "$m1$p" ;; esac &&
+					case "$o" in x) echo "$m2$p" ;; esac &&
+					case "$t" in x) echo "$m3$p" ;; esac ||
+					return 1
+				fi
 			done
 		done
 	done >ls-files-s.expect &&
Previous: brian m. carlsonNext: Junio C Hamano
Message 3 of 4 in “Test fixes when running with zsh in sh mode”
  1. 0/2 Test fixes when running with zsh in sh modebrian m. carlson, Apr 26, 2024
  2. 2/2 vimdiff: make script and tests work with zshbrian m. carlson, Apr 26, 2024
  3. 1/2 t4046: avoid continue in &&-chain for zshbrian m. carlson, Apr 26, 2024
  4. Junio C HamanoApr 27, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.