try to fix the truncated junit xml log files

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1891370 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2021-07-07 22:16:12 +00:00
parent 91c163ed1d
commit dd50cb1c67
1 changed files with 32 additions and 76 deletions

View File

@ -20,16 +20,16 @@ package org.apache.poi.ss.excelant;
import static org.apache.poi.POITestCase.assertContains;
import static org.apache.poi.POITestCase.assertNotContained;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.io.File;
import java.io.PrintStream;
import org.apache.poi.POIDataSamples;
import org.apache.commons.io.output.NullPrintStream;
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildListener;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
@ -44,18 +44,13 @@ import org.junit.jupiter.api.Test;
public class TestBuildFile {
protected Project project;
private StringBuilder logBuffer;
private StringBuilder fullLogBuffer;
private final StringBuilder logBuffer = new StringBuilder();
@BeforeEach
void setUp() {
String filename = TestBuildFile.getDataDir() + "/../poi-excelant/src/test/resources/tests.xml";
int logLevel = Project.MSG_DEBUG;
logBuffer = new StringBuilder();
fullLogBuffer = new StringBuilder();
logBuffer.setLength(0);
project = new Project();
project.init();
project.setNewProperty("data.dir.name", getDataDir());
@ -63,7 +58,6 @@ public class TestBuildFile {
project.setUserProperty("ant.file", antFile.getAbsolutePath());
project.addBuildListener(new AntTestListener(logLevel));
ProjectHelper.configureProject(project, antFile);
}
/**
@ -94,16 +88,6 @@ public class TestBuildFile {
}
}
/**
* run a target, expect for any build exception
*
* @param target target to run
* @param cause information string to reader of report
*/
void expectBuildException(String target, String cause) {
expectSpecificBuildException(target, cause, null);
}
/**
* Assert that the given substring is in the log messages.
*/
@ -134,21 +118,7 @@ public class TestBuildFile {
* @param targetName target to run
*/
void executeTarget(String targetName) {
PrintStream sysOut = System.out;
PrintStream sysErr = System.err;
try {
sysOut.flush();
sysErr.flush();
System.setOut(new NullPrintStream());
System.setErr(new NullPrintStream());
logBuffer = new StringBuilder();
fullLogBuffer = new StringBuilder();
project.executeTarget(targetName);
} finally {
System.setOut(sysOut);
System.setErr(sysErr);
}
project.executeTarget(targetName);
}
/**
@ -159,16 +129,11 @@ public class TestBuildFile {
* @param msg the message value of the build exception we are waiting
* for set to null for any build exception to be valid
*/
void expectSpecificBuildException(String target, String cause, String msg) {
try {
executeTarget(target);
} catch (org.apache.tools.ant.BuildException ex) {
assertTrue(msg == null || ex.getMessage().equals(msg),
"Should throw BuildException because '" + cause + "' with message '" + msg + "' (actual message '" + ex.getMessage() + "' instead)"
);
return;
void expectBuildException(String target, String cause, String msg) {
BuildException be = assertThrows(BuildException.class, () -> executeTarget(target));
if (msg != null) {
assertEquals(msg, be.getMessage(), cause);
}
fail("Should throw BuildException because: " + cause);
}
public static String getDataDir() {
@ -194,8 +159,7 @@ public class TestBuildFile {
* Fired before any targets are started.
*/
@Override
public void buildStarted(BuildEvent event) {
}
public void buildStarted(BuildEvent event) { }
/**
* Fired after the last target has finished. This event
@ -204,8 +168,7 @@ public class TestBuildFile {
* @see BuildEvent#getException()
*/
@Override
public void buildFinished(BuildEvent event) {
}
public void buildFinished(BuildEvent event) { }
/**
* Fired when a target is started.
@ -213,9 +176,7 @@ public class TestBuildFile {
* @see BuildEvent#getTarget()
*/
@Override
public void targetStarted(BuildEvent event) {
//System.out.println("targetStarted " + event.getTarget().getName());
}
public void targetStarted(BuildEvent event) { }
/**
* Fired when a target has finished. This event will
@ -224,9 +185,7 @@ public class TestBuildFile {
* @see BuildEvent#getException()
*/
@Override
public void targetFinished(BuildEvent event) {
//System.out.println("targetFinished " + event.getTarget().getName());
}
public void targetFinished(BuildEvent event) { }
/**
* Fired when a task is started.
@ -234,9 +193,7 @@ public class TestBuildFile {
* @see BuildEvent#getTask()
*/
@Override
public void taskStarted(BuildEvent event) {
//System.out.println("taskStarted " + event.getTask().getTaskName());
}
public void taskStarted(BuildEvent event) { }
/**
* Fired when a task has finished. This event will still
@ -245,9 +202,7 @@ public class TestBuildFile {
* @see BuildEvent#getException()
*/
@Override
public void taskFinished(BuildEvent event) {
//System.out.println("taskFinished " + event.getTask().getTaskName());
}
public void taskFinished(BuildEvent event) { }
/**
* Fired whenever a message is logged.
@ -267,20 +222,18 @@ public class TestBuildFile {
event.getPriority() == Project.MSG_ERR) {
logBuffer.append(event.getMessage());
}
fullLogBuffer.append(event.getMessage());
}
}
@Test
void testMissingFilename() {
expectSpecificBuildException("test-nofile", "required argument not specified",
"fileName attribute must be set!");
expectBuildException("test-nofile", "required argument not specified", "fileName attribute must be set!");
}
@Test
void testFileNotFound() {
expectSpecificBuildException("test-filenotfound", "required argument not specified",
"Cannot load file invalid.xls. Make sure the path and file permissions are correct.");
expectBuildException("test-filenotfound", "required argument not specified",
"Cannot load file invalid.xls. Make sure the path and file permissions are correct.");
}
@Test
@ -303,18 +256,19 @@ public class TestBuildFile {
assertLogContaining("Using input file: " + TestBuildFile.getDataDir() + "/spreadsheet/excelant.xls");
assertLogContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4. " +
"It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-4");
"It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-4");
assertLogContaining("Succeeded when evaluating 'MortgageCalculator'!$B$4. " +
"It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-5");
"It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-5");
assertLogContaining("Failed to evaluate cell 'MortgageCalculator'!$B$4. " +
"It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-10 was expected.");
"It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-10 was expected.");
assertLogContaining("2/3 tests passed");
}
@Test
void testPrecisionFail() {
expectSpecificBuildException("test-precision-fails", "precision not matched",
"\tFailed to evaluate cell 'MortgageCalculator'!$B$4. It evaluated to 2285.5761494145563 when the value of 2285.576149 with precision of 1.0E-10 was expected.");
expectBuildException("test-precision-fails", "precision not matched",
"\tFailed to evaluate cell 'MortgageCalculator'!$B$4. It evaluated to 2285.5761494145563 " +
"when the value of 2285.576149 with precision of 1.0E-10 was expected.");
}
@Test
@ -326,16 +280,18 @@ public class TestBuildFile {
@Test
void testFailOnError() {
expectBuildException("test-failonerror", "fail on error");
expectBuildException("test-failonerror", "fail on error", null);
assertLogContaining("Using input file: " + TestBuildFile.getDataDir() + "/spreadsheet/excelant.xls");
assertLogNotContaining("failed because 1 of 0 evaluations failed to evaluate correctly. Failed to evaluate cell 'MortageCalculatorFunction'!$D$3");
assertLogNotContaining("failed because 1 of 0 evaluations failed to evaluate correctly. " +
"Failed to evaluate cell 'MortageCalculatorFunction'!$D$3");
}
@Test
void testFailOnErrorNoDetails() {
expectBuildException("test-failonerror-nodetails", "fail on error");
expectBuildException("test-failonerror-nodetails", "fail on error", null);
assertLogNotContaining("Using input file: " + TestBuildFile.getDataDir() + "/spreadsheet/excelant.xls");
assertLogNotContaining("failed because 1 of 0 evaluations failed to evaluate correctly. Failed to evaluate cell 'MortageCalculatorFunction'!$D$3");
assertLogNotContaining("failed because 1 of 0 evaluations failed to evaluate correctly. " +
"Failed to evaluate cell 'MortageCalculatorFunction'!$D$3");
}
@Test
@ -369,7 +325,7 @@ public class TestBuildFile {
@Test
void testAddHandlerFails() {
expectSpecificBuildException("test-addhandler-fails", "NullPointException", null);
expectBuildException("test-addhandler-fails", "NullPointException", null);
}
}