// 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
+ *
+ **/
--- /dev/null
+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;
-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()
{
}
} ) )
{
- 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;
}
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;
}
transformer.transform(
new DOMSource( excelToHtmlConverter.getDocument() ),
new StreamResult( stringWriter ) );
+
+ assertNotNull(stringWriter.toString());
}
}
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 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
{
/**
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()
}
} ) )
{
- 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;
}
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;
}
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;
}
new DOMSource( wordToTextConverter.getDocument() ),
new StreamResult( stringWriter ) );
- stringWriter.toString();
// no exceptions
+ assertNotNull(stringWriter.toString());
}
}