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	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}