From 1c3f3f4c8a4181363ddec44f7d4afeec17581496 Mon Sep 17 00:00:00 2001 From: Lars Dehler Date: Thu, 28 Dec 2023 09:49:25 +0100 Subject: [PATCH] adapt testcases --- .../issue-225/expected-dyff-spruce.human | 11 +-- .../configmaps/expected-dyff-spruce.human | 49 +++++----- assets/multiline/expected-dyff-spruce.human | 88 +++++++++++++++++ assets/multiline/from.yml | 96 +++++++++++++++++++ assets/multiline/to.yml | 95 ++++++++++++++++++ assets/testbed/expected-dyff-gopatch.human | 14 +-- assets/testbed/expected-dyff-spruce.human | 14 +-- pkg/dyff/core_suite_test.go | 12 ++- pkg/dyff/output_human_test.go | 9 ++ 9 files changed, 340 insertions(+), 48 deletions(-) create mode 100644 assets/multiline/expected-dyff-spruce.human create mode 100644 assets/multiline/from.yml create mode 100644 assets/multiline/to.yml diff --git a/assets/issues/issue-225/expected-dyff-spruce.human b/assets/issues/issue-225/expected-dyff-spruce.human index cb85639..5f2d6cf 100644 --- a/assets/issues/issue-225/expected-dyff-spruce.human +++ b/assets/issues/issue-225/expected-dyff-spruce.human @@ -1,10 +1,9 @@ data - ± value change in multiline text (one insert) - string foo = "bar"; - string x_forwarded_host = 53; - string worker_status = 54; - uint64 worker_cpu_time_micro = 55; - + ± value change in multiline text (one insert, no deletions) +  string foo = "bar"; +  + string x_forwarded_host = 53; +  + string worker_status = 54; +  + uint64 worker_cpu_time_micro = 55; diff --git a/assets/kubernetes/configmaps/expected-dyff-spruce.human b/assets/kubernetes/configmaps/expected-dyff-spruce.human index bb569a2..e43965c 100644 --- a/assets/kubernetes/configmaps/expected-dyff-spruce.human +++ b/assets/kubernetes/configmaps/expected-dyff-spruce.human @@ -1,29 +1,28 @@ data.pinniped.yaml - ± value change in multiline text (one insert, one deletion) - discovery: -  url: null - api: -  servingCertificate: -  durationSeconds: 2592000 -  renewBeforeSeconds: 12160000 - apiGroupSuffix: pinniped.dev - # aggregatedAPIServerPort may be set here, although other YAML references to the default port (10250) may also need to be updated - # impersonationProxyServerPort may be set here, although other YAML references to the default port (8444) may also need to be updated - names: -  servingCertificateSecret: pinniped-concierge-api-tls-serving-certificate -  credentialIssuer: pinniped-concierge-config -  apiService: pinniped-concierge-api -  impersonationLoadBalancerService: pinniped-concierge-impersonation-proxy-load-balancer -  impersonationClusterIPService: pinniped-concierge-impersonation-proxy-cluster-ip -  impersonationTLSCertificateSecret: pinniped-concierge-impersonation-proxy-tls-serving-certificate -  impersonationCACertificateSecret: pinniped-concierge-impersonation-proxy-ca-certificate -  impersonationSignerSecret: pinniped-concierge-impersonation-proxy-signer-ca-certificate -  agentServiceAccount: pinniped-concierge-kube-cert-agent - labels: {"app": "pinniped-concierge"} - kubeCertAgent: -  namePrefix: pinniped-concierge-kube-cert-agent- -  image: projects.registry.vmware.com/pinniped/pinniped-server:latest - + ± value change in multiline text (one insert, two deletions) +  discovery: +  url: null +  api: +  servingCertificate: +  durationSeconds: 2592000 +  - renewBeforeSeconds: 2160000 +  + renewBeforeSeconds: 12160000 +  apiGroupSuffix: pinniped.dev +  # aggregatedAPIServerPort may be set here, although other YAML references to the default port (10250) may also need to be updated +  # impersonationProxyServerPort may be set here, although other YAML references to the default port (8444) may also need to be updated +  names: +   +  [five lines unchanged)] +   +  impersonationTLSCertificateSecret: pinniped-concierge-impersonation-proxy-tls-serving-certificate +  impersonationCACertificateSecret: pinniped-concierge-impersonation-proxy-ca-certificate +  impersonationSignerSecret: pinniped-concierge-impersonation-proxy-signer-ca-certificate +  agentServiceAccount: pinniped-concierge-kube-cert-agent +  - labels: {"app": "pinniped-concierge"} +  kubeCertAgent: +  namePrefix: pinniped-concierge-kube-cert-agent- +  image: projects.registry.vmware.com/pinniped/pinniped-server:latest + diff --git a/assets/multiline/expected-dyff-spruce.human b/assets/multiline/expected-dyff-spruce.human new file mode 100644 index 0000000..e8a2c42 --- /dev/null +++ b/assets/multiline/expected-dyff-spruce.human @@ -0,0 +1,88 @@ + +files.simple.content + ± value change in multiline text (three inserts, three deletions) +  UnChanged line +  - This line will change 1 +  + This line changed 1 +  UnChanged line +  - This line will change 2 +  + This line changed 2 +  UnChanged line +  - This line will change 3 +  + This line changed 3 + + +files.newline.content + ± value change in multiline text (three inserts, three deletions) +   +  - This line will change 1 +  + This line changed 1 +  UnChanged line +  - This line will change 2 +  + This line changed 2 +   +   +  UnChanged line +  - This line will change 3 +  + This line changed 3 +   +   + + +files.complex.content + ± value change in multiline text (two inserts, two deletions) +  Begin line 1 +  Begin line 2 +  Begin line 3 +  Begin line 4 +   +  [four lines unchanged)] +   +  PreChange line 1 +  PreChange line 2 +  PreChange line 3 +  PreChange line 4 +  - This line will change 1 +  - This line will change 2 +  + This line changed 1 +  + This line changed 2 +  PostChange line 1 +  PostChange line 2 +  PostChange line 3 +  PostChange line 4 +   +  [three lines unchanged)] +   +  PreAdd line 1 +  PreAdd line 2 +  PreAdd line 3 +  PreAdd line 4 +  + This line was added +  + This line was added +  PostAdd line 1 +  PostAdd line 2 +  PostAdd line 3 +  PostAdd line 4 +   +  [two lines unchanged)] +   +  PreDelete line 1 +  PreDelete line 2 +  PreDelete line 3 +  PreDelete line 4 +  - This line will be deleted +  - This line will be deleted +  - This line will be deleted +  PostDelete line 1 +  PostDelete line 2 +  PostDelete line 3 +  PostDelete line 4 +   +  [22 lines unchanged)] +   +  End line 1 +  End line 1 +  End line 1 +  End line 1 + + diff --git a/assets/multiline/from.yml b/assets/multiline/from.yml new file mode 100644 index 0000000..9f06105 --- /dev/null +++ b/assets/multiline/from.yml @@ -0,0 +1,96 @@ +files: +- name: simple + content: | + UnChanged line + This line will change 1 + UnChanged line + This line will change 2 + UnChanged line + This line will change 3 + +- name: newline + # + to keep trailing newlines + content: |+ + + + This line will change 1 + UnChanged line + + This line will change 2 + + + UnChanged line + This line will change 3 + + + +- name: complex + content: | + Begin line 1 + Begin line 2 + Begin line 3 + Begin line 4 + Truncated line + Truncated line + Truncated line + Truncated line + PreChange line 1 + PreChange line 2 + PreChange line 3 + PreChange line 4 + This line will change 1 + This line will change 2 + PostChange line 1 + PostChange line 2 + PostChange line 3 + PostChange line 4 + Truncated line + Truncated line + Truncated line + PreAdd line 1 + PreAdd line 2 + PreAdd line 3 + PreAdd line 4 + PostAdd line 1 + PostAdd line 2 + PostAdd line 3 + PostAdd line 4 + Truncated line + Truncated line + PreDelete line 1 + PreDelete line 2 + PreDelete line 3 + PreDelete line 4 + This line will be deleted + This line will be deleted + This line will be deleted + PostDelete line 1 + PostDelete line 2 + PostDelete line 3 + PostDelete line 4 + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + End line 1 + End line 1 + End line 1 + End line 1 diff --git a/assets/multiline/to.yml b/assets/multiline/to.yml new file mode 100644 index 0000000..94966e9 --- /dev/null +++ b/assets/multiline/to.yml @@ -0,0 +1,95 @@ +files: +- name: simple + content: | + UnChanged line + This line changed 1 + UnChanged line + This line changed 2 + UnChanged line + This line changed 3 + +- name: newline + # + to keep trailing newlines + content: |+ + + + This line changed 1 + UnChanged line + + This line changed 2 + + + UnChanged line + This line changed 3 + + + +- name: complex + content: | + Begin line 1 + Begin line 2 + Begin line 3 + Begin line 4 + Truncated line + Truncated line + Truncated line + Truncated line + PreChange line 1 + PreChange line 2 + PreChange line 3 + PreChange line 4 + This line changed 1 + This line changed 2 + PostChange line 1 + PostChange line 2 + PostChange line 3 + PostChange line 4 + Truncated line + Truncated line + Truncated line + PreAdd line 1 + PreAdd line 2 + PreAdd line 3 + PreAdd line 4 + This line was added + This line was added + PostAdd line 1 + PostAdd line 2 + PostAdd line 3 + PostAdd line 4 + Truncated line + Truncated line + PreDelete line 1 + PreDelete line 2 + PreDelete line 3 + PreDelete line 4 + PostDelete line 1 + PostDelete line 2 + PostDelete line 3 + PostDelete line 4 + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + Truncated line + End line 1 + End line 1 + End line 1 + End line 1 diff --git a/assets/testbed/expected-dyff-gopatch.human b/assets/testbed/expected-dyff-gopatch.human index 177edf9..a55c0b1 100644 --- a/assets/testbed/expected-dyff-gopatch.human +++ b/assets/testbed/expected-dyff-gopatch.human @@ -30,12 +30,14 @@ + one, two, three, four, five, six /multiline (document #1) - ± value change - - Yes, + Yes, strings - strings can have multiple - can lines - have - multiple + ± value change in multiline text (one insert, one deletion) + - Yes, + - strings + - can + - have + - multiple + + Yes, strings + + can have multiple lines diff --git a/assets/testbed/expected-dyff-spruce.human b/assets/testbed/expected-dyff-spruce.human index 06e3df1..5c9274a 100644 --- a/assets/testbed/expected-dyff-spruce.human +++ b/assets/testbed/expected-dyff-spruce.human @@ -30,12 +30,14 @@ orderchanges (document #1) + one, two, three, four, five, six multiline (document #1) - ± value change - - Yes, + Yes, strings - strings can have multiple - can lines - have - multiple + ± value change in multiline text (one insert, one deletion) + - Yes, + - strings + - can + - have + - multiple + + Yes, strings + + can have multiple lines diff --git a/pkg/dyff/core_suite_test.go b/pkg/dyff/core_suite_test.go index d524519..5d3e3b8 100644 --- a/pkg/dyff/core_suite_test.go +++ b/pkg/dyff/core_suite_test.go @@ -124,11 +124,13 @@ func compareAgainstExpected(fromPath string, toPath string, expectedPath string, Expect(err).To(BeNil()) reportWriter := &dyff.HumanReport{ - Report: report, - DoNotInspectCerts: false, - NoTableStyle: false, - OmitHeader: true, - UseGoPatchPaths: useGoPatchPaths, + Report: report, + DoNotInspectCerts: false, + NoTableStyle: false, + OmitHeader: true, + UseGoPatchPaths: useGoPatchPaths, + MinorChangeThreshold: 0.1, + MultilineContextLines: 4, } buffer := &bytes.Buffer{} diff --git a/pkg/dyff/output_human_test.go b/pkg/dyff/output_human_test.go index 5ec04a2..120c866 100644 --- a/pkg/dyff/output_human_test.go +++ b/pkg/dyff/output_human_test.go @@ -199,6 +199,15 @@ variables.ROUTER_TLS_PEM.options false, ) }) + + It("should use human friendly compact diff of multiline text differences for complex files", func() { + compareAgainstExpected( + assets("multiline/from.yml"), + assets("multiline/to.yml"), + assets("multiline/expected-dyff-spruce.human"), + false, + ) + }) }) Context("reported output issues (without colors)", func() {