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

[RESEND PATCH v2 1/5] t3701: stop using `env` in force_color()

From
Denton Liu <liu.denton@gmail.com>
Date
Jul 7, 2020, 06:04 UTC
Message-ID
<654c864691866f644ff5ec92de5bfa0701645419.1594101831.git.liu.denton@gmail.com>
In-Reply-To
<cover.1594101831.git.liu.denton@gmail.com>

In a future patch, we plan on making the test_must_fail()-family of functions accept only git commands. Even though force_color() wraps an invocation of `env git`, test_must_fail() will not be able to figure this out since it will assume that force_color() is just some random function which is disallowed.

Instead of using `env` in force_color() (which does not support shell functions), export the environment variables in a subshell. Write the invocation as `force_color test_must_fail git ...` since shell functions are now supported.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
---
 t/t3701-add-interactive.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 49decbac71..fb73a847cb 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -31,7 +31,16 @@ diff_cmp () {
 # indicates a dumb terminal, so we set that variable, too.
 
 force_color () {
-	env GIT_PAGER_IN_USE=true TERM=vt100 "$@"
+	# The first element of $@ may be a shell function, as a result POSIX
+	# does not guarantee that "one-shot assignment" will not persist after
+	# the function call. Thus, we prevent these variables from escaping
+	# this function's context with this subshell.
+	(
+		GIT_PAGER_IN_USE=true &&
+		TERM=vt100 &&
+		export GIT_PAGER_IN_USE TERM &&
+		"$@"
+	)
 }
 
 test_expect_success 'setup (initial)' '
@@ -604,7 +613,7 @@ test_expect_success 'detect bogus diffFilter output' '
 	echo content >test &&
 	test_config interactive.diffFilter "sed 1d" &&
 	printf y >y &&
-	test_must_fail force_color git add -p <y
+	force_color test_must_fail git add -p <y
 '
 
 test_expect_success 'diff.algorithm is passed to `git diff-files`' '
-- 
2.27.0.383.g050319c2ae
Previous: Denton LiuNext: Denton Liu
Message 19 of 29 in “t: replace incorrect test_must_fail usage (part 6)”
  1. 0/5 t: replace incorrect test_must_fail usage (part 6)Denton Liu, Jun 30, 2020
  2. 1/5 t3701: stop using `env` in force_color()Denton Liu, Jun 30, 2020
  3. Eric SunshineJun 30, 2020
  4. Junio C HamanoJun 30, 2020
  5. 3/5 t7107: don't use test_must_fail()Denton Liu, Jun 30, 2020
  6. 2/5 t5324: reorder `run_with_limited_open_files test_might_fail`Denton Liu, Jun 30, 2020
  7. 4/5 t9834: remove use of `test_might_fail p4`Denton Liu, Jun 30, 2020
  8. 5/5 test-lib-functions: restrict test_must_fail usageDenton Liu, Jun 30, 2020
  9. Eric SunshineJun 30, 2020
  10. Eric SunshineJun 30, 2020
  11. Denton LiuJun 30, 2020
  12. 0/5 t: replace incorrect test_must_fail usage (part 6)Denton Liu, Jul 1, 2020
  13. 4/5 t9834: remove use of `test_might_fail p4`Denton Liu, Jul 1, 2020
  14. 2/5 t5324: reorder `run_with_limited_open_files test_might_fail`Denton Liu, Jul 1, 2020
  15. 5/5 test-lib-functions: restrict test_must_fail usageDenton Liu, Jul 1, 2020
  16. 1/5 t3701: stop using `env` in force_color()Denton Liu, Jul 1, 2020
  17. 3/5 t7107: don't use test_must_fail()Denton Liu, Jul 1, 2020
  18. 0/5 t: replace incorrect test_must_fail usage (part 6)Denton Liu, Jul 7, 2020
  19. 1/5 t3701: stop using `env` in force_color()Denton Liu, Jul 7, 2020
  20. 5/5 test-lib-functions: restrict test_must_fail usageDenton Liu, Jul 7, 2020
  21. 4/5 t9834: remove use of `test_might_fail p4`Denton Liu, Jul 7, 2020
  22. 3/5 t7107: don't use test_must_fail()Denton Liu, Jul 7, 2020
  23. 2/5 t5324: reorder `run_with_limited_open_files test_might_fail`Denton Liu, Jul 7, 2020
  24. Junio C HamanoJul 7, 2020
  25. Junio C HamanoJul 7, 2020
  26. t9400: don't use test_must_fail with cvsDenton Liu, Jul 7, 2020
  27. Junio C HamanoJul 7, 2020
  28. Denton LiuJul 7, 2020
  29. Junio C HamanoJul 7, 2020

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.