aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/maratori
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2022-09-05 14:27:54 +0200
committerGitHub <noreply@github.com>2022-09-05 12:27:54 +0000
commitb2f2446b46bf02821d90ebedadae2bf7ae0e880e (patch)
tree923cf42842918d6bebca1d6bbdc08abed54d274d /vendor/github.com/maratori
parente6654faff4bcca4be92e9a8596fd4b77f747c39e (diff)
go.mod, vendor: update (#3358)
* go.mod, vendor: remove unnecessary dependencies Commands: 1. go mod tidy 2. go mod vendor * go.mod, vendor: update cloud.google.com/go Commands: 1. go get -u cloud.google.com/go 2. go mod tidy 3. go mod vendor * go.mod, vendor: update cloud.google.com/* Commands: 1. go get -u cloud.google.com/storage cloud.google.com/logging 2. go mod tidy 3. go mod vendor * go.mod, .golangci.yml, vendor: update *lint* Commands: 1. go get -u golang.org/x/tools github.com/golangci/golangci-lint@v1.47.0 2. go mod tidy 3. go mod vendor 4. edit .golangci.yml to suppress new errors (resolved in the same PR later) * all: fix lint errors hash.go: copy() recommended by gosimple parse.go: ent is never nil verifier.go: signal.Notify() with unbuffered channel is bad. Have no idea why. * .golangci.yml: adjust godot rules check-all is deprecated, but still work if you're hesitating too - I'll remove this commit
Diffstat (limited to 'vendor/github.com/maratori')
-rw-r--r--vendor/github.com/maratori/testpackage/pkg/testpackage/testpackage.go40
1 files changed, 30 insertions, 10 deletions
diff --git a/vendor/github.com/maratori/testpackage/pkg/testpackage/testpackage.go b/vendor/github.com/maratori/testpackage/pkg/testpackage/testpackage.go
index cad24e1a5..2e0572972 100644
--- a/vendor/github.com/maratori/testpackage/pkg/testpackage/testpackage.go
+++ b/vendor/github.com/maratori/testpackage/pkg/testpackage/testpackage.go
@@ -5,6 +5,8 @@ import (
"regexp"
"strings"
+ "go/ast"
+
"golang.org/x/tools/go/analysis"
)
@@ -14,20 +16,43 @@ const (
SkipRegexpFlagDefault = `(export|internal)_test\.go`
)
-// NewAnalyzer returns Analyzer that makes you use a separate _test package
+const (
+ AllowPackagesFlagName = "allow-packages"
+ AllowPackagesFlagUsage = `comma separated list of packages that don't end with _test that tests are allowed to be in`
+ AllowPackagesFlagDefault = `main`
+)
+
+func processTestFile(pass *analysis.Pass, f *ast.File, allowedPackages []string) {
+ packageName := f.Name.Name
+
+ for _, p := range allowedPackages {
+ if p == packageName {
+ return
+ }
+ }
+
+ if !strings.HasSuffix(packageName, "_test") {
+ pass.Reportf(f.Name.Pos(), "package should be `%s_test` instead of `%s`", packageName, packageName)
+ }
+}
+
+// NewAnalyzer returns Analyzer that makes you use a separate _test package.
func NewAnalyzer() *analysis.Analyzer {
var (
- skipFileRegexp = SkipRegexpFlagDefault
- fs flag.FlagSet
+ skipFileRegexp = SkipRegexpFlagDefault
+ allowPackagesStr = AllowPackagesFlagDefault
+ fs flag.FlagSet
)
fs.StringVar(&skipFileRegexp, SkipRegexpFlagName, skipFileRegexp, SkipRegexpFlagUsage)
+ fs.StringVar(&allowPackagesStr, AllowPackagesFlagName, allowPackagesStr, AllowPackagesFlagUsage)
return &analysis.Analyzer{
Name: "testpackage",
Doc: "linter that makes you use a separate _test package",
Flags: fs,
Run: func(pass *analysis.Pass) (interface{}, error) {
+ allowedPackages := strings.Split(allowPackagesStr, ",")
skipFile, err := regexp.Compile(skipFileRegexp)
if err != nil {
return nil, err
@@ -35,16 +60,11 @@ func NewAnalyzer() *analysis.Analyzer {
for _, f := range pass.Files {
fileName := pass.Fset.Position(f.Pos()).Filename
- if skipFile.MatchString(fileName) {
+ if !strings.HasSuffix(fileName, "_test.go") || skipFile.MatchString(fileName) {
continue
}
- if strings.HasSuffix(fileName, "_test.go") {
- packageName := f.Name.Name
- if !strings.HasSuffix(packageName, "_test") {
- pass.Reportf(f.Name.Pos(), "package should be `%s_test` instead of `%s`", packageName, packageName)
- }
- }
+ processTestFile(pass, f, allowedPackages)
}
return nil, nil