diff --git a/diff/report.go b/diff/report.go index 5f4118d9..452c48f8 100644 --- a/diff/report.go +++ b/diff/report.go @@ -133,6 +133,10 @@ func printDyffReport(r *Report, to io.Writer) { OmitHeader: true, MinorChangeThreshold: 0.1, } + // dyff omits the root description for a single-document comparison. + if len(r.Entries) == 1 { + _, _ = fmt.Fprintln(to, r.Entries[0].Key) + } _ = reportWriter.WriteReport(to) } diff --git a/diff/report_test.go b/diff/report_test.go index 8cc74e40..b5e52d7c 100644 --- a/diff/report_test.go +++ b/diff/report_test.go @@ -67,6 +67,33 @@ func TestPrintDyffReport(t *testing.T) { require.Contains(t, output, "+ 3", "Expected dyff output to show updated replicas value") } +func TestPrintDyffReportSingleChangeIncludesResourceIdentity(t *testing.T) { + report := &Report{ + Entries: []ReportEntry{{ + Key: "default, heat-trusts, Job (batch)", + Kind: "Job", + ChangeType: "MODIFY", + Diffs: []difflib.DiffRecord{ + {Payload: "apiVersion: batch/v1", Delta: difflib.Common}, + {Payload: "kind: Job", Delta: difflib.Common}, + {Payload: "metadata:", Delta: difflib.Common}, + {Payload: " name: heat-trusts", Delta: difflib.Common}, + {Payload: "spec:", Delta: difflib.Common}, + {Payload: " parallelism: 1", Delta: difflib.LeftOnly}, + {Payload: " parallelism: 2", Delta: difflib.RightOnly}, + }, + }}, + } + + var buf bytes.Buffer + printDyffReport(report, &buf) + output := buf.String() + require.Contains(t, output, "default, heat-trusts, Job (batch)") + require.Contains(t, output, "spec.parallelism") + require.Contains(t, output, "- 1") + require.Contains(t, output, "+ 2") +} + func TestPrintDyffReportWithAddAndRemove(t *testing.T) { report := &Report{ Entries: []ReportEntry{