1package repository
2
3import (
4 "io/ioutil"
5 "os"
6 "path"
7 "path/filepath"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11 "github.com/stretchr/testify/require"
12)
13
14func TestNewGoGitRepo(t *testing.T) {
15 // Plain
16 plainRoot, err := ioutil.TempDir("", "")
17 require.NoError(t, err)
18 defer os.RemoveAll(plainRoot)
19
20 _, err = InitGoGitRepo(plainRoot, namespace)
21 require.NoError(t, err)
22 plainGitDir := filepath.Join(plainRoot, ".git")
23
24 // Bare
25 bareRoot, err := ioutil.TempDir("", "")
26 require.NoError(t, err)
27 defer os.RemoveAll(bareRoot)
28
29 _, err = InitBareGoGitRepo(bareRoot, namespace)
30 require.NoError(t, err)
31 bareGitDir := bareRoot
32
33 tests := []struct {
34 inPath string
35 outPath string
36 err bool
37 }{
38 // errors
39 {"/", "", true},
40 // parent dir of a repo
41 {filepath.Dir(plainRoot), "", true},
42
43 // Plain repo
44 {plainRoot, plainGitDir, false},
45 {plainGitDir, plainGitDir, false},
46 {path.Join(plainGitDir, "objects"), plainGitDir, false},
47
48 // Bare repo
49 {bareRoot, bareGitDir, false},
50 {bareGitDir, bareGitDir, false},
51 {path.Join(bareGitDir, "objects"), bareGitDir, false},
52 }
53
54 for i, tc := range tests {
55 r, err := OpenGoGitRepo(tc.inPath, namespace, nil)
56
57 if tc.err {
58 require.Error(t, err, i)
59 } else {
60 require.NoError(t, err, i)
61 assert.Equal(t, filepath.ToSlash(tc.outPath), filepath.ToSlash(r.path), i)
62 }
63 }
64}
65
66func TestGoGitRepo(t *testing.T) {
67 RepoTest(t, CreateGoGitTestRepo, CleanupTestRepos)
68}
69
70func TestGoGitRepo_Indexes(t *testing.T) {
71 t.Parallel()
72
73 plainRoot, err := ioutil.TempDir("", "")
74 require.NoError(t, err)
75 // defer os.RemoveAll(plainRoot)
76
77 repo, err := InitGoGitRepo(plainRoot, namespace)
78 require.NoError(t, err)
79
80 // Can create indices
81 indexA, err := repo.GetBleveIndex("a")
82 require.NoError(t, err)
83 require.NotZero(t, indexA)
84 require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "index_meta.json"))
85 require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "store"))
86
87 indexB, err := repo.GetBleveIndex("b")
88 require.NoError(t, err)
89 require.NotZero(t, indexB)
90 require.DirExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "b"))
91
92 // Can get an existing index
93 indexA, err = repo.GetBleveIndex("a")
94 require.NoError(t, err)
95 require.NotZero(t, indexA)
96
97 // Can delete an index
98 err = repo.ClearBleveIndex("a")
99 require.NoError(t, err)
100 require.NoDirExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a"))
101}