mirror of https://github.com/apache/poi.git
Add initial compile steps with a simple multi-project setup to build.gradle
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-ffa450edef68
This commit is contained in:
parent
21627eb1ab
commit
41e1e9ffb8
219
build.gradle
219
build.gradle
|
@ -19,3 +19,222 @@
|
|||
// https://docs.gradle.org/current/userguide/ant.html
|
||||
|
||||
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
|
||||
*
|
||||
**/
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
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')
|
|
@ -16,41 +16,42 @@
|
|||
==================================================================== */
|
||||
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.Transformer;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
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
|
||||
{
|
||||
/**
|
||||
* 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 */
|
||||
"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" );
|
||||
for ( final File child : directory.listFiles( new FilenameFilter()
|
||||
{
|
||||
|
@ -60,38 +61,24 @@ public class TestExcelConverterSuite
|
|||
}
|
||||
} ) )
|
||||
{
|
||||
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;
|
||||
try
|
||||
{
|
||||
try {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -109,18 +96,18 @@ public class TestExcelConverterSuite
|
|||
transformer.transform(
|
||||
new DOMSource( excelToHtmlConverter.getDocument() ),
|
||||
new StreamResult( stringWriter ) );
|
||||
|
||||
assertNotNull(stringWriter.toString());
|
||||
}
|
||||
|
||||
protected static void testHtml( File child ) throws Exception
|
||||
@Test
|
||||
public void testHtml() throws Exception
|
||||
{
|
||||
HSSFWorkbook workbook;
|
||||
try
|
||||
{
|
||||
try {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -138,5 +125,7 @@ public class TestExcelConverterSuite
|
|||
transformer.transform(
|
||||
new DOMSource( excelToHtmlConverter.getDocument() ),
|
||||
new StreamResult( stringWriter ) );
|
||||
|
||||
assertNotNull(stringWriter.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.poi.hwpf.converter;
|
|||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -28,14 +29,16 @@ import javax.xml.transform.TransformerFactory;
|
|||
import javax.xml.transform.dom.DOMSource;
|
||||
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.hwpf.HWPFDocumentCore;
|
||||
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
|
||||
{
|
||||
/**
|
||||
|
@ -44,11 +47,9 @@ public class TestWordToConverterSuite
|
|||
private static List<String> failingFiles = Arrays
|
||||
.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(
|
||||
"../document" );
|
||||
for ( final File child : directory.listFiles( new FilenameFilter()
|
||||
|
@ -59,44 +60,21 @@ public class TestWordToConverterSuite
|
|||
}
|
||||
} ) )
|
||||
{
|
||||
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;
|
||||
try
|
||||
{
|
||||
try {
|
||||
hwpfDocument = AbstractWordUtils.loadDoc( child );
|
||||
}
|
||||
catch ( Exception exc )
|
||||
{
|
||||
} catch ( Exception exc ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -115,17 +93,16 @@ public class TestWordToConverterSuite
|
|||
new StreamResult( stringWriter ) );
|
||||
|
||||
// no exceptions
|
||||
assertNotNull(stringWriter.toString());
|
||||
}
|
||||
|
||||
protected static void testHtml( File child ) throws Exception
|
||||
@Test
|
||||
public void testHtml() throws Exception
|
||||
{
|
||||
HWPFDocumentCore hwpfDocument;
|
||||
try
|
||||
{
|
||||
try {
|
||||
hwpfDocument = AbstractWordUtils.loadDoc( child );
|
||||
}
|
||||
catch ( Exception exc )
|
||||
{
|
||||
} catch ( Exception exc ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -145,17 +122,16 @@ public class TestWordToConverterSuite
|
|||
new StreamResult( stringWriter ) );
|
||||
|
||||
// no exceptions
|
||||
assertNotNull(stringWriter.toString());
|
||||
}
|
||||
|
||||
protected static void testText( File child ) throws Exception
|
||||
@Test
|
||||
public void testText() throws Exception
|
||||
{
|
||||
HWPFDocumentCore wordDocument;
|
||||
try
|
||||
{
|
||||
try {
|
||||
wordDocument = AbstractWordUtils.loadDoc( child );
|
||||
}
|
||||
catch ( Exception exc )
|
||||
{
|
||||
} catch ( Exception exc ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -174,7 +150,7 @@ public class TestWordToConverterSuite
|
|||
new DOMSource( wordToTextConverter.getDocument() ),
|
||||
new StreamResult( stringWriter ) );
|
||||
|
||||
stringWriter.toString();
|
||||
// no exceptions
|
||||
assertNotNull(stringWriter.toString());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue