[PATCH v2 1/5] t3430: drop unnecessary one-shot "VAR=val shell-func" invocation
- From
- Eric Sunshine <ericsunshine@charter.net>
- Date
- Jul 26, 2024, 08:15 UTC
- Message-ID
- <20240726081522.28015-2-ericsunshine@charter.net>
- In-Reply-To
- <20240726081522.28015-1-ericsunshine@charter.net>
From: Eric Sunshine <sunshine@sunshineco.com>
The behavior of a one-shot environment variable assignment of the form "VAR=val cmd" is undefined according to POSIX when "cmd" is a shell function. Indeed the behavior differs between shell implementations and even different versions of the same shell. One such ill-defined behavior is that, with some shells, the assignment will outlive the invocation of the function, thus may potentially impact subsequent commands in the test, as well as subsequent tests. A common way to work around the problem is to wrap a subshell around the one-shot assignment, thus ensuring that the assignment is short-lived.
In this test, the subshell is employed precisely for this purpose; other side-effects of the subshell, such as losing the effect of `test_tick` which is invoked by `test_commit`, are immaterial.
These days, we can take advantage of `test_commit --author` to more clearly convey that the test is interested only in overriding the author of the commit.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- t/t3430-rebase-merges.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/t/t3430-rebase-merges.sh b/t/t3430-rebase-merges.sh index 36ca126bcd..2aa8593f77 100755 --- a/t/t3430-rebase-merges.sh +++ b/t/t3430-rebase-merges.sh @@ -392,8 +392,7 @@ test_expect_success 'refuse to merge ancestors of HEAD' ' test_expect_success 'root commits' ' git checkout --orphan unrelated && - (GIT_AUTHOR_NAME="Parsnip" GIT_AUTHOR_EMAIL="root@example.com" \ - test_commit second-root) && + test_commit --author "Parsnip <root@example.com>" second-root && test_commit third-root && cat >script-from-scratch <<-\EOF && pick third-root
-- 2.45.2