diff --git a/CHANGELOG.md b/CHANGELOG.md index 418c4df7e..32a104355 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ We use [semantic versioning][semver] # Next release +# 9.0.3 +- [fix] Test Impact Mode: Empty reports are no longer dumped +- [fix] Test Impact Mode: JUnit is uploaded before testwise coverage + # 9.0.2 - [fix] prevent log files from flooding disk with default log4j config files diff --git a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/JUnitReportCollector.java b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/JUnitReportCollector.java index d96ebecdc..8076b47f6 100644 --- a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/JUnitReportCollector.java +++ b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/JUnitReportCollector.java @@ -93,6 +93,9 @@ private ETestExecutionResult getResult(Request request) { @Override public void onDump(IXmlStore store) { + if (report.isEmpty()) { + return; + } String xml; try { xml = generateJUnitReport(report); diff --git a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestDetailsCollector.java b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestDetailsCollector.java index cac6df803..3b8ae77d2 100644 --- a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestDetailsCollector.java +++ b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestDetailsCollector.java @@ -41,6 +41,9 @@ public void onTestFinish(Request request, Dump dump) { @Override public void onDump(IXmlStore store) { + if (testDetailsList.isEmpty()) { + return; + } String reportString = new Gson().toJson(testDetailsList); store.store(reportString, TEST_LIST); testDetailsList.clear(); diff --git a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestImpactAgent.java b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestImpactAgent.java index 456594f44..4fbc3879d 100644 --- a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestImpactAgent.java +++ b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestImpactAgent.java @@ -56,15 +56,15 @@ public TestImpactAgent(AgentOptions options) throws IllegalStateException, Cover super(options); this.options = options; Set reportFormats = options.getHttpServerReportFormats(); + if (reportFormats.contains(JUNIT)) { + testListeners.add(new JUnitReportCollector()); + } if (reportFormats.contains(TEST_LIST)) { testListeners.add(new TestDetailsCollector()); } if (reportFormats.contains(TESTWISE_COVERAGE)) { testListeners.add(new TestwiseCoverageCollector(controller, options)); } - if (reportFormats.contains(JUNIT)) { - testListeners.add(new JUnitReportCollector()); - } if (reportFormats.contains(JACOCO)) { testListeners.add(new JaCoCoCoverageCollector(options)); } diff --git a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestwiseCoverageCollector.java b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestwiseCoverageCollector.java index 84bbedb8d..086fa3c08 100644 --- a/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestwiseCoverageCollector.java +++ b/agent/src/main/java/eu/cqse/teamscale/jacoco/agent/testimpact/TestwiseCoverageCollector.java @@ -4,10 +4,10 @@ import eu.cqse.teamscale.jacoco.agent.ITestListener; import eu.cqse.teamscale.jacoco.agent.JacocoRuntimeController; import eu.cqse.teamscale.jacoco.agent.store.IXmlStore; -import eu.cqse.teamscale.report.testwise.jacoco.cache.CoverageGenerationException; +import eu.cqse.teamscale.jacoco.util.Benchmark; import eu.cqse.teamscale.report.jacoco.dump.Dump; import eu.cqse.teamscale.report.testwise.jacoco.TestwiseXmlReportGenerator; -import eu.cqse.teamscale.jacoco.util.Benchmark; +import eu.cqse.teamscale.report.testwise.jacoco.cache.CoverageGenerationException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import spark.Request; @@ -59,6 +59,9 @@ public void onTestFinish(Request request, Dump dump) { @Override public void onDump(IXmlStore store) { + if (dumps.isEmpty()) { + return; + } String xml; try (Benchmark benchmark = new Benchmark("Generating the XML report")) { xml = generator.convertToString(dumps); diff --git a/build.gradle b/build.gradle index a922a67fc..e9ee7d82a 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { } ext { - appVersion = '9.0.2' + appVersion = '9.0.3' pluginVersion = '0.1.24' reportGeneratorVersion = '1.0.7' teamscaleClientVersion = '0.1.5' diff --git a/report-generator/src/main/java/eu/cqse/teamscale/report/junit/JUnitReport.java b/report-generator/src/main/java/eu/cqse/teamscale/report/junit/JUnitReport.java index 1e62d328a..13b7466ec 100644 --- a/report-generator/src/main/java/eu/cqse/teamscale/report/junit/JUnitReport.java +++ b/report-generator/src/main/java/eu/cqse/teamscale/report/junit/JUnitReport.java @@ -25,6 +25,11 @@ public void reset() { testCaseList.clear(); } + /** Returns whether the report contains any tests. */ + public boolean isEmpty() { + return testCaseList.isEmpty(); + } + /** Holds execution information for a single test case. */ public static class TestCase {