Skip to content

Commit d540c85

Browse files
author
Mateus Oliveira
committed
fix: webhook testEnv
Signed-off-by: Mateus Oliveira <[email protected]>
1 parent 6fb374f commit d540c85

File tree

30 files changed

+259
-323
lines changed

30 files changed

+259
-323
lines changed

docs/book/src/cronjob-tutorial/testdata/project/internal/controller/suite_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,20 @@ var _ = BeforeSuite(func() {
7474

7575
ctx, cancel = context.WithCancel(context.TODO())
7676

77+
var err error
78+
/*
79+
The CronJob Kind is added to the runtime scheme used by the test environment.
80+
This ensures that the CronJob API is registered with the scheme, allowing the test controller to recognize and interact with CronJob resources.
81+
*/
82+
err = batchv1.AddToScheme(scheme.Scheme)
83+
Expect(err).NotTo(HaveOccurred())
84+
/*
85+
After the schemas, you will see the following marker.
86+
This marker is what allows new schemas to be added here automatically when a new API is added to the project.
87+
*/
88+
89+
// +kubebuilder:scaffold:scheme
90+
7791
/*
7892
The envtest environment is configured to load Custom Resource Definitions (CRDs) from the specified directory.
7993
This setup enables the test environment to recognize and interact with the custom resources defined by these CRDs.
@@ -92,25 +106,11 @@ var _ = BeforeSuite(func() {
92106
Then, we start the envtest cluster.
93107
*/
94108

95-
var err error
96109
// cfg is defined in this file globally.
97110
cfg, err = testEnv.Start()
98111
Expect(err).NotTo(HaveOccurred())
99112
Expect(cfg).NotTo(BeNil())
100113

101-
/*
102-
The CronJob Kind is added to the runtime scheme used by the test environment.
103-
This ensures that the CronJob API is registered with the scheme, allowing the test controller to recognize and interact with CronJob resources.
104-
*/
105-
err = batchv1.AddToScheme(scheme.Scheme)
106-
Expect(err).NotTo(HaveOccurred())
107-
/*
108-
After the schemas, you will see the following marker.
109-
This marker is what allows new schemas to be added here automatically when a new API is added to the project.
110-
*/
111-
112-
// +kubebuilder:scaffold:scheme
113-
114114
/*
115115
A client is created for our test CRUD operations.
116116
*/

docs/book/src/cronjob-tutorial/testdata/project/internal/webhook/v1/webhook_suite_test.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ import (
2929
. "github.com/onsi/ginkgo/v2"
3030
. "github.com/onsi/gomega"
3131

32-
admissionv1 "k8s.io/api/admission/v1"
33-
apimachineryruntime "k8s.io/apimachinery/pkg/runtime"
32+
"k8s.io/client-go/kubernetes/scheme"
3433
"k8s.io/client-go/rest"
3534
ctrl "sigs.k8s.io/controller-runtime"
3635
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -66,6 +65,12 @@ var _ = BeforeSuite(func() {
6665

6766
ctx, cancel = context.WithCancel(context.TODO())
6867

68+
var err error
69+
err = batchv1.AddToScheme(scheme.Scheme)
70+
Expect(err).NotTo(HaveOccurred())
71+
72+
// +kubebuilder:scaffold:scheme
73+
6974
By("bootstrapping test environment")
7075
testEnv = &envtest.Environment{
7176
CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")},
@@ -81,29 +86,19 @@ var _ = BeforeSuite(func() {
8186
testEnv.BinaryAssetsDirectory = getFirstFoundEnvTestBinaryDir()
8287
}
8388

84-
var err error
8589
// cfg is defined in this file globally.
8690
cfg, err = testEnv.Start()
8791
Expect(err).NotTo(HaveOccurred())
8892
Expect(cfg).NotTo(BeNil())
8993

90-
scheme := apimachineryruntime.NewScheme()
91-
err = batchv1.AddToScheme(scheme)
92-
Expect(err).NotTo(HaveOccurred())
93-
94-
err = admissionv1.AddToScheme(scheme)
95-
Expect(err).NotTo(HaveOccurred())
96-
97-
// +kubebuilder:scaffold:scheme
98-
99-
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme})
94+
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
10095
Expect(err).NotTo(HaveOccurred())
10196
Expect(k8sClient).NotTo(BeNil())
10297

10398
// start webhook server using Manager.
10499
webhookInstallOptions := &testEnv.WebhookInstallOptions
105100
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
106-
Scheme: scheme,
101+
Scheme: scheme.Scheme,
107102
WebhookServer: webhook.NewServer(webhook.Options{
108103
Host: webhookInstallOptions.LocalServingHost,
109104
Port: webhookInstallOptions.LocalServingPort,

docs/book/src/getting-started/testdata/project/internal/controller/suite_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ var _ = BeforeSuite(func() {
5858

5959
ctx, cancel = context.WithCancel(context.TODO())
6060

61+
var err error
62+
err = cachev1alpha1.AddToScheme(scheme.Scheme)
63+
Expect(err).NotTo(HaveOccurred())
64+
65+
// +kubebuilder:scaffold:scheme
66+
6167
By("bootstrapping test environment")
6268
testEnv = &envtest.Environment{
6369
CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases")},
@@ -69,17 +75,11 @@ var _ = BeforeSuite(func() {
6975
testEnv.BinaryAssetsDirectory = getFirstFoundEnvTestBinaryDir()
7076
}
7177

72-
var err error
7378
// cfg is defined in this file globally.
7479
cfg, err = testEnv.Start()
7580
Expect(err).NotTo(HaveOccurred())
7681
Expect(cfg).NotTo(BeNil())
7782

78-
err = cachev1alpha1.AddToScheme(scheme.Scheme)
79-
Expect(err).NotTo(HaveOccurred())
80-
81-
// +kubebuilder:scaffold:scheme
82-
8383
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
8484
Expect(err).NotTo(HaveOccurred())
8585
Expect(k8sClient).NotTo(BeNil())

docs/book/src/multiversion-tutorial/testdata/project/internal/controller/suite_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,20 @@ var _ = BeforeSuite(func() {
7474

7575
ctx, cancel = context.WithCancel(context.TODO())
7676

77+
var err error
78+
/*
79+
The CronJob Kind is added to the runtime scheme used by the test environment.
80+
This ensures that the CronJob API is registered with the scheme, allowing the test controller to recognize and interact with CronJob resources.
81+
*/
82+
err = batchv1.AddToScheme(scheme.Scheme)
83+
Expect(err).NotTo(HaveOccurred())
84+
/*
85+
After the schemas, you will see the following marker.
86+
This marker is what allows new schemas to be added here automatically when a new API is added to the project.
87+
*/
88+
89+
// +kubebuilder:scaffold:scheme
90+
7791
/*
7892
The envtest environment is configured to load Custom Resource Definitions (CRDs) from the specified directory.
7993
This setup enables the test environment to recognize and interact with the custom resources defined by these CRDs.
@@ -92,25 +106,11 @@ var _ = BeforeSuite(func() {
92106
Then, we start the envtest cluster.
93107
*/
94108

95-
var err error
96109
// cfg is defined in this file globally.
97110
cfg, err = testEnv.Start()
98111
Expect(err).NotTo(HaveOccurred())
99112
Expect(cfg).NotTo(BeNil())
100113

101-
/*
102-
The CronJob Kind is added to the runtime scheme used by the test environment.
103-
This ensures that the CronJob API is registered with the scheme, allowing the test controller to recognize and interact with CronJob resources.
104-
*/
105-
err = batchv1.AddToScheme(scheme.Scheme)
106-
Expect(err).NotTo(HaveOccurred())
107-
/*
108-
After the schemas, you will see the following marker.
109-
This marker is what allows new schemas to be added here automatically when a new API is added to the project.
110-
*/
111-
112-
// +kubebuilder:scaffold:scheme
113-
114114
/*
115115
A client is created for our test CRUD operations.
116116
*/

docs/book/src/multiversion-tutorial/testdata/project/internal/webhook/v1/webhook_suite_test.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ import (
2929
. "github.com/onsi/ginkgo/v2"
3030
. "github.com/onsi/gomega"
3131

32-
admissionv1 "k8s.io/api/admission/v1"
33-
apimachineryruntime "k8s.io/apimachinery/pkg/runtime"
32+
"k8s.io/client-go/kubernetes/scheme"
3433
"k8s.io/client-go/rest"
3534
ctrl "sigs.k8s.io/controller-runtime"
3635
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -66,6 +65,12 @@ var _ = BeforeSuite(func() {
6665

6766
ctx, cancel = context.WithCancel(context.TODO())
6867

68+
var err error
69+
err = batchv1.AddToScheme(scheme.Scheme)
70+
Expect(err).NotTo(HaveOccurred())
71+
72+
// +kubebuilder:scaffold:scheme
73+
6974
By("bootstrapping test environment")
7075
testEnv = &envtest.Environment{
7176
CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")},
@@ -81,29 +86,19 @@ var _ = BeforeSuite(func() {
8186
testEnv.BinaryAssetsDirectory = getFirstFoundEnvTestBinaryDir()
8287
}
8388

84-
var err error
8589
// cfg is defined in this file globally.
8690
cfg, err = testEnv.Start()
8791
Expect(err).NotTo(HaveOccurred())
8892
Expect(cfg).NotTo(BeNil())
8993

90-
scheme := apimachineryruntime.NewScheme()
91-
err = batchv1.AddToScheme(scheme)
92-
Expect(err).NotTo(HaveOccurred())
93-
94-
err = admissionv1.AddToScheme(scheme)
95-
Expect(err).NotTo(HaveOccurred())
96-
97-
// +kubebuilder:scaffold:scheme
98-
99-
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme})
94+
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
10095
Expect(err).NotTo(HaveOccurred())
10196
Expect(k8sClient).NotTo(BeNil())
10297

10398
// start webhook server using Manager.
10499
webhookInstallOptions := &testEnv.WebhookInstallOptions
105100
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
106-
Scheme: scheme,
101+
Scheme: scheme.Scheme,
107102
WebhookServer: webhook.NewServer(webhook.Options{
108103
Host: webhookInstallOptions.LocalServingHost,
109104
Port: webhookInstallOptions.LocalServingPort,

docs/book/src/multiversion-tutorial/testdata/project/internal/webhook/v2/webhook_suite_test.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ import (
2929
. "github.com/onsi/ginkgo/v2"
3030
. "github.com/onsi/gomega"
3131

32-
admissionv1 "k8s.io/api/admission/v1"
33-
apimachineryruntime "k8s.io/apimachinery/pkg/runtime"
32+
"k8s.io/client-go/kubernetes/scheme"
3433
"k8s.io/client-go/rest"
3534
ctrl "sigs.k8s.io/controller-runtime"
3635
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -66,6 +65,12 @@ var _ = BeforeSuite(func() {
6665

6766
ctx, cancel = context.WithCancel(context.TODO())
6867

68+
var err error
69+
err = batchv2.AddToScheme(scheme.Scheme)
70+
Expect(err).NotTo(HaveOccurred())
71+
72+
// +kubebuilder:scaffold:scheme
73+
6974
By("bootstrapping test environment")
7075
testEnv = &envtest.Environment{
7176
CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")},
@@ -81,29 +86,19 @@ var _ = BeforeSuite(func() {
8186
testEnv.BinaryAssetsDirectory = getFirstFoundEnvTestBinaryDir()
8287
}
8388

84-
var err error
8589
// cfg is defined in this file globally.
8690
cfg, err = testEnv.Start()
8791
Expect(err).NotTo(HaveOccurred())
8892
Expect(cfg).NotTo(BeNil())
8993

90-
scheme := apimachineryruntime.NewScheme()
91-
err = batchv2.AddToScheme(scheme)
92-
Expect(err).NotTo(HaveOccurred())
93-
94-
err = admissionv1.AddToScheme(scheme)
95-
Expect(err).NotTo(HaveOccurred())
96-
97-
// +kubebuilder:scaffold:scheme
98-
99-
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme})
94+
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
10095
Expect(err).NotTo(HaveOccurred())
10196
Expect(k8sClient).NotTo(BeNil())
10297

10398
// start webhook server using Manager.
10499
webhookInstallOptions := &testEnv.WebhookInstallOptions
105100
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
106-
Scheme: scheme,
101+
Scheme: scheme.Scheme,
107102
WebhookServer: webhook.NewServer(webhook.Options{
108103
Host: webhookInstallOptions.LocalServingHost,
109104
Port: webhookInstallOptions.LocalServingPort,

hack/docs/internal/cronjob-tutorial/generate_cronjob.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -537,11 +537,15 @@ var (
537537
`, SuiteTestEnv)
538538
hackutils.CheckError("updating suite_test.go to add more variables", err)
539539

540-
err = pluginutil.InsertCode(
540+
err = pluginutil.ReplaceInFile(
541541
filepath.Join(sp.ctx.Dir, "internal/controller/suite_test.go"),
542-
`ctx, cancel = context.WithCancel(context.TODO())
543-
`, SuiteTestReadCRD)
544-
hackutils.CheckError("updating suite_test.go to add text about CRD", err)
542+
`
543+
err = batchv1.AddToScheme(scheme.Scheme)
544+
Expect(err).NotTo(HaveOccurred())
545+
546+
// +kubebuilder:scaffold:scheme
547+
`, SuiteTestAddSchema)
548+
hackutils.CheckError("updating suite_test.go to add schema", err)
545549

546550
err = pluginutil.InsertCode(
547551
filepath.Join(sp.ctx.Dir, "internal/controller/suite_test.go"),
@@ -552,15 +556,14 @@ var (
552556
*/`)
553557
hackutils.CheckError("updating suite_test.go to add text to show where envtest cluster start", err)
554558

555-
err = pluginutil.ReplaceInFile(
559+
err = pluginutil.InsertCode(
556560
filepath.Join(sp.ctx.Dir, "internal/controller/suite_test.go"),
557561
`
558-
err = batchv1.AddToScheme(scheme.Scheme)
562+
cfg, err = testEnv.Start()
559563
Expect(err).NotTo(HaveOccurred())
560-
561-
// +kubebuilder:scaffold:scheme
562-
`, SuiteTestAddSchema)
563-
hackutils.CheckError("updating suite_test.go to add schema", err)
564+
Expect(cfg).NotTo(BeNil())
565+
`, SuiteTestClient)
566+
hackutils.CheckError("updating suite_test.go to add text about test client", err)
564567

565568
err = pluginutil.InsertCode(
566569
filepath.Join(sp.ctx.Dir, "internal/controller/suite_test.go"),

hack/docs/internal/cronjob-tutorial/writing_tests_env.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,6 @@ var (
4343
)
4444
`
4545

46-
const SuiteTestReadCRD = `
47-
/*
48-
The envtest environment is configured to load Custom Resource Definitions (CRDs) from the specified directory.
49-
This setup enables the test environment to recognize and interact with the custom resources defined by these CRDs.
50-
*/`
51-
5246
const SuiteTestAddSchema = `
5347
/*
5448
The CronJob Kind is added to the runtime scheme used by the test environment.
@@ -63,6 +57,12 @@ const SuiteTestAddSchema = `
6357
6458
// +kubebuilder:scaffold:scheme
6559
60+
/*
61+
The envtest environment is configured to load Custom Resource Definitions (CRDs) from the specified directory.
62+
This setup enables the test environment to recognize and interact with the custom resources defined by these CRDs.
63+
*/`
64+
65+
const SuiteTestClient = `
6666
/*
6767
A client is created for our test CRUD operations.
6868
*/`

pkg/plugins/golang/v4/scaffolds/internal/templates/controllers/controller_suitetest.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ var _ = BeforeSuite(func() {
171171
172172
ctx, cancel = context.WithCancel(context.TODO())
173173
174+
var err error
175+
%s
176+
174177
By("bootstrapping test environment")
175178
testEnv = &envtest.Environment{
176179
CRDDirectoryPaths: []string{filepath.Join({{ .CRDDirectoryRelativePath }}, "config", "crd", "bases")},
@@ -182,14 +185,11 @@ var _ = BeforeSuite(func() {
182185
testEnv.BinaryAssetsDirectory = getFirstFoundEnvTestBinaryDir()
183186
}
184187
185-
var err error
186188
// cfg is defined in this file globally.
187189
cfg, err = testEnv.Start()
188190
Expect(err).NotTo(HaveOccurred())
189191
Expect(cfg).NotTo(BeNil())
190192
191-
%s
192-
193193
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
194194
Expect(err).NotTo(HaveOccurred())
195195
Expect(k8sClient).NotTo(BeNil())

0 commit comments

Comments
 (0)