git-codereview: cleanup tmp directory if newGitTest fails.
This sets up a deferred os.RemoveAll call that runs only if
newGitTest fails to return a gitTest instance.
Change-Id: I62814e47d2cf152e3b5fcb3dd07da8df2fb63091
Reviewed-on: https://go-review.googlesource.com/2900
Reviewed-by: Andrew Gerrand <adg@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/git-codereview/util_test.go b/git-codereview/util_test.go
index 76a835d..42be911 100644
--- a/git-codereview/util_test.go
+++ b/git-codereview/util_test.go
@@ -73,11 +73,16 @@
trun(t, gt.client, "git", "commit", "-m", fmt.Sprintf("msg\n\nChange-Id: I%d23456789\n", gt.nwork))
}
-func newGitTest(t *testing.T) *gitTest {
+func newGitTest(t *testing.T) (gt *gitTest) {
tmpdir, err := ioutil.TempDir("", "git-codereview-test")
if err != nil {
t.Fatal(err)
}
+ defer func() {
+ if gt == nil {
+ os.RemoveAll(tmpdir)
+ }
+ }()
server := tmpdir + "/git-origin"
@@ -125,14 +130,12 @@
t.Fatal(err)
}
- gt := &gitTest{
+ return &gitTest{
pwd: pwd,
tmpdir: tmpdir,
server: server,
client: client,
}
-
- return gt
}
func (gt *gitTest) removeStubHooks() {