6263: Rearrange test suites to share code better.
[arvados.git] / services / arv-git-httpd / gitolite_test.go
index 9596ecd96dd5531e52dc27da3b5819605ebe196e..84587302c7ac3a4a13c832c68fda36608c49a434 100644 (file)
@@ -13,7 +13,7 @@ var _ = check.Suite(&GitoliteSuite{})
 // GitoliteSuite tests need an API server, an arv-git-httpd server,
 // and a repository hosted by gitolite.
 type GitoliteSuite struct {
-       serverSuite  IntegrationSuite
+       IntegrationSuite
        gitoliteHome string
 }
 
@@ -34,16 +34,16 @@ func (s *GitoliteSuite) SetUpTest(c *check.C) {
 
        runGitolite("gitolite", "setup", "--admin", "root")
 
-       s.serverSuite.tmpRepoRoot = s.gitoliteHome + "/repositories"
-       s.serverSuite.Config = &config{
+       s.tmpRepoRoot = s.gitoliteHome + "/repositories"
+       s.Config = &config{
                Addr:       ":0",
                GitCommand: "/usr/share/gitolite3/gitolite-shell",
-               Root:       s.serverSuite.tmpRepoRoot,
+               Root:       s.tmpRepoRoot,
        }
-       s.serverSuite.SetUpTest(c)
+       s.IntegrationSuite.SetUpTest(c)
 
        // Install the gitolite hooks in the bare repo we made in
-       // s.serverSuite.SetUpTest() -- see 2.2.4 at
+       // (*IntegrationTest)SetUpTest() -- see 2.2.4 at
        // http://gitolite.com/gitolite/gitolite.html
        runGitolite("gitolite", "setup")
 
@@ -52,27 +52,31 @@ func (s *GitoliteSuite) SetUpTest(c *check.C) {
 }
 
 func (s *GitoliteSuite) TearDownTest(c *check.C) {
-       s.serverSuite.TearDownTest(c)
+       // We really want Unsetenv here, but it's not worth forcing an
+       // upgrade to Go 1.4.
+       os.Setenv("GITOLITE_HTTP_HOME", "")
+       os.Setenv("GL_BYPASS_ACCESS_CHECKS", "")
+       s.IntegrationSuite.TearDownTest(c)
 }
 
 func (s *GitoliteSuite) TestFetch(c *check.C) {
-       err := s.serverSuite.runGit(c, activeToken, "fetch", "active/foo.git")
+       err := s.RunGit(c, activeToken, "fetch", "active/foo.git")
        c.Check(err, check.Equals, nil)
 }
 
 func (s *GitoliteSuite) TestFetchUnreadable(c *check.C) {
-       err := s.serverSuite.runGit(c, anonymousToken, "fetch", "active/foo.git")
+       err := s.RunGit(c, anonymousToken, "fetch", "active/foo.git")
        c.Check(err, check.ErrorMatches, `.* not found.*`)
 }
 
 func (s *GitoliteSuite) TestPush(c *check.C) {
-       err := s.serverSuite.runGit(c, activeToken, "push", "active/foo.git")
+       err := s.RunGit(c, activeToken, "push", "active/foo.git")
        c.Check(err, check.Equals, nil)
 
        // Check that the commit hash appears in the gitolite log, as
        // assurance that the gitolite hooks really did run.
 
-       sha1, err := exec.Command("git", "--git-dir", s.serverSuite.tmpWorkdir + "/.git",
+       sha1, err := exec.Command("git", "--git-dir", s.tmpWorkdir + "/.git",
                "log", "-n1", "--format=%H").CombinedOutput()
        c.Logf("git-log in workdir: %q", string(sha1))
        c.Assert(err, check.Equals, nil)
@@ -84,6 +88,6 @@ func (s *GitoliteSuite) TestPush(c *check.C) {
 }
 
 func (s *GitoliteSuite) TestPushUnwritable(c *check.C) {
-       err := s.serverSuite.runGit(c, spectatorToken, "push", "active/foo.git")
+       err := s.RunGit(c, spectatorToken, "push", "active/foo.git")
        c.Check(err, check.ErrorMatches, `.*HTTP code = 403.*`)
 }