Rework test somewhat and enable logger to better indicate if the test is

failing because JDK options are missing with JDK >= 9

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1849287 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2018-12-19 10:22:01 +00:00
parent ad6440e181
commit 4199a2f0a3
1 changed files with 202 additions and 202 deletions

View File

@ -61,15 +61,17 @@ import org.apache.poi.poifs.eventfilesystem.POIFSReader;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent; import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener; import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;
import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentNode;
import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.poifs.filesystem.DocumentNode;
import org.apache.poi.poifs.filesystem.DocumentOutputStream; import org.apache.poi.poifs.filesystem.DocumentOutputStream;
import org.apache.poi.poifs.filesystem.POIFSDocument; import org.apache.poi.poifs.filesystem.POIFSDocument;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.CodePageUtil; import org.apache.poi.util.CodePageUtil;
import org.apache.poi.util.CommonsLogger;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.apache.poi.util.LittleEndianConsts; import org.apache.poi.util.LittleEndianConsts;
import org.apache.poi.util.TempFile; import org.apache.poi.util.TempFile;
import org.junit.AfterClass;
import org.junit.Assume; import org.junit.Assume;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
@ -91,11 +93,28 @@ public class TestWrite {
"LANG environment variable to a proper value, e.g. " + "LANG environment variable to a proper value, e.g. " +
"\"de_DE\"."; "\"de_DE\".";
private static String loggerBefore;
@BeforeClass @BeforeClass
public static void setUp() { public static void setUpClass() {
loggerBefore = System.getProperty("org.apache.poi.util.POILogger");
// this test may fails in newer JDKs because of disallowed access if
// properties are missing, make this visible
System.setProperty("org.apache.poi.util.POILogger", CommonsLogger.class.getName());
VariantSupport.setLogUnsupportedTypes(false); VariantSupport.setLogUnsupportedTypes(false);
} }
@AfterClass
public static void tearDownClass() {
if(loggerBefore == null) {
System.clearProperty("org.apache.poi.util.POILogger");
} else {
System.setProperty("org.apache.poi.util.POILogger", loggerBefore);
}
}
/** /**
* <p>Writes an empty property set to a POIFS and reads it back * <p>Writes an empty property set to a POIFS and reads it back
* in.</p> * in.</p>
@ -164,8 +183,6 @@ public class TestWrite {
r.read(filename); r.read(filename);
} }
/** /**
* <p>Writes a simple property set with a SummaryInformation section to a * <p>Writes a simple property set with a SummaryInformation section to a
* POIFS and reads it back in.</p> * POIFS and reads it back in.</p>
@ -295,7 +312,6 @@ public class TestWrite {
} }
static class MyPOIFSReaderListener implements POIFSReaderListener { static class MyPOIFSReaderListener implements POIFSReaderListener {
@Override @Override
public void processPOIFSReaderEvent(final POIFSReaderEvent event) { public void processPOIFSReaderEvent(final POIFSReaderEvent event) {
@ -307,8 +323,6 @@ public class TestWrite {
} }
} }
/** /**
* Writes and reads back various variant types and checks whether the * Writes and reads back various variant types and checks whether the
* stuff that has been read back equals the stuff that was written. * stuff that has been read back equals the stuff that was written.
@ -486,41 +500,31 @@ public class TestWrite {
*/ */
@Test @Test
public void inPlaceNPOIFSWrite() throws Exception { public void inPlaceNPOIFSWrite() throws Exception {
POIFSFileSystem fs;
DirectoryEntry root;
DocumentNode sinfDoc;
DocumentNode dinfDoc;
SummaryInformation sinf;
DocumentSummaryInformation dinf;
// We need to work on a File for in-place changes, so create a temp one // We need to work on a File for in-place changes, so create a temp one
final File copy = TempFile.createTempFile("Test-HPSF", "ole2"); final File copy = TempFile.createTempFile("Test-HPSF", "ole2");
copy.deleteOnExit(); copy.deleteOnExit();
// Copy a test file over to our temp location // Copy a test file over to our temp location
InputStream inp = _samples.openResourceAsStream("TestShiftJIS.doc"); try (FileOutputStream out = new FileOutputStream(copy);
FileOutputStream out = new FileOutputStream(copy); InputStream inp = _samples.openResourceAsStream("TestShiftJIS.doc")) {
IOUtils.copy(inp, out); IOUtils.copy(inp, out);
inp.close(); }
out.close();
// Open the copy in read/write mode // Open the copy in read/write mode
fs = new POIFSFileSystem(copy, false); try (POIFSFileSystem fs = new POIFSFileSystem(copy, false)) {
root = fs.getRoot(); DirectoryEntry root = fs.getRoot();
// Read the properties in there // Read the properties in there
sinfDoc = (DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME); DocumentNode sinfDoc = (DocumentNode) root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
dinfDoc = (DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME); DocumentNode dinfDoc = (DocumentNode) root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
InputStream sinfStream = new DocumentInputStream(sinfDoc); InputStream sinfStream = new DocumentInputStream(sinfDoc);
sinf = (SummaryInformation)PropertySetFactory.create(sinfStream); SummaryInformation sinf = (SummaryInformation) PropertySetFactory.create(sinfStream);
sinfStream.close(); sinfStream.close();
assertEquals(131077, sinf.getOSVersion()); assertEquals(131077, sinf.getOSVersion());
InputStream dinfStream = new DocumentInputStream(dinfDoc); InputStream dinfStream = new DocumentInputStream(dinfDoc);
dinf = (DocumentSummaryInformation)PropertySetFactory.create(dinfStream); DocumentSummaryInformation dinf = (DocumentSummaryInformation) PropertySetFactory.create(dinfStream);
dinfStream.close(); dinfStream.close();
assertEquals(131077, dinf.getOSVersion()); assertEquals(131077, dinf.getOSVersion());
@ -543,42 +547,40 @@ public class TestWrite {
// Check it didn't get changed // Check it didn't get changed
sinfDoc = (DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME); sinfDoc = (DocumentNode) root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
dinfDoc = (DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME); dinfDoc = (DocumentNode) root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
InputStream sinfStream2 = new DocumentInputStream(sinfDoc); InputStream sinfStream2 = new DocumentInputStream(sinfDoc);
sinf = (SummaryInformation)PropertySetFactory.create(sinfStream2); sinf = (SummaryInformation) PropertySetFactory.create(sinfStream2);
sinfStream2.close(); sinfStream2.close();
assertEquals(131077, sinf.getOSVersion()); assertEquals(131077, sinf.getOSVersion());
InputStream dinfStream2 = new DocumentInputStream(dinfDoc); InputStream dinfStream2 = new DocumentInputStream(dinfDoc);
dinf = (DocumentSummaryInformation)PropertySetFactory.create(dinfStream2); dinf = (DocumentSummaryInformation) PropertySetFactory.create(dinfStream2);
dinfStream2.close(); dinfStream2.close();
assertEquals(131077, dinf.getOSVersion()); assertEquals(131077, dinf.getOSVersion());
}
// Start again! // Start again!
fs.close(); try (FileOutputStream out = new FileOutputStream(copy);
inp = _samples.openResourceAsStream("TestShiftJIS.doc"); InputStream inp = _samples.openResourceAsStream("TestShiftJIS.doc")) {
out = new FileOutputStream(copy);
IOUtils.copy(inp, out); IOUtils.copy(inp, out);
inp.close(); }
out.close();
fs = new POIFSFileSystem(copy, false); try (POIFSFileSystem fs = new POIFSFileSystem(copy, false)) {
root = fs.getRoot(); DirectoryEntry root = fs.getRoot();
// Read the properties in once more // Read the properties in once more
sinfDoc = (DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME); DocumentNode sinfDoc = (DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
dinfDoc = (DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME); DocumentNode dinfDoc = (DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
InputStream sinfStream3 = new DocumentInputStream(sinfDoc); InputStream sinfStream3 = new DocumentInputStream(sinfDoc);
sinf = (SummaryInformation)PropertySetFactory.create(sinfStream3); SummaryInformation sinf = (SummaryInformation)PropertySetFactory.create(sinfStream3);
sinfStream3.close(); sinfStream3.close();
assertEquals(131077, sinf.getOSVersion()); assertEquals(131077, sinf.getOSVersion());
InputStream dinfStream3 = new DocumentInputStream(dinfDoc); InputStream dinfStream3 = new DocumentInputStream(dinfDoc);
dinf = (DocumentSummaryInformation)PropertySetFactory.create(dinfStream3); DocumentSummaryInformation dinf = (DocumentSummaryInformation)PropertySetFactory.create(dinfStream3);
dinfStream3.close(); dinfStream3.close();
assertEquals(131077, dinf.getOSVersion()); assertEquals(131077, dinf.getOSVersion());
@ -669,21 +671,21 @@ public class TestWrite {
// Close the whole filesystem, and open it once more // Close the whole filesystem, and open it once more
fs.writeFilesystem(); fs.writeFilesystem();
fs.close(); }
fs = new POIFSFileSystem(copy); try (POIFSFileSystem fs = new POIFSFileSystem(copy)) {
root = fs.getRoot(); DirectoryEntry root = fs.getRoot();
// Re-check on load // Re-check on load
sinfDoc = (DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME); DocumentNode sinfDoc = (DocumentNode) root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
InputStream sinfStream7 = new DocumentInputStream(sinfDoc); InputStream sinfStream7 = new DocumentInputStream(sinfDoc);
sinf = (SummaryInformation)PropertySetFactory.create(sinfStream7); SummaryInformation sinf = (SummaryInformation) PropertySetFactory.create(sinfStream7);
sinfStream7.close(); sinfStream7.close();
assertEquals(131077, sinf.getOSVersion()); assertEquals(131077, sinf.getOSVersion());
dinfDoc = (DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME); DocumentNode dinfDoc = (DocumentNode) root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
InputStream dinfStream7 = new DocumentInputStream(dinfDoc); InputStream dinfStream7 = new DocumentInputStream(dinfDoc);
dinf = (DocumentSummaryInformation)PropertySetFactory.create(dinfStream7); DocumentSummaryInformation dinf = (DocumentSummaryInformation) PropertySetFactory.create(dinfStream7);
dinfStream7.close(); dinfStream7.close();
assertEquals(131077, dinf.getOSVersion()); assertEquals(131077, dinf.getOSVersion());
@ -693,12 +695,10 @@ public class TestWrite {
assertEquals("", dinf.getCompany()); assertEquals("", dinf.getCompany());
assertEquals("Changed Manager", dinf.getManager()); assertEquals("Changed Manager", dinf.getManager());
}
// Tidy up // Tidy up
fs.close(); assertTrue(copy.delete());
//noinspection ResultOfMethodCallIgnored
copy.delete();
} }