aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nunnatsa
diff options
context:
space:
mode:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2023-08-22 02:02:22 +0000
committerTaras Madan <tarasmadan@google.com>2023-08-22 12:20:16 +0000
commit91132985a7ff76db390949ac765113cfd3178fa7 (patch)
tree9dcdece9df519c487f06e1b7a824c7ddd571ce53 /vendor/github.com/nunnatsa
parent81191e0ae93e179f148ee4f89deedfe444d7baaa (diff)
mod: do: bump github.com/golangci/golangci-lint from 1.54.1 to 1.54.2
Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.54.1 to 1.54.2. - [Release notes](https://github.com/golangci/golangci-lint/releases) - [Changelog](https://github.com/golangci/golangci-lint/blob/master/CHANGELOG.md) - [Commits](https://github.com/golangci/golangci-lint/compare/v1.54.1...v1.54.2) --- updated-dependencies: - dependency-name: github.com/golangci/golangci-lint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Diffstat (limited to 'vendor/github.com/nunnatsa')
-rw-r--r--vendor/github.com/nunnatsa/ginkgolinter/README.md29
-rw-r--r--vendor/github.com/nunnatsa/ginkgolinter/ginkgo_linter.go20
-rw-r--r--vendor/github.com/nunnatsa/ginkgolinter/ginkgohandler/handler.go35
3 files changed, 71 insertions, 13 deletions
diff --git a/vendor/github.com/nunnatsa/ginkgolinter/README.md b/vendor/github.com/nunnatsa/ginkgolinter/README.md
index 3edf065c2..4193be63d 100644
--- a/vendor/github.com/nunnatsa/ginkgolinter/README.md
+++ b/vendor/github.com/nunnatsa/ginkgolinter/README.md
@@ -153,24 +153,35 @@ The linter will not suggest a fix for this warning.
This rule cannot be suppressed.
-### Focus Container Found [BUG]
-This rule finds ginkgo focus containers in the code.
+### Focus Container / Focus individual spec found [BUG]
+This rule finds ginkgo focus containers, or the `Focus` individual spec in the code.
-ginkgo supports the `FDescribe`, `FContext`, `FWhen` and `FIt` containers to allow the developer to focus
+ginkgo supports the `FDescribe`, `FContext`, `FWhen`, `FIt`, `FDescribeTable` and `FEntry`
+containers to allow the developer to focus
on a specific test or set of tests during test development or debug.
-***This rule is disabled by default***. Use the `--forbid-focus-container=true` command line flag to enable it.
-
For example:
```go
var _ = Describe("checking something", func() {
- FIt("this test is the only one that will run", func(){
- ...
- })
+ FIt("this test is the only one that will run", func(){
+ ...
+ })
+})
+```
+Alternatively, the `Focus` individual spec may be used for the same purpose, e.g.
+```go
+var _ = Describe("checking something", Focus, func() {
+ It("this test is the only one that will run", func(){
+ ...
+ })
})
```
-These container must not be part of the final source code, and should only be used locally by the developer.
+These container, or the `Focus` spec, must not be part of the final source code, and should only be used locally by the developer.
+
+***This rule is disabled by default***. Use the `--forbid-focus-container=true` command line flag to enable it.
+
+
### Wrong Length Assertion [STYLE]
The linter finds assertion of the golang built-in `len` function, with all kind of matchers, while there are already gomega matchers for these usecases; We want to assert the item, rather than its length.
diff --git a/vendor/github.com/nunnatsa/ginkgolinter/ginkgo_linter.go b/vendor/github.com/nunnatsa/ginkgolinter/ginkgo_linter.go
index 1635ce4b0..11cffaca5 100644
--- a/vendor/github.com/nunnatsa/ginkgolinter/ginkgo_linter.go
+++ b/vendor/github.com/nunnatsa/ginkgolinter/ginkgo_linter.go
@@ -37,6 +37,7 @@ const (
missingAssertionMessage = linterName + `: %q: missing assertion method. Expected "Should()", "To()", "ShouldNot()", "ToNot()" or "NotTo()"`
missingAsyncAssertionMessage = linterName + `: %q: missing assertion method. Expected "Should()" or "ShouldNot()"`
focusContainerFound = linterName + ": Focus container found. This is used only for local debug and should not be part of the actual source code, consider to replace with %q"
+ focusSpecFound = linterName + ": Focus spec found. This is used only for local debug and should not be part of the actual source code, consider to remove it"
)
const ( // gomega matchers
beEmpty = "BeEmpty"
@@ -232,12 +233,27 @@ func (l *ginkgoLinter) run(pass *analysis.Pass) (interface{}, error) {
}
func checkFocusContainer(pass *analysis.Pass, ginkgoHndlr ginkgohandler.Handler, exp *ast.CallExpr) bool {
+ foundFocus := false
isFocus, id := ginkgoHndlr.GetFocusContainerName(exp)
if isFocus {
reportNewName(pass, id, id.Name[1:], focusContainerFound, id.Name)
- return true
+ foundFocus = true
}
- return false
+
+ if id != nil && ginkgohandler.IsContainer(id) {
+ for _, arg := range exp.Args {
+ if ginkgoHndlr.IsFocusSpec(arg) {
+ reportNoFix(pass, arg.Pos(), focusSpecFound)
+ foundFocus = true
+ } else if callExp, ok := arg.(*ast.CallExpr); ok {
+ if checkFocusContainer(pass, ginkgoHndlr, callExp) { // handle table entries
+ foundFocus = true
+ }
+ }
+ }
+ }
+
+ return foundFocus
}
func checkExpression(pass *analysis.Pass, config types.Config, assertionExp *ast.CallExpr, actualExpr *ast.CallExpr, handler gomegahandler.Handler) bool {
diff --git a/vendor/github.com/nunnatsa/ginkgolinter/ginkgohandler/handler.go b/vendor/github.com/nunnatsa/ginkgolinter/ginkgohandler/handler.go
index 87703a944..c0829c469 100644
--- a/vendor/github.com/nunnatsa/ginkgolinter/ginkgohandler/handler.go
+++ b/vendor/github.com/nunnatsa/ginkgolinter/ginkgohandler/handler.go
@@ -4,16 +4,24 @@ import (
"go/ast"
)
+const (
+ importPath = `"github.com/onsi/ginkgo"`
+ importPathV2 = `"github.com/onsi/ginkgo/v2"`
+
+ focusSpec = "Focus"
+)
+
// Handler provide different handling, depend on the way ginkgo was imported, whether
// in imported with "." name, custom name or without any name.
type Handler interface {
GetFocusContainerName(*ast.CallExpr) (bool, *ast.Ident)
+ IsFocusSpec(ident ast.Expr) bool
}
// GetGinkgoHandler returns a ginkgor handler according to the way ginkgo was imported in the specific file
func GetGinkgoHandler(file *ast.File) Handler {
for _, imp := range file.Imports {
- if imp.Path.Value != `"github.com/onsi/ginkgo"` && imp.Path.Value != `"github.com/onsi/ginkgo/v2"` {
+ if imp.Path.Value != importPath && imp.Path.Value != importPathV2 {
continue
}
@@ -41,6 +49,11 @@ func (h dotHandler) GetFocusContainerName(exp *ast.CallExpr) (bool, *ast.Ident)
return false, nil
}
+func (h dotHandler) IsFocusSpec(exp ast.Expr) bool {
+ id, ok := exp.(*ast.Ident)
+ return ok && id.Name == focusSpec
+}
+
// nameHandler is used when importing ginkgo without name; i.e.
// import "github.com/onsi/ginkgo"
//
@@ -57,10 +70,28 @@ func (h nameHandler) GetFocusContainerName(exp *ast.CallExpr) (bool, *ast.Ident)
return false, nil
}
+func (h nameHandler) IsFocusSpec(exp ast.Expr) bool {
+ if selExp, ok := exp.(*ast.SelectorExpr); ok {
+ if x, ok := selExp.X.(*ast.Ident); ok && x.Name == string(h) {
+ return selExp.Sel.Name == focusSpec
+ }
+ }
+
+ return false
+}
+
func isFocusContainer(name string) bool {
switch name {
- case "FDescribe", "FContext", "FWhen", "FIt":
+ case "FDescribe", "FContext", "FWhen", "FIt", "FDescribeTable", "FEntry":
return true
}
return false
}
+
+func IsContainer(id *ast.Ident) bool {
+ switch id.Name {
+ case "It", "When", "Context", "Describe", "DescribeTable", "Entry":
+ return true
+ }
+ return isFocusContainer(id.Name)
+}