diff --git a/Makefile b/Makefile index fb436b1ca8..6dedea12cc 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,7 @@ TEST_TAGS ?= sqlite sqlite_unlock_notify TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMANTIC_WORK_DIR)/node_modules $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR) $(GO_LICENSE_TMP_DIR) -GO_DIRS := cmd tests models modules routers build services tools +GO_DIRS := build cmd models modules routers services tests WEB_DIRS := web_src/js web_src/css GO_SOURCES := $(wildcard *.go) @@ -219,7 +219,6 @@ help: @echo " - tidy run go mod tidy" @echo " - test[\#TestSpecificName] run unit test" @echo " - test-sqlite[\#TestSpecificName] run integration test for sqlite" - @echo " - pr# build and start gitea from a PR with integration test data loaded" .PHONY: go-check go-check: @@ -353,7 +352,7 @@ lint-backend: golangci-lint vet editorconfig-checker .PHONY: watch watch: - bash tools/watch.sh + bash build/watch.sh .PHONY: watch-frontend watch-frontend: node-check node_modules @@ -939,10 +938,6 @@ generate-manpage: @gzip -9 man/man1/gitea.1 && echo man/man1/gitea.1.gz created @#TODO A small script that formats config-cheat-sheet.en-us.md nicely for use as a config man page -.PHONY: pr\#% -pr\#%: clean-all - $(GO) run contrib/pr/checkout.go $* - .PHONY: golangci-lint golangci-lint: $(GO) run $(GOLANGCI_LINT_PACKAGE) run diff --git a/build/backport-locales.go b/build/backport-locales.go index efaae52bd4..9421b6925e 100644 --- a/build/backport-locales.go +++ b/build/backport-locales.go @@ -1,3 +1,6 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + //go:build ignore package main diff --git a/build/code-batch-process.go b/build/code-batch-process.go index 9cc47442b2..8556c27ad7 100644 --- a/build/code-batch-process.go +++ b/build/code-batch-process.go @@ -65,7 +65,6 @@ func newFileCollector(fileFilter string, batchSize int) (*fileCollector, error) "modules", "routers", "services", - "tools", } co.includePatterns = append(co.includePatterns, regexp.MustCompile(`.*\.go$`)) diff --git a/build/test-echo.go b/build/test-echo.go new file mode 100644 index 0000000000..093364fcf8 --- /dev/null +++ b/build/test-echo.go @@ -0,0 +1,20 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +//go:build ignore + +package main + +import ( + "fmt" + "io" + "os" +) + +func main() { + _, err := io.Copy(os.Stdout, os.Stdin) + if err != nil { + fmt.Fprintf(os.Stderr, "Error: %v", err) + os.Exit(1) + } +} diff --git a/tools/watch.sh b/build/watch.sh similarity index 100% rename from tools/watch.sh rename to build/watch.sh diff --git a/contrib/autoboot.sh b/contrib/autoboot.sh deleted file mode 100755 index eb16d58170..0000000000 --- a/contrib/autoboot.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -su git -c "/home/git/gogs/scripts/gogs_supervisord.sh restart" diff --git a/contrib/mysql.sql b/contrib/mysql.sql deleted file mode 100644 index aad8beddfa..0000000000 --- a/contrib/mysql.sql +++ /dev/null @@ -1,2 +0,0 @@ -DROP DATABASE IF EXISTS gitea; -CREATE DATABASE IF NOT EXISTS gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; diff --git a/contrib/pr/checkout.go b/contrib/pr/checkout.go deleted file mode 100644 index f12d8a9419..0000000000 --- a/contrib/pr/checkout.go +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2020 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package main - -/* -Checkout a PR and load the tests data into sqlite database -*/ - -import ( - "context" - "flag" - "fmt" - "log" - "net/http" - "os" - "os/exec" - "os/user" - "path" - "path/filepath" - "runtime" - "strconv" - "time" - - "code.gitea.io/gitea/models/db" - "code.gitea.io/gitea/models/unittest" - gitea_git "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/graceful" - "code.gitea.io/gitea/modules/markup" - "code.gitea.io/gitea/modules/markup/external" - repo_module "code.gitea.io/gitea/modules/repository" - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/util" - "code.gitea.io/gitea/routers" - markup_service "code.gitea.io/gitea/services/markup" - - "github.com/go-git/go-git/v5" - "github.com/go-git/go-git/v5/config" - "github.com/go-git/go-git/v5/plumbing" - "xorm.io/xorm" -) - -var codeFilePath = "contrib/pr/checkout.go" - -func runPR() { - log.Printf("[PR] Starting gitea ...\n") - curDir, err := os.Getwd() - if err != nil { - log.Fatal(err) - } - setting.SetCustomPathAndConf("", "", "") - setting.InitProviderAllowEmpty() - setting.LoadCommonSettings() - - setting.RepoRootPath, err = os.MkdirTemp(os.TempDir(), "repos") - if err != nil { - log.Fatalf("TempDir: %v\n", err) - } - setting.AppDataPath, err = os.MkdirTemp(os.TempDir(), "appdata") - if err != nil { - log.Fatalf("TempDir: %v\n", err) - } - setting.AppWorkPath = curDir - setting.StaticRootPath = curDir - setting.GravatarSource = "https://secure.gravatar.com/avatar/" - setting.AppURL = "http://localhost:8080/" - setting.HTTPPort = "8080" - setting.SSH.Domain = "localhost" - setting.SSH.Port = 3000 - setting.InstallLock = true - setting.SecretKey = "9pCviYTWSb" - setting.InternalToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTI3OTU5ODN9.OQkH5UmzID2XBdwQ9TAI6Jj2t1X-wElVTjbE7aoN4I8" - curUser, err := user.Current() - if err != nil { - log.Fatal(err) - } - setting.RunUser = curUser.Username - - log.Printf("[PR] Loading fixtures data ...\n") - //models.LoadConfigs() - /* - setting.Database.Type = "sqlite3" - setting.Database.Path = ":memory:" - setting.Database.Timeout = 500 - */ - dbCfg := setting.CfgProvider.Section("database") - dbCfg.NewKey("DB_TYPE", "sqlite3") - dbCfg.NewKey("PATH", ":memory:") - - routers.InitGitServices() - setting.Database.LogSQL = true - // x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared") - - db.InitEngineWithMigration(context.Background(), func(_ *xorm.Engine) error { - return nil - }) - db.HasEngine = true - // x.ShowSQL(true) - err = unittest.InitFixtures( - unittest.FixturesOptions{ - Dir: path.Join(curDir, "models/fixtures/"), - }, - ) - if err != nil { - fmt.Printf("Error initializing test database: %v\n", err) - os.Exit(1) - } - unittest.LoadFixtures() - util.RemoveAll(setting.RepoRootPath) - util.RemoveAll(repo_module.LocalCopyPath()) - unittest.CopyDir(path.Join(curDir, "tests/gitea-repositories-meta"), setting.RepoRootPath) - - log.Printf("[PR] Setting up router\n") - // routers.GlobalInit() - external.RegisterRenderers() - markup.Init(markup_service.ProcessorHelper()) - c := routers.NormalRoutes(graceful.GetManager().HammerContext()) - - log.Printf("[PR] Ready for testing !\n") - log.Printf("[PR] Login with user1, user2, user3, ... with pass: password\n") - /* - log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubURL) - - if setting.LFS.StartServer { - log.Info("LFS server enabled") - } - - if setting.EnablePprof { - go func() { - log.Info("Starting pprof server on localhost:6060") - log.Info("%v", http.ListenAndServe("localhost:6060", nil)) - }() - } - */ - - // Start the server - http.ListenAndServe(":8080", c) - - log.Printf("[PR] Cleaning up ...\n") - /* - if err = util.RemoveAll(setting.Indexer.IssuePath); err != nil { - fmt.Printf("util.RemoveAll: %v\n", err) - os.Exit(1) - } - if err = util.RemoveAll(setting.Indexer.RepoPath); err != nil { - fmt.Printf("Unable to remove repo indexer: %v\n", err) - os.Exit(1) - } - */ - if err = util.RemoveAll(setting.RepoRootPath); err != nil { - log.Fatalf("util.RemoveAll: %v\n", err) - } - if err = util.RemoveAll(setting.AppDataPath); err != nil { - log.Fatalf("util.RemoveAll: %v\n", err) - } -} - -func main() { - runPRFlag := flag.Bool("run", false, "Run the PR code") - flag.Parse() - if *runPRFlag { - runPR() - return - } - - // To force checkout (e.g. Windows complains about unclean work tree) set env variable FORCE=true - force, err := strconv.ParseBool(os.Getenv("FORCE")) - if err != nil { - force = false - } - - // Otherwise checkout PR - if len(os.Args) != 2 { - log.Fatal("Need only one arg: the PR number") - } - pr := os.Args[1] - - codeFilePath = filepath.FromSlash(codeFilePath) // Convert to running OS - - // Copy this file if it will not exist in the PR branch - dat, err := os.ReadFile(codeFilePath) - if err != nil { - log.Fatalf("Failed to cache this code file : %v", err) - } - - repo, err := git.PlainOpen(".") - if err != nil { - log.Fatalf("Failed to open the repo : %v", err) - } - - // Find remote upstream - remotes, err := repo.Remotes() - if err != nil { - log.Fatalf("Failed to list remotes of repo : %v", err) - } - remoteUpstream := "origin" // Default - for _, r := range remotes { - if r.Config().URLs[0] == "https://github.com/go-gitea/gitea.git" || - r.Config().URLs[0] == "https://github.com/go-gitea/gitea" || - r.Config().URLs[0] == "git@github.com:go-gitea/gitea.git" { // fetch at index 0 - remoteUpstream = r.Config().Name - break - } - } - - branch := fmt.Sprintf("pr-%s-%d", pr, time.Now().Unix()) - branchRef := plumbing.NewBranchReferenceName(branch) - - log.Printf("Fetching PR #%s in %s\n", pr, branch) - if runtime.GOOS == "windows" { - // Use git cli command for windows - runCmd("git", "fetch", remoteUpstream, fmt.Sprintf("pull/%s/head:%s", pr, branch)) - } else { - ref := fmt.Sprintf("%s%s/head:%s", gitea_git.PullPrefix, pr, branchRef) - err = repo.Fetch(&git.FetchOptions{ - RemoteName: remoteUpstream, - RefSpecs: []config.RefSpec{ - config.RefSpec(ref), - }, - }) - if err != nil { - log.Fatalf("Failed to fetch %s from %s : %v", ref, remoteUpstream, err) - } - } - - tree, err := repo.Worktree() - if err != nil { - log.Fatalf("Failed to parse git tree : %v", err) - } - log.Printf("Checkout PR #%s in %s\n", pr, branch) - err = tree.Checkout(&git.CheckoutOptions{ - Branch: branchRef, - Force: force, - }) - if err != nil { - log.Fatalf("Failed to checkout %s : %v", branch, err) - } - - // Copy this file if not exist - if _, err := os.Stat(codeFilePath); os.IsNotExist(err) { - err = os.MkdirAll(filepath.Dir(codeFilePath), 0o755) - if err != nil { - log.Fatalf("Failed to duplicate this code file in PR : %v", err) - } - err = os.WriteFile(codeFilePath, dat, 0o644) - if err != nil { - log.Fatalf("Failed to duplicate this code file in PR : %v", err) - } - } - // Force build of js, css, bin, ... - runCmd("make", "build") - // Start with integration test - runCmd("go", "run", "-mod", "vendor", "-tags", "sqlite sqlite_unlock_notify", codeFilePath, "-run") -} - -func runCmd(cmd ...string) { - log.Printf("Executing : %s ...\n", cmd) - c := exec.Command(cmd[0], cmd[1:]...) - c.Stdout = os.Stdout - c.Stderr = os.Stderr - if err := c.Start(); err != nil { - log.Panicln(err) - } - if err := c.Wait(); err != nil { - log.Panicln(err) - } -} diff --git a/tests/sqlite.ini.tmpl b/tests/sqlite.ini.tmpl index f6f8c70ed9..d2e4a2d5ae 100644 --- a/tests/sqlite.ini.tmpl +++ b/tests/sqlite.ini.tmpl @@ -111,6 +111,6 @@ ENABLED = true [markup.html] ENABLED = true FILE_EXTENSIONS = .html -RENDER_COMMAND = `go run tools/external_renderer.go` +RENDER_COMMAND = `go run build/test-echo.go` IS_INPUT_FILE = false RENDER_CONTENT_MODE=sanitized diff --git a/tools/external_renderer.go b/tools/external_renderer.go deleted file mode 100644 index c1fcc78f50..0000000000 --- a/tools/external_renderer.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -// gobuild: external_renderer - -package main - -import ( - "fmt" - "io" - "os" -) - -func main() { - if len(os.Args) > 1 { - fmt.Print(os.Args[1]) - } else { - _, err := io.Copy(os.Stdout, os.Stdin) - if err != nil { - fmt.Println(err) - } - } -}