From 750a8465f547e9f08a87612c75898d56b8ec1f88 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Wed, 17 Nov 2021 20:34:35 +0800 Subject: [PATCH] A better go code formatter, and now `make fmt` can run in Windows (#17684) * go build / format tools * re-format imports --- Makefile | 12 +- build/code-batch-process.go | 284 +++++++++++++++++++++ build/codeformat/formatimports.go | 187 ++++++++++++++ build/codeformat/formatimports_test.go | 125 +++++++++ build/gitea-format-imports.go | 27 ++ cmd/doctor.go | 3 +- cmd/mailer.go | 1 + cmd/web.go | 3 +- integrations/api_issue_label_test.go | 3 +- integrations/api_private_serv_test.go | 1 + integrations/api_pull_commits_test.go | 1 + integrations/api_repo_git_notes_test.go | 1 + integrations/api_team_user_test.go | 1 + integrations/api_user_org_perm_test.go | 1 + integrations/download_test.go | 1 + integrations/eventsource_test.go | 1 + integrations/git_clone_wiki_test.go | 1 + integrations/goget_test.go | 1 + integrations/gpg_git_test.go | 1 + integrations/org_count_test.go | 1 + integrations/org_test.go | 1 + integrations/rename_branch_test.go | 1 + integrations/repo_migrate_test.go | 1 + integrations/repofiles_delete_test.go | 3 +- integrations/signup_test.go | 1 + integrations/user_avatar_test.go | 1 + models/access_test.go | 1 + models/admin_test.go | 1 + models/attachment_test.go | 1 + models/branches_test.go | 1 + models/commit_status_test.go | 1 + models/consistency_test.go | 1 + models/db/engine.go | 10 +- models/issue_assignees_test.go | 1 + models/issue_comment_test.go | 1 + models/issue_dependency_test.go | 1 + models/issue_label_test.go | 1 + models/issue_list.go | 1 + models/issue_test.go | 1 + models/issue_tracked_time_test.go | 1 + models/issue_user_test.go | 1 + models/issue_watch_test.go | 1 + models/migrations/v142.go | 1 + models/migrations/v144.go | 1 + models/migrations/v175.go | 1 + models/migrations/v177_test.go | 1 + models/migrations/v191.go | 1 + models/notification_test.go | 1 + models/org_team_test.go | 1 + models/pull_test.go | 1 + models/repo.go | 3 +- models/repo_collaboration_test.go | 1 + models/repo_indexer.go | 1 + models/repo_permission_test.go | 1 + models/repo_redirect_test.go | 1 + models/repo_transfer_test.go | 1 + models/review_test.go | 1 + models/ssh_key.go | 2 +- models/ssh_key_deploy.go | 1 + models/ssh_key_fingerprint.go | 1 + models/ssh_key_parse.go | 1 + models/star_test.go | 1 + models/token_test.go | 1 + models/topic_test.go | 1 + models/unittest/fixtures.go | 1 - models/user.go | 4 +- models/user_email.go | 1 + modules/convert/utils_test.go | 3 +- modules/doctor/fix16961.go | 1 + modules/doctor/fix16961_test.go | 1 + modules/git/commit_info_test.go | 1 + modules/git/pipeline/lfs.go | 1 + modules/git/repo_compare_test.go | 1 + modules/git/repo_tag_test.go | 1 + modules/highlight/highlight.go | 1 + modules/highlight/highlight_test.go | 1 + modules/indexer/issues/bleve_test.go | 1 + modules/indexer/issues/indexer_test.go | 3 +- modules/indexer/stats/indexer_test.go | 3 +- modules/log/file_test.go | 1 + modules/markup/mdstripper/mdstripper.go | 3 +- modules/markup/renderer_test.go | 1 + modules/notification/action/action_test.go | 1 + modules/queue/queue_disk_channel_test.go | 1 + modules/queue/queue_disk_test.go | 1 + modules/repofiles/blob_test.go | 1 - modules/repofiles/content_test.go | 1 - modules/repofiles/tree_test.go | 1 - modules/repository/commits_test.go | 1 + modules/setting/queue.go | 1 + routers/api/v1/api.go | 3 +- routers/utils/utils_test.go | 1 + routers/web/goget.go | 1 + routers/web/repo/issue_test.go | 1 + routers/web/web.go | 3 +- services/auth/signin.go | 3 +- services/auth/source/oauth2/store.go | 1 + services/auth/source/oauth2/token.go | 1 + services/cron/setting.go | 1 + services/forms/user_form_auth_openid.go | 1 + services/gitdiff/csv_test.go | 1 + services/issue/assignee_test.go | 1 + services/issue/label_test.go | 1 + services/repository/fork_test.go | 1 + services/webhook/deliver_test.go | 1 + services/webhook/webhook_test.go | 1 + 106 files changed, 731 insertions(+), 42 deletions(-) create mode 100644 build/code-batch-process.go create mode 100644 build/codeformat/formatimports.go create mode 100644 build/codeformat/formatimports_test.go create mode 100644 build/gitea-format-imports.go diff --git a/Makefile b/Makefile index ecd91680ee..eea9f7ad53 100644 --- a/Makefile +++ b/Makefile @@ -58,8 +58,6 @@ else SED_INPLACE := sed -i '' endif -GOFMT ?= gofmt -s - EXTRA_GOFLAGS ?= MAKE_VERSION := $(shell $(MAKE) -v | head -n 1) @@ -127,8 +125,6 @@ ifeq ($(filter $(TAGS_SPLIT),bindata),bindata) GO_SOURCES += $(BINDATA_DEST) endif -GO_SOURCES_OWN := $(filter-out vendor/% %/bindata.go, $(GO_SOURCES)) - #To update swagger use: GO111MODULE=on go get -u github.com/go-swagger/go-swagger/cmd/swagger SWAGGER := $(GO) run -mod=vendor github.com/go-swagger/go-swagger/cmd/swagger SWAGGER_SPEC := templates/swagger/v1_json.tmpl @@ -238,7 +234,7 @@ clean: .PHONY: fmt fmt: @echo "Running go fmt..." - @$(GOFMT) -w $(GO_SOURCES_OWN) + @$(GO) run build/code-batch-process.go gitea-fmt -s -w '{file-list}' .PHONY: vet vet: @@ -298,7 +294,7 @@ misspell-check: $(GO) install github.com/client9/misspell/cmd/misspell@v0.3.4; \ fi @echo "Running misspell-check..." - @misspell -error -i unknwon $(GO_SOURCES_OWN) + @$(GO) run build/code-batch-process.go misspell -error -i unknwon '{file-list}' .PHONY: misspell misspell: @@ -306,12 +302,12 @@ misspell: $(GO) install github.com/client9/misspell/cmd/misspell@v0.3.4; \ fi @echo "Running go misspell..." - @misspell -w -i unknwon $(GO_SOURCES_OWN) + @$(GO) run build/code-batch-process.go misspell -w -i unknwon '{file-list}' .PHONY: fmt-check fmt-check: # get all go files and run go fmt on them - @diff=$$($(GOFMT) -d $(GO_SOURCES_OWN)); \ + @diff=$$($(GO) run build/code-batch-process.go gitea-fmt -s -d '{file-list}'); \ if [ -n "$$diff" ]; then \ echo "Please run 'make fmt' and commit the result:"; \ echo "$${diff}"; \ diff --git a/build/code-batch-process.go b/build/code-batch-process.go new file mode 100644 index 0000000000..4759baf906 --- /dev/null +++ b/build/code-batch-process.go @@ -0,0 +1,284 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +//go:build ignore +// +build ignore + +package main + +import ( + "fmt" + "log" + "os" + "os/exec" + "path/filepath" + "regexp" + "strconv" + "strings" + + "code.gitea.io/gitea/build/codeformat" +) + +// Windows has a limitation for command line arguments, the size can not exceed 32KB. +// So we have to feed the files to some tools (like gofmt/misspell`) batch by batch + +// We also introduce a `gitea-fmt` command, it does better import formatting than gofmt/goimports + +var optionLogVerbose bool + +func logVerbose(msg string, args ...interface{}) { + if optionLogVerbose { + log.Printf(msg, args...) + } +} + +func passThroughCmd(cmd string, args []string) error { + foundCmd, err := exec.LookPath(cmd) + if err != nil { + log.Fatalf("can not find cmd: %s", cmd) + } + c := exec.Cmd{ + Path: foundCmd, + Args: args, + Stdin: os.Stdin, + Stdout: os.Stdout, + Stderr: os.Stderr, + } + return c.Run() +} + +type fileCollector struct { + dirs []string + includePatterns []*regexp.Regexp + excludePatterns []*regexp.Regexp + batchSize int +} + +func newFileCollector(fileFilter string, batchSize int) (*fileCollector, error) { + co := &fileCollector{batchSize: batchSize} + if fileFilter == "go-own" { + co.dirs = []string{ + "build", + "cmd", + "contrib", + "integrations", + "models", + "modules", + "routers", + "services", + "tools", + } + co.includePatterns = append(co.includePatterns, regexp.MustCompile(`.*\.go$`)) + + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`.*\bbindata\.go$`)) + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`integrations/gitea-repositories-meta`)) + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`integrations/migration-test`)) + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`modules/git/tests`)) + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`models/fixtures`)) + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`models/migrations/fixtures`)) + co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`services/gitdiff/testdata`)) + } + + if co.dirs == nil { + return nil, fmt.Errorf("unknown file-filter: %s", fileFilter) + } + return co, nil +} + +func (fc *fileCollector) matchPatterns(path string, regexps []*regexp.Regexp) bool { + path = strings.ReplaceAll(path, "\\", "/") + for _, re := range regexps { + if re.MatchString(path) { + return true + } + } + return false +} + +func (fc *fileCollector) collectFiles() (res [][]string, err error) { + var batch []string + for _, dir := range fc.dirs { + err = filepath.WalkDir(dir, func(path string, d os.DirEntry, err error) error { + include := len(fc.includePatterns) == 0 || fc.matchPatterns(path, fc.includePatterns) + exclude := fc.matchPatterns(path, fc.excludePatterns) + process := include && !exclude + if !process { + if d.IsDir() { + if exclude { + logVerbose("exclude dir %s", path) + return filepath.SkipDir + } + // for a directory, if it is not excluded explicitly, we should walk into + return nil + } + // for a file, we skip it if it shouldn't be processed + logVerbose("skip process %s", path) + return nil + } + if d.IsDir() { + // skip dir, we don't add dirs to the file list now + return nil + } + if len(batch) >= fc.batchSize { + res = append(res, batch) + batch = nil + } + batch = append(batch, path) + return nil + }) + if err != nil { + return nil, err + } + } + res = append(res, batch) + return res, nil +} + +// substArgFiles expands the {file-list} to a real file list for commands +func substArgFiles(args []string, files []string) []string { + for i, s := range args { + if s == "{file-list}" { + newArgs := append(args[:i], files...) + newArgs = append(newArgs, args[i+1:]...) + return newArgs + } + } + return args +} + +func exitWithCmdErrors(subCmd string, subArgs []string, cmdErrors []error) { + for _, err := range cmdErrors { + if err != nil { + if exitError, ok := err.(*exec.ExitError); ok { + exitCode := exitError.ExitCode() + log.Printf("run command failed (code=%d): %s %v", exitCode, subCmd, subArgs) + os.Exit(exitCode) + } else { + log.Fatalf("run command failed (err=%s) %s %v", err, subCmd, subArgs) + } + } + } +} + +func parseArgs() (mainOptions map[string]string, subCmd string, subArgs []string) { + mainOptions = map[string]string{} + for i := 1; i < len(os.Args); i++ { + arg := os.Args[i] + if arg == "" { + break + } + if arg[0] == '-' { + arg = strings.TrimPrefix(arg, "-") + arg = strings.TrimPrefix(arg, "-") + fields := strings.SplitN(arg, "=", 2) + if len(fields) == 1 { + mainOptions[fields[0]] = "1" + } else { + mainOptions[fields[0]] = fields[1] + } + } else { + subCmd = arg + subArgs = os.Args[i+1:] + break + } + } + return +} + +func showUsage() { + fmt.Printf(`Usage: %[1]s [options] {command} [arguments] + +Options: + --verbose + --file-filter=go-own + --batch-size=100 + +Commands: + %[1]s gofmt ... + %[1]s misspell ... + +Arguments: + {file-list} the file list + +Example: + %[1]s gofmt -s -d {file-list} + +`, "file-batch-exec") +} + +func newFileCollectorFromMainOptions(mainOptions map[string]string) (fc *fileCollector, err error) { + fileFilter := mainOptions["file-filter"] + if fileFilter == "" { + fileFilter = "go-own" + } + batchSize, _ := strconv.Atoi(mainOptions["batch-size"]) + if batchSize == 0 { + batchSize = 100 + } + + return newFileCollector(fileFilter, batchSize) +} + +func containsString(a []string, s string) bool { + for _, v := range a { + if v == s { + return true + } + } + return false +} + +func giteaFormatGoImports(files []string) error { + for _, file := range files { + if err := codeformat.FormatGoImports(file); err != nil { + log.Printf("failed to format go imports: %s, err=%v", file, err) + return err + } + } + return nil +} + +func main() { + mainOptions, subCmd, subArgs := parseArgs() + if subCmd == "" { + showUsage() + os.Exit(1) + } + optionLogVerbose = mainOptions["verbose"] != "" + + fc, err := newFileCollectorFromMainOptions(mainOptions) + if err != nil { + log.Fatalf("can not create file collector: %s", err.Error()) + } + + fileBatches, err := fc.collectFiles() + if err != nil { + log.Fatalf("can not collect files: %s", err.Error()) + } + + processed := 0 + var cmdErrors []error + for _, files := range fileBatches { + if len(files) == 0 { + break + } + substArgs := substArgFiles(subArgs, files) + logVerbose("batch cmd: %s %v", subCmd, substArgs) + switch subCmd { + case "gitea-fmt": + cmdErrors = append(cmdErrors, passThroughCmd("gofmt", substArgs)) + if containsString(subArgs, "-w") { + cmdErrors = append(cmdErrors, giteaFormatGoImports(files)) + } + case "misspell": + cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs)) + default: + log.Fatalf("unknown cmd: %s %v", subCmd, subArgs) + } + processed += len(files) + } + + logVerbose("processed %d files", processed) + exitWithCmdErrors(subCmd, subArgs, cmdErrors) +} diff --git a/build/codeformat/formatimports.go b/build/codeformat/formatimports.go new file mode 100644 index 0000000000..c6427f6a99 --- /dev/null +++ b/build/codeformat/formatimports.go @@ -0,0 +1,187 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package codeformat + +import ( + "bytes" + "errors" + "io" + "os" + "sort" + "strings" +) + +var importPackageGroupOrders = map[string]int{ + "": 1, // internal + "code.gitea.io/gitea/": 2, +} + +var errInvalidCommentBetweenImports = errors.New("comments between imported packages are invalid, please move comments to the end of the package line") + +var importBlockBegin = []byte("\nimport (\n") +var importBlockEnd = []byte("\n)") + +type importLineParsed struct { + group string + pkg string + content string +} + +func parseImportLine(line string) (*importLineParsed, error) { + il := &importLineParsed{content: line} + p1 := strings.IndexRune(line, '"') + if p1 == -1 { + return nil, errors.New("invalid import line: " + line) + } + p1++ + p := strings.IndexRune(line[p1:], '"') + if p == -1 { + return nil, errors.New("invalid import line: " + line) + } + p2 := p1 + p + il.pkg = line[p1:p2] + + pDot := strings.IndexRune(il.pkg, '.') + pSlash := strings.IndexRune(il.pkg, '/') + if pDot != -1 && pDot < pSlash { + il.group = "domain-package" + } + for groupName := range importPackageGroupOrders { + if groupName == "" { + continue // skip internal + } + if strings.HasPrefix(il.pkg, groupName) { + il.group = groupName + } + } + return il, nil +} + +type importLineGroup []*importLineParsed +type importLineGroupMap map[string]importLineGroup + +func formatGoImports(contentBytes []byte) ([]byte, error) { + p1 := bytes.Index(contentBytes, importBlockBegin) + if p1 == -1 { + return nil, nil + } + p1 += len(importBlockBegin) + p := bytes.Index(contentBytes[p1:], importBlockEnd) + if p == -1 { + return nil, nil + } + p2 := p1 + p + + importGroups := importLineGroupMap{} + r := bytes.NewBuffer(contentBytes[p1:p2]) + eof := false + for !eof { + line, err := r.ReadString('\n') + eof = err == io.EOF + if err != nil && !eof { + return nil, err + } + line = strings.TrimSpace(line) + if line != "" { + if strings.HasPrefix(line, "//") || strings.HasPrefix(line, "/*") { + return nil, errInvalidCommentBetweenImports + } + importLine, err := parseImportLine(line) + if err != nil { + return nil, err + } + importGroups[importLine.group] = append(importGroups[importLine.group], importLine) + } + } + + var groupNames []string + for groupName, importLines := range importGroups { + groupNames = append(groupNames, groupName) + sort.Slice(importLines, func(i, j int) bool { + return strings.Compare(importLines[i].pkg, importLines[j].pkg) < 0 + }) + } + + sort.Slice(groupNames, func(i, j int) bool { + n1 := groupNames[i] + n2 := groupNames[j] + o1 := importPackageGroupOrders[n1] + o2 := importPackageGroupOrders[n2] + if o1 != 0 && o2 != 0 { + return o1 < o2 + } + if o1 == 0 && o2 == 0 { + return strings.Compare(n1, n2) < 0 + } + return o1 != 0 + }) + + formattedBlock := bytes.Buffer{} + for _, groupName := range groupNames { + hasNormalImports := false + hasDummyImports := false + // non-dummy import comes first + for _, importLine := range importGroups[groupName] { + if strings.HasPrefix(importLine.content, "_") { + hasDummyImports = true + } else { + formattedBlock.WriteString("\t" + importLine.content + "\n") + hasNormalImports = true + } + } + // dummy (_ "pkg") comes later + if hasDummyImports { + if hasNormalImports { + formattedBlock.WriteString("\n") + } + for _, importLine := range importGroups[groupName] { + if strings.HasPrefix(importLine.content, "_") { + formattedBlock.WriteString("\t" + importLine.content + "\n") + } + } + } + formattedBlock.WriteString("\n") + } + formattedBlockBytes := bytes.TrimRight(formattedBlock.Bytes(), "\n") + + var formattedBytes []byte + formattedBytes = append(formattedBytes, contentBytes[:p1]...) + formattedBytes = append(formattedBytes, formattedBlockBytes...) + formattedBytes = append(formattedBytes, contentBytes[p2:]...) + return formattedBytes, nil +} + +//FormatGoImports format the imports by our rules (see unit tests) +func FormatGoImports(file string) error { + f, err := os.Open(file) + if err != nil { + return err + } + var contentBytes []byte + { + defer f.Close() + contentBytes, err = io.ReadAll(f) + if err != nil { + return err + } + } + formattedBytes, err := formatGoImports(contentBytes) + if err != nil { + return err + } + if formattedBytes == nil { + return nil + } + if bytes.Equal(contentBytes, formattedBytes) { + return nil + } + f, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0644) + if err != nil { + return err + } + defer f.Close() + _, err = f.Write(formattedBytes) + return err +} diff --git a/build/codeformat/formatimports_test.go b/build/codeformat/formatimports_test.go new file mode 100644 index 0000000000..d308353bda --- /dev/null +++ b/build/codeformat/formatimports_test.go @@ -0,0 +1,125 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package codeformat + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestFormatImportsSimple(t *testing.T) { + formatted, err := formatGoImports([]byte(` +package codeformat + +import ( + "github.com/stretchr/testify/assert" + "testing" +) +`)) + + expected := ` +package codeformat + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) +` + + assert.NoError(t, err) + assert.Equal(t, expected, string(formatted)) +} + +func TestFormatImportsGroup(t *testing.T) { + // gofmt/goimports won't group the packages, for example, they produce such code: + // "bytes" + // "image" + // (a blank line) + // "fmt" + // "image/color/palette" + // our formatter does better, and these packages are grouped into one. + + formatted, err := formatGoImports([]byte(` +package test + +import ( + "bytes" + "fmt" + "image" + "image/color/palette" + + _ "image/gif" // for processing gif images + _ "image/jpeg" // for processing jpeg images + _ "image/png" // for processing png images + + "code.gitea.io/other/package" + + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" + + "xorm.io/the/package" + + "github.com/issue9/identicon" + "github.com/nfnt/resize" + "github.com/oliamb/cutter" +) +`)) + + expected := ` +package test + +import ( + "bytes" + "fmt" + "image" + "image/color/palette" + + _ "image/gif" // for processing gif images + _ "image/jpeg" // for processing jpeg images + _ "image/png" // for processing png images + + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" + + "code.gitea.io/other/package" + "github.com/issue9/identicon" + "github.com/nfnt/resize" + "github.com/oliamb/cutter" + "xorm.io/the/package" +) +` + + assert.NoError(t, err) + assert.Equal(t, expected, string(formatted)) +} + +func TestFormatImportsInvalidComment(t *testing.T) { + // why we shouldn't write comments between imports: it breaks the grouping of imports + // for example: + // "pkg1" + // "pkg2" + // // a comment + // "pkgA" + // "pkgB" + // the comment splits the packages into two groups, pkg1/2 are sorted separately, pkgA/B are sorted separately + // we don't want such code, so the code should be: + // "pkg1" + // "pkg2" + // "pkgA" // a comment + // "pkgB" + + _, err := formatGoImports([]byte(` +package test + +import ( + "image/jpeg" + // for processing gif images + "image/gif" +) +`)) + assert.ErrorIs(t, err, errInvalidCommentBetweenImports) +} diff --git a/build/gitea-format-imports.go b/build/gitea-format-imports.go new file mode 100644 index 0000000000..67c8397b2d --- /dev/null +++ b/build/gitea-format-imports.go @@ -0,0 +1,27 @@ +// Copyright 2021 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +//go:build ignore +// +build ignore + +package main + +import ( + "log" + "os" + + "code.gitea.io/gitea/build/codeformat" +) + +func main() { + if len(os.Args) <= 1 { + log.Fatalf("Usage: gitea-format-imports [files...]") + } + + for _, file := range os.Args[1:] { + if err := codeformat.FormatGoImports(file); err != nil { + log.Fatalf("can not format file %s, err=%v", file, err) + } + } +} diff --git a/cmd/doctor.go b/cmd/doctor.go index 498b859e41..27f91e41bb 100644 --- a/cmd/doctor.go +++ b/cmd/doctor.go @@ -18,9 +18,8 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" - "xorm.io/xorm" - "github.com/urfave/cli" + "xorm.io/xorm" ) // CmdDoctor represents the available doctor sub-command. diff --git a/cmd/mailer.go b/cmd/mailer.go index 1a4b0902e2..a3d6baaa27 100644 --- a/cmd/mailer.go +++ b/cmd/mailer.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" + "github.com/urfave/cli" ) diff --git a/cmd/web.go b/cmd/web.go index 80516058fb..4b6dfa71a2 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -9,10 +9,11 @@ import ( "fmt" "net" "net/http" - _ "net/http/pprof" // Used for debugging if enabled and a web server is running "os" "strings" + _ "net/http/pprof" // Used for debugging if enabled and a web server is running + "code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" diff --git a/integrations/api_issue_label_test.go b/integrations/api_issue_label_test.go index 7cb5df812b..58e09c818e 100644 --- a/integrations/api_issue_label_test.go +++ b/integrations/api_issue_label_test.go @@ -10,9 +10,8 @@ import ( "strings" "testing" - "code.gitea.io/gitea/models/unittest" - "code.gitea.io/gitea/models" + "code.gitea.io/gitea/models/unittest" api "code.gitea.io/gitea/modules/structs" "github.com/stretchr/testify/assert" diff --git a/integrations/api_private_serv_test.go b/integrations/api_private_serv_test.go index 8d814271cd..c3cb1cf328 100644 --- a/integrations/api_private_serv_test.go +++ b/integrations/api_private_serv_test.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/private" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/api_pull_commits_test.go b/integrations/api_pull_commits_test.go index c537f00208..a3d1bee58a 100644 --- a/integrations/api_pull_commits_test.go +++ b/integrations/api_pull_commits_test.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/api_repo_git_notes_test.go b/integrations/api_repo_git_notes_test.go index 21b8a931b0..293bd769f4 100644 --- a/integrations/api_repo_git_notes_test.go +++ b/integrations/api_repo_git_notes_test.go @@ -12,6 +12,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/api_team_user_test.go b/integrations/api_team_user_test.go index 7e5bb0802e..e7f4b0ee4c 100644 --- a/integrations/api_team_user_test.go +++ b/integrations/api_team_user_test.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/convert" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/api_user_org_perm_test.go b/integrations/api_user_org_perm_test.go index abba24701e..0dcdbd77ad 100644 --- a/integrations/api_user_org_perm_test.go +++ b/integrations/api_user_org_perm_test.go @@ -10,6 +10,7 @@ import ( "testing" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/download_test.go b/integrations/download_test.go index 38de75f476..f46122d951 100644 --- a/integrations/download_test.go +++ b/integrations/download_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/modules/setting" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/eventsource_test.go b/integrations/eventsource_test.go index ead01da8ca..eb08c004a8 100644 --- a/integrations/eventsource_test.go +++ b/integrations/eventsource_test.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/eventsource" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/git_clone_wiki_test.go b/integrations/git_clone_wiki_test.go index 2139ce5fe0..16cee254bc 100644 --- a/integrations/git_clone_wiki_test.go +++ b/integrations/git_clone_wiki_test.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/goget_test.go b/integrations/goget_test.go index 1003d71023..5dc9c5e0a8 100644 --- a/integrations/goget_test.go +++ b/integrations/goget_test.go @@ -10,6 +10,7 @@ import ( "testing" "code.gitea.io/gitea/modules/setting" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/gpg_git_test.go b/integrations/gpg_git_test.go index ecc2539784..b136e82281 100644 --- a/integrations/gpg_git_test.go +++ b/integrations/gpg_git_test.go @@ -17,6 +17,7 @@ import ( "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" "golang.org/x/crypto/openpgp" "golang.org/x/crypto/openpgp/armor" diff --git a/integrations/org_count_test.go b/integrations/org_count_test.go index c473ecd68a..a394dba01c 100644 --- a/integrations/org_count_test.go +++ b/integrations/org_count_test.go @@ -12,6 +12,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/org_test.go b/integrations/org_test.go index ac234de650..e94e4ea74c 100644 --- a/integrations/org_test.go +++ b/integrations/org_test.go @@ -11,6 +11,7 @@ import ( "testing" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/rename_branch_test.go b/integrations/rename_branch_test.go index a8138ff0c5..1fe1983054 100644 --- a/integrations/rename_branch_test.go +++ b/integrations/rename_branch_test.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/repo_migrate_test.go b/integrations/repo_migrate_test.go index 5a02b4ba03..e6ba15b137 100644 --- a/integrations/repo_migrate_test.go +++ b/integrations/repo_migrate_test.go @@ -11,6 +11,7 @@ import ( "testing" "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/integrations/repofiles_delete_test.go b/integrations/repofiles_delete_test.go index 8150673e2b..eb73348950 100644 --- a/integrations/repofiles_delete_test.go +++ b/integrations/repofiles_delete_test.go @@ -8,9 +8,8 @@ import ( "net/url" "testing" - "code.gitea.io/gitea/models/unittest" - "code.gitea.io/gitea/models" + "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/repofiles" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/test" diff --git a/integrations/signup_test.go b/integrations/signup_test.go index 33e5809b28..38aa069f31 100644 --- a/integrations/signup_test.go +++ b/integrations/signup_test.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/setting" + "github.com/stretchr/testify/assert" "github.com/unknwon/i18n" ) diff --git a/integrations/user_avatar_test.go b/integrations/user_avatar_test.go index e53f0e34fe..edc3a47314 100644 --- a/integrations/user_avatar_test.go +++ b/integrations/user_avatar_test.go @@ -16,6 +16,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/avatar" + "github.com/stretchr/testify/assert" ) diff --git a/models/access_test.go b/models/access_test.go index 96aa34edb6..942ca4af42 100644 --- a/models/access_test.go +++ b/models/access_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/admin_test.go b/models/admin_test.go index 95415731b2..8c1deda5f8 100644 --- a/models/admin_test.go +++ b/models/admin_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/attachment_test.go b/models/attachment_test.go index c394990536..4081811d19 100644 --- a/models/attachment_test.go +++ b/models/attachment_test.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/branches_test.go b/models/branches_test.go index 787dd7fe83..187f23d41b 100644 --- a/models/branches_test.go +++ b/models/branches_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/commit_status_test.go b/models/commit_status_test.go index 32d6a433ce..02e3849357 100644 --- a/models/commit_status_test.go +++ b/models/commit_status_test.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" ) diff --git a/models/consistency_test.go b/models/consistency_test.go index 6995f47c87..d49a0132f0 100644 --- a/models/consistency_test.go +++ b/models/consistency_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/db/engine.go b/models/db/engine.go index e392008020..b97e954cc3 100755 --- a/models/db/engine.go +++ b/models/db/engine.go @@ -16,17 +16,13 @@ import ( "code.gitea.io/gitea/modules/setting" - // Needed for the MySQL driver - _ "github.com/go-sql-driver/mysql" "xorm.io/xorm" "xorm.io/xorm/names" "xorm.io/xorm/schemas" - // Needed for the Postgresql driver - _ "github.com/lib/pq" - - // Needed for the MSSQL driver - _ "github.com/denisenkom/go-mssqldb" + _ "github.com/denisenkom/go-mssqldb" // Needed for the MSSQL driver + _ "github.com/go-sql-driver/mysql" // Needed for the MySQL driver + _ "github.com/lib/pq" // Needed for the Postgresql driver ) var ( diff --git a/models/issue_assignees_test.go b/models/issue_assignees_test.go index 8e2256072a..d1ce000de6 100644 --- a/models/issue_assignees_test.go +++ b/models/issue_assignees_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_comment_test.go b/models/issue_comment_test.go index 27c50a3ae4..4d3607b3e1 100644 --- a/models/issue_comment_test.go +++ b/models/issue_comment_test.go @@ -9,6 +9,7 @@ import ( "time" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_dependency_test.go b/models/issue_dependency_test.go index c357d35c50..86ac98b733 100644 --- a/models/issue_dependency_test.go +++ b/models/issue_dependency_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_label_test.go b/models/issue_label_test.go index 658c459ba5..d0f807a56e 100644 --- a/models/issue_label_test.go +++ b/models/issue_label_test.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_list.go b/models/issue_list.go index ac7ec7ccbf..04dcc58422 100644 --- a/models/issue_list.go +++ b/models/issue_list.go @@ -8,6 +8,7 @@ import ( "fmt" "code.gitea.io/gitea/models/db" + "xorm.io/builder" ) diff --git a/models/issue_test.go b/models/issue_test.go index f53febb1b3..7942b7e785 100644 --- a/models/issue_test.go +++ b/models/issue_test.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_tracked_time_test.go b/models/issue_tracked_time_test.go index 9bc9664521..83420f5a15 100644 --- a/models/issue_tracked_time_test.go +++ b/models/issue_tracked_time_test.go @@ -9,6 +9,7 @@ import ( "time" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_user_test.go b/models/issue_user_test.go index 1be2763703..daa68d731e 100644 --- a/models/issue_user_test.go +++ b/models/issue_user_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/issue_watch_test.go b/models/issue_watch_test.go index 18d49bfce5..f75677d68c 100644 --- a/models/issue_watch_test.go +++ b/models/issue_watch_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/migrations/v142.go b/models/migrations/v142.go index 1abdd34961..d8ccc112d6 100644 --- a/models/migrations/v142.go +++ b/models/migrations/v142.go @@ -6,6 +6,7 @@ package migrations import ( "code.gitea.io/gitea/modules/log" + "xorm.io/builder" "xorm.io/xorm" ) diff --git a/models/migrations/v144.go b/models/migrations/v144.go index 311bb93e3b..81279a54c9 100644 --- a/models/migrations/v144.go +++ b/models/migrations/v144.go @@ -6,6 +6,7 @@ package migrations import ( "code.gitea.io/gitea/modules/log" + "xorm.io/builder" "xorm.io/xorm" ) diff --git a/models/migrations/v175.go b/models/migrations/v175.go index 0044ed1845..2dfefe987b 100644 --- a/models/migrations/v175.go +++ b/models/migrations/v175.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "xorm.io/xorm" ) diff --git a/models/migrations/v177_test.go b/models/migrations/v177_test.go index 02cb1d2652..f5fc793aa4 100644 --- a/models/migrations/v177_test.go +++ b/models/migrations/v177_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/modules/timeutil" + "github.com/stretchr/testify/assert" ) diff --git a/models/migrations/v191.go b/models/migrations/v191.go index 10dfad4f04..c91990e0f3 100644 --- a/models/migrations/v191.go +++ b/models/migrations/v191.go @@ -6,6 +6,7 @@ package migrations import ( "code.gitea.io/gitea/modules/setting" + "xorm.io/xorm" ) diff --git a/models/notification_test.go b/models/notification_test.go index db2164a2f5..19fad25f99 100644 --- a/models/notification_test.go +++ b/models/notification_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/org_team_test.go b/models/org_team_test.go index 9277ac4f5e..b912dd83f2 100644 --- a/models/org_team_test.go +++ b/models/org_team_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/pull_test.go b/models/pull_test.go index 0225b421fb..c967cca313 100644 --- a/models/pull_test.go +++ b/models/pull_test.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/repo.go b/models/repo.go index 16396e181d..d45f1b2fc3 100644 --- a/models/repo.go +++ b/models/repo.go @@ -10,7 +10,6 @@ import ( "errors" "fmt" "html/template" - _ "image/jpeg" // Needed for jpeg support "net" "net/url" "os" @@ -22,6 +21,8 @@ import ( "time" "unicode/utf8" + _ "image/jpeg" // Needed for jpeg support + "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/webhook" diff --git a/models/repo_collaboration_test.go b/models/repo_collaboration_test.go index 9b698c0af6..060afc2139 100644 --- a/models/repo_collaboration_test.go +++ b/models/repo_collaboration_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/repo_indexer.go b/models/repo_indexer.go index 7029b0922b..e0511b325e 100644 --- a/models/repo_indexer.go +++ b/models/repo_indexer.go @@ -8,6 +8,7 @@ import ( "fmt" "code.gitea.io/gitea/models/db" + "xorm.io/builder" ) diff --git a/models/repo_permission_test.go b/models/repo_permission_test.go index b64fe37911..180a85a2f5 100644 --- a/models/repo_permission_test.go +++ b/models/repo_permission_test.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/repo_redirect_test.go b/models/repo_redirect_test.go index a9d3cc1494..6e5b9fc080 100644 --- a/models/repo_redirect_test.go +++ b/models/repo_redirect_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/repo_transfer_test.go b/models/repo_transfer_test.go index df4f83919b..368fea598d 100644 --- a/models/repo_transfer_test.go +++ b/models/repo_transfer_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/review_test.go b/models/review_test.go index 2d07ea2ce4..7b8b86df13 100644 --- a/models/review_test.go +++ b/models/review_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/ssh_key.go b/models/ssh_key.go index c08fb72e75..baa0d2a54f 100644 --- a/models/ssh_key.go +++ b/models/ssh_key.go @@ -15,8 +15,8 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/util" - "golang.org/x/crypto/ssh" + "golang.org/x/crypto/ssh" "xorm.io/builder" ) diff --git a/models/ssh_key_deploy.go b/models/ssh_key_deploy.go index 34cf03e925..4e3910d556 100644 --- a/models/ssh_key_deploy.go +++ b/models/ssh_key_deploy.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/timeutil" + "xorm.io/builder" "xorm.io/xorm" ) diff --git a/models/ssh_key_fingerprint.go b/models/ssh_key_fingerprint.go index 93c455e489..85296c961c 100644 --- a/models/ssh_key_fingerprint.go +++ b/models/ssh_key_fingerprint.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "golang.org/x/crypto/ssh" ) diff --git a/models/ssh_key_parse.go b/models/ssh_key_parse.go index d2c24b0a2a..748c66da7d 100644 --- a/models/ssh_key_parse.go +++ b/models/ssh_key_parse.go @@ -22,6 +22,7 @@ import ( "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "golang.org/x/crypto/ssh" ) diff --git a/models/star_test.go b/models/star_test.go index e131372733..f9a7ddb0f2 100644 --- a/models/star_test.go +++ b/models/star_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/token_test.go b/models/token_test.go index 191da7820e..007148870a 100644 --- a/models/token_test.go +++ b/models/token_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/topic_test.go b/models/topic_test.go index def946b666..a38ed64940 100644 --- a/models/topic_test.go +++ b/models/topic_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/models/unittest/fixtures.go b/models/unittest/fixtures.go index af60df7b68..6277d1c725 100644 --- a/models/unittest/fixtures.go +++ b/models/unittest/fixtures.go @@ -12,7 +12,6 @@ import ( "code.gitea.io/gitea/models/db" "github.com/go-testfixtures/testfixtures/v3" - "xorm.io/xorm" "xorm.io/xorm/schemas" ) diff --git a/models/user.go b/models/user.go index e3cf94efe0..a87929a35f 100644 --- a/models/user.go +++ b/models/user.go @@ -12,7 +12,6 @@ import ( "encoding/hex" "errors" "fmt" - _ "image/jpeg" // Needed for jpeg support "net/url" "os" "path/filepath" @@ -21,6 +20,8 @@ import ( "time" "unicode/utf8" + _ "image/jpeg" // Needed for jpeg support + "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/login" "code.gitea.io/gitea/models/unit" @@ -39,7 +40,6 @@ import ( "golang.org/x/crypto/bcrypt" "golang.org/x/crypto/pbkdf2" "golang.org/x/crypto/scrypt" - "xorm.io/builder" "xorm.io/xorm" ) diff --git a/models/user_email.go b/models/user_email.go index 7de577bc2c..bd0da65405 100644 --- a/models/user_email.go +++ b/models/user_email.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models/db" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/util" + "xorm.io/builder" ) diff --git a/modules/convert/utils_test.go b/modules/convert/utils_test.go index bd59299c01..e0ab15dfd8 100644 --- a/modules/convert/utils_test.go +++ b/modules/convert/utils_test.go @@ -7,8 +7,9 @@ package convert import ( "testing" - _ "github.com/mattn/go-sqlite3" "github.com/stretchr/testify/assert" + + _ "github.com/mattn/go-sqlite3" ) func TestToCorrectPageSize(t *testing.T) { diff --git a/modules/doctor/fix16961.go b/modules/doctor/fix16961.go index e0e44b414b..2e1db834cd 100644 --- a/modules/doctor/fix16961.go +++ b/modules/doctor/fix16961.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/timeutil" + "xorm.io/builder" ) diff --git a/modules/doctor/fix16961_test.go b/modules/doctor/fix16961_test.go index 017f585335..986425b4d8 100644 --- a/modules/doctor/fix16961_test.go +++ b/modules/doctor/fix16961_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models" + "github.com/stretchr/testify/assert" ) diff --git a/modules/git/commit_info_test.go b/modules/git/commit_info_test.go index 0608801f9d..8467bdaa90 100644 --- a/modules/git/commit_info_test.go +++ b/modules/git/commit_info_test.go @@ -12,6 +12,7 @@ import ( "time" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/git/pipeline/lfs.go b/modules/git/pipeline/lfs.go index 46a48b710c..4551ccd3f4 100644 --- a/modules/git/pipeline/lfs.go +++ b/modules/git/pipeline/lfs.go @@ -17,6 +17,7 @@ import ( "time" "code.gitea.io/gitea/modules/git" + gogit "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing/object" ) diff --git a/modules/git/repo_compare_test.go b/modules/git/repo_compare_test.go index 3a6cda955c..ecd1aa4e6d 100644 --- a/modules/git/repo_compare_test.go +++ b/modules/git/repo_compare_test.go @@ -11,6 +11,7 @@ import ( "testing" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/git/repo_tag_test.go b/modules/git/repo_tag_test.go index cfab9edd8f..136287e1a9 100644 --- a/modules/git/repo_tag_test.go +++ b/modules/git/repo_tag_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/highlight/highlight.go b/modules/highlight/highlight.go index 6684fbe842..9a876d2a6b 100644 --- a/modules/highlight/highlight.go +++ b/modules/highlight/highlight.go @@ -17,6 +17,7 @@ import ( "code.gitea.io/gitea/modules/analyze" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "github.com/alecthomas/chroma" "github.com/alecthomas/chroma/formatters/html" "github.com/alecthomas/chroma/lexers" diff --git a/modules/highlight/highlight_test.go b/modules/highlight/highlight_test.go index 0a67e4c602..29a15c0b53 100644 --- a/modules/highlight/highlight_test.go +++ b/modules/highlight/highlight_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/modules/setting" + "gopkg.in/ini.v1" ) diff --git a/modules/indexer/issues/bleve_test.go b/modules/indexer/issues/bleve_test.go index 70a9582e1d..036b318d85 100644 --- a/modules/indexer/issues/bleve_test.go +++ b/modules/indexer/issues/bleve_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/indexer/issues/indexer_test.go b/modules/indexer/issues/indexer_test.go index edfaddb648..8353891c7c 100644 --- a/modules/indexer/issues/indexer_test.go +++ b/modules/indexer/issues/indexer_test.go @@ -15,9 +15,8 @@ import ( "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" - "gopkg.in/ini.v1" - "github.com/stretchr/testify/assert" + "gopkg.in/ini.v1" ) func TestMain(m *testing.M) { diff --git a/modules/indexer/stats/indexer_test.go b/modules/indexer/stats/indexer_test.go index c451e80238..f52d73a32e 100644 --- a/modules/indexer/stats/indexer_test.go +++ b/modules/indexer/stats/indexer_test.go @@ -13,9 +13,8 @@ import ( "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/setting" - "gopkg.in/ini.v1" - "github.com/stretchr/testify/assert" + "gopkg.in/ini.v1" ) func TestMain(m *testing.M) { diff --git a/modules/log/file_test.go b/modules/log/file_test.go index 39d2467a1f..09a07b1e27 100644 --- a/modules/log/file_test.go +++ b/modules/log/file_test.go @@ -15,6 +15,7 @@ import ( "time" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/markup/mdstripper/mdstripper.go b/modules/markup/mdstripper/mdstripper.go index 52464f3e1b..2977c81977 100644 --- a/modules/markup/mdstripper/mdstripper.go +++ b/modules/markup/mdstripper/mdstripper.go @@ -6,12 +6,11 @@ package mdstripper import ( "bytes" + "io" "net/url" "strings" "sync" - "io" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/markup/common" "code.gitea.io/gitea/modules/setting" diff --git a/modules/markup/renderer_test.go b/modules/markup/renderer_test.go index 118fa2632b..4cfa022463 100644 --- a/modules/markup/renderer_test.go +++ b/modules/markup/renderer_test.go @@ -8,6 +8,7 @@ import ( "testing" . "code.gitea.io/gitea/modules/markup" + _ "code.gitea.io/gitea/modules/markup/markdown" "github.com/stretchr/testify/assert" diff --git a/modules/notification/action/action_test.go b/modules/notification/action/action_test.go index 3adcae83fd..448242bcdf 100644 --- a/modules/notification/action/action_test.go +++ b/modules/notification/action/action_test.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/modules/queue/queue_disk_channel_test.go b/modules/queue/queue_disk_channel_test.go index 99fb65934e..d464a183a0 100644 --- a/modules/queue/queue_disk_channel_test.go +++ b/modules/queue/queue_disk_channel_test.go @@ -10,6 +10,7 @@ import ( "testing" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/queue/queue_disk_test.go b/modules/queue/queue_disk_test.go index 549a04104e..a2c21fec08 100644 --- a/modules/queue/queue_disk_test.go +++ b/modules/queue/queue_disk_test.go @@ -11,6 +11,7 @@ import ( "time" "code.gitea.io/gitea/modules/util" + "github.com/stretchr/testify/assert" ) diff --git a/modules/repofiles/blob_test.go b/modules/repofiles/blob_test.go index c219892aec..8950c349e6 100644 --- a/modules/repofiles/blob_test.go +++ b/modules/repofiles/blob_test.go @@ -8,7 +8,6 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" - api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/test" diff --git a/modules/repofiles/content_test.go b/modules/repofiles/content_test.go index e3230698bc..f6a953fab9 100644 --- a/modules/repofiles/content_test.go +++ b/modules/repofiles/content_test.go @@ -9,7 +9,6 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" - api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/test" diff --git a/modules/repofiles/tree_test.go b/modules/repofiles/tree_test.go index 512313c43b..6917b8915b 100644 --- a/modules/repofiles/tree_test.go +++ b/modules/repofiles/tree_test.go @@ -8,7 +8,6 @@ import ( "testing" "code.gitea.io/gitea/models/unittest" - api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/test" diff --git a/modules/repository/commits_test.go b/modules/repository/commits_test.go index 0d6c2e4c5c..b6a63dc127 100644 --- a/modules/repository/commits_test.go +++ b/modules/repository/commits_test.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/git" + "github.com/stretchr/testify/assert" ) diff --git a/modules/setting/queue.go b/modules/setting/queue.go index 1668cc63a3..56a036aeef 100644 --- a/modules/setting/queue.go +++ b/modules/setting/queue.go @@ -10,6 +10,7 @@ import ( "time" "code.gitea.io/gitea/modules/log" + ini "gopkg.in/ini.v1" ) diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index f312df23db..ab8b07d609 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -83,11 +83,12 @@ import ( "code.gitea.io/gitea/routers/api/v1/org" "code.gitea.io/gitea/routers/api/v1/repo" "code.gitea.io/gitea/routers/api/v1/settings" - _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation "code.gitea.io/gitea/routers/api/v1/user" "code.gitea.io/gitea/services/auth" "code.gitea.io/gitea/services/forms" + _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation + "gitea.com/go-chi/binding" "github.com/go-chi/cors" ) diff --git a/routers/utils/utils_test.go b/routers/utils/utils_test.go index bca5263311..f49ed77b6f 100644 --- a/routers/utils/utils_test.go +++ b/routers/utils/utils_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/modules/setting" + "github.com/stretchr/testify/assert" ) diff --git a/routers/web/goget.go b/routers/web/goget.go index 9f367a9277..8a8e1797dc 100644 --- a/routers/web/goget.go +++ b/routers/web/goget.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "github.com/unknwon/com" ) diff --git a/routers/web/repo/issue_test.go b/routers/web/repo/issue_test.go index 6638baf34a..b8862cf43d 100644 --- a/routers/web/repo/issue_test.go +++ b/routers/web/repo/issue_test.go @@ -8,6 +8,7 @@ import ( "testing" "code.gitea.io/gitea/models" + "github.com/stretchr/testify/assert" ) diff --git a/routers/web/web.go b/routers/web/web.go index 132e649d45..f84d357bb1 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -36,8 +36,7 @@ import ( "code.gitea.io/gitea/services/lfs" "code.gitea.io/gitea/services/mailer" - // to registers all internal adapters - _ "code.gitea.io/gitea/modules/session" + _ "code.gitea.io/gitea/modules/session" // to registers all internal adapters "gitea.com/go-chi/captcha" "github.com/NYTimes/gziphandler" diff --git a/services/auth/signin.go b/services/auth/signin.go index 5477e8643e..504214f9f1 100644 --- a/services/auth/signin.go +++ b/services/auth/signin.go @@ -13,8 +13,7 @@ import ( user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/log" - // Register the sources - _ "code.gitea.io/gitea/services/auth/source/db" + _ "code.gitea.io/gitea/services/auth/source/db" // register the sources (and below) _ "code.gitea.io/gitea/services/auth/source/ldap" _ "code.gitea.io/gitea/services/auth/source/oauth2" _ "code.gitea.io/gitea/services/auth/source/pam" diff --git a/services/auth/source/oauth2/store.go b/services/auth/source/oauth2/store.go index fc29056c24..4026abb6ec 100644 --- a/services/auth/source/oauth2/store.go +++ b/services/auth/source/oauth2/store.go @@ -10,6 +10,7 @@ import ( "net/http" "code.gitea.io/gitea/modules/log" + chiSession "gitea.com/go-chi/session" "github.com/gorilla/sessions" ) diff --git a/services/auth/source/oauth2/token.go b/services/auth/source/oauth2/token.go index 0c7c5d8caa..c9a45340a1 100644 --- a/services/auth/source/oauth2/token.go +++ b/services/auth/source/oauth2/token.go @@ -9,6 +9,7 @@ import ( "time" "code.gitea.io/gitea/modules/timeutil" + "github.com/golang-jwt/jwt" ) diff --git a/services/cron/setting.go b/services/cron/setting.go index d55e5b60ad..a0393e23dc 100644 --- a/services/cron/setting.go +++ b/services/cron/setting.go @@ -8,6 +8,7 @@ import ( "time" "code.gitea.io/gitea/models" + "github.com/unknwon/i18n" ) diff --git a/services/forms/user_form_auth_openid.go b/services/forms/user_form_auth_openid.go index b34f9dcc97..fd3368d303 100644 --- a/services/forms/user_form_auth_openid.go +++ b/services/forms/user_form_auth_openid.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/web/middleware" + "gitea.com/go-chi/binding" ) diff --git a/services/gitdiff/csv_test.go b/services/gitdiff/csv_test.go index 4101477d89..b4f725e558 100644 --- a/services/gitdiff/csv_test.go +++ b/services/gitdiff/csv_test.go @@ -11,6 +11,7 @@ import ( csv_module "code.gitea.io/gitea/modules/csv" "code.gitea.io/gitea/modules/setting" + "github.com/stretchr/testify/assert" ) diff --git a/services/issue/assignee_test.go b/services/issue/assignee_test.go index b0bbe42273..bc2721ebd4 100644 --- a/services/issue/assignee_test.go +++ b/services/issue/assignee_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/services/issue/label_test.go b/services/issue/label_test.go index fa6ad613b6..fdc2c4ffb6 100644 --- a/services/issue/label_test.go +++ b/services/issue/label_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/services/repository/fork_test.go b/services/repository/fork_test.go index 197d76b056..1280a3d84d 100644 --- a/services/repository/fork_test.go +++ b/services/repository/fork_test.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" + "github.com/stretchr/testify/assert" ) diff --git a/services/webhook/deliver_test.go b/services/webhook/deliver_test.go index cfc99d796a..551c957c8d 100644 --- a/services/webhook/deliver_test.go +++ b/services/webhook/deliver_test.go @@ -10,6 +10,7 @@ import ( "testing" "code.gitea.io/gitea/modules/setting" + "github.com/stretchr/testify/assert" ) diff --git a/services/webhook/webhook_test.go b/services/webhook/webhook_test.go index 0a649d36ae..c332332787 100644 --- a/services/webhook/webhook_test.go +++ b/services/webhook/webhook_test.go @@ -11,6 +11,7 @@ import ( "code.gitea.io/gitea/models/unittest" webhook_model "code.gitea.io/gitea/models/webhook" api "code.gitea.io/gitea/modules/structs" + "github.com/stretchr/testify/assert" )