Skip to content

Commit e0d2849

Browse files
committed
Issue: junit-team#3139 part 1
Tasks completed: 1. Locate ConsoleLauncher output 2. Check if actual and expected of AssertionFailedError are both type of CharSequence To do list: 1. Add diff function dependency 2. Using diff to generate the output desired Issue: junit-team#3139
1 parent d85dd9b commit e0d2849

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

junit-platform-console/src/main/java/org/junit/platform/console/tasks/ConsoleTestExecutor.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
import org.junit.platform.launcher.listeners.SummaryGeneratingListener;
3737
import org.junit.platform.launcher.listeners.TestExecutionSummary;
3838
import org.junit.platform.reporting.legacy.xml.LegacyXmlReportGeneratingListener;
39+
//for console output of diff
40+
import org.opentest4j.AssertionFailedError;
41+
import org.opentest4j.ValueWrapper;
3942

4043
/**
4144
* @since 1.0
@@ -180,11 +183,34 @@ private Optional<TestExecutionListener> createXmlWritingListener(PrintWriter out
180183
private void printSummary(TestExecutionSummary summary, PrintWriter out) {
181184
// Otherwise the failures have already been printed in detail
182185
if (EnumSet.of(Details.NONE, Details.SUMMARY, Details.TREE).contains(outputOptions.getDetails())) {
186+
//adding diff code here
187+
summary.getFailures().forEach(failure -> {
188+
//get AssertionFailedError
189+
if(failure.getException() instanceof AssertionFailedError){
190+
AssertionFailedError assertionFailedError = (AssertionFailedError)failure.getException();
191+
ValueWrapper expected = assertionFailedError.getExpected();
192+
ValueWrapper actual = assertionFailedError.getActual();
193+
//apply diff function
194+
if (isCharSequence(expected) && isCharSequence(actual)) {
195+
out.printf("Expected %s\n", expected.getStringRepresentation());
196+
out.printf("Actual %s\n", actual.getStringRepresentation());
197+
//out.printf("Diff %s", calculateDiff(expected, actual));
198+
}
199+
200+
}
201+
});
202+
203+
summary.getFailures();
183204
summary.printFailuresTo(out);
184205
}
185206
summary.printTo(out);
186207
}
187208

209+
private boolean isCharSequence(ValueWrapper value) {
210+
return value != null && CharSequence.class.isAssignableFrom(value.getType());
211+
}
212+
213+
188214
@FunctionalInterface
189215
public interface Factory {
190216
ConsoleTestExecutor create(TestDiscoveryOptions discoveryOptions, TestConsoleOutputOptions outputOptions);

0 commit comments

Comments
 (0)