You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/10/07 19:33:11 UTC

svn commit: r1763816 - in /poi/trunk: build.gradle settings.gradle src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java

Author: centic
Date: Fri Oct  7 19:33:11 2016
New Revision: 1763816

URL: http://svn.apache.org/viewvc?rev=1763816&view=rev
Log:
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

Added:
    poi/trunk/settings.gradle
Modified:
    poi/trunk/build.gradle
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java

Modified: poi/trunk/build.gradle
URL: http://svn.apache.org/viewvc/poi/trunk/build.gradle?rev=1763816&r1=1763815&r2=1763816&view=diff
==============================================================================
--- poi/trunk/build.gradle (original)
+++ poi/trunk/build.gradle Fri Oct  7 19:33:11 2016
@@ -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
+ * 
+ **/

Added: poi/trunk/settings.gradle
URL: http://svn.apache.org/viewvc/poi/trunk/settings.gradle?rev=1763816&view=auto
==============================================================================
--- poi/trunk/settings.gradle (added)
+++ poi/trunk/settings.gradle Fri Oct  7 19:33:11 2016
@@ -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')

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java?rev=1763816&r1=1763815&r2=1763816&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java Fri Oct  7 19:33:11 2016
@@ -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());
     }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java?rev=1763816&r1=1763815&r2=1763816&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java Fri Oct  7 19:33:11 2016
@@ -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.TransformerFa
 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());
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org