Skip to content

Commit b83fd47

Browse files
committed
Make custom matcher regexp DOTALL
1 parent 21b4a18 commit b83fd47

File tree

2 files changed

+31
-1
lines changed
  • json-unit-core/src

2 files changed

+31
-1
lines changed

json-unit-core/src/main/java/net/javacrumbs/jsonunit/core/internal/Diff.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class Diff {
6969
private static final Pattern ANY_STRING_PLACEHOLDER = Pattern.compile("[$#]\\{json-unit.any-string\\}");
7070

7171
private static final Pattern REGEX_PLACEHOLDER = Pattern.compile("[$#]\\{json-unit.regex\\}(.*)");
72-
private static final Pattern MATCHER_PLACEHOLDER_PATTERN = Pattern.compile("[$#]\\{json-unit.matches:(.+?)\\}(.*)");
72+
private static final Pattern MATCHER_PLACEHOLDER_PATTERN = Pattern.compile("[$#]\\{json-unit.matches:(.+?)\\}(.*)", Pattern.DOTALL);
7373

7474
private static final JsonUnitLogger DEFAULT_DIFF_LOGGER = createLogger("net.javacrumbs.jsonunit.difference.diff");
7575
private static final JsonUnitLogger DEFAULT_VALUE_LOGGER = createLogger("net.javacrumbs.jsonunit.difference.values");

json-unit-core/src/test/java/net/javacrumbs/jsonunit/core/internal/DifferenceTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717

1818
import net.javacrumbs.jsonunit.core.Configuration;
1919
import net.javacrumbs.jsonunit.core.Option;
20+
import net.javacrumbs.jsonunit.core.ParametrizedMatcher;
2021
import net.javacrumbs.jsonunit.core.listener.Difference;
2122
import net.javacrumbs.jsonunit.core.listener.DifferenceContext;
2223
import net.javacrumbs.jsonunit.core.listener.DifferenceListener;
24+
import org.hamcrest.BaseMatcher;
25+
import org.hamcrest.Description;
2326
import org.junit.jupiter.api.Test;
2427

2528
import java.math.BigDecimal;
@@ -32,6 +35,7 @@
3235
import static org.hamcrest.Matchers.equalTo;
3336
import static org.hamcrest.Matchers.hasSize;
3437
import static org.hamcrest.Matchers.nullValue;
38+
import static org.junit.jupiter.api.Assertions.assertTrue;
3539

3640
public class DifferenceTest {
3741
private final RecordingDifferenceListener listener = new RecordingDifferenceListener();
@@ -216,6 +220,13 @@ void shouldSeeExpectedSource() {
216220
assertThat(listener.getExpectedSource(), equalTo(singletonMap("test", "1")));
217221
}
218222

223+
@Test
224+
void shouldMatchWithLineSeparatorCustomMatcher() {
225+
Configuration cfg = commonConfig().withMatcher("equalTo", new EqualsMatcher());
226+
Diff diff = Diff.create("{\"key\": \"${json-unit.matches:equalTo}separated \\n line\"}", "{\"key\": \"separated \\n line\"}", "", "", cfg);
227+
assertTrue(diff.similar());
228+
assertThat(listener.getDifferenceList(), hasSize(0));
229+
}
219230

220231
private Configuration commonConfig() {
221232
return Configuration.empty().withDifferenceListener(listener);
@@ -245,4 +256,23 @@ Object getExpectedSource() {
245256
return expectedSource;
246257
}
247258
}
259+
260+
private static class EqualsMatcher extends BaseMatcher<Object> implements ParametrizedMatcher {
261+
private String parameter;
262+
263+
@Override
264+
public void setParameter(String parameter) {
265+
this.parameter = parameter;
266+
}
267+
268+
@Override
269+
public boolean matches(Object o) {
270+
return o.toString().equals(parameter);
271+
}
272+
273+
@Override
274+
public void describeTo(Description description) {
275+
description.appendText("the same ").appendText(parameter);
276+
}
277+
}
248278
}

0 commit comments

Comments
 (0)