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.11.0-rc1
@@ -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") | ||||