From: Phillip Wood Date: Wed, 13 Aug 2025 10:14:40 GMT Subject: Re: [PATCH v4 0/3] clean up some code around editors Message-ID: <2250a8fd-62b8-4218-9858-23032d9c807d@gmail.com> In-Reply-To: <20250812170256.71751-1-ben.knoble+github@gmail.com> Hi Ben On 12/08/2025 18:02, D. Ben Knoble wrote: > Changes from v3: > - drop 4/4 > - use test_env (including a case our lint does not catch when the value > has spaces) It's not worth a re-roll but for future reference test_env FOO=bar git commit --amend uses an extra process compared to FOO=bar git commit --amend which slows the test suite down for no real gain. We should only need to use test_env to set environment variables when calling a shell function. In the special case of test_must_fail it supports test_must_fail env FOO=bar git commit --amend which is widely used in our test suite $ git grep 'test_must_fail env ' origin/master t/t\*.sh | wc -l 152 $ git grep 'test_env .* test_must_fail ' origin/master t/t\*.sh | wc -l 1 Thanks for cleaning up this test file, it's looking much nicer now. Phillip > Changes from v2: > - shuffle setup code and use more helpers in 1/4 > - insert 2/4 to stop abusing --exec-path > - improve environment-cleansing idioms in {2 => 3}/4 > > Thanks especially to Phillip's encyclopaedic knowledge of test helpers ;) > > Changes from v1: > - add a prep patch with style fixes to t7005 > - rework the environment munging to use subshells, per Phillip Wood's > suggestion > > This reroll of the previous exec-path series is simplified to contain > only the first 2 cleanup patches, which were largely acked by the list. > Drop the controversial and broken PATH munging. > > Also, this version is (still) based on a later master 112648dd6b (Merge > branch 'master' of https://github.com/j6t/git-gui, 2025-08-04) than the > original from May. > > These patches clean up some old code in the editor tests and subsystem > that does not use our modern idioms. > > v1: https://lore.kernel.org/git/20250520193506.95199-1-ben.knoble+github@gmail.com/ > v2: https://lore.kernel.org/git/20250810160323.49372-1-ben.knoble+github@gmail.com/ > v3: https://lore.kernel.org/git/20250811221706.67168-1-ben.knoble+github@gmail.com/ > Published-as: https://github.com/benknoble/tree/editor-cleanup > > D. Ben Knoble (3): > t7005: use modern test style > t7005: stop abusing --exec-path > t7005: sanitize test environment for subsequent tests > > t/t7005-editor.sh | 149 +++++++++++++++++++--------------------------- > 1 file changed, 60 insertions(+), 89 deletions(-) > > Diff-intervalle contre v3 : > 1: 8ad2904a18 = 1: 8ad2904a18 t7005: use modern test style > 2: 9451e4f0f6 ! 2: 44a6fd8eb3 t7005: stop abusing --exec-path > @@ t/t7005-editor.sh > esac > test_expect_success "Using $i" ' > - git --exec-path=. commit --amend && > -+ PATH="$PWD:$PATH" git commit --amend && > ++ test_env PATH="$PWD:$PATH" git commit --amend && > test_commit_message HEAD expect > ' > done > @@ t/t7005-editor.sh > esac > test_expect_success "Using $i (override)" ' > - git --exec-path=. commit --amend && > -+ PATH="$PWD:$PATH" git commit --amend && > ++ test_env PATH="$PWD:$PATH" git commit --amend && > test_commit_message HEAD expect > ' > done > 3: 61cb116780 ! 3: 135d4368d6 t7005: sanitize test environment for subsequent tests > @@ t/t7005-editor.sh > -export TERM > test_expect_success 'dumb should error out when falling back on vi' ' > - test_must_fail git commit --amend > -+ TERM=dumb test_must_fail git commit --amend > ++ test_env TERM=dumb test_must_fail git commit --amend > ' > > test_expect_success 'dumb should prefer EDITOR to VISUAL' ' > @@ t/t7005-editor.sh > - VISUAL=./e-VISUAL.sh && > - export EDITOR VISUAL && > - git commit --amend && > -+ TERM=dumb EDITOR=./e-EDITOR.sh VISUAL=./e-VISUAL.sh \ > ++ test_env TERM=dumb EDITOR=./e-EDITOR.sh VISUAL=./e-VISUAL.sh \ > + git commit --amend && > test_commit_message HEAD -m "Edited by EDITOR" > ' > @@ t/t7005-editor.sh > - ;; > - esac > test_expect_success "Using $i" ' > -- PATH="$PWD:$PATH" git commit --amend && > +- test_env PATH="$PWD:$PATH" git commit --amend && > - test_commit_message HEAD expect > + if test "$i" = core_editor > + then > @@ t/t7005-editor.sh > + export $i > + ;; > + esac && > -+ PATH="$PWD:$PATH" TERM=vt100 git commit --amend > ++ test_env PATH="$PWD:$PATH" TERM=vt100 git commit --amend > + ) && > + test_commit_message HEAD -m "Edited by $i" > ' > @@ t/t7005-editor.sh > - ;; > - esac > - test_expect_success "Using $i (override)" ' > -- PATH="$PWD:$PATH" git commit --amend && > +- test_env PATH="$PWD:$PATH" git commit --amend && > - test_commit_message HEAD expect > - ' > -done > @@ t/t7005-editor.sh > + export $i > + ;; > + esac && > -+ PATH="$PWD:$PATH" git commit --amend && > ++ test_env PATH="$PWD:$PATH" git commit --amend && > + test_commit_message HEAD expect || exit 1 > + done > + ) > @@ t/t7005-editor.sh > > test_expect_success 'editor with a space' ' > echo "echo space >\"\$1\"" >"e space.sh" && > -@@ > + chmod a+x "e space.sh" && > +- GIT_EDITOR="./e\ space.sh" git commit --amend && > ++ test_env GIT_EDITOR="./e\ space.sh" git commit --amend && > test_commit_message HEAD -m space > ' > > 4: ea269f2442 < -: ---------- editor: use standard strvec API to receive environment for external editors > > base-commit: 112648dd6bdd8e4f485cd0ae11636807959d48be