Skip to content

Commit 49ce80a

Browse files
authored
build(deps): bump github.com/nunnatsa/ginkgolinter from 0.8.1 to 0.9.0 (#3643)
1 parent 71be32a commit 49ce80a

13 files changed

+231
-15
lines changed

.golangci.reference.yml

+8
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,14 @@ linters-settings:
418418
# Default: false
419419
suppress-err-assertion: true
420420

421+
# Suppress the wrong comparison assertion warning.
422+
# Default: false
423+
suppress-compare-assertion: true
424+
425+
# Don't trigger warnings for HaveLen(0)
426+
# Default: false
427+
allow-havelen-zero: true
428+
421429
gocognit:
422430
# Minimal code complexity to report.
423431
# Default: 30 (but we recommend 10-20)

go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ require (
7474
github.com/nakabonne/nestif v0.3.1
7575
github.com/nishanths/exhaustive v0.9.5
7676
github.com/nishanths/predeclared v0.2.2
77-
github.com/nunnatsa/ginkgolinter v0.8.1
77+
github.com/nunnatsa/ginkgolinter v0.9.0
7878
github.com/polyfloyd/go-errorlint v1.2.0
7979
github.com/quasilyte/go-ruleguard/dsl v0.3.22
8080
github.com/ryancurrah/gomodguard v1.3.0
@@ -128,7 +128,7 @@ require (
128128
github.com/fsnotify/fsnotify v1.5.4 // indirect
129129
github.com/go-ole/go-ole v1.2.6 // indirect
130130
github.com/go-toolsmith/astcast v1.1.0 // indirect
131-
github.com/go-toolsmith/astcopy v1.0.3 // indirect
131+
github.com/go-toolsmith/astcopy v1.1.0 // indirect
132132
github.com/go-toolsmith/astequal v1.1.0 // indirect
133133
github.com/go-toolsmith/astfmt v1.1.0 // indirect
134134
github.com/go-toolsmith/astp v1.1.0 // indirect
@@ -178,7 +178,7 @@ require (
178178
go.uber.org/multierr v1.6.0 // indirect
179179
go.uber.org/zap v1.17.0 // indirect
180180
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
181-
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9 // indirect
181+
golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 // indirect
182182
golang.org/x/mod v0.8.0 // indirect
183183
golang.org/x/sync v0.1.0 // indirect
184184
golang.org/x/sys v0.5.0 // indirect

go.sum

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/config/linters_settings.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -325,9 +325,11 @@ type GciSettings struct {
325325
}
326326

327327
type GinkgoLinterSettings struct {
328-
SuppressLenAssertion bool `mapstructure:"suppress-len-assertion"`
329-
SuppressNilAssertion bool `mapstructure:"suppress-nil-assertion"`
330-
SuppressErrAssertion bool `mapstructure:"suppress-err-assertion"`
328+
SuppressLenAssertion bool `mapstructure:"suppress-len-assertion"`
329+
SuppressNilAssertion bool `mapstructure:"suppress-nil-assertion"`
330+
SuppressErrAssertion bool `mapstructure:"suppress-err-assertion"`
331+
SuppressCompareAssertion bool `mapstructure:"suppress-compare-assertion"`
332+
AllowHaveLenZero bool `mapstructure:"allow-havelen-zero"`
331333
}
332334

333335
type GocognitSettings struct {

pkg/golinters/ginkgolinter.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ func NewGinkgoLinter(cfg *config.GinkgoLinterSettings) *goanalysis.Linter {
1414
cfgMap := make(map[string]map[string]interface{})
1515
if cfg != nil {
1616
cfgMap[a.Name] = map[string]interface{}{
17-
"suppress-len-assertion": cfg.SuppressLenAssertion,
18-
"suppress-nil-assertion": cfg.SuppressNilAssertion,
19-
"suppress-err-assertion": cfg.SuppressErrAssertion,
17+
"suppress-len-assertion": cfg.SuppressLenAssertion,
18+
"suppress-nil-assertion": cfg.SuppressNilAssertion,
19+
"suppress-err-assertion": cfg.SuppressErrAssertion,
20+
"suppress-compare-assertion": cfg.SuppressCompareAssertion,
21+
"allow-havelen-0": cfg.AllowHaveLenZero,
2022
}
2123
}
2224

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
linters-settings:
2+
ginkgolinter:
3+
allow-havelen-zero: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
linters-settings:
2+
ginkgolinter:
3+
suppress-compare-assertion: true

test/testdata/ginkgolinter/ginkgolinter.go

+15
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,18 @@ func ErrorUsecase() {
4949
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
5050
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
5151
}
52+
53+
func HaveLen0Usecase() {
54+
x := make([]string, 0)
55+
Expect(x).To(HaveLen(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(x\\)\\.To\\(BeEmpty\\(\\)\\). instead"
56+
}
57+
58+
func WrongComparisonUsecase() {
59+
x := 8
60+
Expect(x == 8).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(Equal\\(8\\)\\). instead"
61+
Expect(x < 9).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(BeNumerically\\(\"<\", 9\\)\\). instead"
62+
Expect(x < 7).To(Equal(false)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNumerically\\(\"<\", 7\\)\\). instead"
63+
64+
p1, p2 := &x, &x
65+
Expect(p1 == p2).To(Equal(true)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(p1\\).To\\(BeIdenticalTo\\(p2\\)\\). instead"
66+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
//golangcitest:config_path configs/ginkgolinter_allow_havelen0.yml
2+
//golangcitest:args --disable-all -Eginkgolinter
3+
package ginkgolinter
4+
5+
import (
6+
"errors"
7+
. "github.com/onsi/gomega"
8+
)
9+
10+
func LenUsecase_havelen0() {
11+
var fakeVarUnderTest []int
12+
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
13+
Expect(fakeVarUnderTest).ShouldNot(HaveLen(5)) // valid
14+
15+
Expect(len(fakeVarUnderTest)).Should(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(BeEmpty\\(\\)\\). instead"
16+
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(2)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(HaveLen\\(2\\)\\). instead"
17+
Expect(len(fakeVarUnderTest)).To(BeNumerically("==", 0)) // // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.To\\(BeEmpty\\(\\)\\). instead"
18+
19+
fakeVarUnderTest = append(fakeVarUnderTest, 3)
20+
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(BeEmpty\\(\\)\\). instead"
21+
Expect(len(fakeVarUnderTest)).Should(Equal(1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(HaveLen\\(1\\)\\). instead"
22+
Expect(len(fakeVarUnderTest)).To(BeNumerically(">", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
23+
Expect(len(fakeVarUnderTest)).To(BeNumerically(">=", 1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
24+
Expect(len(fakeVarUnderTest)).To(BeNumerically("!=", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
25+
}
26+
27+
func NilUsecase_havelen0() {
28+
y := 5
29+
x := &y
30+
Expect(x == nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
31+
Expect(nil == x).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
32+
Expect(x != nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
33+
Expect(x == nil).To(BeTrue()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
34+
Expect(x == nil).To(BeFalse()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
35+
}
36+
func BooleanUsecase_havelen0() {
37+
x := true
38+
Expect(x).To(Equal(true)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeTrue\\(\\)\\). instead"
39+
x = false
40+
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
41+
}
42+
43+
func ErrorUsecase_havelen0() {
44+
err := errors.New("fake error")
45+
funcReturnsErr := func() error { return err }
46+
47+
Expect(err).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
48+
Expect(err == nil).To(Equal(true)) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
49+
Expect(err == nil).To(BeFalse()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
50+
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
51+
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
52+
}
53+
54+
func HaveLen0Usecase_havelen0() {
55+
x := make([]string, 0)
56+
Expect(x).To(HaveLen(0))
57+
}
58+
59+
func WrongComparisonUsecase_havelen0() {
60+
x := 8
61+
Expect(x == 8).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(Equal\\(8\\)\\). instead"
62+
Expect(x < 9).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(BeNumerically\\(\"<\", 9\\)\\). instead"
63+
Expect(x < 7).To(Equal(false)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNumerically\\(\"<\", 7\\)\\). instead"
64+
65+
p1, p2 := &x, &x
66+
Expect(p1 == p2).To(Equal(true)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(p1\\).To\\(BeIdenticalTo\\(p2\\)\\). instead"
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//golangcitest:config_path configs/ginkgolinter_suppress_compare.yml
2+
//golangcitest:args --disable-all -Eginkgolinter
3+
package ginkgolinter
4+
5+
import (
6+
"errors"
7+
. "github.com/onsi/gomega"
8+
)
9+
10+
func LenUsecase_compare() {
11+
var fakeVarUnderTest []int
12+
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
13+
Expect(fakeVarUnderTest).ShouldNot(HaveLen(5)) // valid
14+
15+
Expect(len(fakeVarUnderTest)).Should(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(BeEmpty\\(\\)\\). instead"
16+
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(2)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(HaveLen\\(2\\)\\). instead"
17+
Expect(len(fakeVarUnderTest)).To(BeNumerically("==", 0)) // // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.To\\(BeEmpty\\(\\)\\). instead"
18+
19+
fakeVarUnderTest = append(fakeVarUnderTest, 3)
20+
Expect(len(fakeVarUnderTest)).ShouldNot(Equal(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ShouldNot\\(BeEmpty\\(\\)\\). instead"
21+
Expect(len(fakeVarUnderTest)).Should(Equal(1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.Should\\(HaveLen\\(1\\)\\). instead"
22+
Expect(len(fakeVarUnderTest)).To(BeNumerically(">", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
23+
Expect(len(fakeVarUnderTest)).To(BeNumerically(">=", 1)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
24+
Expect(len(fakeVarUnderTest)).To(BeNumerically("!=", 0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(fakeVarUnderTest\\)\\.ToNot\\(BeEmpty\\(\\)\\). instead"
25+
}
26+
27+
func NilUsecase_compare() {
28+
y := 5
29+
x := &y
30+
Expect(x == nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
31+
Expect(nil == x).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
32+
Expect(x != nil).To(Equal(true)) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
33+
Expect(x == nil).To(BeTrue()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.To\\(BeNil\\(\\)\\). instead"
34+
Expect(x == nil).To(BeFalse()) // want "ginkgo-linter: wrong nil assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNil\\(\\)\\). instead"
35+
}
36+
func BooleanUsecase_compare() {
37+
x := true
38+
Expect(x).To(Equal(true)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeTrue\\(\\)\\). instead"
39+
x = false
40+
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
41+
}
42+
43+
func ErrorUsecase_compare() {
44+
err := errors.New("fake error")
45+
funcReturnsErr := func() error { return err }
46+
47+
Expect(err).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
48+
Expect(err == nil).To(Equal(true)) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.ToNot\\(HaveOccurred\\(\\)\\). instead"
49+
Expect(err == nil).To(BeFalse()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
50+
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
51+
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
52+
}
53+
54+
func HaveLen0Usecase_compare() {
55+
x := make([]string, 0)
56+
Expect(x).To(HaveLen(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(x\\)\\.To\\(BeEmpty\\(\\)\\). instead"
57+
}
58+
59+
// WrongComparisonUsecase_compare should not trigger any warning
60+
func WrongComparisonUsecase_compare() {
61+
x := 8
62+
Expect(x == 8).To(BeTrue())
63+
Expect(x < 9).To(BeTrue())
64+
Expect(x < 7).To(Equal(false))
65+
66+
p1, p2 := &x, &x
67+
Expect(p1 == p2).To(Equal(true))
68+
}

test/testdata/ginkgolinter/ginkgolinter_suppress_err.go

+16
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ func BooleanUsecase_err() {
4040
Expect(x).To(Equal(false)) // want "ginkgo-linter: wrong boolean assertion; consider using .Expect\\(x\\)\\.To\\(BeFalse\\(\\)\\). instead"
4141
}
4242

43+
// ErrorUsecase_err should not trigger any warning
4344
func ErrorUsecase_err() {
4445
err := errors.New("fake error")
4546
funcReturnsErr := func() error { return err }
@@ -50,3 +51,18 @@ func ErrorUsecase_err() {
5051
Expect(err != nil).To(BeTrue())
5152
Expect(funcReturnsErr()).To(BeNil())
5253
}
54+
55+
func HaveLen0Usecase_err() {
56+
x := make([]string, 0)
57+
Expect(x).To(HaveLen(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(x\\)\\.To\\(BeEmpty\\(\\)\\). instead"
58+
}
59+
60+
func WrongComparisonUsecase_err() {
61+
x := 8
62+
Expect(x == 8).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(Equal\\(8\\)\\). instead"
63+
Expect(x < 9).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(BeNumerically\\(\"<\", 9\\)\\). instead"
64+
Expect(x < 7).To(Equal(false)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNumerically\\(\"<\", 7\\)\\). instead"
65+
66+
p1, p2 := &x, &x
67+
Expect(p1 == p2).To(Equal(true)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(p1\\).To\\(BeIdenticalTo\\(p2\\)\\). instead"
68+
}

test/testdata/ginkgolinter/ginkgolinter_suppress_len.go

+16
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
. "github.com/onsi/gomega"
88
)
99

10+
// LenUsecase_len should not trigger any warning
1011
func LenUsecase_len() {
1112
var fakeVarUnderTest []int
1213
Expect(fakeVarUnderTest).Should(BeEmpty()) // valid
@@ -50,3 +51,18 @@ func ErrorUsecase_len() {
5051
Expect(err != nil).To(BeTrue()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(err\\)\\.To\\(HaveOccurred\\(\\)\\). instead"
5152
Expect(funcReturnsErr()).To(BeNil()) // want "ginkgo-linter: wrong error assertion; consider using .Expect\\(funcReturnsErr\\(\\)\\)\\.To\\(Succeed\\(\\)\\). instead"
5253
}
54+
55+
func HaveLen0Usecase_len() {
56+
x := make([]string, 0)
57+
Expect(x).To(HaveLen(0)) // want "ginkgo-linter: wrong length assertion; consider using .Expect\\(x\\)\\.To\\(BeEmpty\\(\\)\\). instead"
58+
}
59+
60+
func WrongComparisonUsecase_len() {
61+
x := 8
62+
Expect(x == 8).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(Equal\\(8\\)\\). instead"
63+
Expect(x < 9).To(BeTrue()) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.To\\(BeNumerically\\(\"<\", 9\\)\\). instead"
64+
Expect(x < 7).To(Equal(false)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(x\\)\\.ToNot\\(BeNumerically\\(\"<\", 7\\)\\). instead"
65+
66+
p1, p2 := &x, &x
67+
Expect(p1 == p2).To(Equal(true)) // want "ginkgo-linter: wrong comparison assertion; consider using .Expect\\(p1\\).To\\(BeIdenticalTo\\(p2\\)\\). instead"
68+
}

0 commit comments

Comments
 (0)