aboutsummaryrefslogtreecommitdiffstats
path: root/repository/gogit_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'repository/gogit_test.go')
-rw-r--r--repository/gogit_test.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/repository/gogit_test.go b/repository/gogit_test.go
new file mode 100644
index 00000000..9dcf109f
--- /dev/null
+++ b/repository/gogit_test.go
@@ -0,0 +1,68 @@
+package repository
+
+import (
+ "io/ioutil"
+ "os"
+ "path"
+ "path/filepath"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestNewGoGitRepo(t *testing.T) {
+ // Plain
+ plainRoot, err := ioutil.TempDir("", "")
+ require.NoError(t, err)
+ defer os.RemoveAll(plainRoot)
+
+ _, err = InitGoGitRepo(plainRoot)
+ require.NoError(t, err)
+ plainGitDir := path.Join(plainRoot, ".git")
+
+ // Bare
+ bareRoot, err := ioutil.TempDir("", "")
+ require.NoError(t, err)
+ defer os.RemoveAll(bareRoot)
+
+ _, err = InitBareGoGitRepo(bareRoot)
+ require.NoError(t, err)
+ bareGitDir := bareRoot
+
+ tests := []struct {
+ inPath string
+ outPath string
+ err bool
+ }{
+ // errors
+ {"/", "", true},
+ // parent dir of a repo
+ {filepath.Dir(plainRoot), "", true},
+
+ // Plain repo
+ {plainRoot, plainGitDir, false},
+ {plainGitDir, plainGitDir, false},
+ {path.Join(plainGitDir, "objects"), plainGitDir, false},
+
+ // Bare repo
+ {bareRoot, bareGitDir, false},
+ {bareGitDir, bareGitDir, false},
+ {path.Join(bareGitDir, "objects"), bareGitDir, false},
+ }
+
+ for i, tc := range tests {
+ r, err := NewGoGitRepo(tc.inPath, nil)
+
+ if tc.err {
+ require.Error(t, err, i)
+ } else {
+ require.NoError(t, err, i)
+ assert.Equal(t, tc.outPath, r.GetPath(), i)
+ }
+ }
+}
+
+func TestGoGitRepo(t *testing.T) {
+ RepoTest(t, CreateGoGitTestRepo, CleanupTestRepos)
+}