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)
 75}
 76
 77func TestGoGitRepo_Indexes(t *testing.T) {
 78	plainRoot := t.TempDir()
 79
 80	repo, err := InitGoGitRepo(plainRoot, namespace)
 81	require.NoError(t, err)
 82	t.Cleanup(func() {
 83		require.NoError(t, repo.Close())
 84	})
 85
 86	// Can create indices
 87	indexA, err := repo.GetBleveIndex("a")
 88	require.NoError(t, err)
 89	require.NotZero(t, indexA)
 90	require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "index_meta.json"))
 91	require.FileExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a", "store"))
 92
 93	indexB, err := repo.GetBleveIndex("b")
 94	require.NoError(t, err)
 95	require.NotZero(t, indexB)
 96	require.DirExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "b"))
 97
 98	// Can get an existing index
 99	indexA, err = repo.GetBleveIndex("a")
100	require.NoError(t, err)
101	require.NotZero(t, indexA)
102
103	// Can delete an index
104	err = repo.ClearBleveIndex("a")
105	require.NoError(t, err)
106	require.NoDirExists(t, filepath.Join(plainRoot, ".git", namespace, "indexes", "a"))
107}