Add the ginkgolinter linter (#3369)
This commit is contained in:
parent
d65222aa87
commit
26dde52d69
@ -402,8 +402,21 @@ linters-settings:
|
||||
# Default: false
|
||||
custom-order: true
|
||||
|
||||
ginkgolinter:
|
||||
# Suppress the wrong length assertion warning.
|
||||
# Default: false
|
||||
suppress-len-assertion: true
|
||||
|
||||
# Suppress the wrong nil assertion warning.
|
||||
# Default: false
|
||||
suppress-nil-assertion: true
|
||||
|
||||
# Suppress the wrong error assertion warning.
|
||||
# Default: false
|
||||
suppress-err-assertion: true
|
||||
|
||||
gocognit:
|
||||
# Minimal code complexity to report
|
||||
# Minimal code complexity to report.
|
||||
# Default: 30 (but we recommend 10-20)
|
||||
min-complexity: 10
|
||||
|
||||
@ -1989,6 +2002,7 @@ linters:
|
||||
- forcetypeassert
|
||||
- funlen
|
||||
- gci
|
||||
- ginkgolinter
|
||||
- gochecknoglobals
|
||||
- gochecknoinits
|
||||
- gocognit
|
||||
@ -2096,6 +2110,7 @@ linters:
|
||||
- forcetypeassert
|
||||
- funlen
|
||||
- gci
|
||||
- ginkgolinter
|
||||
- gochecknoglobals
|
||||
- gochecknoinits
|
||||
- gocognit
|
||||
|
1
go.mod
1
go.mod
@ -72,6 +72,7 @@ require (
|
||||
github.com/nakabonne/nestif v0.3.1
|
||||
github.com/nishanths/exhaustive v0.9.3
|
||||
github.com/nishanths/predeclared v0.2.2
|
||||
github.com/nunnatsa/ginkgolinter v0.6.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/polyfloyd/go-errorlint v1.0.6
|
||||
github.com/quasilyte/go-ruleguard/dsl v0.3.21
|
||||
|
2
go.sum
generated
2
go.sum
generated
@ -394,6 +394,8 @@ github.com/nishanths/exhaustive v0.9.3 h1:NPZibdWqnUfp24jTNYS9ncxvJ1Cniot9kP5agz
|
||||
github.com/nishanths/exhaustive v0.9.3/go.mod h1:VjHsn6MdEX4ydfLwt658YcdPxSDKOlqSjpkeGJPCamo=
|
||||
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
|
||||
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
|
||||
github.com/nunnatsa/ginkgolinter v0.6.0 h1:r5C8RxtM8KTUJlgKOTFZQK3oG8blCQtHslDRl5YWiHA=
|
||||
github.com/nunnatsa/ginkgolinter v0.6.0/go.mod h1:jTgd60EAdXDmmIPZi+xoMDqAYo/4AakhWNmnPisd7Rc=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/onsi/ginkgo/v2 v2.3.1 h1:8SbseP7qM32WcvE6VaN6vfXxv698izmsJ1UQX9ve7T8=
|
||||
|
@ -150,6 +150,7 @@ type LintersSettings struct {
|
||||
Forbidigo ForbidigoSettings
|
||||
Funlen FunlenSettings
|
||||
Gci GciSettings
|
||||
GinkgoLinter GinkgoLinterSettings
|
||||
Gocognit GocognitSettings
|
||||
Goconst GoConstSettings
|
||||
Gocritic GoCriticSettings
|
||||
@ -321,6 +322,12 @@ type GciSettings struct {
|
||||
CustomOrder bool `mapstructure:"custom-order"`
|
||||
}
|
||||
|
||||
type GinkgoLinterSettings struct {
|
||||
SuppressLenAssertion bool `mapstructure:"suppress-len-assertion"`
|
||||
SuppressNilAssertion bool `mapstructure:"suppress-nil-assertion"`
|
||||
SuppressErrAssertion bool `mapstructure:"suppress-err-assertion"`
|
||||
}
|
||||
|
||||
type GocognitSettings struct {
|
||||
MinComplexity int `mapstructure:"min-complexity"`
|
||||
}
|
||||
|
29
pkg/golinters/ginkgolinter.go
Normal file
29
pkg/golinters/ginkgolinter.go
Normal file
@ -0,0 +1,29 @@
|
||||
package golinters
|
||||
|
||||
import (
|
||||
"github.com/nunnatsa/ginkgolinter"
|
||||
"golang.org/x/tools/go/analysis"
|
||||
|
||||
"github.com/golangci/golangci-lint/pkg/config"
|
||||
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis"
|
||||
)
|
||||
|
||||
func NewGinkgoLinter(cfg *config.GinkgoLinterSettings) *goanalysis.Linter {
|
||||
a := ginkgolinter.NewAnalyzer()
|
||||
|
||||
cfgMap := make(map[string]map[string]interface{})
|
||||
if cfg != nil {
|
||||
cfgMap[a.Name] = map[string]interface{}{
|
||||
"suppress-len-assertion": cfg.SuppressLenAssertion,
|
||||
"suppress-nil-assertion": cfg.SuppressNilAssertion,
|
||||
"suppress-err-assertion": cfg.SuppressErrAssertion,
|
||||
}
|
||||
}
|
||||
|
||||
return goanalysis.NewLinter(
|
||||
a.Name,
|
||||
a.Doc,
|
||||
[]*analysis.Analyzer{a},
|
||||
cfgMap,
|
||||
).WithLoadMode(goanalysis.LoadModeTypesInfo)
|
||||
}
|
@ -118,6 +118,7 @@ func (m Manager) GetAllSupportedLinterConfigs() []*linter.Config {
|
||||
forbidigoCfg *config.ForbidigoSettings
|
||||
funlenCfg *config.FunlenSettings
|
||||
gciCfg *config.GciSettings
|
||||
ginkgolinterCfg *config.GinkgoLinterSettings
|
||||
gocognitCfg *config.GocognitSettings
|
||||
goconstCfg *config.GoConstSettings
|
||||
gocriticCfg *config.GoCriticSettings
|
||||
@ -194,6 +195,7 @@ func (m Manager) GetAllSupportedLinterConfigs() []*linter.Config {
|
||||
forbidigoCfg = &m.cfg.LintersSettings.Forbidigo
|
||||
funlenCfg = &m.cfg.LintersSettings.Funlen
|
||||
gciCfg = &m.cfg.LintersSettings.Gci
|
||||
ginkgolinterCfg = &m.cfg.LintersSettings.GinkgoLinter
|
||||
gocognitCfg = &m.cfg.LintersSettings.Gocognit
|
||||
goconstCfg = &m.cfg.LintersSettings.Goconst
|
||||
gocriticCfg = &m.cfg.LintersSettings.Gocritic
|
||||
@ -430,6 +432,12 @@ func (m Manager) GetAllSupportedLinterConfigs() []*linter.Config {
|
||||
WithPresets(linter.PresetFormatting, linter.PresetImport).
|
||||
WithURL("https://github.com/daixiang0/gci"),
|
||||
|
||||
linter.NewConfig(golinters.NewGinkgoLinter(ginkgolinterCfg)).
|
||||
WithSince("v1.51.0").
|
||||
WithLoadForGoAnalysis().
|
||||
WithPresets(linter.PresetStyle).
|
||||
WithURL("https://github.com/nunnatsa/ginkgolinter"),
|
||||
|
||||
linter.NewConfig(golinters.NewGochecknoglobals()).
|
||||
WithSince("v1.12.0").
|
||||
WithPresets(linter.PresetStyle).
|
||||
|
@ -30,6 +30,7 @@ func TestTypecheck(t *testing.T) {
|
||||
func TestSourcesFromTestdataSubDir(t *testing.T) {
|
||||
subDirs := []string{
|
||||
"loggercheck",
|
||||
"ginkgolinter",
|
||||
}
|
||||
|
||||
for _, dir := range subDirs {
|
||||
|
2
test/testdata/ginkgolinter/configs/ginkgolinter_default.yml
vendored
Normal file
2
test/testdata/ginkgolinter/configs/ginkgolinter_default.yml
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
linters-settings:
|
||||
ginkgolinter: {}
|
3
test/testdata/ginkgolinter/configs/ginkgolinter_suppress_err.yml
vendored
Normal file
3
test/testdata/ginkgolinter/configs/ginkgolinter_suppress_err.yml
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
linters-settings:
|
||||
ginkgolinter:
|
||||
suppress-err-assertion: true
|
3
test/testdata/ginkgolinter/configs/ginkgolinter_suppress_len.yml
vendored
Normal file
3
test/testdata/ginkgolinter/configs/ginkgolinter_suppress_len.yml
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
linters-settings:
|
||||
ginkgolinter:
|
||||
suppress-len-assertion: true
|
3
test/testdata/ginkgolinter/configs/ginkgolinter_suppress_nil.yml
vendored
Normal file
3
test/testdata/ginkgolinter/configs/ginkgolinter_suppress_nil.yml
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
linters-settings:
|
||||
ginkgolinter:
|
||||
suppress-nil-assertion: true
|
51
test/testdata/ginkgolinter/ginkgolinter.go
vendored
Normal file
51
test/testdata/ginkgolinter/ginkgolinter.go
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
//golangcitest:args --disable-all -Eginkgolinter
|
||||
package ginkgolinter
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func LenUsecase() {
|
||||
var fakeVarUnderTest []int
|
||||
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
|
||||
Expect(fakeVarUnderTest).ShouldNot(HaveLen(5)) // valid
|
||||
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(2)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(HaveLen\\(2\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("==", 0)) // // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.To\\(BeEmpty\\(\\)\\). instead"
|
||||
|
||||
fakeVarUnderTest = append(fakeVarUnderTest, 3)
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(HaveLen\\(1\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">=", 1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("!=", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func NilUsecase() {
|
||||
y := 5
|
||||
x := &y
|
||||
Expect(x == nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(nil == x).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x != nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x == nil).To(BeTrue()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x == nil).To(BeFalse()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
|
||||
}
|
||||
func BooleanUsecase() {
|
||||
x := true
|
||||
Expect(x).To(Equal(true)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeTrue\\(\\)\\). instead"
|
||||
x = false
|
||||
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func ErrorUsecase() {
|
||||
err := errors.New("fake error")
|
||||
funcReturnsErr := func() error { return err }
|
||||
|
||||
Expect(err).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err == nil).To(Equal(true)) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err == nil).To(BeFalse()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
|
||||
}
|
52
test/testdata/ginkgolinter/ginkgolinter_suppress_err.go
vendored
Normal file
52
test/testdata/ginkgolinter/ginkgolinter_suppress_err.go
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
//golangcitest:config_path configs/ginkgolinter_suppress_err.yml
|
||||
//golangcitest:args --disable-all -Eginkgolinter
|
||||
package ginkgolinter
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func LenUsecase_err() {
|
||||
var fakeVarUnderTest []int
|
||||
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
|
||||
Expect(fakeVarUnderTest).ShouldNot(HaveLen(5)) // valid
|
||||
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(2)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(HaveLen\\(2\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("==", 0)) // // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.To\\(BeEmpty\\(\\)\\). instead"
|
||||
|
||||
fakeVarUnderTest = append(fakeVarUnderTest, 3)
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(HaveLen\\(1\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">=", 1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("!=", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func NilUsecase_err() {
|
||||
y := 5
|
||||
x := &y
|
||||
Expect(x == nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(nil == x).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x != nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x == nil).To(BeTrue()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x == nil).To(BeFalse()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
|
||||
}
|
||||
func BooleanUsecase_err() {
|
||||
x := true
|
||||
Expect(x).To(Equal(true)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeTrue\\(\\)\\). instead"
|
||||
x = false
|
||||
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func ErrorUsecase_err() {
|
||||
err := errors.New("fake error")
|
||||
funcReturnsErr := func() error { return err }
|
||||
|
||||
Expect(err).To(BeNil())
|
||||
Expect(err == nil).To(Equal(true))
|
||||
Expect(err == nil).To(BeFalse())
|
||||
Expect(err != nil).To(BeTrue())
|
||||
Expect(funcReturnsErr()).To(BeNil())
|
||||
}
|
52
test/testdata/ginkgolinter/ginkgolinter_suppress_len.go
vendored
Normal file
52
test/testdata/ginkgolinter/ginkgolinter_suppress_len.go
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
//golangcitest:config_path configs/ginkgolinter_suppress_len.yml
|
||||
//golangcitest:args --disable-all -Eginkgolinter
|
||||
package ginkgolinter
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func LenUsecase_len() {
|
||||
var fakeVarUnderTest []int
|
||||
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
|
||||
Expect(fakeVarUnderTest).ShouldNot(HaveLen(5)) // valid
|
||||
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(0))
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(2))
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("==", 0))
|
||||
|
||||
fakeVarUnderTest = append(fakeVarUnderTest, 3)
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(0))
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(1))
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">", 0))
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">=", 1))
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("!=", 0))
|
||||
}
|
||||
|
||||
func NilUsecase_len() {
|
||||
y := 5
|
||||
x := &y
|
||||
Expect(x == nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(nil == x).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x != nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x == nil).To(BeTrue()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
|
||||
Expect(x == nil).To(BeFalse()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
|
||||
}
|
||||
func BooleanUsecase_len() {
|
||||
x := true
|
||||
Expect(x).To(Equal(true)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeTrue\\(\\)\\). instead"
|
||||
x = false
|
||||
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func ErrorUsecase_len() {
|
||||
err := errors.New("fake error")
|
||||
funcReturnsErr := func() error { return err }
|
||||
|
||||
Expect(err).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err == nil).To(Equal(true)) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err == nil).To(BeFalse()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
|
||||
}
|
52
test/testdata/ginkgolinter/ginkgolinter_suppress_nil.go
vendored
Normal file
52
test/testdata/ginkgolinter/ginkgolinter_suppress_nil.go
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
//golangcitest:args --disable-all -Eginkgolinter
|
||||
//golangcitest:config_path configs/ginkgolinter_suppress_nil.yml
|
||||
package ginkgolinter
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func LenUsecase_nil() {
|
||||
var fakeVarUnderTest []int
|
||||
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
|
||||
Expect(fakeVarUnderTest).ShouldNot(HaveLen(5)) // valid
|
||||
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(2)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(HaveLen\\(2\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("==", 0)) // // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.To\\(BeEmpty\\(\\)\\). instead"
|
||||
|
||||
fakeVarUnderTest = append(fakeVarUnderTest, 3)
|
||||
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).Should(Equal(1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(HaveLen\\(1\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically(">=", 1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
Expect(len(fakeVarUnderTest)).To(BeNumerically("!=", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func NilUsecase_nil() {
|
||||
y := 5
|
||||
x := &y
|
||||
Expect(x == nil).To(Equal(true))
|
||||
Expect(nil == x).To(Equal(true))
|
||||
Expect(x != nil).To(Equal(true))
|
||||
Expect(x == nil).To(BeTrue())
|
||||
Expect(x == nil).To(BeFalse())
|
||||
}
|
||||
func BooleanUsecase_nil() {
|
||||
x := true
|
||||
Expect(x).To(Equal(true)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeTrue\\(\\)\\). instead"
|
||||
x = false
|
||||
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
|
||||
}
|
||||
|
||||
func ErrorUsecase_nil() {
|
||||
err := errors.New("fake error")
|
||||
funcReturnsErr := func() error { return err }
|
||||
|
||||
Expect(err).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err == nil).To(Equal(true)) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err == nil).To(BeFalse()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
|
||||
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
|
||||
}
|
12
test/testdata/ginkgolinter/go.mod
vendored
Normal file
12
test/testdata/ginkgolinter/go.mod
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
module ginkgolinter
|
||||
|
||||
go 1.19
|
||||
|
||||
require github.com/onsi/gomega v1.24.1
|
||||
|
||||
require (
|
||||
github.com/google/go-cmp v0.5.9 // indirect
|
||||
golang.org/x/net v0.2.0 // indirect
|
||||
golang.org/x/text v0.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
15
test/testdata/ginkgolinter/go.sum
generated
vendored
Normal file
15
test/testdata/ginkgolinter/go.sum
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/onsi/ginkgo/v2 v2.5.0 h1:TRtrvv2vdQqzkwrQ1ke6vtXf7IK34RBUJafIy1wMwls=
|
||||
github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E=
|
||||
github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
|
||||
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
|
||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
|
||||
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
Loading…
x
Reference in New Issue
Block a user