mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-17 14:24:07 +00:00
Clean up Makefile, tests and legacy code (#36638)
This simplifies the Makefile by removing the whole-file wrapping that creates a tempdir introduced by https://github.com/go-gitea/gitea/pull/11126. REPO_TEST_DIR is removed as well. Also clean up a lot of legacy code: unnecessary XSS test, incorrect test env init, unused "_old_uid" hack, etc Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
4
.github/workflows/pull-db-tests.yml
vendored
4
.github/workflows/pull-db-tests.yml
vendored
@@ -63,7 +63,6 @@ jobs:
|
|||||||
RACE_ENABLED: true
|
RACE_ENABLED: true
|
||||||
TEST_TAGS: gogit
|
TEST_TAGS: gogit
|
||||||
TEST_LDAP: 1
|
TEST_LDAP: 1
|
||||||
USE_REPO_TEST_DIR: 1
|
|
||||||
|
|
||||||
test-sqlite:
|
test-sqlite:
|
||||||
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
|
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
|
||||||
@@ -90,7 +89,6 @@ jobs:
|
|||||||
TAGS: bindata gogit sqlite sqlite_unlock_notify
|
TAGS: bindata gogit sqlite sqlite_unlock_notify
|
||||||
RACE_ENABLED: true
|
RACE_ENABLED: true
|
||||||
TEST_TAGS: gogit sqlite sqlite_unlock_notify
|
TEST_TAGS: gogit sqlite sqlite_unlock_notify
|
||||||
USE_REPO_TEST_DIR: 1
|
|
||||||
|
|
||||||
test-unit:
|
test-unit:
|
||||||
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
|
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true'
|
||||||
@@ -206,7 +204,6 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
TAGS: bindata
|
TAGS: bindata
|
||||||
RACE_ENABLED: true
|
RACE_ENABLED: true
|
||||||
USE_REPO_TEST_DIR: 1
|
|
||||||
TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
|
TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
|
||||||
|
|
||||||
test-mssql:
|
test-mssql:
|
||||||
@@ -246,4 +243,3 @@ jobs:
|
|||||||
timeout-minutes: 50
|
timeout-minutes: 50
|
||||||
env:
|
env:
|
||||||
TAGS: bindata
|
TAGS: bindata
|
||||||
USE_REPO_TEST_DIR: 1
|
|
||||||
|
|||||||
41
Makefile
41
Makefile
@@ -1,22 +1,5 @@
|
|||||||
ifeq ($(USE_REPO_TEST_DIR),1)
|
|
||||||
|
|
||||||
# This rule replaces the whole Makefile when we're trying to use /tmp repository temporary files
|
|
||||||
location = $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
|
||||||
self := $(location)
|
|
||||||
|
|
||||||
%:
|
|
||||||
@tmpdir=`mktemp --tmpdir -d` ; \
|
|
||||||
echo Using temporary directory $$tmpdir for test repositories ; \
|
|
||||||
USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \
|
|
||||||
STATUS=$$? ; rm -r "$$tmpdir" ; exit $$STATUS
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
# This is the "normal" part of the Makefile
|
|
||||||
|
|
||||||
DIST := dist
|
DIST := dist
|
||||||
DIST_DIRS := $(DIST)/binaries $(DIST)/release
|
DIST_DIRS := $(DIST)/binaries $(DIST)/release
|
||||||
IMPORT := code.gitea.io/gitea
|
|
||||||
|
|
||||||
# By default use go's 1.25 experimental json v2 library when building
|
# By default use go's 1.25 experimental json v2 library when building
|
||||||
# TODO: remove when no longer experimental
|
# TODO: remove when no longer experimental
|
||||||
@@ -83,7 +66,6 @@ endif
|
|||||||
|
|
||||||
EXTRA_GOFLAGS ?=
|
EXTRA_GOFLAGS ?=
|
||||||
|
|
||||||
MAKE_VERSION := $(shell "$(MAKE)" -v | cat | head -n 1)
|
|
||||||
MAKE_EVIDENCE_DIR := .make_evidence
|
MAKE_EVIDENCE_DIR := .make_evidence
|
||||||
|
|
||||||
GOTESTFLAGS ?=
|
GOTESTFLAGS ?=
|
||||||
@@ -129,7 +111,7 @@ ifeq ($(VERSION),main)
|
|||||||
VERSION := main-nightly
|
VERSION := main-nightly
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
|
LDFLAGS := $(LDFLAGS) -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
|
||||||
|
|
||||||
LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64,linux/riscv64
|
LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64,linux/riscv64
|
||||||
|
|
||||||
@@ -227,7 +209,7 @@ clean: ## delete backend and integration files
|
|||||||
e2e*.test \
|
e2e*.test \
|
||||||
tests/integration/gitea-integration-* \
|
tests/integration/gitea-integration-* \
|
||||||
tests/integration/indexers-* \
|
tests/integration/indexers-* \
|
||||||
tests/mysql.ini tests/pgsql.ini tests/mssql.ini man/ \
|
tests/sqlite.ini tests/mysql.ini tests/pgsql.ini tests/mssql.ini man/ \
|
||||||
tests/e2e/gitea-e2e-*/ \
|
tests/e2e/gitea-e2e-*/ \
|
||||||
tests/e2e/indexers-*/ \
|
tests/e2e/indexers-*/ \
|
||||||
tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/
|
tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/
|
||||||
@@ -474,9 +456,8 @@ $(GO_LICENSE_FILE): go.mod go.sum
|
|||||||
GO=$(GO) $(GO) run build/generate-go-licenses.go $(GO_LICENSE_FILE)
|
GO=$(GO) $(GO) run build/generate-go-licenses.go $(GO_LICENSE_FILE)
|
||||||
|
|
||||||
generate-ini-sqlite:
|
generate-ini-sqlite:
|
||||||
sed -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
|
sed -e 's|{{WORK_PATH}}|$(CURDIR)/tests/$(or $(TEST_TYPE),integration)/gitea-$(or $(TEST_TYPE),integration)-sqlite|g' \
|
||||||
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
||||||
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
|
|
||||||
tests/sqlite.ini.tmpl > tests/sqlite.ini
|
tests/sqlite.ini.tmpl > tests/sqlite.ini
|
||||||
|
|
||||||
.PHONY: test-sqlite
|
.PHONY: test-sqlite
|
||||||
@@ -495,9 +476,8 @@ generate-ini-mysql:
|
|||||||
-e 's|{{TEST_MYSQL_DBNAME}}|${TEST_MYSQL_DBNAME}|g' \
|
-e 's|{{TEST_MYSQL_DBNAME}}|${TEST_MYSQL_DBNAME}|g' \
|
||||||
-e 's|{{TEST_MYSQL_USERNAME}}|${TEST_MYSQL_USERNAME}|g' \
|
-e 's|{{TEST_MYSQL_USERNAME}}|${TEST_MYSQL_USERNAME}|g' \
|
||||||
-e 's|{{TEST_MYSQL_PASSWORD}}|${TEST_MYSQL_PASSWORD}|g' \
|
-e 's|{{TEST_MYSQL_PASSWORD}}|${TEST_MYSQL_PASSWORD}|g' \
|
||||||
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
|
-e 's|{{WORK_PATH}}|$(CURDIR)/tests/$(or $(TEST_TYPE),integration)/gitea-$(or $(TEST_TYPE),integration)-mysql|g' \
|
||||||
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
||||||
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
|
|
||||||
tests/mysql.ini.tmpl > tests/mysql.ini
|
tests/mysql.ini.tmpl > tests/mysql.ini
|
||||||
|
|
||||||
.PHONY: test-mysql
|
.PHONY: test-mysql
|
||||||
@@ -518,9 +498,8 @@ generate-ini-pgsql:
|
|||||||
-e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \
|
-e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \
|
||||||
-e 's|{{TEST_PGSQL_SCHEMA}}|${TEST_PGSQL_SCHEMA}|g' \
|
-e 's|{{TEST_PGSQL_SCHEMA}}|${TEST_PGSQL_SCHEMA}|g' \
|
||||||
-e 's|{{TEST_MINIO_ENDPOINT}}|${TEST_MINIO_ENDPOINT}|g' \
|
-e 's|{{TEST_MINIO_ENDPOINT}}|${TEST_MINIO_ENDPOINT}|g' \
|
||||||
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
|
-e 's|{{WORK_PATH}}|$(CURDIR)/tests/$(or $(TEST_TYPE),integration)/gitea-$(or $(TEST_TYPE),integration)-pgsql|g' \
|
||||||
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
||||||
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
|
|
||||||
tests/pgsql.ini.tmpl > tests/pgsql.ini
|
tests/pgsql.ini.tmpl > tests/pgsql.ini
|
||||||
|
|
||||||
.PHONY: test-pgsql
|
.PHONY: test-pgsql
|
||||||
@@ -539,9 +518,8 @@ generate-ini-mssql:
|
|||||||
-e 's|{{TEST_MSSQL_DBNAME}}|${TEST_MSSQL_DBNAME}|g' \
|
-e 's|{{TEST_MSSQL_DBNAME}}|${TEST_MSSQL_DBNAME}|g' \
|
||||||
-e 's|{{TEST_MSSQL_USERNAME}}|${TEST_MSSQL_USERNAME}|g' \
|
-e 's|{{TEST_MSSQL_USERNAME}}|${TEST_MSSQL_USERNAME}|g' \
|
||||||
-e 's|{{TEST_MSSQL_PASSWORD}}|${TEST_MSSQL_PASSWORD}|g' \
|
-e 's|{{TEST_MSSQL_PASSWORD}}|${TEST_MSSQL_PASSWORD}|g' \
|
||||||
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
|
-e 's|{{WORK_PATH}}|$(CURDIR)/tests/$(or $(TEST_TYPE),integration)/gitea-$(or $(TEST_TYPE),integration)-mssql|g' \
|
||||||
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
|
||||||
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
|
|
||||||
tests/mssql.ini.tmpl > tests/mssql.ini
|
tests/mssql.ini.tmpl > tests/mssql.ini
|
||||||
|
|
||||||
.PHONY: test-mssql
|
.PHONY: test-mssql
|
||||||
@@ -662,7 +640,7 @@ migrations.sqlite.test: $(GO_SOURCES) generate-ini-sqlite
|
|||||||
GITEA_TEST_CONF=tests/sqlite.ini ./migrations.sqlite.test
|
GITEA_TEST_CONF=tests/sqlite.ini ./migrations.sqlite.test
|
||||||
|
|
||||||
.PHONY: migrations.individual.mysql.test
|
.PHONY: migrations.individual.mysql.test
|
||||||
migrations.individual.mysql.test: $(GO_SOURCES)
|
migrations.individual.mysql.test: $(GO_SOURCES) generate-ini-mysql
|
||||||
GITEA_TEST_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
|
GITEA_TEST_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
|
||||||
|
|
||||||
.PHONY: migrations.individual.sqlite.test\#%
|
.PHONY: migrations.individual.sqlite.test\#%
|
||||||
@@ -670,7 +648,7 @@ migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite
|
|||||||
GITEA_TEST_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
|
GITEA_TEST_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
|
||||||
|
|
||||||
.PHONY: migrations.individual.pgsql.test
|
.PHONY: migrations.individual.pgsql.test
|
||||||
migrations.individual.pgsql.test: $(GO_SOURCES)
|
migrations.individual.pgsql.test: $(GO_SOURCES) generate-ini-pgsql
|
||||||
GITEA_TEST_CONF=tests/pgsql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
|
GITEA_TEST_CONF=tests/pgsql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
|
||||||
|
|
||||||
.PHONY: migrations.individual.pgsql.test\#%
|
.PHONY: migrations.individual.pgsql.test\#%
|
||||||
@@ -901,9 +879,6 @@ docker:
|
|||||||
docker build --disable-content-trust=false -t $(DOCKER_REF) .
|
docker build --disable-content-trust=false -t $(DOCKER_REF) .
|
||||||
# support also build args docker build --build-arg GITEA_VERSION=v1.2.3 --build-arg TAGS="bindata sqlite sqlite_unlock_notify" .
|
# support also build args docker build --build-arg GITEA_VERSION=v1.2.3 --build-arg TAGS="bindata sqlite sqlite_unlock_notify" .
|
||||||
|
|
||||||
# This endif closes the if at the top of the file
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Disable parallel execution because it would break some targets that don't
|
# Disable parallel execution because it would break some targets that don't
|
||||||
# specify exact dependencies like 'backend' which does currently not depend
|
# specify exact dependencies like 'backend' which does currently not depend
|
||||||
# on 'frontend' to enable Node.js-less builds from source tarballs.
|
# on 'frontend' to enable Node.js-less builds from source tarballs.
|
||||||
|
|||||||
8
main.go
8
main.go
@@ -26,9 +26,8 @@ import (
|
|||||||
|
|
||||||
// these flags will be set by the build flags
|
// these flags will be set by the build flags
|
||||||
var (
|
var (
|
||||||
Version = "development" // program version for this build
|
Version = "development" // program version for this build
|
||||||
Tags = "" // the Golang build tags
|
Tags = "" // the Golang build tags
|
||||||
MakeVersion = "" // "make" program version if built with make
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -50,9 +49,6 @@ func main() {
|
|||||||
|
|
||||||
func formatBuiltWith() string {
|
func formatBuiltWith() string {
|
||||||
version := runtime.Version()
|
version := runtime.Version()
|
||||||
if len(MakeVersion) > 0 {
|
|
||||||
version = MakeVersion + ", " + runtime.Version()
|
|
||||||
}
|
|
||||||
if len(Tags) == 0 {
|
if len(Tags) == 0 {
|
||||||
return " built with " + version
|
return " built with " + version
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
@@ -27,18 +26,6 @@ import (
|
|||||||
|
|
||||||
// FIXME: this file shouldn't be in a normal package, it should only be compiled for tests
|
// FIXME: this file shouldn't be in a normal package, it should only be compiled for tests
|
||||||
|
|
||||||
func removeAllWithRetry(dir string) error {
|
|
||||||
var err error
|
|
||||||
for range 20 {
|
|
||||||
err = os.RemoveAll(dir)
|
|
||||||
if err == nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
time.Sleep(100 * time.Millisecond)
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func newXORMEngine(t *testing.T) (*xorm.Engine, error) {
|
func newXORMEngine(t *testing.T) (*xorm.Engine, error) {
|
||||||
if err := db.InitEngine(t.Context()); err != nil {
|
if err := db.InitEngine(t.Context()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -213,13 +200,12 @@ func LoadTableSchemasMap(t *testing.T, x *xorm.Engine) map[string]*schemas.Table
|
|||||||
return tableMap
|
return tableMap
|
||||||
}
|
}
|
||||||
|
|
||||||
func MainTest(m *testing.M) {
|
func mainTest(m *testing.M) int {
|
||||||
testlogger.Init()
|
testlogger.Init()
|
||||||
setting.SetupGiteaTestEnv()
|
|
||||||
|
|
||||||
tmpDataPath, cleanup, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("data")
|
tmpDataPath, cleanup, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("data")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
testlogger.Fatalf("Unable to create temporary data path %v\n", err)
|
testlogger.Panicf("Unable to create temporary data path %v\n", err)
|
||||||
}
|
}
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
@@ -227,15 +213,13 @@ func MainTest(m *testing.M) {
|
|||||||
|
|
||||||
unittest.InitSettingsForTesting()
|
unittest.InitSettingsForTesting()
|
||||||
if err = git.InitFull(); err != nil {
|
if err = git.InitFull(); err != nil {
|
||||||
testlogger.Fatalf("Unable to InitFull: %v\n", err)
|
testlogger.Panicf("Unable to InitFull: %v\n", err)
|
||||||
}
|
}
|
||||||
setting.LoadDBSetting()
|
setting.LoadDBSetting()
|
||||||
setting.InitLoggersForTest()
|
setting.InitLoggersForTest()
|
||||||
|
return m.Run()
|
||||||
exitStatus := m.Run()
|
}
|
||||||
|
|
||||||
if err := removeAllWithRetry(setting.RepoRootPath); err != nil {
|
func MainTest(m *testing.M) {
|
||||||
_, _ = fmt.Fprintf(os.Stderr, "os.RemoveAll: %v\n", err)
|
os.Exit(mainTest(m))
|
||||||
}
|
|
||||||
os.Exit(exitStatus)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package unittest_test
|
package unittest_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -58,9 +59,14 @@ func NewFixturesLoaderVendorGoTestfixtures(e *xorm.Engine, opts unittest.Fixture
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
setting.SetupGiteaTestEnv()
|
||||||
|
os.Exit(m.Run())
|
||||||
|
}
|
||||||
|
|
||||||
func prepareTestFixturesLoaders(t testing.TB) unittest.FixturesOptions {
|
func prepareTestFixturesLoaders(t testing.TB) unittest.FixturesOptions {
|
||||||
_ = user_model.User{}
|
_ = user_model.User{}
|
||||||
giteaRoot := setting.SetupGiteaTestEnv()
|
giteaRoot := setting.GetGiteaTestSourceRoot()
|
||||||
opts := unittest.FixturesOptions{Dir: filepath.Join(giteaRoot, "models", "fixtures"), Files: []string{
|
opts := unittest.FixturesOptions{Dir: filepath.Join(giteaRoot, "models", "fixtures"), Files: []string{
|
||||||
"user.yml",
|
"user.yml",
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -4,10 +4,12 @@
|
|||||||
package unittest
|
package unittest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -39,7 +41,20 @@ func SyncFile(srcPath, destPath string) error {
|
|||||||
// SyncDirs synchronizes files recursively from source to target directory.
|
// SyncDirs synchronizes files recursively from source to target directory.
|
||||||
// It returns error when error occurs in underlying functions.
|
// It returns error when error occurs in underlying functions.
|
||||||
func SyncDirs(srcPath, destPath string) error {
|
func SyncDirs(srcPath, destPath string) error {
|
||||||
err := os.MkdirAll(destPath, os.ModePerm)
|
destPath = filepath.Clean(destPath)
|
||||||
|
destPathAbs, err := filepath.Abs(destPath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
devDataPathAbs, err := filepath.Abs(filepath.Join(setting.GetGiteaTestSourceRoot(), "data"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if strings.HasPrefix(destPathAbs+string(filepath.Separator), devDataPathAbs+string(filepath.Separator)) {
|
||||||
|
return errors.New("destination path should not be inside Gitea data directory, otherwise your data for dev mode will be removed")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = os.MkdirAll(destPath, os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import (
|
|||||||
"code.gitea.io/gitea/modules/setting/config"
|
"code.gitea.io/gitea/modules/setting/config"
|
||||||
"code.gitea.io/gitea/modules/storage"
|
"code.gitea.io/gitea/modules/storage"
|
||||||
"code.gitea.io/gitea/modules/tempdir"
|
"code.gitea.io/gitea/modules/tempdir"
|
||||||
|
"code.gitea.io/gitea/modules/testlogger"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@@ -28,16 +29,10 @@ import (
|
|||||||
"xorm.io/xorm/names"
|
"xorm.io/xorm/names"
|
||||||
)
|
)
|
||||||
|
|
||||||
var giteaRoot string
|
|
||||||
|
|
||||||
func fatalTestError(fmtStr string, args ...any) {
|
|
||||||
_, _ = fmt.Fprintf(os.Stderr, fmtStr, args...)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// InitSettingsForTesting initializes config provider and load common settings for tests
|
// InitSettingsForTesting initializes config provider and load common settings for tests
|
||||||
func InitSettingsForTesting() {
|
func InitSettingsForTesting() {
|
||||||
setting.IsInTesting = true
|
setting.SetupGiteaTestEnv()
|
||||||
|
|
||||||
log.OsExiter = func(code int) {
|
log.OsExiter = func(code int) {
|
||||||
if code != 0 {
|
if code != 0 {
|
||||||
// non-zero exit code (log.Fatal) shouldn't occur during testing, if it happens, show a full stacktrace for more details
|
// non-zero exit code (log.Fatal) shouldn't occur during testing, if it happens, show a full stacktrace for more details
|
||||||
@@ -49,8 +44,12 @@ func InitSettingsForTesting() {
|
|||||||
setting.CustomConf = filepath.Join(setting.CustomPath, "conf/app-unittest-tmp.ini")
|
setting.CustomConf = filepath.Join(setting.CustomPath, "conf/app-unittest-tmp.ini")
|
||||||
_ = os.Remove(setting.CustomConf)
|
_ = os.Remove(setting.CustomConf)
|
||||||
}
|
}
|
||||||
setting.InitCfgProvider(setting.CustomConf)
|
|
||||||
setting.LoadCommonSettings()
|
// init paths and config system for testing
|
||||||
|
getTestEnv := func(key string) string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
setting.InitWorkPathAndCommonConfig(getTestEnv, setting.ArgWorkPathAndCustomConf{CustomConf: setting.CustomConf})
|
||||||
|
|
||||||
if err := setting.PrepareAppDataPath(); err != nil {
|
if err := setting.PrepareAppDataPath(); err != nil {
|
||||||
log.Fatal("Can not prepare APP_DATA_PATH: %v", err)
|
log.Fatal("Can not prepare APP_DATA_PATH: %v", err)
|
||||||
@@ -71,16 +70,18 @@ type TestOptions struct {
|
|||||||
// MainTest a reusable TestMain(..) function for unit tests that need to use a
|
// MainTest a reusable TestMain(..) function for unit tests that need to use a
|
||||||
// test database. Creates the test database, and sets necessary settings.
|
// test database. Creates the test database, and sets necessary settings.
|
||||||
func MainTest(m *testing.M, testOptsArg ...*TestOptions) {
|
func MainTest(m *testing.M, testOptsArg ...*TestOptions) {
|
||||||
testOpts := util.OptionalArg(testOptsArg, &TestOptions{})
|
os.Exit(mainTest(m, testOptsArg...))
|
||||||
giteaRoot = setting.SetupGiteaTestEnv()
|
}
|
||||||
InitSettingsForTesting()
|
|
||||||
|
|
||||||
|
func mainTest(m *testing.M, testOptsArg ...*TestOptions) int {
|
||||||
|
testOpts := util.OptionalArg(testOptsArg, &TestOptions{})
|
||||||
|
InitSettingsForTesting()
|
||||||
|
giteaRoot := setting.GetGiteaTestSourceRoot()
|
||||||
fixturesOpts := FixturesOptions{Dir: filepath.Join(giteaRoot, "models", "fixtures"), Files: testOpts.FixtureFiles}
|
fixturesOpts := FixturesOptions{Dir: filepath.Join(giteaRoot, "models", "fixtures"), Files: testOpts.FixtureFiles}
|
||||||
if err := CreateTestEngine(fixturesOpts); err != nil {
|
if err := CreateTestEngine(fixturesOpts); err != nil {
|
||||||
fatalTestError("Error creating test engine: %v\n", err)
|
testlogger.Panicf("Error creating test engine: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
setting.IsInTesting = true
|
|
||||||
setting.AppURL = "https://try.gitea.io/"
|
setting.AppURL = "https://try.gitea.io/"
|
||||||
setting.Domain = "try.gitea.io"
|
setting.Domain = "try.gitea.io"
|
||||||
setting.RunUser = "runuser"
|
setting.RunUser = "runuser"
|
||||||
@@ -92,20 +93,18 @@ func MainTest(m *testing.M, testOptsArg ...*TestOptions) {
|
|||||||
setting.Repository.DefaultBranch = "master" // many test code still assume that default branch is called "master"
|
setting.Repository.DefaultBranch = "master" // many test code still assume that default branch is called "master"
|
||||||
repoRootPath, cleanup1, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("repos")
|
repoRootPath, cleanup1, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("repos")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fatalTestError("TempDir: %v\n", err)
|
testlogger.Panicf("TempDir: %v\n", err)
|
||||||
}
|
}
|
||||||
defer cleanup1()
|
defer cleanup1()
|
||||||
|
|
||||||
setting.RepoRootPath = repoRootPath
|
setting.RepoRootPath = repoRootPath
|
||||||
appDataPath, cleanup2, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("appdata")
|
appDataPath, cleanup2, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("appdata")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fatalTestError("TempDir: %v\n", err)
|
testlogger.Panicf("TempDir: %v\n", err)
|
||||||
}
|
}
|
||||||
defer cleanup2()
|
defer cleanup2()
|
||||||
|
|
||||||
setting.AppDataPath = appDataPath
|
setting.AppDataPath = appDataPath
|
||||||
setting.AppWorkPath = giteaRoot
|
|
||||||
setting.StaticRootPath = giteaRoot
|
|
||||||
setting.GravatarSource = "https://secure.gravatar.com/avatar/"
|
setting.GravatarSource = "https://secure.gravatar.com/avatar/"
|
||||||
|
|
||||||
setting.Attachment.Storage.Path = filepath.Join(setting.AppDataPath, "attachments")
|
setting.Attachment.Storage.Path = filepath.Join(setting.AppDataPath, "attachments")
|
||||||
@@ -129,22 +128,22 @@ func MainTest(m *testing.M, testOptsArg ...*TestOptions) {
|
|||||||
config.SetDynGetter(system.NewDatabaseDynKeyGetter())
|
config.SetDynGetter(system.NewDatabaseDynKeyGetter())
|
||||||
|
|
||||||
if err = cache.Init(); err != nil {
|
if err = cache.Init(); err != nil {
|
||||||
fatalTestError("cache.Init: %v\n", err)
|
testlogger.Panicf("cache.Init: %v\n", err)
|
||||||
}
|
}
|
||||||
if err = storage.Init(); err != nil {
|
if err = storage.Init(); err != nil {
|
||||||
fatalTestError("storage.Init: %v\n", err)
|
testlogger.Panicf("storage.Init: %v\n", err)
|
||||||
}
|
}
|
||||||
if err = SyncDirs(filepath.Join(giteaRoot, "tests", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
|
if err = SyncDirs(filepath.Join(giteaRoot, "tests", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
|
||||||
fatalTestError("util.SyncDirs: %v\n", err)
|
testlogger.Panicf("util.SyncDirs: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = git.InitFull(); err != nil {
|
if err = git.InitFull(); err != nil {
|
||||||
fatalTestError("git.Init: %v\n", err)
|
testlogger.Panicf("git.Init: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if testOpts.SetUp != nil {
|
if testOpts.SetUp != nil {
|
||||||
if err := testOpts.SetUp(); err != nil {
|
if err := testOpts.SetUp(); err != nil {
|
||||||
fatalTestError("set up failed: %v\n", err)
|
testlogger.Panicf("set up failed: %v\n", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,10 +151,10 @@ func MainTest(m *testing.M, testOptsArg ...*TestOptions) {
|
|||||||
|
|
||||||
if testOpts.TearDown != nil {
|
if testOpts.TearDown != nil {
|
||||||
if err := testOpts.TearDown(); err != nil {
|
if err := testOpts.TearDown(); err != nil {
|
||||||
fatalTestError("tear down failed: %v\n", err)
|
testlogger.Panicf("tear down failed: %v\n", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
os.Exit(exitStatus)
|
return exitStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
// FixturesOptions fixtures needs to be loaded options
|
// FixturesOptions fixtures needs to be loaded options
|
||||||
@@ -196,7 +195,6 @@ func PrepareTestDatabase() error {
|
|||||||
// by tests that use the above MainTest(..) function.
|
// by tests that use the above MainTest(..) function.
|
||||||
func PrepareTestEnv(t testing.TB) {
|
func PrepareTestEnv(t testing.TB) {
|
||||||
assert.NoError(t, PrepareTestDatabase())
|
assert.NoError(t, PrepareTestDatabase())
|
||||||
metaPath := filepath.Join(giteaRoot, "tests", "gitea-repositories-meta")
|
metaPath := filepath.Join(setting.GetGiteaTestSourceRoot(), "tests", "gitea-repositories-meta")
|
||||||
assert.NoError(t, SyncDirs(metaPath, setting.RepoRootPath))
|
assert.NoError(t, SyncDirs(metaPath, setting.RepoRootPath))
|
||||||
setting.SetupGiteaTestEnv()
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import (
|
|||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/tempdir"
|
"code.gitea.io/gitea/modules/tempdir"
|
||||||
|
"code.gitea.io/gitea/modules/testlogger"
|
||||||
|
|
||||||
"github.com/hashicorp/go-version"
|
"github.com/hashicorp/go-version"
|
||||||
)
|
)
|
||||||
@@ -185,21 +186,19 @@ func InitFull() (err error) {
|
|||||||
// RunGitTests helps to init the git module and run tests.
|
// RunGitTests helps to init the git module and run tests.
|
||||||
// FIXME: GIT-PACKAGE-DEPENDENCY: the dependency is not right, setting.Git.HomePath is initialized in this package but used in gitcmd package
|
// FIXME: GIT-PACKAGE-DEPENDENCY: the dependency is not right, setting.Git.HomePath is initialized in this package but used in gitcmd package
|
||||||
func RunGitTests(m interface{ Run() int }) {
|
func RunGitTests(m interface{ Run() int }) {
|
||||||
fatalf := func(exitCode int, format string, args ...any) {
|
os.Exit(runGitTests(m))
|
||||||
_, _ = fmt.Fprintf(os.Stderr, format, args...)
|
}
|
||||||
os.Exit(exitCode)
|
|
||||||
}
|
func runGitTests(m interface{ Run() int }) int {
|
||||||
gitHomePath, cleanup, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("git-home")
|
gitHomePath, cleanup, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("git-home")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fatalf(1, "unable to create temp dir: %s", err.Error())
|
testlogger.Panicf("unable to create temp dir: %s", err.Error())
|
||||||
}
|
}
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
setting.Git.HomePath = gitHomePath
|
setting.Git.HomePath = gitHomePath
|
||||||
if err = InitFull(); err != nil {
|
if err = InitFull(); err != nil {
|
||||||
fatalf(1, "failed to call Init: %s", err.Error())
|
testlogger.Panicf("failed to call Init: %s", err.Error())
|
||||||
}
|
|
||||||
if exitCode := m.Run(); exitCode != 0 {
|
|
||||||
fatalf(exitCode, "run test failed, ExitCode=%d", exitCode)
|
|
||||||
}
|
}
|
||||||
|
return m.Run()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,23 +12,27 @@ import (
|
|||||||
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/tempdir"
|
"code.gitea.io/gitea/modules/tempdir"
|
||||||
|
"code.gitea.io/gitea/modules/testlogger"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func testMain(m *testing.M) int {
|
||||||
// FIXME: GIT-PACKAGE-DEPENDENCY: the dependency is not right.
|
// FIXME: GIT-PACKAGE-DEPENDENCY: the dependency is not right.
|
||||||
// "setting.Git.HomePath" is initialized in "git" package but really used in "gitcmd" package
|
// "setting.Git.HomePath" is initialized in "git" package but really used in "gitcmd" package
|
||||||
gitHomePath, cleanup, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("git-home")
|
gitHomePath, cleanup, err := tempdir.OsTempDir("gitea-test").MkdirTempRandom("git-home")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_, _ = fmt.Fprintf(os.Stderr, "unable to create temp dir: %v", err)
|
testlogger.Panicf("failed to create temp dir: %v", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
setting.Git.HomePath = gitHomePath
|
setting.Git.HomePath = gitHomePath
|
||||||
os.Exit(m.Run())
|
return m.Run()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMain(m *testing.M) {
|
||||||
|
os.Exit(testMain(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRunWithContextStd(t *testing.T) {
|
func TestRunWithContextStd(t *testing.T) {
|
||||||
|
|||||||
@@ -13,12 +13,13 @@ import (
|
|||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
// resolve repository path relative to the test directory
|
// resolve repository path relative to the test directory
|
||||||
testRootDir := setting.SetupGiteaTestEnv()
|
setting.SetupGiteaTestEnv()
|
||||||
|
giteaRoot := setting.GetGiteaTestSourceRoot()
|
||||||
repoPath = func(repo Repository) string {
|
repoPath = func(repo Repository) string {
|
||||||
if filepath.IsAbs(repo.RelativePath()) {
|
if filepath.IsAbs(repo.RelativePath()) {
|
||||||
return repo.RelativePath() // for testing purpose only
|
return repo.RelativePath() // for testing purpose only
|
||||||
}
|
}
|
||||||
return filepath.Join(testRootDir, "modules/git/tests/repos", repo.RelativePath())
|
return filepath.Join(giteaRoot, "modules/git/tests/repos", repo.RelativePath())
|
||||||
}
|
}
|
||||||
git.RunGitTests(m)
|
git.RunGitTests(m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@@ -20,10 +19,6 @@ const (
|
|||||||
dummyToken = "10000000-aaaa-bbbb-cccc-000000000001"
|
dummyToken = "10000000-aaaa-bbbb-cccc-000000000001"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
|
||||||
os.Exit(m.Run())
|
|
||||||
}
|
|
||||||
|
|
||||||
type mockTransport struct{}
|
type mockTransport struct{}
|
||||||
|
|
||||||
func (mockTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
func (mockTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ func (o *VirtualSessionProvider) Read(sid string) (session.RawStore, error) {
|
|||||||
return nil, fmt.Errorf("check if '%s' exist failed: %w", sid, err)
|
return nil, fmt.Errorf("check if '%s' exist failed: %w", sid, err)
|
||||||
}
|
}
|
||||||
kv := make(map[any]any)
|
kv := make(map[any]any)
|
||||||
kv["_old_uid"] = "0"
|
|
||||||
return NewVirtualStore(o, sid, kv), nil
|
return NewVirtualStore(o, sid, kv), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +159,7 @@ func (s *VirtualStore) Release() error {
|
|||||||
// Now need to lock the provider
|
// Now need to lock the provider
|
||||||
s.p.lock.Lock()
|
s.p.lock.Lock()
|
||||||
defer s.p.lock.Unlock()
|
defer s.p.lock.Unlock()
|
||||||
if oldUID, ok := s.data["_old_uid"]; (ok && (oldUID != "0" || len(s.data) > 1)) || (!ok && len(s.data) > 0) {
|
if len(s.data) > 0 {
|
||||||
// Now ensure that we don't exist!
|
// Now ensure that we don't exist!
|
||||||
realProvider := s.p.provider
|
realProvider := s.p.provider
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,18 @@ import (
|
|||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetupGiteaTestEnv() string {
|
var giteaTestSourceRoot *string
|
||||||
|
|
||||||
|
func GetGiteaTestSourceRoot() string {
|
||||||
|
return *giteaTestSourceRoot
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupGiteaTestEnv() {
|
||||||
|
if giteaTestSourceRoot != nil {
|
||||||
|
return // already initialized
|
||||||
|
}
|
||||||
|
|
||||||
|
IsInTesting = true
|
||||||
giteaRoot := os.Getenv("GITEA_TEST_ROOT")
|
giteaRoot := os.Getenv("GITEA_TEST_ROOT")
|
||||||
if giteaRoot == "" {
|
if giteaRoot == "" {
|
||||||
_, filename, _, _ := runtime.Caller(0)
|
_, filename, _, _ := runtime.Caller(0)
|
||||||
@@ -27,6 +38,7 @@ func SetupGiteaTestEnv() string {
|
|||||||
appWorkPathBuiltin = giteaRoot
|
appWorkPathBuiltin = giteaRoot
|
||||||
AppWorkPath = giteaRoot
|
AppWorkPath = giteaRoot
|
||||||
AppPath = filepath.Join(giteaRoot, "gitea") + util.Iif(IsWindows, ".exe", "")
|
AppPath = filepath.Join(giteaRoot, "gitea") + util.Iif(IsWindows, ".exe", "")
|
||||||
|
StaticRootPath = giteaRoot // need to load assets (options, public) from the source code directory for testing
|
||||||
|
|
||||||
// giteaConf (GITEA_CONF) must be relative because it is used in the git hooks as "$GITEA_ROOT/$GITEA_CONF"
|
// giteaConf (GITEA_CONF) must be relative because it is used in the git hooks as "$GITEA_ROOT/$GITEA_CONF"
|
||||||
giteaConf := os.Getenv("GITEA_TEST_CONF")
|
giteaConf := os.Getenv("GITEA_TEST_CONF")
|
||||||
@@ -56,6 +68,5 @@ func SetupGiteaTestEnv() string {
|
|||||||
// TODO: some git repo hooks (test fixtures) still use these env variables, need to be refactored in the future
|
// TODO: some git repo hooks (test fixtures) still use these env variables, need to be refactored in the future
|
||||||
_ = os.Setenv("GITEA_ROOT", giteaRoot)
|
_ = os.Setenv("GITEA_ROOT", giteaRoot)
|
||||||
_ = os.Setenv("GITEA_CONF", giteaConf) // test fixture git hooks use "$GITEA_ROOT/$GITEA_CONF" in their scripts
|
_ = os.Setenv("GITEA_CONF", giteaConf) // test fixture git hooks use "$GITEA_ROOT/$GITEA_CONF" in their scripts
|
||||||
|
giteaTestSourceRoot = &giteaRoot
|
||||||
return giteaRoot
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ func Init() {
|
|||||||
log.RegisterEventWriter("test", newTestLoggerWriter)
|
log.RegisterEventWriter("test", newTestLoggerWriter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Fatalf(format string, args ...any) {
|
func Panicf(format string, args ...any) {
|
||||||
Printf(format+"\n", args...)
|
// don't call os.Exit, otherwise the "defer" functions won't be executed
|
||||||
os.Exit(1)
|
panic(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,7 @@ func TestMain(m *testing.M) {
|
|||||||
// setup
|
// setup
|
||||||
translation.InitLocales(context.Background())
|
translation.InitLocales(context.Background())
|
||||||
BaseDate = time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC)
|
BaseDate = time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC)
|
||||||
|
os.Exit(m.Run())
|
||||||
// run the tests
|
|
||||||
retVal := m.Run()
|
|
||||||
|
|
||||||
os.Exit(retVal)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimeSincePro(t *testing.T) {
|
func TestTimeSincePro(t *testing.T) {
|
||||||
|
|||||||
@@ -77,6 +77,7 @@
|
|||||||
"@types/jquery": "3.5.33",
|
"@types/jquery": "3.5.33",
|
||||||
"@types/js-yaml": "4.0.9",
|
"@types/js-yaml": "4.0.9",
|
||||||
"@types/katex": "0.16.8",
|
"@types/katex": "0.16.8",
|
||||||
|
"@types/node": "25.2.3",
|
||||||
"@types/pdfobject": "2.2.5",
|
"@types/pdfobject": "2.2.5",
|
||||||
"@types/sortablejs": "1.15.9",
|
"@types/sortablejs": "1.15.9",
|
||||||
"@types/swagger-ui-dist": "3.30.6",
|
"@types/swagger-ui-dist": "3.30.6",
|
||||||
@@ -119,9 +120,6 @@
|
|||||||
"vitest": "4.0.18",
|
"vitest": "4.0.18",
|
||||||
"vue-tsc": "3.2.4"
|
"vue-tsc": "3.2.4"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
|
||||||
"defaults"
|
|
||||||
],
|
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"array-includes": "npm:@nolyfill/array-includes@^1",
|
"array-includes": "npm:@nolyfill/array-includes@^1",
|
||||||
|
|||||||
3
pnpm-lock.yaml
generated
3
pnpm-lock.yaml
generated
@@ -234,6 +234,9 @@ importers:
|
|||||||
'@types/katex':
|
'@types/katex':
|
||||||
specifier: 0.16.8
|
specifier: 0.16.8
|
||||||
version: 0.16.8
|
version: 0.16.8
|
||||||
|
'@types/node':
|
||||||
|
specifier: 25.2.3
|
||||||
|
version: 25.2.3
|
||||||
'@types/pdfobject':
|
'@types/pdfobject':
|
||||||
specifier: 2.2.5
|
specifier: 2.2.5
|
||||||
version: 2.2.5
|
version: 2.2.5
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import (
|
|||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
unittest.MainTest(m)
|
unittest.MainTest(m)
|
||||||
os.Exit(m.Run())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInitToken(t *testing.T) {
|
func TestInitToken(t *testing.T) {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func TestMain(m *testing.M) {
|
|||||||
graceful.InitManager(managerCtx)
|
graceful.InitManager(managerCtx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
tests.InitTest(false)
|
tests.InitTest()
|
||||||
testE2eWebRoutes = routers.NormalRoutes()
|
testE2eWebRoutes = routers.NormalRoutes()
|
||||||
|
|
||||||
err := unittest.InitFixtures(
|
err := unittest.InitFixtures(
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
// Copyright 2017 The Gitea Authors. All rights reserved.
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
//nolint:forbidigo // use of print functions is allowed in tests
|
|
||||||
package integration
|
package integration
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -27,6 +26,7 @@ import (
|
|||||||
"code.gitea.io/gitea/modules/json"
|
"code.gitea.io/gitea/modules/json"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
"code.gitea.io/gitea/modules/testlogger"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
"code.gitea.io/gitea/modules/web"
|
"code.gitea.io/gitea/modules/web"
|
||||||
"code.gitea.io/gitea/modules/web/middleware"
|
"code.gitea.io/gitea/modules/web/middleware"
|
||||||
@@ -79,14 +79,14 @@ func NewNilResponseHashSumRecorder() *NilResponseHashSumRecorder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func testMain(m *testing.M) int {
|
||||||
defer log.GetManager().Close()
|
defer log.GetManager().Close()
|
||||||
|
|
||||||
managerCtx, cancel := context.WithCancel(context.Background())
|
managerCtx, cancel := context.WithCancel(context.Background())
|
||||||
graceful.InitManager(managerCtx)
|
graceful.InitManager(managerCtx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
tests.InitTest(true)
|
tests.InitTest()
|
||||||
testWebRoutes = routers.NormalRoutes()
|
testWebRoutes = routers.NormalRoutes()
|
||||||
|
|
||||||
err := unittest.InitFixtures(
|
err := unittest.InitFixtures(
|
||||||
@@ -95,8 +95,7 @@ func TestMain(m *testing.M) {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error initializing test database: %v\n", err)
|
testlogger.Panicf("InitFixtures: %v", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: the console logger is deleted by mistake, so if there is any `log.Fatal`, developers won't see any error message.
|
// FIXME: the console logger is deleted by mistake, so if there is any `log.Fatal`, developers won't see any error message.
|
||||||
@@ -104,15 +103,16 @@ func TestMain(m *testing.M) {
|
|||||||
exitCode := m.Run()
|
exitCode := m.Run()
|
||||||
|
|
||||||
if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil {
|
if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil {
|
||||||
fmt.Printf("util.RemoveAll: %v\n", err)
|
log.Error("Failed to remove indexer path: %v", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
if err = util.RemoveAll(setting.Indexer.RepoPath); err != nil {
|
if err = util.RemoveAll(setting.Indexer.RepoPath); err != nil {
|
||||||
fmt.Printf("Unable to remove repo indexer: %v\n", err)
|
log.Error("Failed to remove indexer path: %v", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
return exitCode
|
||||||
|
}
|
||||||
|
|
||||||
os.Exit(exitCode)
|
func TestMain(m *testing.M) {
|
||||||
|
os.Exit(testMain(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
type TestSession struct {
|
type TestSession struct {
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ var currentEngine *xorm.Engine
|
|||||||
|
|
||||||
func initMigrationTest(t *testing.T) func() {
|
func initMigrationTest(t *testing.T) func() {
|
||||||
testlogger.Init()
|
testlogger.Init()
|
||||||
setting.SetupGiteaTestEnv()
|
|
||||||
|
|
||||||
unittest.InitSettingsForTesting()
|
unittest.InitSettingsForTesting()
|
||||||
|
|
||||||
assert.NotEmpty(t, setting.RepoRootPath)
|
assert.NotEmpty(t, setting.RepoRootPath)
|
||||||
|
|||||||
@@ -176,41 +176,6 @@ func TestPullCreate(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPullCreate_TitleEscape(t *testing.T) {
|
|
||||||
onGiteaRun(t, func(t *testing.T, u *url.URL) {
|
|
||||||
session := loginUser(t, "user1")
|
|
||||||
testRepoFork(t, session, "user2", "repo1", "user1", "repo1", "")
|
|
||||||
testEditFile(t, session, "user1", "repo1", "master", "README.md", "Hello, World (Edited)\n")
|
|
||||||
resp := testPullCreate(t, session, "user1", "repo1", false, "master", "master", "<i>XSS PR</i>")
|
|
||||||
|
|
||||||
// check the redirected URL
|
|
||||||
url := test.RedirectURL(resp)
|
|
||||||
assert.Regexp(t, "^/user2/repo1/pulls/[0-9]*$", url)
|
|
||||||
|
|
||||||
// Edit title
|
|
||||||
req := NewRequest(t, "GET", url)
|
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
|
||||||
editTestTitleURL, exists := htmlDoc.doc.Find(".issue-title-buttons button[data-update-url]").First().Attr("data-update-url")
|
|
||||||
assert.True(t, exists, "The template has changed")
|
|
||||||
|
|
||||||
req = NewRequestWithValues(t, "POST", editTestTitleURL, map[string]string{
|
|
||||||
"title": "<u>XSS PR</u>",
|
|
||||||
})
|
|
||||||
session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
|
|
||||||
req = NewRequest(t, "GET", url)
|
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc = NewHTMLParser(t, resp.Body)
|
|
||||||
titleHTML, err := htmlDoc.doc.Find(".comment-list .timeline-item.event .comment-text-line b").First().Html()
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, "<strike><i>XSS PR</i></strike>", titleHTML)
|
|
||||||
titleHTML, err = htmlDoc.doc.Find(".comment-list .timeline-item.event .comment-text-line b").Next().Html()
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, "<u>XSS PR</u>", titleHTML)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func testUIDeleteBranch(t *testing.T, session *TestSession, ownerName, repoName, branchName string) {
|
func testUIDeleteBranch(t *testing.T, session *TestSession, ownerName, repoName, branchName string) {
|
||||||
relURL := "/" + path.Join(ownerName, repoName, "branches")
|
relURL := "/" + path.Join(ownerName, repoName, "branches")
|
||||||
req := NewRequestWithValues(t, "POST", relURL+"/delete", map[string]string{
|
req := NewRequestWithValues(t, "POST", relURL+"/delete", map[string]string{
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
// Copyright 2017 The Gitea Authors. All rights reserved.
|
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
package integration
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/unittest"
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
|
||||||
"code.gitea.io/gitea/tests"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestXSSUserFullName(t *testing.T) {
|
|
||||||
defer tests.PrepareTestEnv(t)()
|
|
||||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
|
||||||
const fullName = `name & <script class="evil">alert('Oh no!');</script>`
|
|
||||||
|
|
||||||
session := loginUser(t, user.Name)
|
|
||||||
req := NewRequestWithValues(t, "POST", "/user/settings", map[string]string{
|
|
||||||
"name": user.Name,
|
|
||||||
"full_name": fullName,
|
|
||||||
"email": user.Email,
|
|
||||||
"language": "en-US",
|
|
||||||
})
|
|
||||||
session.MakeRequest(t, req, http.StatusSeeOther)
|
|
||||||
|
|
||||||
req = NewRequestf(t, "GET", "/%s", user.Name)
|
|
||||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
|
||||||
assert.Equal(t, 0, htmlDoc.doc.Find("script.evil").Length())
|
|
||||||
assert.Equal(t, fullName,
|
|
||||||
htmlDoc.doc.Find("div.content").Find(".header.text.center").Text(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
WORK_PATH = {{WORK_PATH}}
|
||||||
APP_NAME = Gitea: Git with a cup of tea
|
APP_NAME = Gitea: Git with a cup of tea
|
||||||
RUN_MODE = prod
|
RUN_MODE = prod
|
||||||
|
|
||||||
@@ -11,11 +12,9 @@ SSL_MODE = disable
|
|||||||
|
|
||||||
[indexer]
|
[indexer]
|
||||||
REPO_INDEXER_ENABLED = true
|
REPO_INDEXER_ENABLED = true
|
||||||
REPO_INDEXER_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/indexers/repos.bleve
|
|
||||||
|
|
||||||
[queue.issue_indexer]
|
[queue.issue_indexer]
|
||||||
TYPE = level
|
TYPE = level
|
||||||
DATADIR = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/indexers/issues.queue
|
|
||||||
|
|
||||||
[queue]
|
[queue]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
@@ -29,15 +28,6 @@ TYPE = immediate
|
|||||||
[queue.webhook_sender]
|
[queue.webhook_sender]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
|
|
||||||
[repository]
|
|
||||||
ROOT = {{REPO_TEST_DIR}}tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/gitea-repositories
|
|
||||||
|
|
||||||
[repository.local]
|
|
||||||
LOCAL_COPY_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/tmp/local-repo
|
|
||||||
|
|
||||||
[repository.upload]
|
|
||||||
TEMP_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/tmp/uploads
|
|
||||||
|
|
||||||
[repository.signing]
|
[repository.signing]
|
||||||
SIGNING_KEY = none
|
SIGNING_KEY = none
|
||||||
|
|
||||||
@@ -53,14 +43,13 @@ START_SSH_SERVER = true
|
|||||||
LFS_START_SERVER = true
|
LFS_START_SERVER = true
|
||||||
OFFLINE_MODE = false
|
OFFLINE_MODE = false
|
||||||
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
|
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
|
||||||
APP_DATA_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/data
|
|
||||||
BUILTIN_SSH_SERVER_USER = git
|
BUILTIN_SSH_SERVER_USER = git
|
||||||
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE=
|
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE=
|
||||||
|
|
||||||
[mailer]
|
[mailer]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
PROTOCOL = dummy
|
PROTOCOL = dummy
|
||||||
FROM = mssql-{{TEST_TYPE}}-test@gitea.io
|
FROM = mssql-integration-test@gitea.io
|
||||||
|
|
||||||
[service]
|
[service]
|
||||||
REGISTER_EMAIL_CONFIRM = false
|
REGISTER_EMAIL_CONFIRM = false
|
||||||
@@ -76,16 +65,12 @@ ENABLE_NOTIFY_MAIL = true
|
|||||||
[picture]
|
[picture]
|
||||||
DISABLE_GRAVATAR = false
|
DISABLE_GRAVATAR = false
|
||||||
ENABLE_FEDERATED_AVATAR = false
|
ENABLE_FEDERATED_AVATAR = false
|
||||||
AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/data/avatars
|
|
||||||
REPOSITORY_AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/data/repo-avatars
|
|
||||||
|
|
||||||
[session]
|
[session]
|
||||||
PROVIDER = file
|
PROVIDER = file
|
||||||
PROVIDER_CONFIG = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mssql/data/sessions
|
|
||||||
|
|
||||||
[log]
|
[log]
|
||||||
MODE = {{TEST_LOGGER}}
|
MODE = {{TEST_LOGGER}}
|
||||||
ROOT_PATH = {{REPO_TEST_DIR}}mssql-log
|
|
||||||
ENABLE_SSH_LOG = true
|
ENABLE_SSH_LOG = true
|
||||||
logger.xorm.MODE = file
|
logger.xorm.MODE = file
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
WORK_PATH = {{WORK_PATH}}
|
||||||
APP_NAME = Gitea: Git with a cup of tea
|
APP_NAME = Gitea: Git with a cup of tea
|
||||||
RUN_MODE = prod
|
RUN_MODE = prod
|
||||||
|
|
||||||
@@ -11,13 +12,11 @@ SSL_MODE = disable
|
|||||||
|
|
||||||
[indexer]
|
[indexer]
|
||||||
REPO_INDEXER_ENABLED = true
|
REPO_INDEXER_ENABLED = true
|
||||||
REPO_INDEXER_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/indexers/repos.bleve
|
|
||||||
ISSUE_INDEXER_TYPE = elasticsearch
|
ISSUE_INDEXER_TYPE = elasticsearch
|
||||||
ISSUE_INDEXER_CONN_STR = http://elastic:changeme@elasticsearch:9200
|
ISSUE_INDEXER_CONN_STR = http://elastic:changeme@elasticsearch:9200
|
||||||
|
|
||||||
[queue.issue_indexer]
|
[queue.issue_indexer]
|
||||||
TYPE = level
|
TYPE = level
|
||||||
DATADIR = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/indexers/issues.queue
|
|
||||||
|
|
||||||
[queue]
|
[queue]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
@@ -31,15 +30,6 @@ TYPE = immediate
|
|||||||
[queue.webhook_sender]
|
[queue.webhook_sender]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
|
|
||||||
[repository]
|
|
||||||
ROOT = {{REPO_TEST_DIR}}tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/gitea-repositories
|
|
||||||
|
|
||||||
[repository.local]
|
|
||||||
LOCAL_COPY_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/tmp/local-repo
|
|
||||||
|
|
||||||
[repository.upload]
|
|
||||||
TEMP_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/tmp/uploads
|
|
||||||
|
|
||||||
[repository.signing]
|
[repository.signing]
|
||||||
SIGNING_KEY = none
|
SIGNING_KEY = none
|
||||||
|
|
||||||
@@ -51,7 +41,6 @@ LOCAL_ROOT_URL = http://127.0.0.1:3001/
|
|||||||
DISABLE_SSH = false
|
DISABLE_SSH = false
|
||||||
SSH_LISTEN_HOST = localhost
|
SSH_LISTEN_HOST = localhost
|
||||||
SSH_PORT = 2201
|
SSH_PORT = 2201
|
||||||
APP_DATA_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/data
|
|
||||||
BUILTIN_SSH_SERVER_USER = git
|
BUILTIN_SSH_SERVER_USER = git
|
||||||
START_SSH_SERVER = true
|
START_SSH_SERVER = true
|
||||||
OFFLINE_MODE = false
|
OFFLINE_MODE = false
|
||||||
@@ -63,7 +52,7 @@ SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXW
|
|||||||
[mailer]
|
[mailer]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
PROTOCOL = dummy
|
PROTOCOL = dummy
|
||||||
FROM = mysql-{{TEST_TYPE}}-test@gitea.io
|
FROM = mysql-integration-test@gitea.io
|
||||||
|
|
||||||
[service]
|
[service]
|
||||||
REGISTER_EMAIL_CONFIRM = false
|
REGISTER_EMAIL_CONFIRM = false
|
||||||
@@ -82,11 +71,9 @@ ENABLE_FEDERATED_AVATAR = false
|
|||||||
|
|
||||||
[session]
|
[session]
|
||||||
PROVIDER = file
|
PROVIDER = file
|
||||||
PROVIDER_CONFIG = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/data/sessions
|
|
||||||
|
|
||||||
[log]
|
[log]
|
||||||
MODE = {{TEST_LOGGER}}
|
MODE = {{TEST_LOGGER}}
|
||||||
ROOT_PATH = {{REPO_TEST_DIR}}mysql-log
|
|
||||||
ENABLE_SSH_LOG = true
|
ENABLE_SSH_LOG = true
|
||||||
logger.xorm.MODE = file
|
logger.xorm.MODE = file
|
||||||
|
|
||||||
@@ -103,9 +90,6 @@ SECRET_KEY = 9pCviYTWSb
|
|||||||
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ
|
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ
|
||||||
DISABLE_QUERY_AUTH_TOKEN = true
|
DISABLE_QUERY_AUTH_TOKEN = true
|
||||||
|
|
||||||
[lfs]
|
|
||||||
PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql/data/lfs
|
|
||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
WORK_PATH = {{WORK_PATH}}
|
||||||
APP_NAME = Gitea: Git with a cup of tea
|
APP_NAME = Gitea: Git with a cup of tea
|
||||||
RUN_MODE = prod
|
RUN_MODE = prod
|
||||||
|
|
||||||
@@ -12,11 +13,9 @@ SSL_MODE = disable
|
|||||||
|
|
||||||
[indexer]
|
[indexer]
|
||||||
REPO_INDEXER_ENABLED = true
|
REPO_INDEXER_ENABLED = true
|
||||||
REPO_INDEXER_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/indexers/repos.bleve
|
|
||||||
|
|
||||||
[queue.issue_indexer]
|
[queue.issue_indexer]
|
||||||
TYPE = level
|
TYPE = level
|
||||||
DATADIR = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/indexers/issues.queue
|
|
||||||
|
|
||||||
[queue]
|
[queue]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
@@ -30,15 +29,6 @@ TYPE = immediate
|
|||||||
[queue.webhook_sender]
|
[queue.webhook_sender]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
|
|
||||||
[repository]
|
|
||||||
ROOT = {{REPO_TEST_DIR}}tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/gitea-repositories
|
|
||||||
|
|
||||||
[repository.local]
|
|
||||||
LOCAL_COPY_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/tmp/local-repo
|
|
||||||
|
|
||||||
[repository.upload]
|
|
||||||
TEMP_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/tmp/uploads
|
|
||||||
|
|
||||||
[repository.signing]
|
[repository.signing]
|
||||||
SIGNING_KEY = none
|
SIGNING_KEY = none
|
||||||
|
|
||||||
@@ -54,14 +44,13 @@ START_SSH_SERVER = true
|
|||||||
LFS_START_SERVER = true
|
LFS_START_SERVER = true
|
||||||
OFFLINE_MODE = false
|
OFFLINE_MODE = false
|
||||||
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
|
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
|
||||||
APP_DATA_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/data
|
|
||||||
BUILTIN_SSH_SERVER_USER = git
|
BUILTIN_SSH_SERVER_USER = git
|
||||||
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE=
|
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE=
|
||||||
|
|
||||||
[mailer]
|
[mailer]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
PROTOCOL = dummy
|
PROTOCOL = dummy
|
||||||
FROM = pgsql-{{TEST_TYPE}}-test@gitea.io
|
FROM = pgsql-integration-test@gitea.io
|
||||||
|
|
||||||
[service]
|
[service]
|
||||||
REGISTER_EMAIL_CONFIRM = false
|
REGISTER_EMAIL_CONFIRM = false
|
||||||
@@ -77,16 +66,12 @@ ENABLE_NOTIFY_MAIL = true
|
|||||||
[picture]
|
[picture]
|
||||||
DISABLE_GRAVATAR = false
|
DISABLE_GRAVATAR = false
|
||||||
ENABLE_FEDERATED_AVATAR = false
|
ENABLE_FEDERATED_AVATAR = false
|
||||||
AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/data/avatars
|
|
||||||
REPOSITORY_AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/data/repo-avatars
|
|
||||||
|
|
||||||
[session]
|
[session]
|
||||||
PROVIDER = file
|
PROVIDER = file
|
||||||
PROVIDER_CONFIG = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-pgsql/data/sessions
|
|
||||||
|
|
||||||
[log]
|
[log]
|
||||||
MODE = {{TEST_LOGGER}}
|
MODE = {{TEST_LOGGER}}
|
||||||
ROOT_PATH = {{REPO_TEST_DIR}}pgsql-log
|
|
||||||
ENABLE_SSH_LOG = true
|
ENABLE_SSH_LOG = true
|
||||||
logger.xorm.MODE = file
|
logger.xorm.MODE = file
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
|
WORK_PATH = {{WORK_PATH}}
|
||||||
APP_NAME = Gitea: Git with a cup of tea
|
APP_NAME = Gitea: Git with a cup of tea
|
||||||
RUN_MODE = prod
|
RUN_MODE = prod
|
||||||
|
|
||||||
[database]
|
[database]
|
||||||
DB_TYPE = sqlite3
|
DB_TYPE = sqlite3
|
||||||
PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/gitea.db
|
PATH = gitea.db
|
||||||
|
|
||||||
[indexer]
|
[indexer]
|
||||||
REPO_INDEXER_ENABLED = true
|
REPO_INDEXER_ENABLED = true
|
||||||
REPO_INDEXER_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/indexers/repos.bleve
|
|
||||||
|
|
||||||
[queue.issue_indexer]
|
[queue.issue_indexer]
|
||||||
TYPE = level
|
TYPE = level
|
||||||
DATADIR = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/indexers/issues.queue
|
|
||||||
|
|
||||||
[queue]
|
[queue]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
@@ -25,15 +24,6 @@ TYPE = immediate
|
|||||||
[queue.webhook_sender]
|
[queue.webhook_sender]
|
||||||
TYPE = immediate
|
TYPE = immediate
|
||||||
|
|
||||||
[repository]
|
|
||||||
ROOT = {{REPO_TEST_DIR}}tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/gitea-repositories
|
|
||||||
|
|
||||||
[repository.local]
|
|
||||||
LOCAL_COPY_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/tmp/local-repo
|
|
||||||
|
|
||||||
[repository.upload]
|
|
||||||
TEMP_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/tmp/uploads
|
|
||||||
|
|
||||||
[repository.signing]
|
[repository.signing]
|
||||||
SIGNING_KEY = none
|
SIGNING_KEY = none
|
||||||
|
|
||||||
@@ -49,18 +39,14 @@ START_SSH_SERVER = true
|
|||||||
LFS_START_SERVER = true
|
LFS_START_SERVER = true
|
||||||
OFFLINE_MODE = false
|
OFFLINE_MODE = false
|
||||||
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
|
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
|
||||||
APP_DATA_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data
|
|
||||||
ENABLE_GZIP = true
|
ENABLE_GZIP = true
|
||||||
BUILTIN_SSH_SERVER_USER = git
|
BUILTIN_SSH_SERVER_USER = git
|
||||||
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE=
|
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE=
|
||||||
|
|
||||||
[attachment]
|
|
||||||
PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/attachments
|
|
||||||
|
|
||||||
[mailer]
|
[mailer]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
PROTOCOL = dummy
|
PROTOCOL = dummy
|
||||||
FROM = sqlite-{{TEST_TYPE}}-test@gitea.io
|
FROM = sqlite-integration-test@gitea.io
|
||||||
|
|
||||||
[service]
|
[service]
|
||||||
REGISTER_EMAIL_CONFIRM = false
|
REGISTER_EMAIL_CONFIRM = false
|
||||||
@@ -76,16 +62,12 @@ NO_REPLY_ADDRESS = noreply.example.org
|
|||||||
[picture]
|
[picture]
|
||||||
DISABLE_GRAVATAR = false
|
DISABLE_GRAVATAR = false
|
||||||
ENABLE_FEDERATED_AVATAR = false
|
ENABLE_FEDERATED_AVATAR = false
|
||||||
AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/avatars
|
|
||||||
REPOSITORY_AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/repo-avatars
|
|
||||||
|
|
||||||
[session]
|
[session]
|
||||||
PROVIDER = file
|
PROVIDER = file
|
||||||
PROVIDER_CONFIG = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/sessions
|
|
||||||
|
|
||||||
[log]
|
[log]
|
||||||
MODE = {{TEST_LOGGER}}
|
MODE = {{TEST_LOGGER}}
|
||||||
ROOT_PATH = {{REPO_TEST_DIR}}sqlite-log
|
|
||||||
ENABLE_SSH_LOG = true
|
ENABLE_SSH_LOG = true
|
||||||
logger.xorm.MODE = file
|
logger.xorm.MODE = file
|
||||||
|
|
||||||
@@ -105,9 +87,6 @@ DISABLE_QUERY_AUTH_TOKEN = true
|
|||||||
[oauth2]
|
[oauth2]
|
||||||
JWT_SECRET = KZb_QLUd4fYVyxetjxC4eZkrBgWM2SndOOWDNtgUUko
|
JWT_SECRET = KZb_QLUd4fYVyxetjxC4eZkrBgWM2SndOOWDNtgUUko
|
||||||
|
|
||||||
[lfs]
|
|
||||||
PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-sqlite/data/lfs
|
|
||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
|
|
||||||
|
|||||||
@@ -24,11 +24,8 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func InitTest(requireGitea bool) {
|
func InitTest() {
|
||||||
testlogger.Init()
|
testlogger.Init()
|
||||||
|
|
||||||
setting.SetupGiteaTestEnv()
|
|
||||||
|
|
||||||
unittest.InitSettingsForTesting()
|
unittest.InitSettingsForTesting()
|
||||||
setting.Repository.DefaultBranch = "master" // many test code still assume that default branch is called "master"
|
setting.Repository.DefaultBranch = "master" // many test code still assume that default branch is called "master"
|
||||||
|
|
||||||
@@ -38,7 +35,7 @@ func InitTest(requireGitea bool) {
|
|||||||
|
|
||||||
setting.LoadDBSetting()
|
setting.LoadDBSetting()
|
||||||
if err := storage.Init(); err != nil {
|
if err := storage.Init(); err != nil {
|
||||||
testlogger.Fatalf("Init storage failed: %v\n", err)
|
testlogger.Panicf("Init storage failed: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
"stripInternal": true,
|
"stripInternal": true,
|
||||||
"verbatimModuleSyntax": true,
|
"verbatimModuleSyntax": true,
|
||||||
"types": [
|
"types": [
|
||||||
|
"node",
|
||||||
"webpack/module",
|
"webpack/module",
|
||||||
"vitest/globals",
|
"vitest/globals",
|
||||||
"./web_src/js/globals.d.ts",
|
"./web_src/js/globals.d.ts",
|
||||||
|
|||||||
Reference in New Issue
Block a user