From 31f510e8a7241a860136c43022d5105f64a0aa53 Mon Sep 17 00:00:00 2001 From: Jack Matthews <6348088+jackmatt2@users.noreply.github.com> Date: Sun, 11 Dec 2022 09:26:17 +1100 Subject: [PATCH 1/2] #patch: Fixes #126 leading/trailing whitespace causing snapshot failures --- .../ToStringSnapshotSerializer.java | 25 +++++-------------- .../ToStringSnapshotSerializerTest.java | 18 +++++++++++++ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java b/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java index d5e2196..49042ad 100644 --- a/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java +++ b/java-snapshot-testing-core/src/main/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializer.java @@ -3,9 +3,6 @@ import au.com.origin.snapshots.Snapshot; import au.com.origin.snapshots.SnapshotFile; import au.com.origin.snapshots.SnapshotSerializerContext; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; /** @@ -18,22 +15,12 @@ public class ToStringSnapshotSerializer implements SnapshotSerializer { @Override public Snapshot apply(Object object, SnapshotSerializerContext gen) { - List objects = Arrays.asList(object); - String body = - "[\n" - + objects.stream() - .map(Object::toString) - .map( - it -> { - if (it.contains(SnapshotFile.SPLIT_STRING)) { - log.warn( - "Found 3 consecutive lines in your snapshot \\n\\n\\n. This sequence is reserved as the snapshot separator - replacing with \\n.\\n.\\n"); - return it.replaceAll(SnapshotFile.SPLIT_STRING, "\n.\n.\n"); - } - return it; - }) - .collect(Collectors.joining("\n")) - + "\n]"; + String body = "[\n" + object.toString() + "\n]"; + if (body.contains(SnapshotFile.SPLIT_STRING)) { + log.warn( + "Found 3 consecutive lines in your snapshot \\n\\n\\n. This sequence is reserved as the snapshot separator - replacing with \\n.\\n.\\n"); + body = body.replaceAll(SnapshotFile.SPLIT_STRING, "\n.\n.\n"); + } return gen.toSnapshot(body); } diff --git a/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java b/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java index 2c3fc99..ea08283 100644 --- a/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java +++ b/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java @@ -58,6 +58,24 @@ void shouldReplaceThreeConsecutiveNewLines() { assertThat(result.getBody()).isEqualTo("[\nJohn\n.\n.\nDoe\n]"); } + @Test + void shouldReplaceTwoConsecutiveNewLinesAtEnd() { + Snapshot result = serializer.apply("John Doe\n\n", mockSnapshotGenerator); + assertThat(result.getBody()).isEqualTo("[\nJohn Doe\n.\n.\n]"); + } + + @Test + void shouldReplaceTwoConsecutiveNewLinesAtBeginning() { + Snapshot result = serializer.apply("\n\nJohn Doe", mockSnapshotGenerator); + assertThat(result.getBody()).isEqualTo("[\n.\n.\nJohn Doe\n]"); + } + + @Test + void shouldReplaceTwoConsecutiveNewLinesEverywhere() { + Snapshot result = serializer.apply("\n\nJohn\n\n\nDoe\n\n", mockSnapshotGenerator); + assertThat(result.getBody()).isEqualTo("[\n.\n.\nJohn\n.\n.\nDoe\n.\n.\n]"); + } + @AllArgsConstructor @Data private static class Dummy { From 0617d1be7485e47832833ffa89c5f45775c8e6ff Mon Sep 17 00:00:00 2001 From: Jack Matthews <6348088+jackmatt2@users.noreply.github.com> Date: Sun, 11 Dec 2022 09:30:03 +1100 Subject: [PATCH 2/2] rename method --- .../snapshots/serializers/ToStringSnapshotSerializerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java b/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java index ea08283..b8035db 100644 --- a/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java +++ b/java-snapshot-testing-core/src/test/java/au/com/origin/snapshots/serializers/ToStringSnapshotSerializerTest.java @@ -71,7 +71,7 @@ void shouldReplaceTwoConsecutiveNewLinesAtBeginning() { } @Test - void shouldReplaceTwoConsecutiveNewLinesEverywhere() { + void shouldReplaceIllegalNewlineSequencesEverywhere() { Snapshot result = serializer.apply("\n\nJohn\n\n\nDoe\n\n", mockSnapshotGenerator); assertThat(result.getBody()).isEqualTo("[\n.\n.\nJohn\n.\n.\nDoe\n.\n.\n]"); }