gogit_test.go

  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	t.Cleanup(func() {
 19		require.NoError(t, os.RemoveAll(plainRoot))
 20	})
 21
 22	plainRepo, err := InitGoGitRepo(plainRoot, namespace)
 23	require.NoError(t, err)
 24	require.NoError(t, plainRepo.Close())
 25	plainGitDir := filepath.Join(plainRoot, ".git")
 26
 27	// Bare
 28	bareRoot, err := ioutil.TempDir("", "")
 29	require.NoError(t, err)
 30	t.Cleanup(func() {
 31		require.NoError(t, os.RemoveAll(bareRoot))
 32	})
 33
 34	bareRepo, err := InitBareGoGitRepo(bareRoot, namespace)
 35	require.NoError(t, err)
 36	require.NoError(t, bareRepo.Close())
 37	bareGitDir := bareRoot
 38
 39	tests := []struct {
 40		inPath  string
 41		outPath string
 42		err     bool
 43	}{
 44		// errors
 45		{"/", "", true},
 46		// parent dir of a repo
 47		{filepath.Dir(plainRoot), "", true},
 48
 49		// Plain repo
 50		{plainRoot, plainGitDir, false},
 51		{plainGitDir, plainGitDir, false},
 52		{path.Join(plainGitDir, "objects"), plainGitDir, false},
 53
 54		// Bare repo
 55		{bareRoot, bareGitDir, false},
 56		{bareGitDir, bareGitDir, false},
 57		{path.Join(bareGitDir, "objects"), bareGitDir, false},
 58	}
 59
 60	for i, tc := range tests {
 61		r, err := OpenGoGitRepo(tc.inPath, namespace, nil)
 62
 63		if tc.err {
 64			require.Error(t, err, i)
 65		} else {
 66			require.NoError(t, err, i)
 67			assert.Equal(t, filepath.ToSlash(tc.outPath), filepath.ToSlash(r.path), i)
 68			require.NoError(t, r.Close())
 69		}
 70	}
 71}
 72
 73func TestGoGitRepo(t *testing.T) {
 74	RepoTest(t, CreateGoGitTestRepo, CleanupTestRepos)
 75}
 76
 77func TestGoGitRepo_Indexes(t *testing.T) {
 78	plainRoot, err := ioutil.TempDir("", "")
 79	require.NoError(t, err)
 80	t.Cleanup(func() {
 81		require.NoError(t, os.RemoveAll(plainRoot))
 82	})
 83
 84	repo, err := InitGoGitRepo(plainRoot, namespace)
 85	require.NoError(t, err)
 86	t.Cleanup(func() {
 87		require.NoError(t, repo.Close())
 88	})
 89
 90	// Can create indices
 91	indexA, err := repo.GetBleveIndex("a")
 92	require.NoError(t, err)
 93	require.NotZero(t, indexA)
 94	require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "index_meta.json"))
 95	require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "store"))
 96
 97	indexB, err := repo.GetBleveIndex("b")
 98	require.NoError(t, err)
 99	require.NotZero(t, indexB)
100	require.DirExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "b"))
101
102	// Can get an existing index
103	indexA, err = repo.GetBleveIndex("a")
104	require.NoError(t, err)
105	require.NotZero(t, indexA)
106
107	// Can delete an index
108	err = repo.ClearBleveIndex("a")
109	require.NoError(t, err)
110	require.NoDirExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a"))
111}