diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a74829a..c178dd38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ Changelog of Violations lib. +## Unreleased +### GitHub [#91](https://github.com/tomasbjerre/violations-lib/issues/91) Can't parse Junit5 (Jupiter) report + +**Allow missing message in JUnit report** + + +[746d146a17fbb80](https://github.com/tomasbjerre/violations-lib/commit/746d146a17fbb80) Tomas Bjerre *2020-06-26 16:57:33* + + ## 1.117 ### No issue diff --git a/src/main/java/se/bjurr/violations/lib/parsers/JUnitParser.java b/src/main/java/se/bjurr/violations/lib/parsers/JUnitParser.java index 6619804e..1e2418bf 100644 --- a/src/main/java/se/bjurr/violations/lib/parsers/JUnitParser.java +++ b/src/main/java/se/bjurr/violations/lib/parsers/JUnitParser.java @@ -1,10 +1,10 @@ package se.bjurr.violations.lib.parsers; -import static se.bjurr.violations.lib.util.ViolationParserUtils.getAttribute; -import static se.bjurr.violations.lib.util.ViolationParserUtils.getChunks; +import static se.bjurr.violations.lib.util.ViolationParserUtils.*; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; import se.bjurr.violations.lib.model.SEVERITY; @@ -28,7 +28,8 @@ public List parseReportOutput(final String reportContent) throws Exce chunks.addAll(errorChunks); for (final String failure : chunks) { - final String message = getAttribute(failure, "message"); + final Optional messageOpt = findAttribute(failure, "message"); + String message = messageOpt.orElse(findAttribute(failure, "type").get()); final String className = getAttribute(errorChunk, "classname"); final String name = getAttribute(errorChunk, "name"); final String type = getAttribute(errorChunk, "type"); diff --git a/src/test/java/se/bjurr/violations/lib/JUnitTest.java b/src/test/java/se/bjurr/violations/lib/JUnitTest.java index bbc68b39..8b31739a 100644 --- a/src/test/java/se/bjurr/violations/lib/JUnitTest.java +++ b/src/test/java/se/bjurr/violations/lib/JUnitTest.java @@ -95,4 +95,28 @@ public void testThatViolationsCanBeParsedFromJunit3() { assertThat(actual.get(0).getSeverity()) // .isEqualTo(ERROR); } + + @Test + public void testThatViolationsCanBeParsedFromJunitWithoutMessage() { + final String rootFolder = getRootFolder(); + + final List actual = + violationsApi() // + .withPattern(".*/junit/without-message-with-type\\.xml$") // + .inFolder(rootFolder) // + .findAll(JUNIT) // + .violations(); + + assertThat(actual) // + .hasSize(1); + + assertThat(actual.get(0).getSource()) // + .isEqualTo("de.tobiasmichael.me.MyTest"); + assertThat(actual.get(0).getFile()) // + .isEqualTo("de/tobiasmichael/me/MyTest.java"); + assertThat(actual.get(0).getMessage()) // + .isEqualTo("testConcatenate4 : org.opentest4j.AssertionFailedError"); + assertThat(actual.get(0).getSeverity()) // + .isEqualTo(ERROR); + } } diff --git a/src/test/resources/junit/without-message-with-type.xml b/src/test/resources/junit/without-message-with-type.xml new file mode 100644 index 00000000..4ce0aa9b --- /dev/null +++ b/src/test/resources/junit/without-message-with-type.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + but was: + at de.tobiasmichael.me.MyTest.testConcatenate4(MyTest.java:35) +]]> + +