From 7674c220b1f8de920b0b2db6c156d1d31039d8d0 Mon Sep 17 00:00:00 2001 From: m-Bilal Date: Sun, 9 Jan 2022 19:05:49 +0530 Subject: [PATCH] Improved error message and test cases for 4240 --- api/krusty/blankvalues_test.go | 49 ++++++++++++++++++++++++++++++++++ api/resmap/reswrangler.go | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 api/krusty/blankvalues_test.go diff --git a/api/krusty/blankvalues_test.go b/api/krusty/blankvalues_test.go new file mode 100644 index 000000000..dfba4f365 --- /dev/null +++ b/api/krusty/blankvalues_test.go @@ -0,0 +1,49 @@ +package krusty_test + +import ( + "strings" + "testing" + + kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" +) + +// test for https://github.com/kubernetes-sigs/kustomize/issues/4240 +func TestBlankNamespace4240(t *testing.T) { + th := kusttest_test.MakeHarness(t) + th.WriteK(".", ` +resources: +- resource.yaml +`) + + th.WriteF("resource.yaml", ` +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: test +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: test +rules: [] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: test +subjects: +- kind: ServiceAccount + name: test + namespace: +roleRef: + kind: Role + name: test + apiGroup: rbac.authorization.k8s.io +`) + + err := th.RunWithErr(".", th.MakeDefaultOptions()) + if !strings.Contains(err.Error(), "Invalid Input: namespace is blank for resource") { + t.Fatalf("unexpected error: %q", err) + } +} diff --git a/api/resmap/reswrangler.go b/api/resmap/reswrangler.go index 93d82e64d..8b8d7834b 100644 --- a/api/resmap/reswrangler.go +++ b/api/resmap/reswrangler.go @@ -442,7 +442,7 @@ func getNamespacesForRoleBinding(r *resource.Resource) (map[string]bool, error) if n, ok3 := ns.(string); ok3 { result[n] = true } else { - return nil, errors.New("Invalid Input: namespace is blank") + return nil, errors.New(fmt.Sprintf("Invalid Input: namespace is blank for resource %q\n", r.CurId())) } } }