@@ -80,7 +80,7 @@ func (t *Case) DeleteNamespace(cl client.Client, ns *namespace) error {
8080}
8181
8282// CreateNamespace creates a namespace in Kubernetes to use for a test.
83- func (t * Case ) CreateNamespace (cl client.Client , ns * namespace ) error {
83+ func (t * Case ) CreateNamespace (test * testing. T , cl client.Client , ns * namespace ) error {
8484 if ! ns .AutoCreated {
8585 t .Logger .Log ("Skipping creation of user-supplied namespace:" , ns .Name )
8686 return nil
@@ -94,6 +94,14 @@ func (t *Case) CreateNamespace(cl client.Client, ns *namespace) error {
9494 defer cancel ()
9595 }
9696
97+ if ! t .SkipDelete {
98+ test .Cleanup (func () {
99+ if err := t .DeleteNamespace (cl , ns ); err != nil {
100+ test .Error (err )
101+ }
102+ })
103+ }
104+
97105 return cl .Create (ctx , & corev1.Namespace {
98106 ObjectMeta : metav1.ObjectMeta {
99107 Name : ns .Name ,
@@ -290,6 +298,17 @@ func shortString(obj *corev1.ObjectReference) string {
290298 fieldRef )
291299}
292300
301+ func runStep (test * testing.T , testCase * Case , testStep * Step , ns * namespace ) []error {
302+ if ! testCase .SkipDelete {
303+ test .Cleanup (func () {
304+ if err := testStep .Clean (ns .Name ); err != nil {
305+ test .Error (err )
306+ }
307+ })
308+ }
309+ return testStep .Run (ns .Name )
310+ }
311+
293312// Run runs a test case including all of its steps.
294313func (t * Case ) Run (test * testing.T , tc * report.Testcase ) {
295314 ns := t .determineNamespace ()
@@ -317,22 +336,12 @@ func (t *Case) Run(test *testing.T, tc *report.Testcase) {
317336 }
318337
319338 for _ , c := range clients {
320- if err := t .CreateNamespace (c , ns ); err != nil {
339+ if err := t .CreateNamespace (test , c , ns ); err != nil {
321340 tc .Failure = report .NewFailure (err .Error (), nil )
322341 test .Fatal (err )
323342 }
324343 }
325344
326- if ! t .SkipDelete {
327- defer func () {
328- for _ , c := range clients {
329- if err := t .DeleteNamespace (c , ns ); err != nil {
330- test .Error (err )
331- }
332- }
333- }()
334- }
335-
336345 for _ , testStep := range t .Steps {
337346 testStep .Client = t .Client
338347 if testStep .Kubeconfig != "" {
@@ -346,15 +355,7 @@ func (t *Case) Run(test *testing.T, tc *report.Testcase) {
346355 tc .Assertions += len (testStep .Asserts )
347356 tc .Assertions += len (testStep .Errors )
348357
349- if ! t .SkipDelete {
350- defer func (step * Step ) {
351- if err := step .Clean (ns .Name ); err != nil {
352- test .Error (err )
353- }
354- }(testStep )
355- }
356-
357- if errs := testStep .Run (ns .Name ); len (errs ) > 0 {
358+ if errs := runStep (test , t , testStep , ns ); len (errs ) > 0 {
358359 caseErr := fmt .Errorf ("failed in step %s" , testStep .String ())
359360 tc .Failure = report .NewFailure (caseErr .Error (), errs )
360361
0 commit comments