From f7e762139592555bd17f6aaa64ba31b38f702853 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Thu, 2 Apr 2020 10:05:29 -0400 Subject: [PATCH] Avoid panic when reporting error in conformance test Signed-off-by: Davanum Srinivas --- test/utils/deployment.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/utils/deployment.go b/test/utils/deployment.go index a9f982affe6..be85879470b 100644 --- a/test/utils/deployment.go +++ b/test/utils/deployment.go @@ -22,6 +22,7 @@ import ( "time" "github.com/davecgh/go-spew/spew" + "github.com/pkg/errors" apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" @@ -199,7 +200,18 @@ func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName return fmt.Errorf("deployment %q failed to create new replica set", deploymentName) } if err != nil { - return fmt.Errorf("error waiting for deployment %q (got %s / %s) and new replica set %q (got %s / %s) revision and image to match expectation (expected %s / %s): %v", deploymentName, deployment.Annotations[deploymentutil.RevisionAnnotation], deployment.Spec.Template.Spec.Containers[0].Image, newRS.Name, newRS.Annotations[deploymentutil.RevisionAnnotation], newRS.Spec.Template.Spec.Containers[0].Image, revision, image, err) + if deployment == nil { + return errors.Wrapf(err, "error creating new replica set for deployment %q ", deploymentName) + } + deploymentImage := "" + if len(deployment.Spec.Template.Spec.Containers) > 0 { + deploymentImage = deployment.Spec.Template.Spec.Containers[0].Image + } + newRSImage := "" + if len(newRS.Spec.Template.Spec.Containers) > 0 { + newRSImage = newRS.Spec.Template.Spec.Containers[0].Image + } + return fmt.Errorf("error waiting for deployment %q (got %s / %s) and new replica set %q (got %s / %s) revision and image to match expectation (expected %s / %s): %v", deploymentName, deployment.Annotations[deploymentutil.RevisionAnnotation], deploymentImage, newRS.Name, newRS.Annotations[deploymentutil.RevisionAnnotation], newRSImage, revision, image, err) } return nil }