Skip to content

Commit 3b1e2af

Browse files
committed
fix: Replace Warning footer bold text with emoji
1 parent 8a89899 commit 3b1e2af

2 files changed

Lines changed: 37 additions & 35 deletions

File tree

internal/output/markdown.go

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@ func writeMarker(sb *strings.Builder, marker string) {
3333
}
3434
}
3535

36-
func countResourceChanges(rd diff.ResourceDiff) (added, modified, deleted int) {
37-
return len(rd.Added), len(rd.Modified), len(rd.Deleted)
36+
func sortedKeys[V any](m map[string]V) []string {
37+
keys := make([]string, 0, len(m))
38+
for k := range m {
39+
keys = append(keys, k)
40+
}
41+
sort.Strings(keys)
42+
return keys
3843
}
3944

4045
// RenderDiffMarkdown renders diff results as markdown for MR comments.
@@ -60,19 +65,18 @@ func RenderDiffMarkdown(results []diff.DiffResult, opts MarkdownOptions) string
6065
if content == "" {
6166
continue
6267
}
68+
teamHeader := result.Team
6369
if result.Team == "(global)" {
64-
sb.WriteString("### Global (default.yml)\n\n")
65-
} else {
66-
sb.WriteString(fmt.Sprintf("### %s\n\n", result.Team))
70+
teamHeader = "Global (default.yml)"
6771
}
72+
sb.WriteString(fmt.Sprintf("### %s\n\n", teamHeader))
6873
sb.WriteString(content)
6974
sb.WriteString("\n")
7075

7176
for _, rd := range []diff.ResourceDiff{result.Policies, result.Queries, result.Software, result.Profiles} {
72-
a, m, d := countResourceChanges(rd)
73-
totalAdded += a
74-
totalModified += m
75-
totalDeleted += d
77+
totalAdded += len(rd.Added)
78+
totalModified += len(rd.Modified)
79+
totalDeleted += len(rd.Deleted)
7680
}
7781
}
7882

@@ -87,7 +91,7 @@ func RenderDiffMarkdown(results []diff.DiffResult, opts MarkdownOptions) string
8791
totalAdded, totalModified, totalDeleted))
8892

8993
if warning := buildPermissionWarning(results); warning != "" {
90-
sb.WriteString(fmt.Sprintf("\n**Warning:** %s\n", warning))
94+
sb.WriteString(fmt.Sprintf("\n⚠️ %s\n", warning))
9195
}
9296

9397
writeMarker(&sb, opts.Marker)
@@ -162,11 +166,7 @@ func renderFieldsMarkdown(fields map[string]diff.FieldDiff) string {
162166
return ""
163167
}
164168
var parts []string
165-
var names []string
166-
for name := range fields {
167-
names = append(names, name)
168-
}
169-
sort.Strings(names)
169+
names := sortedKeys(fields)
170170
for _, name := range names {
171171
fd := fields[name]
172172
parts = append(parts, fmt.Sprintf("`%s`: `%s` -> `%s`", name, fd.Old, fd.New))
@@ -207,11 +207,7 @@ func buildPermissionWarning(results []diff.DiffResult) string {
207207
return ""
208208
}
209209

210-
resources := make([]string, 0, len(unavailable))
211-
for r := range unavailable {
212-
resources = append(resources, r)
213-
}
214-
sort.Strings(resources)
210+
resources := sortedKeys(unavailable)
215211
return fmt.Sprintf("Token lacks read access to: %s. Full-access token required for a complete diff.", strings.Join(resources, ", "))
216212
}
217213

@@ -254,11 +250,7 @@ func renderLabelsMarkdown(results []diff.DiffResult) string {
254250
sb.WriteString(fmt.Sprintf("- 🏷️ `%s`\n", l.Name))
255251
}
256252
}
257-
var missingNames []string
258-
for name := range missingSeen {
259-
missingNames = append(missingNames, name)
260-
}
261-
sort.Strings(missingNames)
253+
missingNames := sortedKeys(missingSeen)
262254
for _, name := range missingNames {
263255
l := missingSeen[name]
264256
sb.WriteString(fmt.Sprintf("- 🚫 `%s` **NOT FOUND** (referenced by %s)\n", l.Name, l.ReferencedBy))

internal/output/markdown_test.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,24 @@ import (
77
"github.com/TsekNet/fleet-plan/internal/diff"
88
)
99

10+
func assertOutputContains(t *testing.T, out string, substrings []string) {
11+
t.Helper()
12+
for _, s := range substrings {
13+
if !strings.Contains(out, s) {
14+
t.Errorf("expected %q in output, got:\n%s", s, out)
15+
}
16+
}
17+
}
18+
19+
func assertOutputExcludes(t *testing.T, out string, substrings []string) {
20+
t.Helper()
21+
for _, s := range substrings {
22+
if strings.Contains(out, s) {
23+
t.Errorf("did not expect %q in output, got:\n%s", s, out)
24+
}
25+
}
26+
}
27+
1028
func TestRenderDiffMarkdown(t *testing.T) {
1129
tests := []struct {
1230
name string
@@ -169,16 +187,8 @@ func TestRenderDiffMarkdown(t *testing.T) {
169187
for _, tt := range tests {
170188
t.Run(tt.name, func(t *testing.T) {
171189
out := RenderDiffMarkdown(tt.results, tt.opts)
172-
for _, want := range tt.wantAll {
173-
if !strings.Contains(out, want) {
174-
t.Errorf("expected %q in output, got:\n%s", want, out)
175-
}
176-
}
177-
for _, notWant := range tt.wantNone {
178-
if strings.Contains(out, notWant) {
179-
t.Errorf("did not expect %q in output, got:\n%s", notWant, out)
180-
}
181-
}
190+
assertOutputContains(t, out, tt.wantAll)
191+
assertOutputExcludes(t, out, tt.wantNone)
182192
})
183193
}
184194
}

0 commit comments

Comments
 (0)