@@ -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})
0 commit comments