You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2017/10/20 08:42:44 UTC

svn commit: r1812725 - in /jackrabbit/commons/filevault-package-maven-plugin/trunk: ./ src/site/ src/test/java/org/apache/jackrabbit/filevault/maven/packaging/impl/ src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/

Author: tripod
Date: Fri Oct 20 08:42:43 2017
New Revision: 1812725

URL: http://svn.apache.org/viewvc?rev=1812725&view=rev
Log:
Cleaning up the integration tests

Added:
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
Removed:
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PackageTestBase.java
Modified:
    jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/site.xml
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/impl/FilterTest.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/CheckSignatureIT.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DependencyCheckIT.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ManifestGenerationIT.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PackageTypesIT.java
    jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PropertyConfigurationIT.java

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/pom.xml Fri Oct 20 08:42:43 2017
@@ -350,6 +350,12 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.7.5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven.plugin-testing</groupId>
             <artifactId>maven-plugin-testing-harness</artifactId>
             <version>3.3.0</version>

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/site.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/site.xml?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/site.xml (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/site/site.xml Fri Oct 20 08:42:43 2017
@@ -25,7 +25,6 @@
         <menu name="Overview">
             <item name="Introduction" href="index.html"/>
             <item name="Goals" href="plugin-info.html"/>
-            <item name="Import Package" href="import_package.html"/>
             <item href="dev.html" name="Developing"/>
         </menu>
         <menu name="Documentation">

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/impl/FilterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/impl/FilterTest.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/impl/FilterTest.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/impl/FilterTest.java Fri Oct 20 08:42:43 2017
@@ -21,8 +21,6 @@ import junit.framework.TestCase;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.apache.jackrabbit.filevault.maven.packaging.impl.StringFilterSet;
-
 /**
  * Test the string filter
  */

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/CheckSignatureIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/CheckSignatureIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/CheckSignatureIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/CheckSignatureIT.java Fri Oct 20 08:42:43 2017
@@ -16,25 +16,18 @@
  */
 package org.apache.jackrabbit.filevault.maven.packaging.it;
 
-import java.io.File;
-
 import org.junit.Test;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-public class CheckSignatureIT extends PackageTestBase {
-
-    private static final String TEST_PROJECT_NAME = "/check-signature";
-
-    protected File getProjectDirectory() {
-        return new File(TEST_PROJECTS_ROOT + TEST_PROJECT_NAME);
-    }
+public class CheckSignatureIT {
 
-    @Test // GRANITE-17632
+    /**
+     * The check-signature goal ends up in a NPE in the animal-sniffer SignatureChecker, when the animal-sniffer plugin
+     * version is 1.14 in the build, breaking the build:
+     */
+    @Test
     public void package_builds() throws Exception {
-        File testPackageFile = buildProject(getDefaultProperties());
-        assertThat(testPackageFile.exists(), is(true));
+        new ProjectBuilder()
+                .setTestProjectDir("/check-signature")
+                .build();
     }
 }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DefaultProjectIT.java Fri Oct 20 08:42:43 2017
@@ -16,76 +16,22 @@
  */
 package org.apache.jackrabbit.filevault.maven.packaging.it;
 
-import java.io.File;
 import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
 
 import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.util.FileUtils;
-import org.hamcrest.Matchers;
 import org.junit.Test;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-public class DefaultProjectIT extends PackageTestBase {
-
-    private static final String TEST_PROJECT_NAME = "/default-test-projects";
-
-    protected File getProjectDirectory() {
-        return new File(TEST_PROJECTS_ROOT + TEST_PROJECT_NAME);
-    }
+public class DefaultProjectIT {
 
+    private static final String TEST_PROJECT_NAME = "/default-test-projects/";
 
     private void verify(String projectName) throws VerificationException, IOException {
-        // this is a bit awkward. todo: make better testing framework
-        final File projectDir = new File(getProjectDirectory(), projectName);
-
-        File testPackageFile = buildProject(projectDir, getDefaultProperties());
-        assertThat(testPackageFile.exists(), is(true));
-
-
-        List<String> entries = new ArrayList<String>();
-        try (JarFile jar = new JarFile(testPackageFile)) {
-            Enumeration<JarEntry> e = jar.entries();
-            while (e.hasMoreElements()) {
-                entries.add(e.nextElement().getName());
-            }
-        }
-
-        // ensure that MANIFEST.MF is first entry
-        String first = entries.get(0);
-        if ("META-INF/".equals(first)) {
-            first = entries.get(1);
-        }
-        assertEquals("MANIFEST.MF must be first entry", "META-INF/MANIFEST.MF", first);
-
-        // first check that only the expected entries are there in the package (regardless of the order)
-        final File expectedFilesFile = new File(projectDir, "expected-files.txt");
-        if (expectedFilesFile.exists()) {
-            List<String> expectedEntries = Files.readAllLines(expectedFilesFile.toPath(), StandardCharsets.UTF_8);
-            assertThat("Package contains the expected entry names", entries, Matchers.containsInAnyOrder(expectedEntries.toArray()));
-        }
-
-        // then check order of some of the entries
-        final File expectedOrderFile = new File(projectDir, "expected-file-order.txt");
-        if (expectedOrderFile.exists()) {
-            List<String> expectedEntriesInOrder= Files.readAllLines(expectedOrderFile.toPath(), StandardCharsets.UTF_8);
-            assertThat("Order of entries within package", entries, Matchers.containsInRelativeOrder(expectedEntriesInOrder.toArray()));
-        }
-
-        final File expectedManifestFile = new File(projectDir, "expected-manifest.txt");
-        if (expectedManifestFile.exists()) {
-            String expectedManifest = FileUtils.fileRead(expectedManifestFile);
-            verifyManifest(testPackageFile, expectedManifest);
-        }
+        new ProjectBuilder()
+                .setTestProjectDir(TEST_PROJECT_NAME + projectName)
+                .build()
+                .verifyExpectedFiles()
+                .verifyExpectedFilesOrder()
+                .verifyExpectedManifest();
 
     }
 
@@ -111,11 +57,17 @@ public class DefaultProjectIT extends Pa
 
     @Test
     public void generic_empty_directories() throws Exception {
-        verify("generic-empty-directories");
+        new ProjectBuilder()
+                .setTestProjectDir(TEST_PROJECT_NAME + "generic-empty-directories")
+                .build()
+                .verifyExpectedFiles();
     }
 
     @Test
     public void resource_empty_directories() throws Exception {
-        verify("resource-empty-directories");
+        new ProjectBuilder()
+                .setTestProjectDir(TEST_PROJECT_NAME + "resource-empty-directories")
+                .build()
+                .verifyExpectedFiles();
     }
 }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DependencyCheckIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DependencyCheckIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DependencyCheckIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/DependencyCheckIT.java Fri Oct 20 08:42:43 2017
@@ -17,21 +17,13 @@
 package org.apache.jackrabbit.filevault.maven.packaging.it;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Properties;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
 @RunWith(Parameterized.class)
 public class DependencyCheckIT {
 
@@ -59,33 +51,12 @@ public class DependencyCheckIT {
         this.expectToFail = expectToFail;
     }
 
-    private void verify(File projectDir) throws VerificationException, IOException {
-        final Properties props = new Properties();
-        props.put("plugin.version", System.getProperty("plugin.version"));
-        props.put("testcontent.directory", new File("target/test-classes/test-content").getAbsolutePath());
-
-        Verifier verifier = new Verifier(projectDir.getAbsolutePath());
-        verifier.setSystemProperties(props);
-        try {
-            verifier.executeGoals(Arrays.asList("clean", "package"));
-        } catch (VerificationException e) {
-            if (expectToFail) {
-                return;
-            }
-            throw e;
-        }
-        if (expectToFail) {
-            fail("Invalid package type must fail.");
-        }
-
-        final File packageFile = new File(projectDir, "target/package-plugin-test-pkg-1.0.0-SNAPSHOT.zip");
-        assertThat(packageFile.exists(), is(true));
-    }
-
-
     @Test
     public void test_dependency_checks() throws Exception {
-        final File projectDir = new File("target/test-classes/test-projects/validate-deps-projects/" + projectName);
-        verify(projectDir);
+        new ProjectBuilder()
+                .setTestProjectsRoot(new File("target/test-classes/test-projects/validate-deps-projects"))
+                .setTestProjectDir(projectName)
+                .setBuildExpectedToFail(expectToFail)
+                .build();
     }
 }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java Fri Oct 20 08:42:43 2017
@@ -18,25 +18,12 @@ package org.apache.jackrabbit.filevault.
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Properties;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
 
 import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
 import org.apache.maven.it.util.FileUtils;
-import org.apache.maven.it.util.IOUtil;
-import org.junit.Ignore;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 /**
  * Tests the behaviour of package filters.
@@ -44,37 +31,12 @@ import static org.junit.Assert.fail;
 public class FilterIT {
 
     private void verify(String projectName, boolean expectToFail, String ... goals) throws VerificationException, IOException {
-        final File projectDir = new File("target/test-classes/test-projects/filter-tests/" + projectName);
-        final Properties props = new Properties();
-        props.put("plugin.version", System.getProperty("plugin.version"));
-
-        Verifier verifier = new Verifier(projectDir.getAbsolutePath());
-        verifier.setSystemProperties(props);
-        verifier.setAutoclean(false);
-        if (goals == null || goals.length == 0) {
-            goals = new String[]{"clean", "package"};
-        }
-        try {
-            verifier.executeGoals(Arrays.asList(goals));
-        } catch (VerificationException e) {
-            if (expectToFail) {
-                return;
-            }
-            throw e;
-        }
-        if (expectToFail) {
-            fail("Invalid package type must fail.");
-        }
-
-        final File packageFile = new File(projectDir, "target/package-plugin-test-pkg-1.0.0-SNAPSHOT.zip");
-        assertTrue(packageFile.exists());
-
-        ZipFile zip = new ZipFile(packageFile);
-        ZipEntry entry = zip.getEntry("META-INF/vault/filter.xml");
-        assertNotNull("package has a filter.xml", entry);
-        String result = IOUtil.toString(zip.getInputStream(entry), "utf-8");
-        String expected = FileUtils.fileRead(new File(projectDir.getAbsolutePath(), "expected-filter.xml"));
-        assertEquals("filter.xml is correct", expected, result);
+        new ProjectBuilder()
+                .setTestProjectDir("filter-tests/" + projectName)
+                .setTestGoals(goals)
+                .setBuildExpectedToFail(expectToFail)
+                .build()
+                .verifyExpectedFilter();
     }
 
     /**

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ManifestGenerationIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ManifestGenerationIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ManifestGenerationIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ManifestGenerationIT.java Fri Oct 20 08:42:43 2017
@@ -16,49 +16,37 @@
  */
 package org.apache.jackrabbit.filevault.maven.packaging.it;
 
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collection;
+import java.io.IOException;
 
-import org.apache.maven.it.util.FileUtils;
+import org.apache.maven.it.VerificationException;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-@RunWith(Parameterized.class)
-public class ManifestGenerationIT extends PackageTestBase {
-
-    @Parameterized.Parameters
-    public static Collection<Object[]> data() {
-        return Arrays.asList(new Object[][]{
-                {"/manifest-generation/simple", true},
-                {"/manifest-generation/with-bundles", true},
-                {"/manifest-generation/with-code", true},
-                {"/manifest-generation/with-unused-dependencies", true}
-        });
-    }
+public class ManifestGenerationIT {
 
-    private final String projectName;
+    private void verify(String projectName) throws IOException, VerificationException {
+        new ProjectBuilder()
+                .setTestProjectDir("manifest-generation/" + projectName)
+                .build()
+                .verifyExpectedManifest();
+    }
 
-    private final boolean expectedToPass;
+    @Test
+    public void simple_manifest_generation() throws Exception {
+        verify("simple");
+    }
 
-    public ManifestGenerationIT(String projectName, boolean expectedToPass) {
-        this.projectName = projectName;
-        this.expectedToPass = expectedToPass;
+    @Test
+    public void bundle_manifest_generation() throws Exception {
+        verify("with-bundles");
     }
 
-    protected File getProjectDirectory() {
-        return new File(TEST_PROJECTS_ROOT + projectName);
+    @Test
+    public void code_manifest_generation() throws Exception {
+        verify("with-code");
     }
 
     @Test
-    public void manifest_generation_is_correct() throws Exception {
-        File testPackageFile = buildProject(getDefaultProperties());
-        String expected = FileUtils.fileRead(new File(testProjectDir, "expected-manifest.txt"));
-        verifyManifest(testPackageFile, expected);
+    public void unused_manifest_generation() throws Exception {
+        verify("with-unused-dependencies");
     }
 }

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PackageTypesIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PackageTypesIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PackageTypesIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PackageTypesIT.java Fri Oct 20 08:42:43 2017
@@ -20,24 +20,14 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Properties;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
 
 import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
 import org.apache.maven.it.util.StringUtils;
 import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
 @RunWith(Parameterized.class)
 public class PackageTypesIT {
 
@@ -66,34 +56,13 @@ public class PackageTypesIT {
     }
 
     private void verify(File projectDir) throws VerificationException, IOException {
-        final Properties props = new Properties();
-        props.put("plugin.version", System.getProperty("plugin.version"));
-        props.put("test.packageType", type);
-
-        Verifier verifier = new Verifier(projectDir.getAbsolutePath());
-        verifier.setSystemProperties(props);
-        try {
-            verifier.executeGoals(Arrays.asList("clean", "package"));
-        } catch (VerificationException e) {
-            if (expectToFail) {
-                return;
-            }
-            throw e;
-        }
-        if (expectToFail) {
-            fail("Invalid package type must fail.");
-        }
-
-        final File packageFile = new File(projectDir, "target/package-plugin-test-pkg-1.0.0-SNAPSHOT.zip");
-        assertThat(packageFile.exists(), is(true));
-
-        ZipFile zip = new ZipFile(packageFile);
-        ZipEntry propertiesFile = zip.getEntry("META-INF/vault/properties.xml");
-        assertThat(propertiesFile, notNullValue());
-
-        Properties properties = new Properties();
-        properties.loadFromXML(zip.getInputStream(propertiesFile));
-        assertThat(properties.getProperty("packageType"), equalTo(type));    }
+        new ProjectBuilder()
+                .setTestProjectDir(projectDir)
+                .setProperty("test.packageType", type)
+                .setBuildExpectedToFail(expectToFail)
+                .build()
+                .verifyPackageProperty("packageType", type);
+    }
 
 
     @Test

Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java?rev=1812725&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java Fri Oct 20 08:42:43 2017
@@ -0,0 +1,285 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * 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.
+ */
+package org.apache.jackrabbit.filevault.maven.packaging.it;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.apache.maven.it.VerificationException;
+import org.apache.maven.it.Verifier;
+import org.apache.maven.it.util.FileUtils;
+import org.apache.maven.it.util.IOUtil;
+import org.apache.maven.it.util.StringUtils;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.hamcrest.Matchers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import aQute.bnd.header.Attrs;
+import aQute.bnd.header.Parameters;
+
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Helper class to build and verify a maven project.
+ */
+public class ProjectBuilder {
+
+    /**
+     * default logger
+     */
+    private static final Logger log = LoggerFactory.getLogger(ProjectBuilder.class);
+
+    private static final Set<String> IGNORED_MANIFEST_ENTRIES = new HashSet<String>(Arrays.asList("Build-Jdk", "Built-By"));
+
+    static final String TEST_PROJECTS_ROOT = "target/test-classes/test-projects";
+
+    static final String TEST_PACKAGE_DEFAULT_NAME = "target/package-plugin-test-pkg-1.0.0-SNAPSHOT.zip";
+
+    private File testProjectsRoot;
+
+    private File testProjectDir;
+
+    private File testPackageFile;
+
+    private Properties testProperties;
+
+    private String[] testGoals = {"clean", "package"};
+
+    private List<String> pkgZipEntries;
+
+    private File expectedFilesFile;
+
+    private File expectedOrderFile;
+
+    private File expectedManifestFile;
+
+    private File expectedFilterFile;
+
+    private boolean buildExpectedToFail;
+
+    public ProjectBuilder() {
+        testProjectsRoot = new File(TEST_PROJECTS_ROOT);
+        testProperties = new Properties();
+
+        testProperties.put("plugin.version", getPluginVersion());
+        testProperties.put("testcontent.directory", new File("target/test-classes/test-content").getAbsolutePath());
+    }
+
+    /**
+     * Retrieves the version of the {@code filevault-package-maven-plugin} of the current project. The version is used in the
+     * test poms so that the cli build uses the current plugin. Usually the version is set via the system property
+     * {@code plugin.version} via the failsafe plugin. If the property is missing the method tries to read it from the
+     * {@code pom.xml} of the project. this is useful when running the tests in an IDE.
+     *
+     * @return the version of the current {@code filevault-package-maven-plugin}
+     * @throws IllegalArgumentException if the version cannot be determined.
+     */
+    private String getPluginVersion() {
+        String pluginVersion  = System.getProperty("plugin.version");
+        if (pluginVersion == null) {
+            try {
+                // try to read from project
+                MavenXpp3Reader reader = new MavenXpp3Reader();
+                Model model = reader.read(new FileReader("pom.xml"));
+                pluginVersion = model.getVersion();
+            } catch (IOException | XmlPullParserException e) {
+                log.error("Unable to read version from pom", e);
+            }
+        }
+        if (pluginVersion == null) {
+            throw new IllegalArgumentException("Unable to detect plugin.version");
+        }
+        return pluginVersion;
+    }
+
+    public ProjectBuilder setTestProjectsRoot(File testProjectsRoot) {
+        if (testProjectDir != null) {
+            throw new IllegalArgumentException("projects root can't be changed after projects dir is set.");
+        }
+        this.testProjectsRoot = testProjectsRoot;
+        return this;
+    }
+
+    public ProjectBuilder setTestProjectDir(File testProjectDir) {
+        this.testProjectDir = testProjectDir;
+        this.testPackageFile = new File(testProjectDir, TEST_PACKAGE_DEFAULT_NAME);
+
+        // if we ever need different files, just create the setters.
+        this.expectedFilesFile = new File(testProjectDir, "expected-files.txt");
+        this.expectedOrderFile = new File(testProjectDir, "expected-file-order.txt");
+        this.expectedManifestFile = new File(testProjectDir, "expected-manifest.txt");
+        this.expectedFilterFile = new File(testProjectDir, "expected-filter.xml");
+        return this;
+    }
+
+    public ProjectBuilder setTestProjectDir(String relPath) {
+        return setTestProjectDir(new File(testProjectsRoot, relPath));
+    }
+
+    public ProjectBuilder setTestPackageFile(File testPackageFile) {
+        this.testPackageFile = testPackageFile;
+        return this;
+    }
+
+    public File getTestPackageFile() {
+        return testPackageFile;
+    }
+
+    public ProjectBuilder setTestGoals(String ... testGoals) {
+        if (testGoals != null && testGoals.length != 0) {
+            this.testGoals = testGoals;
+        }
+        return this;
+    }
+
+    public ProjectBuilder setBuildExpectedToFail(boolean buildExpectedToFail) {
+        this.buildExpectedToFail = buildExpectedToFail;
+        return this;
+    }
+
+    public ProjectBuilder setProperty(String name, String value) {
+        testProperties.put(name, value);
+        return this;
+    }
+
+    public ProjectBuilder build() throws VerificationException, IOException {
+        Verifier verifier = new Verifier(testProjectDir.getAbsolutePath());
+        verifier.setSystemProperties(testProperties);
+        verifier.setDebug(true);
+        verifier.setAutoclean(false);
+
+        try {
+            verifier.executeGoals(Arrays.asList(testGoals));
+            assertFalse("Build expected to fail ", buildExpectedToFail);
+        } catch (VerificationException e) {
+            if (buildExpectedToFail) {
+                return this;
+            }
+            throw e;
+        }
+
+        assertTrue("Project generates package file", testPackageFile.exists());
+
+        // read zip
+        pkgZipEntries = new ArrayList<String>();
+        try (JarFile jar = new JarFile(testPackageFile)) {
+            Enumeration<JarEntry> e = jar.entries();
+            while (e.hasMoreElements()) {
+                pkgZipEntries.add(e.nextElement().getName());
+            }
+        }
+        // ensure that MANIFEST.MF is first entry
+        String first = pkgZipEntries.get(0);
+        if ("META-INF/".equals(first)) {
+            first = pkgZipEntries.get(1);
+        }
+        assertEquals("MANIFEST.MF must be first entry", "META-INF/MANIFEST.MF", first);
+
+        return this;
+    }
+
+    public ProjectBuilder verifyPackageProperty(String key, String value) throws IOException {
+        if (buildExpectedToFail) {
+            return this;
+        }
+        ZipFile zip = new ZipFile(testPackageFile);
+        ZipEntry propertiesFile = zip.getEntry("META-INF/vault/properties.xml");
+        assertThat(propertiesFile, notNullValue());
+
+        Properties properties = new Properties();
+        properties.loadFromXML(zip.getInputStream(propertiesFile));
+
+        assertEquals("Property '" + key + "' has correct value", properties.getProperty(key), value);
+        return this;
+    }
+
+    public ProjectBuilder verifyExpectedManifest() throws IOException {
+        final String expected = FileUtils.fileRead(expectedManifestFile);
+        JarFile jar = new JarFile(testPackageFile);
+        List<String> entries = new ArrayList<String>();
+        for (Map.Entry<Object, Object> e: jar.getManifest().getMainAttributes().entrySet()) {
+            String key = e.getKey().toString();
+            if (IGNORED_MANIFEST_ENTRIES.contains(key)) {
+                continue;
+            }
+            if ("Import-Package".equals(key)) {
+                // split export package so that we have a sorted set
+                Parameters params = new Parameters(e.getValue().toString());
+                for (Map.Entry<String, Attrs> entry : params.entrySet()) {
+                    entries.add(key + ":" + entry.getKey() + ";" + entry.getValue());
+                }
+                continue;
+            }
+            entries.add(e.getKey() + ":" + e.getValue());
+        }
+        Collections.sort(entries);
+        String result = StringUtils.join(entries.iterator(),"\n");
+        assertEquals("Manifest", expected, result);
+        return this;
+    }
+
+    public ProjectBuilder verifyExpectedFiles() throws IOException {
+        // first check that only the expected entries are there in the package (regardless of the order)
+        List<String> expectedEntries = Files.readAllLines(expectedFilesFile.toPath(), StandardCharsets.UTF_8);
+        assertThat("Package contains the expected entry names", pkgZipEntries, Matchers.containsInAnyOrder(expectedEntries.toArray()));
+        return this;
+    }
+
+    public ProjectBuilder verifyExpectedFilesOrder() throws IOException {
+        List<String> expectedEntriesInOrder= Files.readAllLines(expectedOrderFile.toPath(), StandardCharsets.UTF_8);
+        assertThat("Order of entries within package", pkgZipEntries, Matchers.containsInRelativeOrder(expectedEntriesInOrder.toArray()));
+        return this;
+    }
+
+    public ProjectBuilder verifyExpectedFilter() throws IOException {
+        if (buildExpectedToFail) {
+            return this;
+        }
+        ZipFile zip = new ZipFile(testPackageFile);
+        ZipEntry entry = zip.getEntry("META-INF/vault/filter.xml");
+        assertNotNull("package has a filter.xml", entry);
+        String result = IOUtil.toString(zip.getInputStream(entry), "utf-8");
+        String expected = FileUtils.fileRead(expectedFilterFile);
+        assertEquals("filter.xml is correct", expected, result);
+        return this;
+    }
+
+}

Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PropertyConfigurationIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PropertyConfigurationIT.java?rev=1812725&r1=1812724&r2=1812725&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PropertyConfigurationIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/PropertyConfigurationIT.java Fri Oct 20 08:42:43 2017
@@ -16,41 +16,19 @@
  */
 package org.apache.jackrabbit.filevault.maven.packaging.it;
 
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Properties;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.apache.maven.it.Verifier;
 import org.junit.Test;
 
 public class PropertyConfigurationIT {
 
+    /**
+     * Tests if the property.xml contains the description from the plugin config and not the project.
+     */
     @Test
     public void test_that_description_can_be_overridden_in_properties() throws Exception {
-        final File projectDir = new File("target/test-classes/test-projects/override-description");
-
-        final Properties props = new Properties();
-        props.put("plugin.version", System.getProperty("plugin.version"));
-
-        Verifier verifier = new Verifier(projectDir.getAbsolutePath());
-        verifier.setSystemProperties(props);
-        verifier.executeGoals(Arrays.asList("clean", "package"));
-
-        final File packageFile = new File(projectDir, "target/package-plugin-test-pkg-1.0.0-SNAPSHOT.zip");
-        assertThat(packageFile.exists(), is(true));
-
-        ZipFile zip = new ZipFile(packageFile);
-        ZipEntry propertiesFile = zip.getEntry("META-INF/vault/properties.xml");
-        assertThat(propertiesFile, notNullValue());
-
-        Properties properties = new Properties();
-        properties.loadFromXML(zip.getInputStream(propertiesFile));
+        new ProjectBuilder()
+                .setTestProjectDir("override-description")
+                .build()
+                .verifyPackageProperty("description", "Description from plugin");
 
-        assertThat(properties.getProperty("description"), equalTo("Description from plugin"));
     }
 }