package file import ( "io/ioutil" "os" "os/exec" "path/filepath" "github.com/src-d/go-git-fixtures" . "gopkg.in/check.v1" ) type CommonSuite struct { fixtures.Suite ReceivePackBin string UploadPackBin string tmpDir string // to be removed at teardown } var _ = Suite(&CommonSuite{}) func (s *CommonSuite) SetUpSuite(c *C) { s.Suite.SetUpSuite(c) if err := exec.Command("git", "--version").Run(); err != nil { c.Skip("git command not found") } var err error s.tmpDir, err = ioutil.TempDir("", "") c.Assert(err, IsNil) s.ReceivePackBin = filepath.Join(s.tmpDir, "git-receive-pack") s.UploadPackBin = filepath.Join(s.tmpDir, "git-upload-pack") bin := filepath.Join(s.tmpDir, "go-git") cmd := exec.Command("go", "build", "-o", bin, "../../../cli/go-git/...") c.Assert(cmd.Run(), IsNil) c.Assert(os.Symlink(bin, s.ReceivePackBin), IsNil) c.Assert(os.Symlink(bin, s.UploadPackBin), IsNil) } func (s *CommonSuite) TearDownSuite(c *C) { defer s.Suite.TearDownSuite(c) c.Assert(os.RemoveAll(s.tmpDir), IsNil) }