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/pgsql.ini | ||||
| /integrations/mssql.ini | /integrations/mssql.ini | ||||
| /node_modules | /node_modules | ||||
| /modules/indexer/issues/indexers | |||||
| routers/repo/authorized_keys | |||||
| /yarn.lock | /yarn.lock | ||||
| /public/js | /public/js | ||||
| /public/css | /public/css | ||||
| @@ -5,12 +5,12 @@ | |||||
| package code | package code | ||||
| import ( | import ( | ||||
| "io/ioutil" | |||||
| "os" | "os" | ||||
| "path/filepath" | "path/filepath" | ||||
| "testing" | "testing" | ||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/log" | |||||
| "code.gitea.io/gitea/modules/setting" | "code.gitea.io/gitea/modules/setting" | ||||
| "github.com/stretchr/testify/assert" | "github.com/stretchr/testify/assert" | ||||
| @@ -23,15 +23,24 @@ func TestMain(m *testing.M) { | |||||
| func TestIndexAndSearch(t *testing.T) { | func TestIndexAndSearch(t *testing.T) { | ||||
| models.PrepareTestEnv(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 | setting.Indexer.RepoIndexerEnabled = true | ||||
| idx, _, err := NewBleveIndexer(dir) | idx, _, err := NewBleveIndexer(dir) | ||||
| if err != nil { | 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) | err = idx.Index(1) | ||||
| assert.NoError(t, err) | assert.NoError(t, err) | ||||
| @@ -9,6 +9,7 @@ import ( | |||||
| "os" | "os" | ||||
| "strconv" | "strconv" | ||||
| "code.gitea.io/gitea/modules/log" | |||||
| "github.com/blevesearch/bleve" | "github.com/blevesearch/bleve" | ||||
| "github.com/blevesearch/bleve/analysis/analyzer/custom" | "github.com/blevesearch/bleve/analysis/analyzer/custom" | ||||
| "github.com/blevesearch/bleve/analysis/token/lowercase" | "github.com/blevesearch/bleve/analysis/token/lowercase" | ||||
| @@ -184,6 +185,15 @@ func (b *BleveIndexer) Init() (bool, error) { | |||||
| return false, err | 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 | // Index will save the index data | ||||
| func (b *BleveIndexer) Index(issues []*IndexerData) error { | func (b *BleveIndexer) Index(issues []*IndexerData) error { | ||||
| batch := rupture.NewFlushingBatch(b.indexer, maxBatchSize) | batch := rupture.NewFlushingBatch(b.indexer, maxBatchSize) | ||||
| @@ -5,6 +5,7 @@ | |||||
| package issues | package issues | ||||
| import ( | import ( | ||||
| "io/ioutil" | |||||
| "os" | "os" | ||||
| "testing" | "testing" | ||||
| @@ -12,12 +13,20 @@ import ( | |||||
| ) | ) | ||||
| func TestBleveIndexAndSearch(t *testing.T) { | 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) | 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{ | err = indexer.Index([]*IndexerData{ | ||||
| { | { | ||||
| @@ -5,7 +5,9 @@ | |||||
| package issues | package issues | ||||
| import ( | import ( | ||||
| "io/ioutil" | |||||
| "os" | "os" | ||||
| "path" | |||||
| "path/filepath" | "path/filepath" | ||||
| "testing" | "testing" | ||||
| "time" | "time" | ||||
| @@ -23,10 +25,29 @@ func TestMain(m *testing.M) { | |||||
| func TestBleveSearchIssues(t *testing.T) { | func TestBleveSearchIssues(t *testing.T) { | ||||
| assert.NoError(t, models.PrepareTestDatabase()) | 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" | setting.Indexer.IssueType = "bleve" | ||||
| InitIssueIndexer(true) | InitIssueIndexer(true) | ||||
| defer func() { | |||||
| indexer := holder.get() | |||||
| if bleveIndexer, ok := indexer.(*BleveIndexer); ok { | |||||
| bleveIndexer.Close() | |||||
| } | |||||
| }() | |||||
| time.Sleep(5 * time.Second) | time.Sleep(5 * time.Second) | ||||
| @@ -45,6 +66,7 @@ func TestBleveSearchIssues(t *testing.T) { | |||||
| ids, err = SearchIssuesByKeyword([]int64{1}, "good") | ids, err = SearchIssuesByKeyword([]int64{1}, "good") | ||||
| assert.NoError(t, err) | assert.NoError(t, err) | ||||
| assert.EqualValues(t, []int64{1}, ids) | assert.EqualValues(t, []int64{1}, ids) | ||||
| } | } | ||||
| func TestDBSearchIssues(t *testing.T) { | func TestDBSearchIssues(t *testing.T) { | ||||
| @@ -5,18 +5,42 @@ | |||||
| package repo | package repo | ||||
| import ( | import ( | ||||
| "io/ioutil" | |||||
| "net/http" | "net/http" | ||||
| "os" | |||||
| "testing" | "testing" | ||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/auth" | "code.gitea.io/gitea/modules/auth" | ||||
| "code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
| "code.gitea.io/gitea/modules/setting" | |||||
| "code.gitea.io/gitea/modules/test" | "code.gitea.io/gitea/modules/test" | ||||
| "github.com/stretchr/testify/assert" | "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) { | func TestAddReadOnlyDeployKey(t *testing.T) { | ||||
| if deferable := createSSHAuthorizedKeysTmpPath(t); deferable != nil { | |||||
| defer deferable() | |||||
| } else { | |||||
| return | |||||
| } | |||||
| models.PrepareTestEnv(t) | models.PrepareTestEnv(t) | ||||
| ctx := test.MockContext(t, "user2/repo1/settings/keys") | ctx := test.MockContext(t, "user2/repo1/settings/keys") | ||||
| @@ -39,6 +63,12 @@ func TestAddReadOnlyDeployKey(t *testing.T) { | |||||
| } | } | ||||
| func TestAddReadWriteOnlyDeployKey(t *testing.T) { | func TestAddReadWriteOnlyDeployKey(t *testing.T) { | ||||
| if deferable := createSSHAuthorizedKeysTmpPath(t); deferable != nil { | |||||
| defer deferable() | |||||
| } else { | |||||
| return | |||||
| } | |||||
| models.PrepareTestEnv(t) | models.PrepareTestEnv(t) | ||||
| ctx := test.MockContext(t, "user2/repo1/settings/keys") | ctx := test.MockContext(t, "user2/repo1/settings/keys") | ||||