Adjust some tests to make them run fine in the Gradle build as well git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1763816 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_16_BETA1
// https://docs.gradle.org/current/userguide/ant.html | // https://docs.gradle.org/current/userguide/ant.html | ||||
ant.importBuild 'build.xml' | ant.importBuild 'build.xml' | ||||
/** | |||||
Define properties for all projects, including this one | |||||
*/ | |||||
allprojects { | |||||
apply plugin: 'eclipse' | |||||
task wrapper(type: Wrapper) { | |||||
gradleVersion = '2.14.1' | |||||
} | |||||
task adjustWrapperPropertiesFile << { | |||||
ant.replaceregexp(match:'^#.*', replace:'', flags:'g', byline:true) { | |||||
fileset(dir: project.projectDir, includes: 'gradle/wrapper/gradle-wrapper.properties') | |||||
} | |||||
new File(project.projectDir, 'gradle/wrapper/gradle-wrapper.properties').with { it.text = it.readLines().findAll { it }.sort().join('\n') } | |||||
ant.fixcrlf(file: 'gradle/wrapper/gradle-wrapper.properties', eol: 'lf') | |||||
} | |||||
wrapper.finalizedBy adjustWrapperPropertiesFile | |||||
} | |||||
/** | |||||
Define things that are only necessary in sub-projects, but not in the master-project itself | |||||
*/ | |||||
subprojects { | |||||
//Put instructions for each sub project, but not the master | |||||
apply plugin: 'java' | |||||
apply plugin: 'jacoco' | |||||
version = '3.16-beta1' | |||||
tasks.withType(JavaCompile) { | |||||
options.encoding = 'UTF-8' | |||||
} | |||||
sourceCompatibility = 1.6 | |||||
repositories { | |||||
mavenCentral() | |||||
} | |||||
jar { | |||||
manifest { | |||||
attributes 'Implementation-Title': 'Apache POI', 'Implementation-Version': version | |||||
} | |||||
} | |||||
test { | |||||
// Exclude some tests that are not actually tests or do not run cleanly on purpose | |||||
exclude '**/BaseTestBorderStyle.class' | |||||
exclude '**/BaseTestCellUtil.class' | |||||
exclude '**/TestUnfixedBugs.class' | |||||
exclude '**/TestOneFile.class' | |||||
systemProperties = System.properties | |||||
// set heap size for the test JVM(s) | |||||
minHeapSize = "128m" | |||||
maxHeapSize = "768m" | |||||
// show standard out and standard error of the test JVM(s) on the console | |||||
//testLogging.showStandardStreams = true | |||||
// http://forums.gradle.org/gradle/topics/jacoco_related_failure_in_multiproject_build | |||||
systemProperties['user.dir'] = workingDir | |||||
systemProperties['POI.testdata.path'] = '../../test-data' | |||||
//systemProperties['user.language'] = 'en' | |||||
//systemProperties['user.country'] = 'US' | |||||
} | |||||
test.beforeSuite { TestDescriptor suite -> | |||||
System.setProperty('user.language', 'en') | |||||
System.setProperty('user.country', 'US') | |||||
} | |||||
jacoco { | |||||
toolVersion = '0.7.7.201606060606' | |||||
} | |||||
} | |||||
project('main') { | |||||
sourceSets.main.java.srcDirs = ['../../src/java'] | |||||
sourceSets.main.resources.srcDirs = ['../../src/resources/main'] | |||||
sourceSets.test.java.srcDirs = ['../../src/testcases'] | |||||
dependencies { | |||||
compile 'commons-codec:commons-codec:1.10' | |||||
compile 'commons-logging:commons-logging:1.2' | |||||
testCompile 'junit:junit:4.12' | |||||
} | |||||
// Create a separate jar for test-code to depend on it in other projects | |||||
// See http://stackoverflow.com/questions/5144325/gradle-test-dependency | |||||
task testJar(type: Jar, dependsOn: testClasses) { | |||||
baseName = "test-${project.archivesBaseName}" | |||||
from sourceSets.test.output | |||||
} | |||||
configurations { | |||||
tests | |||||
} | |||||
artifacts { | |||||
tests testJar | |||||
} | |||||
} | |||||
project('ooxml') { | |||||
sourceSets.main.java.srcDirs = ['../../src/ooxml/java'] | |||||
sourceSets.main.resources.srcDirs = ['../../src/ooxml/resources', '../../src/resources/ooxml'] | |||||
sourceSets.test.java.srcDirs = ['../../src/ooxml/testcases'] | |||||
// for now import the ant-task for building the jars from build.xml | |||||
// we need to rename the tasks as e.g. task "jar" conflicts with :ooxml:jar | |||||
ant.importBuild('../../build.xml') { antTargetName -> | |||||
'ant-' + antTargetName | |||||
} | |||||
compileJava.dependsOn 'ant-compile-ooxml-xsds' | |||||
dependencies { | |||||
compile 'org.apache.xmlbeans:xmlbeans:2.6.0' | |||||
compile 'org.apache.commons:commons-collections4:4.1' | |||||
compile 'org.apache.santuario:xmlsec:2.0.6' | |||||
compile 'org.bouncycastle:bcpkix-jdk15on:1.54' | |||||
compile 'com.github.virtuald:curvesapi:1.04' | |||||
// for ooxml-lite, should we move this somewhere else? | |||||
compile 'junit:junit:4.12' | |||||
compile project(':main') | |||||
compile project(':scratchpad') // TODO: get rid of this dependency! | |||||
compile files('../../ooxml-lib/ooxml-schemas-1.3.jar') | |||||
compile files('../../ooxml-lib/ooxml-security-1.1.jar') | |||||
testCompile 'junit:junit:4.12' | |||||
testCompile project(path: ':main', configuration: 'tests') | |||||
} | |||||
} | |||||
project('examples') { | |||||
sourceSets.main.java.srcDirs = ['../../src/examples/src'] | |||||
dependencies { | |||||
compile project(':main') | |||||
compile project(':ooxml') | |||||
} | |||||
} | |||||
project('excelant') { | |||||
sourceSets.main.java.srcDirs = ['../../src/excelant/java'] | |||||
sourceSets.main.resources.srcDirs = ['../../src/excelant/resources'] | |||||
sourceSets.test.java.srcDirs = ['../../src/excelant/testcases'] | |||||
dependencies { | |||||
compile 'org.apache.ant:ant:1.9.4' | |||||
compile project(':main') | |||||
compile project(':ooxml') | |||||
testCompile project(path: ':main', configuration: 'tests') | |||||
} | |||||
} | |||||
project('integrationtest') { | |||||
sourceSets.test.java.srcDirs = ['../../src/integrationtest'] | |||||
dependencies { | |||||
compile 'org.apache.ant:ant:1.9.4' | |||||
compile project(':main') | |||||
compile project(':ooxml') | |||||
compile project(':scratchpad') | |||||
compile project(':examples') | |||||
testCompile 'junit:junit:4.12' | |||||
} | |||||
test { | |||||
// exclude these from the normal test-run | |||||
exclude '**/TestAllFiles.class' | |||||
exclude '**/*FileHandler.class' | |||||
exclude '**/RecordsStresser.class' | |||||
} | |||||
task integrationTest(type: Test) { | |||||
// these are just tests used during development of more test-code | |||||
exclude '**/*FileHandler.class' | |||||
exclude '**/RecordStresser.class' | |||||
} | |||||
} | |||||
project('scratchpad') { | |||||
sourceSets.main.java.srcDirs = ['../../src/scratchpad/src'] | |||||
sourceSets.main.resources.srcDirs = ['../../src/resources/scratchpad'] | |||||
sourceSets.test.java.srcDirs = ['../../src/scratchpad/testcases'] | |||||
dependencies { | |||||
compile project(':main') | |||||
// cyclic-dependency here: compile project(':ooxml') | |||||
testCompile 'junit:junit:4.12' | |||||
testCompile project(path: ':main', configuration: 'tests') | |||||
} | |||||
} | |||||
/* | |||||
* Notes: | |||||
* | |||||
* See https://github.com/melix/japicmp-gradle-plugin and | |||||
* https://github.com/codehaus/groovy-git/blob/7f940159920d4ea5bc727cfcbef8aba9b48c5e50/gradle/binarycompatibility.gradle for an example of using japicmp | |||||
* | |||||
**/ |
rootProject.name = 'poi' | |||||
include 'main', 'ooxml', 'excelant', 'examples', 'scratchpad', 'integrationtest' | |||||
project(':main').projectDir = new File(settingsDir, 'build/main') | |||||
project(':ooxml').projectDir = new File(settingsDir, 'build/ooxml') | |||||
project(':excelant').projectDir = new File(settingsDir, 'build/excelant') | |||||
project(':examples').projectDir = new File(settingsDir, 'build/examples') | |||||
project(':scratchpad').projectDir = new File(settingsDir, 'build/scratchpad') | |||||
project(':integrationtest').projectDir = new File(settingsDir, 'build/integrationtest') |
==================================================================== */ | ==================================================================== */ | ||||
package org.apache.poi.hssf.converter; | package org.apache.poi.hssf.converter; | ||||
import java.io.File; | |||||
import java.io.FilenameFilter; | |||||
import java.io.StringWriter; | |||||
import java.util.Arrays; | |||||
import java.util.List; | |||||
import org.apache.poi.POIDataSamples; | |||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |||||
import org.apache.poi.util.XMLHelper; | |||||
import org.junit.Test; | |||||
import org.junit.runner.RunWith; | |||||
import org.junit.runners.Parameterized; | |||||
import javax.xml.transform.OutputKeys; | import javax.xml.transform.OutputKeys; | ||||
import javax.xml.transform.Transformer; | import javax.xml.transform.Transformer; | ||||
import javax.xml.transform.TransformerFactory; | import javax.xml.transform.TransformerFactory; | ||||
import javax.xml.transform.dom.DOMSource; | import javax.xml.transform.dom.DOMSource; | ||||
import javax.xml.transform.stream.StreamResult; | import javax.xml.transform.stream.StreamResult; | ||||
import java.io.File; | |||||
import java.io.FilenameFilter; | |||||
import java.io.StringWriter; | |||||
import java.util.ArrayList; | |||||
import java.util.Arrays; | |||||
import java.util.List; | |||||
import junit.framework.Test; | |||||
import junit.framework.TestCase; | |||||
import junit.framework.TestSuite; | |||||
import org.apache.poi.POIDataSamples; | |||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |||||
import org.apache.poi.util.XMLHelper; | |||||
import static org.junit.Assert.assertNotNull; | |||||
@RunWith(Parameterized.class) | |||||
public class TestExcelConverterSuite | public class TestExcelConverterSuite | ||||
{ | { | ||||
/** | /** | ||||
* YK: a quick hack to exclude failing documents from the suite. | * YK: a quick hack to exclude failing documents from the suite. | ||||
*/ | */ | ||||
private static List<String> failingFiles = Arrays.asList( // | |||||
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument") | |||||
private static List<String> failingFiles = Arrays.asList( | |||||
/* not failing, but requires more memory */ | /* not failing, but requires more memory */ | ||||
"ex45698-22488.xls" ); | "ex45698-22488.xls" ); | ||||
public static Test suite() | |||||
{ | |||||
TestSuite suite = new TestSuite( | |||||
TestExcelConverterSuite.class.getName() ); | |||||
File directory = POIDataSamples.getSpreadSheetInstance().getFile( | |||||
@Parameterized.Parameters(name="{index}: {0}") | |||||
public static Iterable<Object[]> files() { | |||||
List<Object[]> files = new ArrayList<Object[]>(); | |||||
File directory = POIDataSamples.getDocumentInstance().getFile( | |||||
"../spreadsheet" ); | "../spreadsheet" ); | ||||
for ( final File child : directory.listFiles( new FilenameFilter() | for ( final File child : directory.listFiles( new FilenameFilter() | ||||
{ | { | ||||
} | } | ||||
} ) ) | } ) ) | ||||
{ | { | ||||
final String name = child.getName(); | |||||
suite.addTest( new TestCase( name + " [FO]" ) | |||||
{ | |||||
@Override | |||||
public void runTest() throws Exception | |||||
{ | |||||
testFo( child ); | |||||
} | |||||
} ); | |||||
suite.addTest( new TestCase( name + " [HTML]" ) | |||||
{ | |||||
@Override | |||||
public void runTest() throws Exception | |||||
{ | |||||
testHtml( child ); | |||||
} | |||||
} ); | |||||
files.add(new Object[] { child }); | |||||
} | } | ||||
return suite; | |||||
return files; | |||||
} | } | ||||
protected static void testFo( File child ) throws Exception | |||||
@Parameterized.Parameter | |||||
public File child; | |||||
@Test | |||||
public void testFo() throws Exception | |||||
{ | { | ||||
HSSFWorkbook workbook; | HSSFWorkbook workbook; | ||||
try | |||||
{ | |||||
try { | |||||
workbook = ExcelToHtmlUtils.loadXls( child ); | workbook = ExcelToHtmlUtils.loadXls( child ); | ||||
} | |||||
catch ( Exception exc ) | |||||
{ | |||||
// unable to parse file -- not WordToFoConverter fault | |||||
} catch ( Exception exc ) { | |||||
// unable to parse file -- not ExcelToFoConverter fault | |||||
return; | return; | ||||
} | } | ||||
transformer.transform( | transformer.transform( | ||||
new DOMSource( excelToHtmlConverter.getDocument() ), | new DOMSource( excelToHtmlConverter.getDocument() ), | ||||
new StreamResult( stringWriter ) ); | new StreamResult( stringWriter ) ); | ||||
assertNotNull(stringWriter.toString()); | |||||
} | } | ||||
protected static void testHtml( File child ) throws Exception | |||||
@Test | |||||
public void testHtml() throws Exception | |||||
{ | { | ||||
HSSFWorkbook workbook; | HSSFWorkbook workbook; | ||||
try | |||||
{ | |||||
try { | |||||
workbook = ExcelToHtmlUtils.loadXls( child ); | workbook = ExcelToHtmlUtils.loadXls( child ); | ||||
} | |||||
catch ( Exception exc ) | |||||
{ | |||||
// unable to parse file -- not WordToFoConverter fault | |||||
} catch ( Exception exc ) { | |||||
// unable to parse file -- not ExcelToFoConverter fault | |||||
return; | return; | ||||
} | } | ||||
transformer.transform( | transformer.transform( | ||||
new DOMSource( excelToHtmlConverter.getDocument() ), | new DOMSource( excelToHtmlConverter.getDocument() ), | ||||
new StreamResult( stringWriter ) ); | new StreamResult( stringWriter ) ); | ||||
assertNotNull(stringWriter.toString()); | |||||
} | } | ||||
} | } |
import java.io.File; | import java.io.File; | ||||
import java.io.FilenameFilter; | import java.io.FilenameFilter; | ||||
import java.io.StringWriter; | import java.io.StringWriter; | ||||
import java.util.ArrayList; | |||||
import java.util.Arrays; | import java.util.Arrays; | ||||
import java.util.List; | import java.util.List; | ||||
import javax.xml.transform.dom.DOMSource; | import javax.xml.transform.dom.DOMSource; | ||||
import javax.xml.transform.stream.StreamResult; | import javax.xml.transform.stream.StreamResult; | ||||
import junit.framework.Test; | |||||
import junit.framework.TestCase; | |||||
import junit.framework.TestSuite; | |||||
import org.apache.poi.POIDataSamples; | import org.apache.poi.POIDataSamples; | ||||
import org.apache.poi.hwpf.HWPFDocumentCore; | import org.apache.poi.hwpf.HWPFDocumentCore; | ||||
import org.apache.poi.util.XMLHelper; | import org.apache.poi.util.XMLHelper; | ||||
import org.junit.Test; | |||||
import org.junit.runner.RunWith; | |||||
import org.junit.runners.Parameterized; | |||||
import static org.junit.Assert.assertNotNull; | |||||
@RunWith(Parameterized.class) | |||||
public class TestWordToConverterSuite | public class TestWordToConverterSuite | ||||
{ | { | ||||
/** | /** | ||||
private static List<String> failingFiles = Arrays | private static List<String> failingFiles = Arrays | ||||
.asList( "ProblemExtracting.doc" ); | .asList( "ProblemExtracting.doc" ); | ||||
public static Test suite() | |||||
{ | |||||
TestSuite suite = new TestSuite( | |||||
TestWordToConverterSuite.class.getName() ); | |||||
@Parameterized.Parameters(name="{index}: {0}") | |||||
public static Iterable<Object[]> files() { | |||||
List<Object[]> files = new ArrayList<Object[]>(); | |||||
File directory = POIDataSamples.getDocumentInstance().getFile( | File directory = POIDataSamples.getDocumentInstance().getFile( | ||||
"../document" ); | "../document" ); | ||||
for ( final File child : directory.listFiles( new FilenameFilter() | for ( final File child : directory.listFiles( new FilenameFilter() | ||||
} | } | ||||
} ) ) | } ) ) | ||||
{ | { | ||||
final String name = child.getName(); | |||||
suite.addTest( new TestCase( name + " [FO]" ) | |||||
{ | |||||
public void runTest() throws Exception | |||||
{ | |||||
testFo( child ); | |||||
} | |||||
} ); | |||||
suite.addTest( new TestCase( name + " [HTML]" ) | |||||
{ | |||||
public void runTest() throws Exception | |||||
{ | |||||
testHtml( child ); | |||||
} | |||||
} ); | |||||
suite.addTest( new TestCase( name + " [TEXT]" ) | |||||
{ | |||||
public void runTest() throws Exception | |||||
{ | |||||
testText( child ); | |||||
} | |||||
} ); | |||||
files.add(new Object[] { child }); | |||||
} | } | ||||
return suite; | |||||
return files; | |||||
} | } | ||||
protected static void testFo( File child ) throws Exception | |||||
{ | |||||
@Parameterized.Parameter | |||||
public File child; | |||||
@Test | |||||
public void testFo() throws Exception { | |||||
HWPFDocumentCore hwpfDocument; | HWPFDocumentCore hwpfDocument; | ||||
try | |||||
{ | |||||
try { | |||||
hwpfDocument = AbstractWordUtils.loadDoc( child ); | hwpfDocument = AbstractWordUtils.loadDoc( child ); | ||||
} | |||||
catch ( Exception exc ) | |||||
{ | |||||
} catch ( Exception exc ) { | |||||
return; | return; | ||||
} | } | ||||
new StreamResult( stringWriter ) ); | new StreamResult( stringWriter ) ); | ||||
// no exceptions | // no exceptions | ||||
assertNotNull(stringWriter.toString()); | |||||
} | } | ||||
protected static void testHtml( File child ) throws Exception | |||||
@Test | |||||
public void testHtml() throws Exception | |||||
{ | { | ||||
HWPFDocumentCore hwpfDocument; | HWPFDocumentCore hwpfDocument; | ||||
try | |||||
{ | |||||
try { | |||||
hwpfDocument = AbstractWordUtils.loadDoc( child ); | hwpfDocument = AbstractWordUtils.loadDoc( child ); | ||||
} | |||||
catch ( Exception exc ) | |||||
{ | |||||
} catch ( Exception exc ) { | |||||
return; | return; | ||||
} | } | ||||
new StreamResult( stringWriter ) ); | new StreamResult( stringWriter ) ); | ||||
// no exceptions | // no exceptions | ||||
assertNotNull(stringWriter.toString()); | |||||
} | } | ||||
protected static void testText( File child ) throws Exception | |||||
@Test | |||||
public void testText() throws Exception | |||||
{ | { | ||||
HWPFDocumentCore wordDocument; | HWPFDocumentCore wordDocument; | ||||
try | |||||
{ | |||||
try { | |||||
wordDocument = AbstractWordUtils.loadDoc( child ); | wordDocument = AbstractWordUtils.loadDoc( child ); | ||||
} | |||||
catch ( Exception exc ) | |||||
{ | |||||
} catch ( Exception exc ) { | |||||
return; | return; | ||||
} | } | ||||
new DOMSource( wordToTextConverter.getDocument() ), | new DOMSource( wordToTextConverter.getDocument() ), | ||||
new StreamResult( stringWriter ) ); | new StreamResult( stringWriter ) ); | ||||
stringWriter.toString(); | |||||
// no exceptions | // no exceptions | ||||
assertNotNull(stringWriter.toString()); | |||||
} | } | ||||
} | } |