Skip to content

Commit 430bc93

Browse files
committed
F!! #301 added ability to create custom comparator
1 parent ec1ad64 commit 430bc93

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

approvaltests-tests/src/test/java/org/approvaltests/OptionsTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.approvaltests.core.ApprovalFailureReporter;
77
import org.approvaltests.core.ApprovalWriter;
88
import org.approvaltests.core.Options;
9+
import org.approvaltests.core.VerifyResult;
910
import org.approvaltests.reporters.FirstWorkingReporter;
1011
import org.approvaltests.reporters.UseReporter;
1112
import org.approvaltests.reporters.UseReporterTest;
@@ -183,4 +184,9 @@ public String getFileExtensionWithDot()
183184
return null;
184185
}
185186
}
187+
@Test
188+
void verifyCustomComparator()
189+
{
190+
Approvals.verify("The approval file is empty", new Options().withComparator((a, b) -> VerifyResult.SUCCESS));
191+
}
186192
}

approvaltests/src/main/java/org/approvaltests/Approvals.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ public static void verify(ApprovalWriter writer, ApprovalNamer namer)
172172
}
173173
public static void verify(ApprovalWriter writer, ApprovalNamer namer, Options options)
174174
{
175-
verify(new FileApprover(writer, namer), options);
175+
verify(new FileApprover(writer, namer, options.getComparator()), options);
176176
}
177177
public static void verify(ApprovalWriter writer)
178178
{

approvaltests/src/main/java/org/approvaltests/core/Options.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,23 @@
33
import com.spun.util.ArrayUtils;
44
import org.approvaltests.Approvals;
55
import org.approvaltests.ReporterFactory;
6+
import org.approvaltests.approvers.FileApprover;
67
import org.approvaltests.namer.ApprovalNamer;
78
import org.approvaltests.namer.NamerWrapper;
89
import org.approvaltests.scrubbers.NoOpScrubber;
910
import org.approvaltests.writers.ApprovalWriterFactory;
1011
import org.approvaltests.writers.DefaultApprovalWriterFactory;
1112
import org.lambda.functions.Function1;
13+
import org.lambda.functions.Function2;
1214

15+
import java.io.File;
1316
import java.util.HashMap;
1417
import java.util.Map;
1518

1619
public class Options
1720
{
1821
private enum Fields {
19-
SCRUBBER, REPORTER, FILE_OPTIONS_FILE_EXTENSION, FILE_OPTIONS_NAMER, WRITER;
22+
SCRUBBER, REPORTER, FILE_OPTIONS_FILE_EXTENSION, FILE_OPTIONS_NAMER, WRITER, COMPARATOR;
2023
}
2124
private final Map<Fields, Object> fields = new HashMap<>();
2225
public Options()
@@ -47,6 +50,14 @@ public Options withReporter(ApprovalFailureReporter reporter)
4750
{
4851
return new Options(fields, Fields.REPORTER, reporter);
4952
}
53+
public Function2<File, File, VerifyResult> getComparator()
54+
{
55+
return ArrayUtils.getOrElse(fields, Fields.COMPARATOR, () -> FileApprover::approveTextFile);
56+
}
57+
public Options withComparator(Function2<File, File, VerifyResult> comparator)
58+
{
59+
return new Options(fields, Fields.COMPARATOR, comparator);
60+
}
5061
public Options withScrubber(Scrubber scrubber)
5162
{
5263
return new Options(fields, Fields.SCRUBBER, scrubber);

0 commit comments

Comments
 (0)