Skip to content

Commit 23b74ea

Browse files
authored
Merge pull request #4709 from kersten/chore/refactor-plugin-suite-beforeeach
🌱 (chore): refactor shared setup logic in plugin into BeforeEach to isolate test state
2 parents f6faae2 + 8d5bedb commit 23b74ea

File tree

6 files changed

+98
-65
lines changed

6 files changed

+98
-65
lines changed

pkg/plugin/bundle_test.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,16 @@ var _ = Describe("Bundle", func() {
3232
)
3333

3434
var (
35-
version = Version{Number: 1}
35+
v Version
36+
37+
p1 mockPlugin
38+
p2 mockPlugin
39+
p3 mockPlugin
40+
p4 mockPlugin
41+
)
42+
43+
BeforeEach(func() {
44+
v = Version{Number: 1}
3645

3746
p1 = mockPlugin{supportedProjectVersions: []config.Version{
3847
{Number: 1},
@@ -53,7 +62,7 @@ var _ = Describe("Bundle", func() {
5362
{Number: 2},
5463
{Number: 3},
5564
}}
56-
)
65+
})
5766

5867
Context("NewBundle", func() {
5968
It("should succeed for plugins with common supported project versions", func() {
@@ -69,11 +78,11 @@ var _ = Describe("Bundle", func() {
6978
} {
7079

7180
b, err := NewBundleWithOptions(WithName(name),
72-
WithVersion(version),
81+
WithVersion(v),
7382
WithPlugins(plugins...))
7483
Expect(err).NotTo(HaveOccurred())
7584
Expect(b.Name()).To(Equal(name))
76-
Expect(b.Version().Compare(version)).To(Equal(0))
85+
Expect(b.Version().Compare(v)).To(Equal(0))
7786
versions := b.SupportedProjectVersions()
7887
sort.Slice(versions, func(i int, j int) bool {
7988
return versions[i].Compare(versions[j]) == -1
@@ -92,11 +101,11 @@ var _ = Describe("Bundle", func() {
92101
var err error
93102
plugins := []Plugin{p1, p2, p3}
94103
a, err = NewBundleWithOptions(WithName("a"),
95-
WithVersion(version),
104+
WithVersion(v),
96105
WithPlugins(p1, p2))
97106
Expect(err).NotTo(HaveOccurred())
98107
b, err = NewBundleWithOptions(WithName("b"),
99-
WithVersion(version),
108+
WithVersion(v),
100109
WithPlugins(a, p3))
101110
Expect(err).NotTo(HaveOccurred())
102111
versions := b.SupportedProjectVersions()
@@ -121,7 +130,7 @@ var _ = Describe("Bundle", func() {
121130
{p1, p2, p3, p4},
122131
} {
123132
_, err := NewBundleWithOptions(WithName(name),
124-
WithVersion(version),
133+
WithVersion(v),
125134
WithPlugins(plugins...))
126135

127136
Expect(err).To(HaveOccurred())
@@ -142,13 +151,13 @@ var _ = Describe("Bundle", func() {
142151
{p1, p3, p4},
143152
} {
144153
b, err := NewBundleWithOptions(WithName(name),
145-
WithVersion(version),
154+
WithVersion(v),
146155
WithDeprecationMessage(""),
147156
WithPlugins(plugins...),
148157
)
149158
Expect(err).NotTo(HaveOccurred())
150159
Expect(b.Name()).To(Equal(name))
151-
Expect(b.Version().Compare(version)).To(Equal(0))
160+
Expect(b.Version().Compare(v)).To(Equal(0))
152161
versions := b.SupportedProjectVersions()
153162
sort.Slice(versions, func(i int, j int) bool {
154163
return versions[i].Compare(versions[j]) == -1
@@ -167,13 +176,13 @@ var _ = Describe("Bundle", func() {
167176
var err error
168177
plugins := []Plugin{p1, p2, p3}
169178
a, err = NewBundleWithOptions(WithName("a"),
170-
WithVersion(version),
179+
WithVersion(v),
171180
WithDeprecationMessage(""),
172181
WithPlugins(p1, p2),
173182
)
174183
Expect(err).NotTo(HaveOccurred())
175184
b, err = NewBundleWithOptions(WithName("b"),
176-
WithVersion(version),
185+
WithVersion(v),
177186
WithDeprecationMessage(""),
178187
WithPlugins(a, p3),
179188
)
@@ -200,7 +209,7 @@ var _ = Describe("Bundle", func() {
200209
{p1, p2, p3, p4},
201210
} {
202211
_, err := NewBundleWithOptions(WithName(name),
203-
WithVersion(version),
212+
WithVersion(v),
204213
WithDeprecationMessage(""),
205214
WithPlugins(plugins...),
206215
)

pkg/plugin/errors_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,14 @@ import (
2222
)
2323

2424
var _ = Describe("PluginKeyNotFoundError", func() {
25-
err := ExitError{
26-
Plugin: "go.kubebuilder.io/v1",
27-
Reason: "skipping plugin",
28-
}
25+
var err ExitError
26+
27+
BeforeEach(func() {
28+
err = ExitError{
29+
Plugin: "go.kubebuilder.io/v1",
30+
Reason: "skipping plugin",
31+
}
32+
})
2933

3034
Context("Error", func() {
3135
It("should return the correct error message", func() {

pkg/plugin/filter_test.go

Lines changed: 50 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -23,61 +23,68 @@ import (
2323
"sigs.k8s.io/kubebuilder/v4/pkg/config"
2424
)
2525

26-
var (
27-
p1 = mockPlugin{
28-
name: "go.kubebuilder.io",
29-
version: Version{Number: 2},
30-
supportedProjectVersions: []config.Version{{Number: 2}, {Number: 3}},
31-
}
32-
p2 = mockPlugin{
33-
name: "go.kubebuilder.io",
34-
version: Version{Number: 3},
35-
supportedProjectVersions: []config.Version{{Number: 3}},
36-
}
37-
p3 = mockPlugin{
38-
name: "example.kubebuilder.io",
39-
version: Version{Number: 1},
40-
supportedProjectVersions: []config.Version{{Number: 2}},
41-
}
42-
p4 = mockPlugin{
43-
name: "test.kubebuilder.io",
44-
version: Version{Number: 1},
45-
supportedProjectVersions: []config.Version{{Number: 3}},
46-
}
47-
p5 = mockPlugin{
48-
name: "go.test.domain",
49-
version: Version{Number: 2},
50-
supportedProjectVersions: []config.Version{{Number: 2}},
51-
}
26+
var _ = Describe("FilterPlugins", func() {
27+
var (
28+
p1 mockPlugin
29+
p2 mockPlugin
30+
p3 mockPlugin
31+
p4 mockPlugin
32+
p5 mockPlugin
33+
allPlugins []Plugin
34+
)
5235

53-
allPlugins = []Plugin{p1, p2, p3, p4, p5}
54-
)
36+
BeforeEach(func() {
37+
p1 = mockPlugin{
38+
name: "go.kubebuilder.io",
39+
version: Version{Number: 2},
40+
supportedProjectVersions: []config.Version{{Number: 2}, {Number: 3}},
41+
}
42+
p2 = mockPlugin{
43+
name: "go.kubebuilder.io",
44+
version: Version{Number: 3},
45+
supportedProjectVersions: []config.Version{{Number: 3}},
46+
}
47+
p3 = mockPlugin{
48+
name: "example.kubebuilder.io",
49+
version: Version{Number: 1},
50+
supportedProjectVersions: []config.Version{{Number: 2}},
51+
}
52+
p4 = mockPlugin{
53+
name: "test.kubebuilder.io",
54+
version: Version{Number: 1},
55+
supportedProjectVersions: []config.Version{{Number: 3}},
56+
}
57+
p5 = mockPlugin{
58+
name: "go.test.domain",
59+
version: Version{Number: 2},
60+
supportedProjectVersions: []config.Version{{Number: 2}},
61+
}
5562

56-
var _ = Describe("FilterPluginsByKey", func() {
57-
DescribeTable("should filter",
58-
func(key string, plugins []Plugin) {
63+
allPlugins = []Plugin{p1, p2, p3, p4, p5}
64+
})
65+
66+
DescribeTable("should filter by key",
67+
func(key string, expectedPlugins func() []Plugin) {
5968
filtered, err := FilterPluginsByKey(allPlugins, key)
6069
Expect(err).NotTo(HaveOccurred())
61-
Expect(filtered).To(Equal(plugins))
70+
Expect(filtered).To(Equal(expectedPlugins()))
6271
},
63-
Entry("go plugins", "go", []Plugin{p1, p2, p5}),
64-
Entry("go plugins (kubebuilder domain)", "go.kubebuilder", []Plugin{p1, p2}),
65-
Entry("go v2 plugins", "go/v2", []Plugin{p1, p5}),
66-
Entry("go v2 plugins (kubebuilder domain)", "go.kubebuilder/v2", []Plugin{p1}),
72+
Entry("go plugins", "go", func() []Plugin { return []Plugin{p1, p2, p5} }),
73+
Entry("go plugins (kubebuilder domain)", "go.kubebuilder", func() []Plugin { return []Plugin{p1, p2} }),
74+
Entry("go v2 plugins", "go/v2", func() []Plugin { return []Plugin{p1, p5} }),
75+
Entry("go v2 plugins (kubebuilder domain)", "go.kubebuilder/v2", func() []Plugin { return []Plugin{p1} }),
6776
)
6877

6978
It("should fail for invalid versions", func() {
7079
_, err := FilterPluginsByKey(allPlugins, "go/a")
7180
Expect(err).To(HaveOccurred())
7281
})
73-
})
7482

75-
var _ = Describe("FilterPluginsByKey", func() {
76-
DescribeTable("should filter",
77-
func(projectVersion config.Version, plugins []Plugin) {
78-
Expect(FilterPluginsByProjectVersion(allPlugins, projectVersion)).To(Equal(plugins))
83+
DescribeTable("should filter by project version",
84+
func(projectVersion config.Version, expectedPlugins func() []Plugin) {
85+
Expect(FilterPluginsByProjectVersion(allPlugins, projectVersion)).To(Equal(expectedPlugins()))
7986
},
80-
Entry("project v2 plugins", config.Version{Number: 2}, []Plugin{p1, p3, p5}),
81-
Entry("project v3 plugins", config.Version{Number: 3}, []Plugin{p1, p2, p4}),
87+
Entry("project v2 plugins", config.Version{Number: 2}, func() []Plugin { return []Plugin{p1, p3, p5} }),
88+
Entry("project v3 plugins", config.Version{Number: 3}, func() []Plugin { return []Plugin{p1, p2, p4} }),
8289
)
8390
})

pkg/plugin/helpers_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,13 @@ var _ = Describe("ValidateKey", func() {
116116
})
117117

118118
var _ = Describe("SupportsVersion", func() {
119-
plugin := mockPlugin{
120-
supportedProjectVersions: supportedProjectVersions,
121-
}
119+
var plugin mockPlugin
120+
121+
BeforeEach(func() {
122+
plugin = mockPlugin{
123+
supportedProjectVersions: supportedProjectVersions,
124+
}
125+
})
122126

123127
It("should return true for supported versions", func() {
124128
Expect(SupportsVersion(plugin, config.Version{Number: 2})).To(BeTrue())

pkg/plugin/util/util_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,14 @@ import (
2626

2727
var _ = Describe("Cover plugin util helpers", func() {
2828
Describe("InsertCode", Ordered, func() {
29-
path := filepath.Join("testdata", "exampleFile.txt")
30-
var content []byte
29+
var (
30+
content []byte
31+
path string
32+
)
3133

3234
BeforeAll(func() {
35+
path = filepath.Join("testdata", "exampleFile.txt")
36+
3337
err := os.MkdirAll("testdata", 0o755)
3438
Expect(err).NotTo(HaveOccurred())
3539

pkg/plugin/version_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ var _ = Describe("Version", func() {
121121
Context("Compare", func() {
122122
// Test Compare() by sorting a list.
123123
var (
124+
versions []Version
125+
sortedVersions []Version
126+
)
127+
128+
BeforeEach(func() {
124129
versions = []Version{
125130
{Number: 2, Stage: stage.Alpha},
126131
{Number: 44, Stage: stage.Alpha},
@@ -146,7 +151,7 @@ var _ = Describe("Version", func() {
146151
{Number: 44, Stage: stage.Alpha},
147152
{Number: 44, Stage: stage.Alpha},
148153
}
149-
)
154+
})
150155

151156
It("sorts a valid list of versions correctly", func() {
152157
sort.Slice(versions, func(i int, j int) bool {

0 commit comments

Comments
 (0)