Instead of just adding test generated files to .gitignore prevent them from being produced in the first place. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>tags/v1.21.12.1
| @@ -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 | |||
| @@ -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) | |||
| @@ -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) | |||
| @@ -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{ | |||
| { | |||
| @@ -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) { | |||
| @@ -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") | |||