You are viewing a plain text version of this content. The canonical link for it is here.
Posted to odf-commits@incubator.apache.org by sv...@apache.org on 2017/07/20 11:20:54 UTC

svn commit: r1802473 - in /incubator/odf/trunk/validator: ./ src/main/java/org/odftoolkit/odfvalidator/ src/test/java/org/odftoolkit/odfvalidator/ src/test/java/org/odftoolkit/odfvalidator/jar/

Author: svanteschubert
Date: Thu Jul 20 11:20:54 2017
New Revision: 1802473

URL: http://svn.apache.org/viewvc?rev=1802473&view=rev
Log:
#ODFTOOLKIT-461# Patch by Michael Stahl - Fix for ODF valdiator command line handling with integratioan tests based on the JAR

Added:
    incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/jar/
    incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/jar/ITJarTest.java
      - copied, changed from r1802424, incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
Modified:
    incubator/odf/trunk/validator/pom.xml
    incubator/odf/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java
    incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java

Modified: incubator/odf/trunk/validator/pom.xml
URL: http://svn.apache.org/viewvc/incubator/odf/trunk/validator/pom.xml?rev=1802473&r1=1802472&r2=1802473&view=diff
==============================================================================
--- incubator/odf/trunk/validator/pom.xml (original)
+++ incubator/odf/trunk/validator/pom.xml Thu Jul 20 11:20:54 2017
@@ -282,18 +282,6 @@
 				<configuration>
 					<archive>
 						<index>true</index>
-						<!--  No custom manifest worked, neither the below..
-							<index>true</index>
-							<manifest>
-								<addClasspath>true</addClasspath>
-								<odfdomName>ODFDOM Validator</odfdomName>
-								<odfdomVersion>${project.version}</odfdomVersion>
-								<odfdomWebsite>http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html</odfdomWebsite>
-								<odfdomBuiltDate>${build.timestamp}</odfdomBuiltDate>
-								<odfdomSupportedOdfVersion>1.2</odfdomSupportedOdfVersion>
-								<mainClass>org.odftoolkit.odfvalidator.Main</mainClass>
-							</manifest>
-						</archive>-->
 						<manifestEntries>
 							<version>${project.version}</version>
 						</manifestEntries>
@@ -322,15 +310,12 @@
 			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<!-- Explizit version required for fix on systemPropertyVariables -->
-				<version>2.15</version>
+				<artifactId>maven-surefire-plugin</artifactId>				
+				<version>2.20</version>
 				<configuration>
-					<systemPropertyVariables>
-						<odfdom.version>${project.version}</odfdom.version>
-						<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
-						<org.odftoolkit.odfdom.validation>org.odftoolkit.odfdom.pkg.DefaultErrorHandler</org.odftoolkit.odfdom.validation>
-					</systemPropertyVariables>
+                    <excludes>                                        
+                        <exclude>**/*.java</exclude>
+                    </excludes>
 				</configuration>
 			</plugin>
 			<plugin>
@@ -378,6 +363,29 @@
 					</excludes>
 				</configuration>
 			</plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.20</version>
+                <configuration>
+                    <includes>                                        
+                        <include>**/*.java</include>
+                    </includes> 
+					<systemPropertyVariables>
+						<odfvalidator.version>${project.version}</odfvalidator.version>
+						<org.odftoolkit.odfdom.validation>org.odftoolkit.odfdom.pkg.DefaultErrorHandler</org.odftoolkit.odfdom.validation>
+					</systemPropertyVariables>                                                       
+                </configuration>                
+                <executions>
+                    <execution>
+                        <id>failsafe-it</id>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>		            
 		</plugins>
 	</build>
 	<reporting>
@@ -413,7 +421,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-failsafe-plugin</artifactId>
-				<version>2.19.1</version>
+				<version>2.20</version>
 				<reportSets>
 					<reportSet>
 						<id>integration-tests</id>
@@ -452,56 +460,6 @@
 		<url>http://svn.apache.org/viewvc/incubator/odf/trunk/validator</url>
 	</scm>
 	<profiles>
