Kaynağa Gözat

IntegrationTest - move excludes to file handler

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1793595 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_17_BETA1
Andreas Beeker 7 yıl önce
ebeveyn
işleme
3388787d2c

+ 31
- 19
src/integrationtest/org/apache/poi/TestAllFiles.java Dosyayı Görüntüle

@@ -52,6 +52,7 @@ import org.apache.poi.stress.XSSFBFileHandler;
import org.apache.poi.stress.XSSFFileHandler;
import org.apache.poi.stress.XWPFFileHandler;
import org.apache.tools.ant.DirectoryScanner;
import org.junit.AssumptionViolatedException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -84,7 +85,6 @@ import org.junit.runners.Parameterized.Parameters;
*/
@RunWith(Parameterized.class)
public class TestAllFiles {

private static final File ROOT_DIR = new File("test-data");

static final String[] SCAN_EXCLUDES = new String[] { "**/.svn/**", "lost+found" };
@@ -202,15 +202,15 @@ public class TestAllFiles {
HANDLERS.put("spreadsheet/test_properties1", new NullFileHandler());
}

private static Set<String> unmodifiableHashSet(String... a) {
private static final Set<String> unmodifiableHashSet(String... a) {
return Collections.unmodifiableSet(hashSet(a));
}
private static Set<String> hashSet(String... a) {
private static final Set<String> hashSet(String... a) {
return new HashSet<String>(Arrays.asList(a));
}

// Old Word Documents where we can at least extract some text
private static final Set<String> OLD_FILES = unmodifiableHashSet(
private static final Set<String> OLD_FILES_HWPF = unmodifiableHashSet(
"document/Bug49933.doc",
"document/Bug51944.doc",
"document/Word6.doc",
@@ -222,7 +222,9 @@ public class TestAllFiles {
"document/Bug60942.doc",
"document/Bug60942b.doc",
"hpsf/TestMickey.doc",
"document/52117.doc"
"document/52117.doc",
"hpsf/TestInvertedClassID.doc",
"hpsf/TestBug52117.doc"
);

private static final Set<String> EXPECTED_FAILURES = unmodifiableHashSet(
@@ -320,7 +322,7 @@ public class TestAllFiles {
// OPC handler works / XSSF handler fails
"spreadsheet/57181.xlsm"
);
@Parameters(name="{index}: {0} using {1}")
public static Iterable<Object[]> files() {
DirectoryScanner scanner = new DirectoryScanner();
@@ -346,7 +348,14 @@ public class TestAllFiles {
handler instanceof XWPFFileHandler ||
handler instanceof XSLFFileHandler ||
handler instanceof XDGFFileHandler) {
files.add(new Object[] { file, HANDLERS.get(".ooxml") });
files.add(new Object[] { file, new OPCFileHandler() });
}
if (handler instanceof HSSFFileHandler ||
handler instanceof HSLFFileHandler ||
handler instanceof HWPFFileHandler ||
handler instanceof HDGFFileHandler) {
files.add(new Object[] { file, new HPSFFileHandler() });
}
}

@@ -359,36 +368,37 @@ public class TestAllFiles {

@Parameter(value=1)
public FileHandler handler;
@Test
public void testAllFiles() throws Exception {
System.out.println("Reading " + file + " with " + handler.getClass());
assertNotNull("Unknown file extension for file: " + file + ": " + getExtension(file), handler);
File inputFile = new File(ROOT_DIR, file);

// special cases where docx-handling breaks, but OPCPackage handling works
boolean ignoredOPC = (file.endsWith(".docx") || file.endsWith(".xlsx") ||
file.endsWith(".xlsb") || file.endsWith(".pptx")) &&
handler instanceof OPCFileHandler;
boolean ignoreHPSF = (handler instanceof HPSFFileHandler);
try {
InputStream stream = new BufferedInputStream(new FileInputStream(inputFile), 64*1024);
try {
handler.handleFile(stream);

handler.handleFile(stream, file);
assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!",
OLD_FILES.contains(file));
OLD_FILES_HWPF.contains(file) && !ignoreHPSF);
} finally {
stream.close();
}

handler.handleExtracting(inputFile);

// special cases where docx-handling breaks, but OPCPackage handling works
boolean ignoredOPC = (file.endsWith(".docx") || file.endsWith(".xlsx") ||
file.endsWith(".xlsb") || file.endsWith(".pptx")) &&
handler instanceof OPCFileHandler;

assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!",
EXPECTED_FAILURES.contains(file) && !ignoredOPC);
EXPECTED_FAILURES.contains(file) && !ignoredOPC && !ignoreHPSF);
} catch (OldFileFormatException e) {
// for old word files we should still support extracting text
if(OLD_FILES.contains(file)) {
if(OLD_FILES_HWPF.contains(file)) {
handler.handleExtracting(inputFile);
} else {
// check if we expect failure for this file
@@ -397,6 +407,8 @@ public class TestAllFiles {
throw new Exception("While handling " + file, e);
}
}
} catch (AssumptionViolatedException e) {
// file handler ignored this file
} catch (Exception e) {
// check if we expect failure for this file
if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) {
@@ -420,7 +432,7 @@ public class TestAllFiles {

private static class NullFileHandler implements FileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
}

@Override

+ 2
- 1
src/integrationtest/org/apache/poi/stress/FileHandler.java Dosyayı Görüntüle

@@ -32,9 +32,10 @@ public interface FileHandler {
* Closing is handled by the framework outside this call.
*
* @param stream The input stream to read the file from.
* @param path the relative path to the file
* @throws Exception If an error happens in the file-specific handler
*/
void handleFile(InputStream stream) throws Exception;
void handleFile(InputStream stream, String path) throws Exception;
/**
* Ensures that extracting text from the given file

+ 4
- 4
src/integrationtest/org/apache/poi/stress/HDGFFileHandler.java Dosyayı Görüntüle

@@ -33,7 +33,7 @@ import org.junit.Test;

public class HDGFFileHandler extends POIFSFileHandler {
@Override
public void handleFile(InputStream stream) throws IOException {
public void handleFile(InputStream stream, String path) throws IOException {
POIFSFileSystem poifs = new POIFSFileSystem(stream);
HDGFDiagram diagram = new HDGFDiagram(poifs);
Stream[] topLevelStreams = diagram.getTopLevelStreams();
@@ -55,11 +55,11 @@ public class HDGFFileHandler extends POIFSFileHandler {
@Override
@Test
public void test() throws Exception {
File file = new File("test-data/diagram/44501.vsd");
File file = new File("test-data/diagram/44501.vsd");

InputStream stream = new FileInputStream(file);
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 4
- 3
src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java Dosyayı Görüntüle

@@ -29,7 +29,7 @@ import org.junit.Test;
public class HMEFFileHandler extends AbstractFileHandler {

@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
HMEFMessage msg = new HMEFMessage(stream);
// list all properties
@@ -50,9 +50,10 @@ public class HMEFFileHandler extends AbstractFileHandler {
// a test-case to test this locally without executing the full TestAllFiles
@Test
public void test() throws Exception {
InputStream stream = new FileInputStream("test-data/hmef/quick-winmail.dat");
String path = "test-data/hmef/quick-winmail.dat";
InputStream stream = new FileInputStream(path);
try {
handleFile(stream);
handleFile(stream, path);
} finally {
stream.close();
}

+ 5
- 4
src/integrationtest/org/apache/poi/stress/HPBFFileHandler.java Dosyayı Görüntüle

@@ -29,24 +29,25 @@ import org.junit.Test;

public class HPBFFileHandler extends POIFSFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
HPBFDocument pub = new HPBFDocument(new POIFSFileSystem(stream));
assertNotNull(pub.getEscherDelayStm());
assertNotNull(pub.getMainContents());
assertNotNull(pub.getQuillContents());
// writing is not yet implemented... handlePOIDocument(pub);
pub.close();
}
// a test-case to test this locally without executing the full TestAllFiles
@Override
@Test
public void test() throws Exception {
File file = new File("test-data/publisher/SampleBrochure.pub");
File file = new File("test-data/publisher/SampleBrochure.pub");

InputStream stream = new FileInputStream(file);
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 9
- 9
src/integrationtest/org/apache/poi/stress/HSLFFileHandler.java Dosyayı Görüntüle

@@ -28,7 +28,7 @@ import org.junit.Test;

public class HSLFFileHandler extends SlideShowHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
HSLFSlideShowImpl slide = new HSLFSlideShowImpl(stream);
assertNotNull(slide.getCurrentUserAtom());
assertNotNull(slide.getEmbeddedObjects());
@@ -40,13 +40,13 @@ public class HSLFFileHandler extends SlideShowHandler {
assertNotNull("Found a record which was null", record);
assertTrue(record.getRecordType() >= 0);
}
handlePOIDocument(slide);
HSLFSlideShow ss = new HSLFSlideShow(slide);
handleSlideShow(ss);
}
@Test
public void testOne() throws Exception {
testOneFile(new File("test-data/slideshow/54880_chinese.ppt"));
@@ -81,10 +81,10 @@ public class HSLFFileHandler extends SlideShowHandler {
//System.setProperty("org.apache.poi.util.POILogger", "org.apache.poi.util.SystemOutLogger");
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
} finally {
stream.close();
}
handleFile(stream, file.getPath());
} finally {
stream.close();
}

handleExtracting(file);
}
@@ -93,7 +93,7 @@ public class HSLFFileHandler extends SlideShowHandler {
System.setProperty("org.apache.poi.util.POILogger", "org.apache.poi.util.SystemOutLogger");
InputStream stream = new FileInputStream(args[0]);
try {
new HSLFFileHandler().handleFile(stream);
new HSLFFileHandler().handleFile(stream, args[0]);
} finally {
stream.close();
}

+ 5
- 3
src/integrationtest/org/apache/poi/stress/HSMFFileHandler.java Dosyayı Görüntüle

@@ -29,7 +29,7 @@ import org.junit.Test;

public class HSMFFileHandler extends POIFSFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
MAPIMessage mapi = new MAPIMessage(stream);
assertNotNull(mapi.getAttachmentFiles());
assertNotNull(mapi.getDisplayBCC());
@@ -60,6 +60,8 @@ public class HSMFFileHandler extends POIFSFileHandler {
*/
// writing is not yet supported... handlePOIDocument(mapi);
mapi.close();
}
// private void writeToFile(MAPIMessage mapi, File file)
@@ -76,10 +78,10 @@ public class HSMFFileHandler extends POIFSFileHandler {
@Override
@Test
public void test() throws Exception {
File file = new File("test-data/hsmf/logsat.com_signatures_valid.msg");
File file = new File("test-data/hsmf/logsat.com_signatures_valid.msg");
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 10
- 5
src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java Dosyayı Görüntüle

@@ -32,7 +32,7 @@ import static org.junit.Assert.assertFalse;
public class HSSFFileHandler extends SpreadsheetHandler {
private final POIFSFileHandler delegate = new POIFSFileHandler();
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook(stream);
handleWorkbook(wb);
@@ -100,14 +100,19 @@ public class HSSFFileHandler extends SpreadsheetHandler {
// a test-case to test this locally without executing the full TestAllFiles
@Test
public void test() throws Exception {
File file = new File("test-data/spreadsheet/49219.xls");
File file = new File("test-data/spreadsheet/49219.xls");
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}
handleExtracting(file);
}

// a test-case to test this locally without executing the full TestAllFiles
@Test
public void testExtractor() throws Exception {
handleExtracting(new File("test-data/spreadsheet/BOOK_in_capitals.xls"));
}
}

+ 4
- 4
src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java Dosyayı Görüntüle

@@ -28,7 +28,7 @@ import org.junit.Test;

public class HWPFFileHandler extends POIFSFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
HWPFDocument doc = new HWPFDocument(stream);
assertNotNull(doc.getBookmarks());
assertNotNull(doc.getCharacterTable());
@@ -41,11 +41,11 @@ public class HWPFFileHandler extends POIFSFileHandler {
@Override
@Test
public void test() throws Exception {
File file = new File("test-data/document/52117.doc");
File file = new File("test-data/document/52117.doc");

InputStream stream = new FileInputStream(file);
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 4
- 4
src/integrationtest/org/apache/poi/stress/OPCFileHandler.java Dosyayı Görüntüle

@@ -32,7 +32,7 @@ import org.junit.Test;

public class OPCFileHandler extends AbstractFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
// ignore password protected files
if (POIXMLDocumentHandler.isEncrypted(stream)) return;

@@ -63,11 +63,11 @@ public class OPCFileHandler extends AbstractFileHandler {
// a test-case to test this locally without executing the full TestAllFiles
@Test
public void test() throws Exception {
File file = new File("test-data/diagram/test.vsdx");
File file = new File("test-data/diagram/test.vsdx");

InputStream stream = new PushbackInputStream(new FileInputStream(file), 100000);
InputStream stream = new PushbackInputStream(new FileInputStream(file), 100000);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 2
- 2
src/integrationtest/org/apache/poi/stress/POIFSFileHandler.java Dosyayı Görüntüle

@@ -33,7 +33,7 @@ import org.junit.Test;
public class POIFSFileHandler extends AbstractFileHandler {

@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
POIFSFileSystem fs = new POIFSFileSystem(stream);
try {
handlePOIFSFileSystem(fs);
@@ -80,7 +80,7 @@ public class POIFSFileHandler extends AbstractFileHandler {

InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 1
- 1
src/integrationtest/org/apache/poi/stress/XDGFFileHandler.java Dosyayı Görüntüle

@@ -25,7 +25,7 @@ import org.junit.Test;

public class XDGFFileHandler extends AbstractFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
// ignore password protected files
if (POIXMLDocumentHandler.isEncrypted(stream)) return;


+ 7
- 7
src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java Dosyayı Görüntüle

@@ -31,7 +31,7 @@ import org.junit.Test;

public class XSLFFileHandler extends SlideShowHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
XMLSlideShow slide = new XMLSlideShow(stream);
XSLFSlideShow slideInner = new XSLFSlideShow(slide.getPackage());
assertNotNull(slideInner.getPresentation());
@@ -69,14 +69,14 @@ public class XSLFFileHandler extends SlideShowHandler {
@Override
@Test
public void test() throws Exception {
File file = new File("test-data/slideshow/ae.ac.uaeu.faculty_nafaachbili_GeomLec1.pptx");
InputStream stream = new FileInputStream(file);
File file = new File("test-data/slideshow/ae.ac.uaeu.faculty_nafaachbili_GeomLec1.pptx");
InputStream stream = new FileInputStream(file);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

handleExtracting(file);
}
}
handleExtracting(file);
}
}

+ 2
- 2
src/integrationtest/org/apache/poi/stress/XSSFBFileHandler.java Dosyayı Görüntüle

@@ -37,7 +37,7 @@ public class XSSFBFileHandler extends AbstractFileHandler {
}

@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(stream, out);

@@ -54,7 +54,7 @@ public class XSSFBFileHandler extends AbstractFileHandler {

private void testNotHandledByWorkbookException(OPCPackage pkg) throws IOException {
try {
new XSSFWorkbook(pkg);
new XSSFWorkbook(pkg).close();
} catch (XLSBUnsupportedException e) {
//this is what we'd expect
//swallow

+ 29
- 18
src/integrationtest/org/apache/poi/stress/XSSFFileHandler.java Dosyayı Görüntüle

@@ -16,6 +16,26 @@
==================================================================== */
package org.apache.poi.stress;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;

import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.Set;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;

import org.apache.poi.POIXMLException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException;
@@ -31,20 +51,9 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import java.io.*;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.Set;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;

public class XSSFFileHandler extends SpreadsheetHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
// ignore password protected files
if (POIXMLDocumentHandler.isEncrypted(stream)) return;

@@ -52,13 +61,13 @@ public class XSSFFileHandler extends SpreadsheetHandler {

// make sure the potentially large byte-array is freed up quickly again
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(stream, out);
final byte[] bytes = out.toByteArray();
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(stream, out);
final byte[] bytes = out.toByteArray();

checkXSSFReader(OPCPackage.open(new ByteArrayInputStream(bytes)));
checkXSSFReader(OPCPackage.open(new ByteArrayInputStream(bytes)));

wb = new XSSFWorkbook(new ByteArrayInputStream(bytes));
wb = new XSSFWorkbook(new ByteArrayInputStream(bytes));
}

// use the combined handler for HSSF/XSSF
@@ -76,6 +85,8 @@ public class XSSFFileHandler extends SpreadsheetHandler {

// this allows to trigger a heap-dump at this point to see which memory is still allocated
//HeapDump.dumpHeap("/tmp/poi.hprof", false);
wb.close();
}


@@ -185,7 +196,7 @@ public class XSSFFileHandler extends SpreadsheetHandler {

InputStream stream = new BufferedInputStream(new FileInputStream(file));
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

+ 4
- 4
src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java Dosyayı Görüntüle

@@ -26,7 +26,7 @@ import org.junit.Test;

public class XWPFFileHandler extends AbstractFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
public void handleFile(InputStream stream, String path) throws Exception {
// ignore password protected files
if (POIXMLDocumentHandler.isEncrypted(stream)) return;

@@ -38,11 +38,11 @@ public class XWPFFileHandler extends AbstractFileHandler {
// a test-case to test this locally without executing the full TestAllFiles
@Test
public void test() throws Exception {
File file = new File("test-data/document/51921-Word-Crash067.docx");
File file = new File("test-data/document/51921-Word-Crash067.docx");

InputStream stream = new PushbackInputStream(new FileInputStream(file), 100000);
InputStream stream = new PushbackInputStream(new FileInputStream(file), 100000);
try {
handleFile(stream);
handleFile(stream, file.getPath());
} finally {
stream.close();
}

Loading…
İptal
Kaydet