From: Junio C Hamano Date: Fri, 22 Feb 2013 23:24:28 GMT Subject: Re: [PATCH] t7502: perform commits using alternate editor in a subshell Message-ID: <7vliagaq4z.fsf@alter.siamese.dyndns.org> In-Reply-To: <1361574780-30067-1-git-send-email-bcasey@nvidia.com> Brandon Casey writes: > From: Brandon Casey > > These tests call test_set_editor to set an alternate editor script, but > they appear to presume that the assignment is of a temporary nature and > will not have any effect outside of each individual test. That is not > the case. All of the test functions within a test script share a single > environment, so any variables modified in one, are visible in the ones > that follow. > > So, let's protect the test functions that follow these, which set an > alternate editor, by performing the test_set_editor and 'git commit' > in a subshell. > > Signed-off-by: Brandon Casey > --- > > > Before "git-commit: populate the edit buffer with 2 blank lines before s-o-b" > is merged, this is needed on top of rt/commit-cleanup-config 51fb3a3d so that > the default EDITOR remains in effect for the new test. Yeah, what I already pushed out forces EDITOR=: for your test for the same effect, but this patch clearly takes us in the right (and better) direction. > > -Brandon > > > t/t7502-commit.sh | 24 ++++++++++++++++-------- > 1 file changed, 16 insertions(+), 8 deletions(-) > > diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh > index b1c7648..520a5cd 100755 > --- a/t/t7502-commit.sh > +++ b/t/t7502-commit.sh > @@ -255,32 +255,40 @@ test_expect_success 'cleanup commit message (fail on invalid cleanup mode config > test_expect_success 'cleanup commit message (no config and no option uses default)' ' > echo content >>file && > git add file && > - test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > - git commit --no-status && > + ( > + test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > + git commit --no-status > + ) && > commit_msg_is "commit message" > ' > > test_expect_success 'cleanup commit message (option overrides default)' ' > echo content >>file && > git add file && > - test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > - git commit --cleanup=whitespace --no-status && > + ( > + test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > + git commit --cleanup=whitespace --no-status > + ) && > commit_msg_is "commit message # comment" > ' > > test_expect_success 'cleanup commit message (config overrides default)' ' > echo content >>file && > git add file && > - test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > - git -c commit.cleanup=whitespace commit --no-status && > + ( > + test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > + git -c commit.cleanup=whitespace commit --no-status > + ) && > commit_msg_is "commit message # comment" > ' > > test_expect_success 'cleanup commit message (option overrides config)' ' > echo content >>file && > git add file && > - test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > - git -c commit.cleanup=whitespace commit --cleanup=default && > + ( > + test_set_editor "$TEST_DIRECTORY"/t7500/add-content-and-comment && > + git -c commit.cleanup=whitespace commit --cleanup=default > + ) && > commit_msg_is "commit message" > '