diff --git a/kyaml/fn/framework/framework_test.go b/kyaml/fn/framework/framework_test.go index a69354435..4b04003de 100644 --- a/kyaml/fn/framework/framework_test.go +++ b/kyaml/fn/framework/framework_test.go @@ -18,25 +18,31 @@ func TestExecute_Result(t *testing.T) { p := framework.ResourceListProcessorFunc(func(rl *framework.ResourceList) error { err := &framework.Result{ Name: "Incompatible config", - Items: []framework.ResultItem{{ - Message: "bad value for replicas", - Severity: framework.Error, - ResourceRef: yaml.ResourceMeta{ - TypeMeta: yaml.TypeMeta{APIVersion: "v1", Kind: "Deployment"}, - ObjectMeta: yaml.ObjectMeta{ - NameMeta: yaml.NameMeta{Name: "tester", Namespace: "default"}, + Items: []framework.ResultItem{ + { + Message: "bad value for replicas", + Severity: framework.Error, + ResourceRef: yaml.ResourceMeta{ + TypeMeta: yaml.TypeMeta{APIVersion: "v1", Kind: "Deployment"}, + ObjectMeta: yaml.ObjectMeta{ + NameMeta: yaml.NameMeta{Name: "tester", Namespace: "default"}, + }, + }, + Field: framework.Field{ + Path: ".spec.Replicas", + CurrentValue: "0", + SuggestedValue: "3", + }, + File: framework.File{ + Path: "/path/to/deployment.yaml", + Index: 0, }, }, - Field: framework.Field{ - Path: ".spec.Replicas", - CurrentValue: "0", - SuggestedValue: "3", + { + Message: "some error", + Severity: framework.Error, }, - File: framework.File{ - Path: "/path/to/deployment.yaml", - Index: 0, - }, - }}, + }, } rl.Result = err return err @@ -55,8 +61,9 @@ items: replicas: 0 `), Writer: out} err := framework.Execute(p, source) - assert.EqualError(t, err, "[error] v1/Deployment/default/tester .spec."+ - "Replicas: bad value for replicas") + assert.EqualError(t, err, `[error] v1/Deployment/default/tester .spec.Replicas: bad value for replicas + +[error] : some error`) assert.Equal(t, 1, err.(*framework.Result).ExitCode()) assert.Equal(t, `apiVersion: config.kubernetes.io/v1alpha1 kind: ResourceList @@ -84,5 +91,7 @@ results: currentValue: "0" suggestedValue: "3" file: - path: /path/to/deployment.yaml`, strings.TrimSpace(out.String())) + path: /path/to/deployment.yaml + - message: some error + severity: error`, strings.TrimSpace(out.String())) } diff --git a/kyaml/fn/framework/result.go b/kyaml/fn/framework/result.go index b397fd3cd..85250114f 100644 --- a/kyaml/fn/framework/result.go +++ b/kyaml/fn/framework/result.go @@ -43,8 +43,24 @@ type ResultItem struct { // String provides a human-readable message for the result item func (i ResultItem) String() string { identifier := i.ResourceRef.GetIdentifier() - idString := strings.Join([]string{identifier.GetAPIVersion(), identifier.GetKind(), identifier.GetNamespace(), identifier.GetName()}, "/") - return fmt.Sprintf("[%s] %s %s: %s", i.Severity, idString, i.Field.Path, i.Message) + var idStringList []string + if identifier.APIVersion != "" { + idStringList = append(idStringList, identifier.APIVersion) + } + if identifier.Kind != "" { + idStringList = append(idStringList, identifier.Kind) + } + if identifier.Namespace != "" { + idStringList = append(idStringList, identifier.Namespace) + } + if identifier.Name != "" { + idStringList = append(idStringList, identifier.Name) + } + if len(idStringList) > 0 { + idString := strings.Join(idStringList, "/") + return fmt.Sprintf("[%s] %s %s: %s", i.Severity, idString, i.Field.Path, i.Message) + } + return fmt.Sprintf("[%s] %s: %s", i.Severity, i.Field.Path, i.Message) } // File references a file containing a resource