|
15 | 15 |
|
16 | 16 | public class FileApprover implements ApprovalApprover |
17 | 17 | { |
18 | | - private File received; |
19 | | - private File approved; |
20 | | - private final ApprovalWriter writer; |
21 | | - private Function2<File, File, VerifyResult> approver; |
22 | | - public static final ApprovalTracker tracker = new ApprovalTracker(); |
| 18 | + public static final ApprovalTracker tracker = new ApprovalTracker(); |
| 19 | + private static Function2<String, String, Error> errorGenerator = FileApprover::createError; |
| 20 | + private File received; |
| 21 | + private File approved; |
| 22 | + private final ApprovalWriter writer; |
| 23 | + private Function2<File, File, VerifyResult> approver; |
23 | 24 | public FileApprover(ApprovalWriter writer, ApprovalNamer namer) |
24 | 25 | { |
25 | 26 | this(writer, namer, FileApprover::approveTextFile); |
26 | 27 | } |
27 | 28 | public FileApprover(ApprovalWriter writer, ApprovalNamer namer, Function2<File, File, VerifyResult> approver) |
28 | 29 | { |
| 30 | + this(namer.getReceivedFile(writer.getFileExtensionWithDot()), |
| 31 | + namer.getApprovedFile(writer.getFileExtensionWithDot()), writer, approver); |
| 32 | + } |
| 33 | + public FileApprover(File received, File approved, ApprovalWriter writer, |
| 34 | + Function2<File, File, VerifyResult> approver) |
| 35 | + { |
| 36 | + this.received = received; |
| 37 | + this.approved = approved; |
29 | 38 | this.writer = writer; |
30 | | - received = namer.getReceivedFile(writer.getFileExtensionWithDot()); |
31 | | - approved = namer.getApprovedFile(writer.getFileExtensionWithDot()); |
32 | 39 | this.approver = approver; |
33 | 40 | } |
| 41 | + public static AutoCloseable registerErrorGenerator(Function2<String, String, Error> errorGenerator) |
| 42 | + { |
| 43 | + Function2<String, String, Error> old = FileApprover.errorGenerator; |
| 44 | + FileApprover.errorGenerator = errorGenerator; |
| 45 | + return () -> FileApprover.errorGenerator = old; |
| 46 | + } |
34 | 47 | public VerifyResult approve() |
35 | 48 | { |
36 | 49 | tracker.assertUnique(approved.getAbsolutePath()); |
@@ -58,8 +71,11 @@ public VerifyResult reportFailure(ApprovalFailureReporter reporter) |
58 | 71 | } |
59 | 72 | public void fail() |
60 | 73 | { |
61 | | - throw new Error(String.format("Failed Approval\n Approved:%s\n Received:%s", approved.getAbsolutePath(), |
62 | | - received.getAbsolutePath())); |
| 74 | + throw errorGenerator.call(received.getAbsolutePath(), approved.getAbsolutePath()); |
| 75 | + } |
| 76 | + private static Error createError(String received, String approved) |
| 77 | + { |
| 78 | + return new Error(String.format("Failed Approval\n Approved:%s\n Received:%s", approved, received)); |
63 | 79 | } |
64 | 80 | public static VerifyResult approveTextFile(File received, File approved) |
65 | 81 | { |
|
0 commit comments