-		<profile>
-			<id>integration-test</id>
-			<activation>
-				<property>
-					<name>integration-test</name>
-				</property>
-			</activation>
-			<build>
-				<defaultGoal>verify</defaultGoal>
-				<plugins>
-					<plugin>
-						<groupId>org.apache.maven.plugins</groupId>
-						<artifactId>maven-failsafe-plugin</artifactId>
-						<version>2.5</version>
-						<executions>
-							<execution>
-								<id>failsafe-it</id>
-								<phase>integration-test</phase>
-								<goals>
-									<goal>integration-test</goal>
-									<goal>verify</goal>
-								</goals>
-								<configuration>
-									<classesDirectory>${basedir}/target/odfdom.jar</classesDirectory>
-									<systemPropertyVariables>
-										<testresourcefolder>performance</testresourcefolder>
-										<executetimes>1</executetimes>
-										<testflag>test</testflag>
-									</systemPropertyVariables>
-								</configuration>
-							</execution>
-						</executions>
-					</plugin>
-					<plugin>
-						<groupId>org.apache.maven.plugins</groupId>
-						<artifactId>maven-surefire-plugin</artifactId>
-						<!-- Explizit version required for fix on systemPropertyVariables -->
-						<version>2.19.1</version>
-						<configuration>
-							<systemPropertyVariables>
-								<odfdom.version>${project.version}</odfdom.version>
-								<odfdom.timestamp>${build.timestamp}</odfdom.timestamp>
-								<org.odftoolkit.odfdom.validation>true</org.odftoolkit.odfdom.validation>
-							</systemPropertyVariables>
-							<skip>true</skip>
-						</configuration>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
 		<!-- Profile for deploying to the Sonatype repository, which
   requires GPG signatures 
   see

Modified: incubator/odf/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java
URL: http://svn.apache.org/viewvc/incubator/odf/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java?rev=1802473&r1=1802472&r2=1802473&view=diff
==============================================================================
--- incubator/odf/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java (original)
+++ incubator/odf/trunk/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java Thu Jul 20 11:20:54 2017
@@ -1,20 +1,20 @@
 /************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
- * 
+ *
  * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
- * 
+ *
  * Use is subject to license terms.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy
  * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also
  * obtain a copy of the License at http://odftoolkit.org/docs/license.txt
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * 
+ *
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
@@ -39,16 +39,16 @@ import java.util.Vector;
 public class Main {
 
     private static final String VERSION="1.1.4";
-    
+
     /** Creates a new instance of Main */
     public Main() {
     }
