<length string="@{module2}" when="greater" length="0"/>
</condition>
- <delete file="build/status-as-tests-run.txt" failonerror="false"/>
+ <delete file="@{outputDir}/status-as-tests-run.txt" failonerror="false"/>
<!-- As of 2018, JaCoCo is managing expectations and stay on Java 5 and therefore don't support junitlauncher -->
<!-- https://github.com/jacoco/jacoco/issues/673 ... m( -->
<testclasses outputDir="@{outputDir}">
<fork>
+ <sysproperty key="junit5.progress.file" value="@{outputDir}/status-as-tests-run.txt"/>
<syspropertyset refid="junit.properties"/>
<sysproperty key="java.io.tmpdir" value="${tempdir}"/>
<jvmarg value="-Xmx@{heap}M"/>
<jvmarg line="--add-modules org.apache.poi.@{module2}" if:set="use_module2"/>
</fork>
+ <!-- can't use resultfile="status-as-tests-run.txt" here ... it's truncated with every test -->
+ <listener classname="Junit5Progress" outputDir="@{outputDir}" />
<listener type="legacy-plain" sendSysOut="true" outputDir="@{outputDir}"/>
<listener type="legacy-xml" sendSysOut="true" sendSysErr="true" outputDir="@{outputDir}"/>
- <listener classname="Junit5Progress"/>
<elements/>
</testclasses>
</junitlauncher>
- <loadfile property="contents" srcFile="build/status-as-tests-run.txt" />
+ <loadfile property="contents" srcFile="@{outputDir}/status-as-tests-run.txt" />
<echo message="${contents}" />
</sequential>
</macrodef>
**/
public class Junit5Progress implements TestExecutionListener {
- private StringWriter inMemoryWriter = new StringWriter();
+ private final StringWriter inMemoryWriter = new StringWriter();
private int numSkippedInCurrentClass;
private int numAbortedInCurrentClass;
}
/*
- * Append to file on disk since listener can't write to System.out (becuase legacy listeners enabled)
+ * Append to file on disk since listener can't write to System.out (because legacy listeners enabled)
+ *
+ * Implementing/using the TestResultFormatter - mentioned in the junitlauncher ant manual -
+ * doesn't work currently, because the output is truncated/overwritten with every test
*/
private void flushToDisk() {
- try (FileWriter writer = new FileWriter("build/status-as-tests-run.txt", true)) {
+ String outFile = System.getProperty("junit5.progress.file", "build/status-as-tests-run.txt");
+ try (FileWriter writer = new FileWriter(outFile, true)) {
writer.write(inMemoryWriter.toString());
} catch (IOException e) {
throw new UncheckedIOException(e);