@@ -17,102 +17,73 @@ limitations under the License.
1717package controllers
1818
1919import (
20- "context"
20+ "fmt"
21+ "math/rand"
22+ "os"
2123 "path/filepath"
2224 "testing"
25+ "time"
2326
24- . "github.com/onsi/ginkgo"
25- . "github.com/onsi/gomega"
27+ utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2628 "k8s.io/client-go/kubernetes/scheme"
27- "k8s.io/client-go/rest"
2829 ctrl "sigs.k8s.io/controller-runtime"
29- "sigs.k8s.io/controller-runtime/pkg/client"
30- "sigs.k8s.io/controller-runtime/pkg/envtest"
31- "sigs.k8s.io/controller-runtime/pkg/envtest/printer"
32- "sigs.k8s.io/controller-runtime/pkg/log/zap"
3330
3431 imagev1_reflect "github.com/fluxcd/image-reflector-controller/api/v1beta1"
32+ "github.com/fluxcd/pkg/runtime/testenv"
3533 sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
3634
3735 imagev1 "github.com/fluxcd/image-automation-controller/api/v1beta1"
3836 // +kubebuilder:scaffold:imports
3937)
4038
41- // These tests use Ginkgo (BDD-style Go testing framework). Refer to
42- // http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
39+ // These tests make use of plain Go using Gomega for assertions.
40+ // At the beginning of every (sub)test Gomega can be initialized
41+ // using gomega.NewWithT.
42+ // Refer to http://onsi.github.io/gomega/ to learn more about
43+ // Gomega.
4344
44- var cfg * rest.Config
45- var k8sClient client.Client
46- var k8sManager ctrl.Manager
47- var imageAutoReconciler * ImageUpdateAutomationReconciler
48- var testEnv * envtest.Environment
49- var ctx context.Context
50- var cancel context.CancelFunc
51-
52- func TestAPIs (t * testing.T ) {
53- RegisterFailHandler (Fail )
45+ var (
46+ testEnv * testenv.Environment
47+ ctx = ctrl .SetupSignalHandler ()
48+ )
5449
55- RunSpecsWithDefaultAndCustomReporters (t ,
56- "Controller Suite" ,
57- []Reporter {printer.NewlineReporter {}})
50+ func init () {
51+ rand .Seed (time .Now ().UnixNano ())
5852}
5953
60- var _ = BeforeSuite (func (done Done ) {
61- ctrl .SetLogger (
62- zap .New (zap .WriteTo (GinkgoWriter ), zap .UseDevMode (true )),
63- )
64- ctx , cancel = context .WithCancel (context .TODO ())
65-
66- By ("bootstrapping test environment" )
67- testEnv = & envtest.Environment {
68- CRDDirectoryPaths : []string {
69- filepath .Join (".." , "config" , "crd" , "bases" ),
70- filepath .Join ("testdata" , "crds" ),
71- },
72- }
73-
74- var err error
75- cfg , err = testEnv .Start ()
76- Expect (err ).ToNot (HaveOccurred ())
77- Expect (cfg ).ToNot (BeNil ())
78-
79- Expect (sourcev1 .AddToScheme (scheme .Scheme )).To (Succeed ())
80- Expect (imagev1_reflect .AddToScheme (scheme .Scheme )).To (Succeed ())
54+ func TestMain (m * testing.M ) {
55+ utilruntime .Must (imagev1_reflect .AddToScheme (scheme .Scheme ))
56+ utilruntime .Must (sourcev1 .AddToScheme (scheme .Scheme ))
57+ utilruntime .Must (imagev1 .AddToScheme (scheme .Scheme ))
8158
82- Expect (imagev1 .AddToScheme (scheme .Scheme )).To (Succeed ())
83- // +kubebuilder:scaffold:scheme
84-
85- k8sManager , err = ctrl .NewManager (cfg , ctrl.Options {
86- Scheme : scheme .Scheme ,
87- })
88- Expect (err ).ToNot (HaveOccurred ())
59+ testEnv = testenv .New (testenv .WithCRDPath (
60+ filepath .Join (".." , "config" , "crd" , "bases" ),
61+ filepath .Join ("testdata" , "crds" ),
62+ ))
8963
9064 controllerName := "image-automation-controller"
91- imageAutoReconciler = & ImageUpdateAutomationReconciler {
92- Client : k8sManager . GetClient () ,
65+ if err := ( & ImageUpdateAutomationReconciler {
66+ Client : testEnv ,
9367 Scheme : scheme .Scheme ,
94- EventRecorder : k8sManager .GetEventRecorderFor (controllerName ),
68+ EventRecorder : testEnv .GetEventRecorderFor (controllerName ),
69+ }).SetupWithManager (testEnv , ImageUpdateAutomationReconcilerOptions {}); err != nil {
70+ panic (fmt .Sprintf ("Failed to start ImageUpdateAutomationReconciler: %v" , err ))
9571 }
96- Expect (imageAutoReconciler .SetupWithManager (k8sManager , ImageUpdateAutomationReconcilerOptions {})).To (Succeed ())
9772
9873 go func () {
99- defer GinkgoRecover ()
100- err = k8sManager .Start (ctx )
101- Expect (err ).ToNot (HaveOccurred ())
74+ fmt .Println ("Starting the test environment" )
75+ if err := testEnv .Start (ctx ); err != nil {
76+ panic (fmt .Sprintf ("Failed to start the test environment manager: %v" , err ))
77+ }
10278 }()
79+ <- testEnv .Manager .Elected ()
80+
81+ code := m .Run ()
10382
104- // Specifically an uncached client. Use <reconciler>.Get if you
105- // want to see what the reconcilers see.
106- k8sClient , err = client .New (cfg , client.Options {Scheme : scheme .Scheme })
107- Expect (err ).ToNot (HaveOccurred ())
108- Expect (k8sClient ).ToNot (BeNil ())
109-
110- close (done )
111- }, 60 )
112-
113- var _ = AfterSuite (func () {
114- cancel ()
115- By ("tearing down the test environment" )
116- err := testEnv .Stop ()
117- Expect (err ).ToNot (HaveOccurred ())
118- })
83+ fmt .Println ("Stopping the test environment" )
84+ if err := testEnv .Stop (); err != nil {
85+ panic (fmt .Sprintf ("Failed to stop the test environment: %v" , err ))
86+ }
87+
88+ os .Exit (code )
89+ }
0 commit comments