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"));
}
}