From 7e4a697ea10c9b7e3c909b1b90adcb863ce31b1a Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 10 Mar 2016 13:39:38 +0100 Subject: [PATCH] junit5: new assertions supported --- .idea/libraries/opentest4j.xml | 9 ++++++++ build/scripts/libLicenses.gant | 1 + plugins/junit5_rt/junit5_rt.iml | 1 + plugins/junit5_rt/lib/opentest4j-1.0.0.jar | Bin 0 -> 4952 bytes .../junit5/JUnit5TestExecutionListener.java | 20 +++++++++++++----- 5 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 .idea/libraries/opentest4j.xml create mode 100644 plugins/junit5_rt/lib/opentest4j-1.0.0.jar diff --git a/.idea/libraries/opentest4j.xml b/.idea/libraries/opentest4j.xml new file mode 100644 index 000000000000..a950465a1404 --- /dev/null +++ b/.idea/libraries/opentest4j.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/build/scripts/libLicenses.gant b/build/scripts/libLicenses.gant index 846d9ee3f0b7..9b61c888ba32 100644 --- a/build/scripts/libLicenses.gant +++ b/build/scripts/libLicenses.gant @@ -267,6 +267,7 @@ libraryLicense(name: "NanoXML", version: "2.2.3", license: "zlib/libpng", url: " libraryLicense(name: "nekohtml", libraryName: "nekohtml", version: "1.9.14", license: "Apache 2.0", url: "http://nekohtml.sourceforge.net/", licenseUrl: "http://apache.org/licenses/LICENSE-2.0.txt") libraryLicense(name: "Netty", libraryName: "Netty", version: "4.1.0.Beta3", license: "Apache 2.0", url: "http://netty.io", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0") libraryLicense(name: "Objenesis", libraryName: "objenesis-1.2.jar", version: "1.2", license: "Apache 2.0", url: "http://objenesis.org/", licenseUrl: "http://apache.org/licenses/LICENSE-2.0") +libraryLicense(name: "opentest4j", libraryName: "opentest4j", version: "1.0.0", license: "Apache 2.0", url: "https://github.com/ota4j-team/opentest4j", licenseUrl: "http://apache.org/licenses/LICENSE-2.0") libraryLicense(name: "pep8.py", attachedTo: "python-helpers", version: "1.6.2", license: "MIT", url: "http://pep8.readthedocs.org/") libraryLicense(name: "PicoContainer", libraryName: "picocontainer", version: "1.2", license: "BSD", url: "http://www.picocontainer.org/", licenseUrl: "http://docs.codehaus.org/display/PICO/License") libraryLicense(name: "plexus-archiver", libraryName: "plexus-archiver-2.4.4.jar", version: "2.4.4", license: "Apache 2.0", url: "https://github.com/codehaus-plexus/plexus-archiver", licenseUrl: "http://apache.org/licenses/LICENSE-2.0") diff --git a/plugins/junit5_rt/junit5_rt.iml b/plugins/junit5_rt/junit5_rt.iml index f37ea82817dd..ec639f339e82 100644 --- a/plugins/junit5_rt/junit5_rt.iml +++ b/plugins/junit5_rt/junit5_rt.iml @@ -10,5 +10,6 @@ + \ No newline at end of file diff --git a/plugins/junit5_rt/lib/opentest4j-1.0.0.jar b/plugins/junit5_rt/lib/opentest4j-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..7208395ee319cb1998ea2c81bcd3082eea525d68 GIT binary patch literal 4952 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 throwableOptional = testExecutionResult.getThrowable(); + final Throwable throwableOptional = testExecutionResult.getThrowable().orElse(null); if (testIdentifier.isTest()) { final long duration = System.currentTimeMillis() - myCurrentTestStart; if (status == TestExecutionResult.Status.FAILED) { @@ -155,7 +157,7 @@ public class JUnit5TestExecutionListener implements TestExecutionListener { myPrintStream.println("\n##teamcity[testFinished" + idAndName(testIdentifier) + (duration > 0 ? "\' duration=\'" + Long.toString(duration) : "") + "\']"); } - private void testFailure(Optional failure, String messageName, TestIdentifier testIdentifier, long duration) { + private void testFailure(Throwable ex, String messageName, TestIdentifier testIdentifier, long duration) { final Map attrs = new HashMap<>(); attrs.put("name", testIdentifier.getDisplayName()); attrs.put("id", testIdentifier.getUniqueId().toString()); @@ -163,12 +165,20 @@ public class JUnit5TestExecutionListener implements TestExecutionListener { attrs.put("duration", Long.toString(duration)); } try { - if (failure.isPresent()) { - final Throwable ex = failure.get(); + if (ex != null) { final StringWriter stringWriter = new StringWriter(); final PrintWriter writer = new PrintWriter(stringWriter); ex.printStackTrace(writer); - ComparisonFailureData.registerSMAttributes(null, stringWriter.toString(), ex.getMessage(), attrs, ex); + final ComparisonFailureData failureData; + if (ex instanceof AssertionFailedError && ((AssertionFailedError)ex).isActualDefined() && ((AssertionFailedError)ex).isExpectedDefined()) { + final Object actual = ((AssertionFailedError)ex).getActual(); + final Object expected = ((AssertionFailedError)ex).getExpected(); + failureData = new ComparisonFailureData(expected.toString(), actual.toString()); + } + else { + failureData = ExpectedPatterns.createExceptionNotification(ex); + } + ComparisonFailureData.registerSMAttributes(failureData, stringWriter.toString(), ex.getMessage(), attrs, ex); } } finally {