diff --git a/pkg/kyverno/test/test_command.go b/pkg/kyverno/test/test_command.go index d669edfc0d..b277c2558c 100644 --- a/pkg/kyverno/test/test_command.go +++ b/pkg/kyverno/test/test_command.go @@ -76,7 +76,7 @@ type TestResults struct { Result report.PolicyResult `json:"result"` Status report.PolicyResult `json:"status"` Resource string `json:"resource"` - AutoGeneratedRule bool `json:"auto_generated_rule"` + AutoGeneratedRule string `json:"auto_generated_rule"` } type ReportResult struct { @@ -247,6 +247,7 @@ func buildPolicyResults(resps []*response.EngineResponse, testResults []TestResu for _, rule := range resp.PolicyResponse.Rules { rules = append(rules, rule.Name) } + result := report.PolicyReportResult{ Policy: policyName, Resources: []*corev1.ObjectReference{ @@ -255,16 +256,23 @@ func buildPolicyResults(resps []*response.EngineResponse, testResults []TestResu }, }, } + for i, test := range testResults { if test.Policy == policyName && test.Resource == resourceName { if !util.ContainsString(rules, test.Rule) { if !util.ContainsString(rules, "autogen-"+test.Rule) { - result.Result = report.StatusSkip + if !util.ContainsString(rules, "autogen-cronjob-"+test.Rule) { + result.Result = report.StatusSkip + } else { + testResults[i].AutoGeneratedRule = "autogen-cronjob" + test.Rule = "autogen-cronjob-" + test.Rule + } } else { - testResults[i].AutoGeneratedRule = true + testResults[i].AutoGeneratedRule = "autogen" test.Rule = "autogen-" + test.Rule } } + resultsKey := fmt.Sprintf("%s-%s-%s", test.Policy, test.Rule, test.Resource) if _, ok := results[resultsKey]; !ok { results[resultsKey] = result @@ -276,10 +284,10 @@ func buildPolicyResults(resps []*response.EngineResponse, testResults []TestResu for _, info := range infos { for _, infoResult := range info.Results { for _, rule := range infoResult.Rules { - if rule.Type != utils.Validation.String() { continue } + var result report.PolicyReportResult resultsKey := fmt.Sprintf("%s-%s-%s", info.PolicyName, rule.Name, infoResult.Resource.Name) if val, ok := results[resultsKey]; ok { @@ -287,13 +295,12 @@ func buildPolicyResults(resps []*response.EngineResponse, testResults []TestResu } else { continue } + result.Rule = rule.Name result.Result = report.PolicyResult(rule.Check) - result.Source = policyreport.SourceValue result.Timestamp = now results[resultsKey] = result - } } } @@ -439,8 +446,8 @@ func printTestResult(resps map[string]report.PolicyReportResult, testResults []T res.Resource = boldFgCyan.Sprintf(v.Resource) var ruleNameInResultKey string - if v.AutoGeneratedRule { - ruleNameInResultKey = fmt.Sprintf("autogen-%s", v.Rule) + if v.AutoGeneratedRule != "" { + ruleNameInResultKey = fmt.Sprintf("%s-%s", v.AutoGeneratedRule, v.Rule) } else { ruleNameInResultKey = v.Rule } diff --git a/test/cli/test/autogen/test.yaml b/test/cli/test/autogen/test.yaml index dcf402e848..d6bef7195f 100644 --- a/test/cli/test/autogen/test.yaml +++ b/test/cli/test/autogen/test.yaml @@ -17,36 +17,36 @@ results: # TEST: Deployment with Labels Should Pass - policy: require-common-labels - rule: autogen-check-for-labels + rule: check-for-labels result: pass resource: deployment-with-labels # TEST: Deployment with Labels Should Fail - policy: require-common-labels - rule: autogen-check-for-labels + rule: check-for-labels result: fail resource: deployment-missing-labels # TEST: StatefulSet with Labels Should Pass - policy: require-common-labels - rule: autogen-check-for-labels + rule: check-for-labels result: pass resource: StatefulSet-with-labels # TEST: StatefulSet with Labels Should fail - policy: require-common-labels - rule: autogen-check-for-labels + rule: check-for-labels result: fail resource: StatefulSet-without-labels # TEST: Cronjob with Labels Should pass - policy: require-common-labels - rule: autogen-cronjob-check-for-labels + rule: check-for-labels result: pass resource: cronjob-with-labels # TEST: Cronjob without Labels Should fail - policy: require-common-labels - rule: autogen-cronjob-check-for-labels + rule: check-for-labels result: fail resource: cronjob-without-labels