diff --git a/.gitignore b/.gitignore index 6f644d1cd7d..f6831fe26c4 100644 --- a/.gitignore +++ b/.gitignore @@ -66,8 +66,6 @@ coverage.all /integrations/pgsql.ini /integrations/mssql.ini /node_modules -/modules/indexer/issues/indexers -routers/repo/authorized_keys /yarn.lock /public/js /public/css diff --git a/modules/indexer/code/bleve_test.go b/modules/indexer/code/bleve_test.go index ac2b4119983..695dceb2594 100644 --- a/modules/indexer/code/bleve_test.go +++ b/modules/indexer/code/bleve_test.go @@ -5,12 +5,12 @@ package code import ( + "io/ioutil" "os" "path/filepath" "testing" "code.gitea.io/gitea/models" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "github.com/stretchr/testify/assert" @@ -23,15 +23,24 @@ func TestMain(m *testing.M) { func TestIndexAndSearch(t *testing.T) { models.PrepareTestEnv(t) - dir := "./bleve.index" - os.RemoveAll(dir) + dir, err := ioutil.TempDir("", "bleve.index") + assert.NoError(t, err) + if err != nil { + assert.Fail(t, "Unable to create temporary directory") + return + } + defer os.RemoveAll(dir) setting.Indexer.RepoIndexerEnabled = true idx, _, err := NewBleveIndexer(dir) if err != nil { - idx.Close() - log.Fatal("indexer.Init: %v", err) + assert.Fail(t, "Unable to create indexer Error: %v", err) + if idx != nil { + idx.Close() + } + return } + defer idx.Close() err = idx.Index(1) assert.NoError(t, err) diff --git a/modules/indexer/issues/bleve.go b/modules/indexer/issues/bleve.go index 24443e54a34..787ff0dec5a 100644 --- a/modules/indexer/issues/bleve.go +++ b/modules/indexer/issues/bleve.go @@ -9,6 +9,7 @@ import ( "os" "strconv" + "code.gitea.io/gitea/modules/log" "github.com/blevesearch/bleve" "github.com/blevesearch/bleve/analysis/analyzer/custom" "github.com/blevesearch/bleve/analysis/token/lowercase" @@ -184,6 +185,15 @@ func (b *BleveIndexer) Init() (bool, error) { return false, err } +// Close will close the bleve indexer +func (b *BleveIndexer) Close() { + if b.indexer != nil { + if err := b.indexer.Close(); err != nil { + log.Error("Error whilst closing indexer: %v", err) + } + } +} + // Index will save the index data func (b *BleveIndexer) Index(issues []*IndexerData) error { batch := rupture.NewFlushingBatch(b.indexer, maxBatchSize) diff --git a/modules/indexer/issues/bleve_test.go b/modules/indexer/issues/bleve_test.go index 94d935d89da..234da076cd9 100644 --- a/modules/indexer/issues/bleve_test.go +++ b/modules/indexer/issues/bleve_test.go @@ -5,6 +5,7 @@ package issues import ( + "io/ioutil" "os" "testing" @@ -12,12 +13,20 @@ import ( ) func TestBleveIndexAndSearch(t *testing.T) { - dir := "./bleve.index" - indexer := NewBleveIndexer(dir) + dir, err := ioutil.TempDir("", "bleve.index") + assert.NoError(t, err) + if err != nil { + assert.Fail(t, "Unable to create temporary directory") + return + } defer os.RemoveAll(dir) + indexer := NewBleveIndexer(dir) + defer indexer.Close() - _, err := indexer.Init() - assert.NoError(t, err) + if _, err := indexer.Init(); err != nil { + assert.Fail(t, "Unable to initialise bleve indexer: %v", err) + return + } err = indexer.Index([]*IndexerData{ { diff --git a/modules/indexer/issues/indexer_test.go b/modules/indexer/issues/indexer_test.go index a45fede9ac0..ca7ba29703f 100644 --- a/modules/indexer/issues/indexer_test.go +++ b/modules/indexer/issues/indexer_test.go @@ -5,7 +5,9 @@ package issues import ( + "io/ioutil" "os" + "path" "path/filepath" "testing" "time" @@ -23,10 +25,29 @@ func TestMain(m *testing.M) { func TestBleveSearchIssues(t *testing.T) { assert.NoError(t, models.PrepareTestDatabase()) - os.RemoveAll(setting.Indexer.IssueQueueDir) - os.RemoveAll(setting.Indexer.IssuePath) + tmpIndexerDir, err := ioutil.TempDir("", "issues-indexer") + if err != nil { + assert.Fail(t, "Unable to create temporary directory: %v", err) + return + } + oldQueueDir := setting.Indexer.IssueQueueDir + oldIssuePath := setting.Indexer.IssuePath + setting.Indexer.IssueQueueDir = path.Join(tmpIndexerDir, "issues.queue") + setting.Indexer.IssuePath = path.Join(tmpIndexerDir, "issues.queue") + defer func() { + setting.Indexer.IssueQueueDir = oldQueueDir + setting.Indexer.IssuePath = oldIssuePath + os.RemoveAll(tmpIndexerDir) + }() + setting.Indexer.IssueType = "bleve" InitIssueIndexer(true) + defer func() { + indexer := holder.get() + if bleveIndexer, ok := indexer.(*BleveIndexer); ok { + bleveIndexer.Close() + } + }() time.Sleep(5 * time.Second) @@ -45,6 +66,7 @@ func TestBleveSearchIssues(t *testing.T) { ids, err = SearchIssuesByKeyword([]int64{1}, "good") assert.NoError(t, err) assert.EqualValues(t, []int64{1}, ids) + } func TestDBSearchIssues(t *testing.T) { diff --git a/routers/repo/settings_test.go b/routers/repo/settings_test.go index a05a96cea21..2325c0255c1 100644 --- a/routers/repo/settings_test.go +++ b/routers/repo/settings_test.go @@ -5,18 +5,42 @@ package repo import ( + "io/ioutil" "net/http" + "os" "testing" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/auth" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/test" "github.com/stretchr/testify/assert" ) +func createSSHAuthorizedKeysTmpPath(t *testing.T) func() { + tmpDir, err := ioutil.TempDir("", "tmp-ssh") + if err != nil { + assert.Fail(t, "Unable to create temporary directory: %v", err) + return nil + } + + oldPath := setting.SSH.RootPath + setting.SSH.RootPath = tmpDir + + return func() { + setting.SSH.RootPath = oldPath + os.RemoveAll(tmpDir) + } +} + func TestAddReadOnlyDeployKey(t *testing.T) { + if deferable := createSSHAuthorizedKeysTmpPath(t); deferable != nil { + defer deferable() + } else { + return + } models.PrepareTestEnv(t) ctx := test.MockContext(t, "user2/repo1/settings/keys") @@ -39,6 +63,12 @@ func TestAddReadOnlyDeployKey(t *testing.T) { } func TestAddReadWriteOnlyDeployKey(t *testing.T) { + if deferable := createSSHAuthorizedKeysTmpPath(t); deferable != nil { + defer deferable() + } else { + return + } + models.PrepareTestEnv(t) ctx := test.MockContext(t, "user2/repo1/settings/keys")