Skip to content

Commit e566e83

Browse files
committed
fix: preserve FindRenames in doSuppress and add regression test
Copy FindRenames into the filtered report in doSuppress so that --find-renames still works when --suppress-output-line-regex is used. Add TestPrintDyffReportFindRenamesChangesOutput to verify that dyff output differs between FindRenames == 0 and FindRenames > 0. Signed-off-by: yxxhero <aiopsclub@163.com>
1 parent d01812b commit e566e83

2 files changed

Lines changed: 45 additions & 1 deletion

File tree

diff/diff.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ func doSuppress(report Report, suppressedOutputLineRegex []string) (Report, erro
118118
return report, nil
119119
}
120120

121-
filteredReport := Report{}
121+
filteredReport := Report{
122+
FindRenames: report.FindRenames,
123+
}
122124
filteredReport.format = report.format
123125
filteredReport.Entries = []ReportEntry{}
124126

diff/report_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,48 @@ func TestPrintDyffReportDoesNotMergeAddRemoveWithFindRenames(t *testing.T) {
166166
require.Contains(t, addRemoveOutput, "new-app")
167167
}
168168

169+
func TestPrintDyffReportFindRenamesChangesOutput(t *testing.T) {
170+
entries := []ReportEntry{
171+
{
172+
Key: "default, old-app, Deployment (apps)",
173+
Kind: "Deployment",
174+
ChangeType: "REMOVE",
175+
Diffs: []difflib.DiffRecord{
176+
{Payload: "apiVersion: apps/v1", Delta: difflib.LeftOnly},
177+
{Payload: "kind: Deployment", Delta: difflib.LeftOnly},
178+
{Payload: "metadata:", Delta: difflib.LeftOnly},
179+
{Payload: " name: old-app", Delta: difflib.LeftOnly},
180+
{Payload: "spec:", Delta: difflib.LeftOnly},
181+
{Payload: " replicas: 3", Delta: difflib.LeftOnly},
182+
},
183+
},
184+
{
185+
Key: "default, new-app, Deployment (apps)",
186+
Kind: "Deployment",
187+
ChangeType: "ADD",
188+
Diffs: []difflib.DiffRecord{
189+
{Payload: "apiVersion: apps/v1", Delta: difflib.RightOnly},
190+
{Payload: "kind: Deployment", Delta: difflib.RightOnly},
191+
{Payload: "metadata:", Delta: difflib.RightOnly},
192+
{Payload: " name: new-app", Delta: difflib.RightOnly},
193+
{Payload: "spec:", Delta: difflib.RightOnly},
194+
{Payload: " replicas: 3", Delta: difflib.RightOnly},
195+
},
196+
},
197+
}
198+
199+
var noRenameBuf bytes.Buffer
200+
printDyffReport(&Report{FindRenames: 0, Entries: entries}, &noRenameBuf)
201+
noRenameOutput := noRenameBuf.String()
202+
203+
var withRenameBuf bytes.Buffer
204+
printDyffReport(&Report{FindRenames: 1.0, Entries: entries}, &withRenameBuf)
205+
withRenameOutput := withRenameBuf.String()
206+
207+
require.NotEqual(t, noRenameOutput, withRenameOutput,
208+
"Output with FindRenames > 0 should differ from FindRenames == 0 for similar ADD+REMOVE entries")
209+
}
210+
169211
func TestPrintDyffReportEmpty(t *testing.T) {
170212
report := &Report{
171213
Entries: []ReportEntry{},

0 commit comments

Comments
 (0)