diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-07-13 11:34:00 +0200 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2017-07-13 11:34:00 +0200 |
commit | 1354c5f243ceb35a8b06475b6e64c686cc4afa83 (patch) | |
tree | 8e20c9c10b6bc0bb4d667ef2a2c3b6d8b795d46b /common_test.go | |
parent | b54325f0da2baeb800ac10b0f4993bab0aa88882 (diff) | |
download | go-git-1354c5f243ceb35a8b06475b6e64c686cc4afa83.tar.gz |
worktree: test improvemnts on empty worktree
Diffstat (limited to 'common_test.go')
-rw-r--r-- | common_test.go | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/common_test.go b/common_test.go index 3f5364c..21b4481 100644 --- a/common_test.go +++ b/common_test.go @@ -3,6 +3,7 @@ package git import ( "testing" + billy "gopkg.in/src-d/go-billy.v3" "gopkg.in/src-d/go-git.v4/plumbing" "gopkg.in/src-d/go-git.v4/plumbing/format/packfile" "gopkg.in/src-d/go-git.v4/plumbing/transport" @@ -12,7 +13,7 @@ import ( "github.com/src-d/go-git-fixtures" . "gopkg.in/check.v1" "gopkg.in/src-d/go-billy.v3/memfs" - "gopkg.in/src-d/go-billy.v3/osfs" + "gopkg.in/src-d/go-billy.v3/util" ) func Test(t *testing.T) { TestingT(t) } @@ -41,19 +42,65 @@ func (s *BaseSuite) buildBasicRepository(c *C) { s.Repository = s.NewRepository(f) } +// NewRepository returns a new repository using the .git folder, if the fixture +// is tagged as worktree the filesystem from fixture is used, otherwise a new +// memfs filesystem is used as worktree. func (s *BaseSuite) NewRepository(f *fixtures.Fixture) *Repository { - fs := osfs.New(f.DotGit().Root()) - st, err := filesystem.NewStorage(fs) + var worktree, dotgit billy.Filesystem + if f.Is("worktree") { + r, err := PlainOpen(f.Worktree().Root()) + if err != nil { + panic(err) + } + + return r + } + + dotgit = f.DotGit() + worktree = memfs.New() + + st, err := filesystem.NewStorage(dotgit) + if err != nil { + panic(err) + } + + r, err := Open(st, worktree) + if err != nil { + panic(err) + } + + return r +} + +// NewRepositoryWithEmptyWorktree returns a new repository using the .git folder +// from the fixture but without a empty memfs worktree, the index and the +// modules are deleted from the .git folder. +func (s *BaseSuite) NewRepositoryWithEmptyWorktree(f *fixtures.Fixture) *Repository { + dotgit := f.DotGit() + err := dotgit.Remove("index") if err != nil { panic(err) } - r, err := Open(st, fs) + err = util.RemoveAll(dotgit, "modules") + if err != nil { + panic(err) + } + + worktree := memfs.New() + + st, err := filesystem.NewStorage(dotgit) + if err != nil { + panic(err) + } + + r, err := Open(st, worktree) if err != nil { panic(err) } return r + } func (s *BaseSuite) NewRepositoryFromPackfile(f *fixtures.Fixture) *Repository { |