@@ -20,12 +20,14 @@ func TestEventEmitter_EmitMessage(t *testing.T) {
2020 observer , _ := zapobserver .New (zap .InfoLevel )
2121 fakelogger := zap .New (observer ).Sugar ()
2222 tests := []struct {
23- name string
24- repo * v1alpha1.Repository
25- message string
26- reason string
27- logLevel zapcore.Level
28- expectEvent bool
23+ name string
24+ repo * v1alpha1.Repository
25+ message string
26+ reason string
27+ logLevel zapcore.Level
28+ expectEvent bool
29+ expectedType string
30+ useNilLogger bool
2931 }{
3032 {
3133 name : "repo exists" ,
@@ -36,9 +38,10 @@ func TestEventEmitter_EmitMessage(t *testing.T) {
3638 },
3739 Spec : v1alpha1.RepositorySpec {},
3840 },
39- message : "info-message" ,
40- logLevel : zap .InfoLevel ,
41- expectEvent : true ,
41+ message : "info-message" ,
42+ logLevel : zap .InfoLevel ,
43+ expectEvent : true ,
44+ expectedType : v1 .EventTypeNormal ,
4245 },
4346 {
4447 name : "event with a reason" ,
@@ -50,17 +53,34 @@ func TestEventEmitter_EmitMessage(t *testing.T) {
5053 },
5154 Spec : v1alpha1.RepositorySpec {},
5255 },
53- message : "info-message" ,
54- logLevel : zap .InfoLevel ,
55- expectEvent : true ,
56- reason : "aintnosunshine" ,
56+ message : "info-message" ,
57+ logLevel : zap .InfoLevel ,
58+ expectEvent : true ,
59+ expectedType : v1 .EventTypeNormal ,
60+ reason : "aintnosunshine" ,
5761 },
5862 {
59- name : "repo doesn't exists" ,
60- repo : nil ,
61- message : "error-message" ,
62- logLevel : zap .ErrorLevel ,
63- expectEvent : false ,
63+ name : "repo doesn't exists" ,
64+ repo : nil ,
65+ message : "error-message" ,
66+ logLevel : zap .ErrorLevel ,
67+ expectEvent : false ,
68+ expectedType : v1 .EventTypeWarning ,
69+ },
70+ {
71+ name : "nil logger doesn't cause panic" ,
72+ repo : & v1alpha1.Repository {
73+ ObjectMeta : metav1.ObjectMeta {
74+ Name : "test-repo" ,
75+ Namespace : "test-ns" ,
76+ },
77+ Spec : v1alpha1.RepositorySpec {},
78+ },
79+ message : "error-message" ,
80+ logLevel : zap .ErrorLevel ,
81+ expectEvent : true ,
82+ expectedType : v1 .EventTypeWarning ,
83+ useNilLogger : true ,
6484 },
6585 }
6686
@@ -69,14 +89,22 @@ func TestEventEmitter_EmitMessage(t *testing.T) {
6989 ctx , _ := rtesting .SetupFakeContext (t )
7090 stdata , _ := testclient .SeedTestData (t , ctx , testclient.Data {})
7191
72- // emit event
73- NewEventEmitter (stdata .Kube , fakelogger ).EmitMessage (tt .repo , tt .logLevel , tt .reason , tt .message )
92+ // Use nil logger for specific test case
93+ var logger * zap.SugaredLogger
94+ if tt .useNilLogger {
95+ logger = nil
96+ } else {
97+ logger = fakelogger
98+ }
99+
100+ // emit event - this should not panic even with nil logger
101+ NewEventEmitter (stdata .Kube , logger ).EmitMessage (tt .repo , tt .logLevel , tt .reason , tt .message )
74102
75103 if tt .expectEvent {
76104 events , err := stdata .Kube .CoreV1 ().Events (tt .repo .Namespace ).List (context .Background (), metav1.ListOptions {})
77105 assert .NilError (t , err )
78106 assert .Equal (t , events .Items [0 ].Message , tt .message )
79- assert .Equal (t , events .Items [0 ].Type , v1 . EventTypeNormal )
107+ assert .Equal (t , events .Items [0 ].Type , tt . expectedType )
80108 assert .Equal (t , events .Items [0 ].Reason , tt .reason )
81109 assert .Equal (t , events .Items [0 ].InvolvedObject .Name , tt .repo .Name )
82110 assert .Equal (t , events .Items [0 ].InvolvedObject .Namespace , tt .repo .Namespace )
0 commit comments