-    
+
     /**
      * @param aArgs the command line arguments
      */
     public static void main(String[] aArgs) {
-        
+
         String aConfigFileName = null;
         String aFilterFileName = null;
         String aStrictSchemaFileName = null;
@@ -215,11 +215,11 @@ public class Main {
             System.out.println( VERSION );
             return;
         }
-        
+
         try
         {
             // Print generator (does not require config file)
-            if( bPrintGenerator ) 
+            if( bPrintGenerator )
             {
                 MetaInformation aMetaInformation = new MetaInformation( System.out );
                 Iterator<String> aIter = aFileNames.iterator();
@@ -227,8 +227,10 @@ public class Main {
                     aMetaInformation.getInformation(aIter.next());
                 return;
             }
-            
-            // Read configuration
+
+            // Read configuration - by default aConfig is null, so the version
+            // will be read from the input file in
+            // ODFPackageValidator.getVersion() and config created based on that
             Configuration aConfig = null;
             if( aConfigFileName != null )
             {
@@ -260,7 +262,12 @@ public class Main {
                 }
             }
 
-            if( aConfig == null )
+            // if schema files specified, only use exactly those schema files
+            if (aConfig == null
+                && (   aStrictSchemaFileName != null
+                    || aSchemaFileName != null
+                    || aManifestSchemaFileName != null
+                    || aDSigSchemaFileName != null))
             {
                 aConfig = new Configuration();
             }
@@ -305,7 +312,7 @@ public class Main {
             System.out.println( "Validation aborted." );
         }
     }
-    
+
     private static void printUsage()
     {
         System.out.println( "usage: odfvalidator -g <odffiles>");

Modified: incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
URL: http://svn.apache.org/viewvc/incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java?rev=1802473&r1=1802472&r2=1802473&view=diff
==============================================================================
--- incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java (original)
+++ incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java Thu Jul 20 11:20:54 2017
@@ -1,4 +1,4 @@
-/************************************************************************
+/** **********************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
  *
@@ -18,111 +18,113 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- ************************************************************************/
+ *********************************************************************** */
 package org.odftoolkit.odfvalidator;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.logging.Level;
 import org.junit.Assert;
 import org.junit.Test;
 
-/** Test some invalid packages.
+/**
+ * Test some invalid packages.
  */
 public class InvalidPackageTest extends OdfValidatorTestBase {
 
-	@Test
-	public void validatePackage1() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg1.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' is not the first file in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 7 errors, 10 warnings"));
-	}
-
-	@Test
-	public void validatePackage1_V1_1() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg1.odt";
-			output = doValidation(name, OdfVersion.V1_1);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Warning: The file 'mimetype' is not the first file in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 10 errors, 11 warnings"));
-	}
-
-	@Test
-	public void validatePackage2() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg2.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Error: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 5 errors, 10 warnings"));
-	}
-
-	@Test
-	public void validatePackage2_V1_1() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg2.odt";
-			output = doValidation(name, OdfVersion.V1_1);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Warning: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Warning: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 7 errors, 12 warnings"));
-	}
-
-	@Test
-	public void validatePackage3() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg3.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file"));
-		Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("testInvalidPkg3.odt:  Info: 3 errors, no warnings"));
-	}
-
-	@Test
-	public void validateEncryptedODT() {
-		String output = "";
-		try {
+    @Test
+    public void validatePackage1() {
+        String output = "";
+        try {
+            String name = "testInvalidPkg1.odt";
+            output = doValidation(name, null);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' is not the first file in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 7 errors, 10 warnings"));
+    }
+
+    @Test
+    public void validatePackage1_V1_1() {
+        String output = "";
+        try {
+            String name = "testInvalidPkg1.odt";
+            output = doValidation(name, OdfVersion.V1_1);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Warning: The file 'mimetype' is not the first file in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 10 errors, 11 warnings"));
+    }
+
+    @Test
+    public void validatePackage2() {
+        String output = "";
+        try {
+            String name = "testInvalidPkg2.odt";
+            output = doValidation(name, null);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Error: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 5 errors, 10 warnings"));
+    }
+
+    @Test
+    public void validatePackage2_V1_1() {
+        String output = "";
+        try {
+            String name = "testInvalidPkg2.odt";
+            output = doValidation(name, OdfVersion.V1_1);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Warning: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Warning: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 7 errors, 12 warnings"));
+    }
+
+    @Test
+    public void validatePackage3() {
+        String output = "";
+        try {
+            String name = "testInvalidPkg3.odt";
+            output = doValidation(name, null);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file"));
+        Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("testInvalidPkg3.odt:  Info: 3 errors, no warnings"));
+    }
+
+    @Test
+    public void validateEncryptedODT() {
+        String output = "";
+        try {
             // password: hello
             String name = "encrypted-with-pwd_hello.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-                StringWriter errors = new StringWriter();
-                t.printStackTrace(new PrintWriter(errors));
-			Assert.fail(t.toString() + "\n" + errors.toString());
-		}
-		Assert.assertTrue(output.contains("Fatal: ZIP entry 'mimetype': only DEFLATED entries can have EXT descriptor"));
-        java.util.logging.Logger.getLogger(getClass().getName()).info("Test result:\n"+ output);
-	}
+            output = doValidation(name, null);
+        } catch (Exception t) {
+            StringWriter errors = new StringWriter();
+            t.printStackTrace(new PrintWriter(errors));
+            Assert.fail(t.toString() + "\n" + errors.toString());
+        }
+        Assert.assertTrue(output.contains("Fatal: ZIP entry 'mimetype': only DEFLATED entries can have EXT descriptor"));
+        java.util.logging.Logger.getLogger(getClass().getName()).log(Level.INFO, "Test result:\n{0}", output);
+    }
 }

Copied: incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/jar/ITJarTest.java (from r1802424, incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java)
URL: http://svn.apache.org/viewvc/incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/jar/ITJarTest.java?p2=incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/jar/ITJarTest.java&p1=incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java&r1=1802424&r2=1802473&rev=1802473&view=diff
==============================================================================
--- incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java (original)
+++ incubator/odf/trunk/validator/src/test/java/org/odftoolkit/odfvalidator/jar/ITJarTest.java Thu Jul 20 11:20:54 2017
@@ -1,4 +1,4 @@
-/************************************************************************
+/** **********************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
  *
@@ -18,111 +18,61 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
- ************************************************************************/
-package org.odftoolkit.odfvalidator;
+ *********************************************************************** */
+package org.odftoolkit.odfvalidator.jar;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.logging.Level;
 import org.junit.Assert;
 import org.junit.Test;
 
-/** Test some invalid packages.
+/**
+ * Integration test to validate via JAR testing command line parameters on
+ * (an invalid) ODF package.
  */
-public class InvalidPackageTest extends OdfValidatorTestBase {
-
-	@Test
-	public void validatePackage1() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg1.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' is not the first file in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 7 errors, 10 warnings"));
-	}
-
-	@Test
-	public void validatePackage1_V1_1() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg1.odt";
-			output = doValidation(name, OdfVersion.V1_1);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Warning: The file 'mimetype' is not the first file in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: The file 'mimetype' shall not be compressed"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:  Error: There shall be no extra field for the 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg1.odt:  Info: 10 errors, 11 warnings"));
-	}
-
-	@Test
-	public void validatePackage2() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg2.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Error: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 5 errors, 10 warnings"));
-	}
-
-	@Test
-	public void validatePackage2_V1_1() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg2.odt";
-			output = doValidation(name, OdfVersion.V1_1);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:  Warning: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Warning: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
-		Assert.assertTrue(output.contains("testInvalidPkg2.odt:  Info: 7 errors, 12 warnings"));
-	}
-
-	@Test
-	public void validatePackage3() {
-		String output = "";
-		try {
-			String name = "testInvalidPkg3.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-			t.printStackTrace();
-			Assert.fail(t.toString());
-		}
-		Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file"));
-		Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("testInvalidPkg3.odt:  Info: 3 errors, no warnings"));
-	}
-
-	@Test
-	public void validateEncryptedODT() {
-		String output = "";
-		try {
-            // password: hello
-            String name = "encrypted-with-pwd_hello.odt";
-			output = doValidation(name, null);
-		} catch (Throwable t) {
-                StringWriter errors = new StringWriter();
-                t.printStackTrace(new PrintWriter(errors));
-			Assert.fail(t.toString() + "\n" + errors.toString());
-		}
-		Assert.assertTrue(output.contains("Fatal: ZIP entry 'mimetype': only DEFLATED entries can have EXT descriptor"));
-        java.util.logging.Logger.getLogger(getClass().getName()).info("Test result:\n"+ output);
-	}
+public class ITJarTest {
+    private static final String JAR_NAME_SUFFIX = "-jar-with-dependencies.jar";
+    private static final String JAR_NAME_PREFIX = "odfvalidator-";
+    private static final String ODT_NAME = "testInvalidPkg2.odt"; // password: hello
+    private static final String FATAL_PREFIX = "Fatal: ";
+
+    @Test
+    public void validateOdtViaCommandline() {
+        String output = "";
+        try {
+            // Command line call might be:
+            // java -jar .m2/repository/org/apache/odftoolkit/odfvalidator/1.2.0-incubating-SNAPSHOT/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies.jar foo.odt
+            String odfvalidatorVersion = System.getProperty("odfvalidator.version");
+            ProcessBuilder builder = new ProcessBuilder(
+                "java", "-jar", "target" + File.separatorChar + JAR_NAME_PREFIX + odfvalidatorVersion + JAR_NAME_SUFFIX,
+                "target" + File.separatorChar + "test-classes" + File.separatorChar + ODT_NAME);
+            builder.redirectErrorStream(true);
+            Process p = builder.start();
+            BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
+            String line;
+            while (true) {
+                line = r.readLine();
+                if (line == null) {
+                    break;
+                }
+                output = output.concat(line + "\n");
+                if (output.contains(FATAL_PREFIX) || output.contains("Exception")) {
+                    throw new IOException(output);
+                }
+            }
+        } catch (IOException t) {
+            StringWriter errors = new StringWriter();
+            t.printStackTrace(new PrintWriter(errors));
+            Assert.fail(t.toString() + "\n" + errors.toString());
+        }
+        java.util.logging.Logger.getLogger(getClass().getName()).log(Level.INFO, "Test result:\n{0}", output);
+        Assert.assertTrue(output.contains("contains no 'mimetype' file"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package"));
+        Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:  Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package"));
+    }
 }