From 7f75002b6b62a7c9484896dc5f58a0971c9143cf Mon Sep 17 00:00:00 2001 From: Thomas Lorreyte <43377784+tlorreyte@users.noreply.github.com> Date: Sun, 13 Nov 2022 05:45:19 +0100 Subject: [PATCH] feat: add policy check summary in wrapped messages (#2452) Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com> --- server/events/markdown_renderer.go | 3 ++- server/events/models/models.go | 11 +++++++++++ server/events/models/models_test.go | 11 +++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/server/events/markdown_renderer.go b/server/events/markdown_renderer.go index 74960dec49..f5aeb1405a 100644 --- a/server/events/markdown_renderer.go +++ b/server/events/markdown_renderer.go @@ -94,6 +94,7 @@ type planSuccessData struct { type policyCheckSuccessData struct { models.PolicyCheckSuccess + PolicyCheckSummary string } type projectResultTmplData struct { @@ -199,7 +200,7 @@ func (m *MarkdownRenderer) renderProjectResults(results []command.ProjectResult, numPlanSuccesses++ } else if result.PolicyCheckSuccess != nil { if m.shouldUseWrappedTmpl(vcsHost, result.PolicyCheckSuccess.PolicyCheckOutput) { - resultData.Rendered = m.renderTemplate(templates.Lookup("policyCheckSuccessWrapped"), policyCheckSuccessData{PolicyCheckSuccess: *result.PolicyCheckSuccess}) + resultData.Rendered = m.renderTemplate(templates.Lookup("policyCheckSuccessWrapped"), policyCheckSuccessData{PolicyCheckSuccess: *result.PolicyCheckSuccess, PolicyCheckSummary: result.PolicyCheckSuccess.Summary()}) } else { resultData.Rendered = m.renderTemplate(templates.Lookup("policyCheckSuccessUnwrapped"), policyCheckSuccessData{PolicyCheckSuccess: *result.PolicyCheckSuccess}) } diff --git a/server/events/models/models.go b/server/events/models/models.go index 6b7dbb0c06..3c6b8f5b36 100644 --- a/server/events/models/models.go +++ b/server/events/models/models.go @@ -411,6 +411,17 @@ type PolicyCheckSuccess struct { HasDiverged bool } +// Summary extracts one line summary of policy check. +func (p *PolicyCheckSuccess) Summary() string { + note := "" + + r := regexp.MustCompile(`\d+ tests, \d+ passed, \d+ warnings, \d+ failures, \d+ exceptions`) + if match := r.FindString(p.PolicyCheckOutput); match != "" { + return note + match + } + return note +} + type VersionSuccess struct { VersionOutput string } diff --git a/server/events/models/models_test.go b/server/events/models/models_test.go index 7aea621b28..1ebd555ea1 100644 --- a/server/events/models/models_test.go +++ b/server/events/models/models_test.go @@ -354,6 +354,17 @@ func TestAzureDevopsSplitRepoFullName(t *testing.T) { }) } } + +func TestPolicyCheckSuccess_Summary(t *testing.T) { + pcs := models.PolicyCheckSuccess{ + PolicyCheckOutput: `WARN - - main - example main package + +20 tests, 19 passed, 1 warnings, 0 failures, 0 exceptions`, + } + + Equals(t, "20 tests, 19 passed, 1 warnings, 0 failures, 0 exceptions", pcs.Summary()) +} + func TestPullStatus_StatusCount(t *testing.T) { ps := models.PullStatus{ Projects: []models.ProjectStatus{