From: Ævar Arnfjörð Bjarmason Date: Tue, 31 Aug 2010 18:11:30 GMT Subject: Re: [PATCH] test-lib: use subshell instead of cd $new && .. && cd $old Message-ID: In-Reply-To: <7vaao2br58.fsf@alter.siamese.dyndns.org> On Tue, Aug 31, 2010 at 17:58, Junio C Hamano wrote: > Jonathan Nieder writes: > >> Ævar Arnfjörð Bjarmason wrote: >> >>> +++ b/t/test-lib.sh >>> @@ -687,14 +687,12 @@ test_when_finished () { >>>  test_create_repo () { >>>      test "$#" = 1 || >>>      error "bug in the test script: not 1 parameter to test-create-repo" >>> -    owd=`pwd` >>>      repo="$1" >>>      mkdir -p "$repo" >>> -    cd "$repo" || error "Cannot setup test environment" >>> +    (cd "$repo" || error "Cannot setup test environment" >>>      "$GIT_EXEC_PATH/git-init" "--template=$GIT_BUILD_DIR/templates/blt/" >&3 2>&4 || >>>      error "cannot run git init -- have you built things yet?" >>> -    mv .git/hooks .git/hooks-disabled >>> -    cd "$owd" >>> +    mv .git/hooks .git/hooks-disabled) >> >> Style: why not use >> >>       ( >>               cd "$repo" ... >>               ... .git/hooks-disabled >>       ) > > That is a sensible suggestion, but what does "error" do? > > I think you would need || exit at the end, i.e. > >        ( >                ... || error "..." >        ) || exit > > or something. Good catch, yes. error() calls exit so this patch as-is introduces a logic error.