| /* |
| * 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.maven.project; |
| |
| import javax.inject.Inject; |
| |
| import java.io.File; |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Properties; |
| |
| import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; |
| import org.apache.maven.bridge.MavenRepositorySystem; |
| import org.apache.maven.model.Model; |
| import org.apache.maven.model.Plugin; |
| import org.apache.maven.model.PluginExecution; |
| import org.apache.maven.model.Profile; |
| import org.apache.maven.model.ReportPlugin; |
| import org.apache.maven.model.ReportSet; |
| import org.apache.maven.model.building.ModelBuildingRequest; |
| import org.apache.maven.project.harness.PomTestWrapper; |
| import org.apache.maven.repository.internal.MavenRepositorySystemUtils; |
| import org.codehaus.plexus.testing.PlexusTest; |
| import org.eclipse.aether.DefaultRepositorySystemSession; |
| import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory; |
| import org.eclipse.aether.repository.LocalRepository; |
| import org.junit.jupiter.api.BeforeEach; |
| import org.junit.jupiter.api.Test; |
| |
| import static org.codehaus.plexus.testing.PlexusExtension.getBasedir; |
| import static org.hamcrest.MatcherAssert.assertThat; |
| import static org.hamcrest.Matchers.endsWith; |
| import static org.hamcrest.Matchers.lessThan; |
| import static org.hamcrest.Matchers.startsWith; |
| import static org.junit.jupiter.api.Assertions.assertEquals; |
| import static org.junit.jupiter.api.Assertions.assertFalse; |
| import static org.junit.jupiter.api.Assertions.assertNotEquals; |
| import static org.junit.jupiter.api.Assertions.assertNotNull; |
| import static org.junit.jupiter.api.Assertions.assertNull; |
| import static org.junit.jupiter.api.Assertions.assertSame; |
| import static org.junit.jupiter.api.Assertions.assertThrows; |
| import static org.junit.jupiter.api.Assertions.assertTrue; |
| |
| @PlexusTest |
| class PomConstructionTest { |
| private static String BASE_DIR = "src/test"; |
| |
| private static String BASE_POM_DIR = BASE_DIR + "/resources-project-builder"; |
| |
| private static String BASE_MIXIN_DIR = BASE_DIR + "/resources-mixins"; |
| |
| @Inject |
| private DefaultProjectBuilder projectBuilder; |
| |
| @Inject |
| private MavenRepositorySystem repositorySystem; |
| |
| private File testDirectory; |
| |
| @BeforeEach |
| void setUp() throws Exception { |
| testDirectory = new File(getBasedir(), BASE_POM_DIR); |
| new File(getBasedir(), BASE_MIXIN_DIR); |
| } |
| |
| /** |
| * Will throw exception if url is empty. MNG-4050 |
| * |
| * @throws Exception in case of issue |
| */ |
| @Test |
| void testEmptyUrl() throws Exception { |
| buildPom("empty-distMng-repo-url"); |
| } |
| |
| /** |
| * Tests that modules is not overridden by profile |
| * |
| * @throws Exception in case of issue |
| */ |
| /* MNG-786*/ |
| @Test |
| void testProfileModules() throws Exception { |
| PomTestWrapper pom = buildPom("profile-module", "a"); |
| assertEquals("test-prop", pom.getValue("properties[1]/b")); // verifies profile applied |
| assertEquals(4, ((List<?>) pom.getValue("modules")).size()); |
| assertEquals("module-2", pom.getValue("modules[1]")); |
| assertEquals("module-1", pom.getValue("modules[2]")); |
| assertEquals("module-3", pom.getValue("modules[3]")); |
| assertEquals("module-4", pom.getValue("modules[4]")); |
| } |
| |
| /** |
| * Will throw an exception if it doesn't find parent(s) in build |
| * |
| * @throws Exception in case of issue |
| */ |
| @Test |
| void testParentInheritance() throws Exception { |
| buildPom("parent-inheritance/sub"); |
| } |
| |
| /*MNG-3995*/ |
| @Test |
| void testExecutionConfigurationJoin() throws Exception { |
| PomTestWrapper pom = buildPom("execution-configuration-join"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/configuration[1]/fileset[1]")).size()); |
| } |
| |
| /*MNG-3803*/ |
| @Test |
| void testPluginConfigProperties() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-properties"); |
| assertEquals( |
| "my.property", pom.getValue("build/plugins[1]/configuration[1]/systemProperties[1]/property[1]/name")); |
| } |
| |
| /*MNG-3900*/ |
| @Test |
| void testProfilePropertiesInterpolation() throws Exception { |
| PomTestWrapper pom = buildPom("profile-properties-interpolation", "interpolation-profile"); |
| assertEquals("PASSED", pom.getValue("properties[1]/test")); |
| assertEquals("PASSED", pom.getValue("properties[1]/property")); |
| } |
| |
| /*MNG-7750*/ |
| private void checkBuildPluginWithArtifactId( |
| List<Plugin> plugins, String artifactId, String expectedId, String expectedConfig) { |
| Plugin plugin = plugins.stream() |
| .filter(p -> p.getArtifactId().equals(artifactId)) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(plugin, "Unable to find plugin with artifactId: " + artifactId); |
| List<PluginExecution> pluginExecutions = plugin.getExecutions(); |
| PluginExecution pluginExecution = pluginExecutions.stream() |
| .filter(pe -> pe.getId().equals(expectedId)) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(pluginExecution, "Wrong id for \"" + artifactId + "\""); |
| |
| String config = pluginExecution.getConfiguration().toString(); |
| assertTrue( |
| config.contains(expectedConfig), |
| "Wrong config for \"" + artifactId + "\": (" + config + ") does not contain :" + expectedConfig); |
| } |
| |
| private boolean isActiveProfile(MavenProject project, Profile activeProfile) { |
| return project.getActiveProfiles().stream().anyMatch(p -> p.getId().equals(activeProfile.getId())); |
| } |
| |
| @Test |
| void testBuildPluginInterpolation() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-interpolation-build", "activeProfile"); |
| Model originalModel = pom.getMavenProject().getOriginalModel(); |
| |
| // ============================================= |
| assertEquals("||${project.basedir}||", originalModel.getProperties().get("prop-outside")); |
| |
| List<Plugin> outsidePlugins = originalModel.getBuild().getPlugins(); |
| assertEquals(1, outsidePlugins.size()); |
| |
| checkBuildPluginWithArtifactId( |
| outsidePlugins, |
| "plugin-all-profiles", |
| "Outside ||${project.basedir}||", |
| "<plugin-all-profiles-out>Outside ||${project.basedir}||</plugin-all-profiles-out>"); |
| |
| // ============================================= |
| Profile activeProfile = originalModel.getProfiles().stream() |
| .filter(profile -> profile.getId().equals("activeProfile")) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(activeProfile, "Unable to find the activeProfile"); |
| |
| assertTrue( |
| isActiveProfile(pom.getMavenProject(), activeProfile), |
| "The activeProfile should be active in the maven project"); |
| |
| assertEquals("||${project.basedir}||", activeProfile.getProperties().get("prop-active")); |
| |
| List<Plugin> activeProfilePlugins = activeProfile.getBuild().getPlugins(); |
| assertEquals(2, activeProfilePlugins.size(), "Number of active profile plugins"); |
| |
| checkBuildPluginWithArtifactId( |
| activeProfilePlugins, |
| "plugin-all-profiles", |
| "Active all ||${project.basedir}||", |
| "<plugin-all-profiles-in>Active all ||${project.basedir}||</plugin-all-profiles-in>"); |
| |
| checkBuildPluginWithArtifactId( |
| activeProfilePlugins, |
| "only-active-profile", |
| "Active only ||${project.basedir}||", |
| "<plugin-in-active-profile-only>Active only ||${project.basedir}||</plugin-in-active-profile-only>"); |
| |
| // ============================================= |
| |
| Profile inactiveProfile = originalModel.getProfiles().stream() |
| .filter(profile -> profile.getId().equals("inactiveProfile")) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(inactiveProfile, "Unable to find the inactiveProfile"); |
| |
| assertFalse( |
| isActiveProfile(pom.getMavenProject(), inactiveProfile), |
| "The inactiveProfile should NOT be active in the maven project"); |
| |
| assertEquals("||${project.basedir}||", inactiveProfile.getProperties().get("prop-inactive")); |
| |
| List<Plugin> inactiveProfilePlugins = inactiveProfile.getBuild().getPlugins(); |
| assertEquals(2, inactiveProfilePlugins.size(), "Number of active profile plugins"); |
| |
| checkBuildPluginWithArtifactId( |
| inactiveProfilePlugins, |
| "plugin-all-profiles", |
| "Inactive all ||${project.basedir}||", |
| "<plugin-all-profiles-ina>Inactive all ||${project.basedir}||</plugin-all-profiles-ina>"); |
| |
| checkBuildPluginWithArtifactId( |
| inactiveProfilePlugins, |
| "only-inactive-profile", |
| "Inactive only ||${project.basedir}||", |
| "<plugin-in-inactive-only>Inactive only ||${project.basedir}||</plugin-in-inactive-only>"); |
| } |
| |
| private void checkReportPluginWithArtifactId( |
| List<ReportPlugin> plugins, String artifactId, String expectedId, String expectedConfig) { |
| ReportPlugin plugin = plugins.stream() |
| .filter(p -> p.getArtifactId().equals(artifactId)) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(plugin, "Unable to find plugin with artifactId: " + artifactId); |
| List<ReportSet> pluginReportSets = plugin.getReportSets(); |
| ReportSet reportSet = pluginReportSets.stream() |
| .filter(rs -> rs.getId().equals(expectedId)) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(reportSet, "Wrong id for \"" + artifactId + "\""); |
| |
| String config = reportSet.getConfiguration().toString(); |
| assertTrue( |
| config.contains(expectedConfig), |
| "Wrong config for \"" + artifactId + "\": (" + config + ") does not contain :" + expectedConfig); |
| } |
| |
| @Test |
| void testReportingPluginInterpolation() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-interpolation-reporting", "activeProfile"); |
| Model originalModel = pom.getMavenProject().getOriginalModel(); |
| |
| // ============================================= |
| assertEquals("||${project.basedir}||", originalModel.getProperties().get("prop-outside")); |
| |
| List<ReportPlugin> outsidePlugins = originalModel.getReporting().getPlugins(); |
| assertEquals(1, outsidePlugins.size(), "Wrong number of plugins found"); |
| |
| checkReportPluginWithArtifactId( |
| outsidePlugins, |
| "plugin-all-profiles", |
| "Outside ||${project.basedir}||", |
| "<plugin-all-profiles-out>Outside ||${project.basedir}||</plugin-all-profiles-out>"); |
| |
| // ============================================= |
| Profile activeProfile = originalModel.getProfiles().stream() |
| .filter(profile -> profile.getId().equals("activeProfile")) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(activeProfile, "Unable to find the activeProfile"); |
| |
| assertTrue( |
| isActiveProfile(pom.getMavenProject(), activeProfile), |
| "The activeProfile should be active in the maven project"); |
| |
| assertEquals("||${project.basedir}||", activeProfile.getProperties().get("prop-active")); |
| |
| List<ReportPlugin> activeProfilePlugins = activeProfile.getReporting().getPlugins(); |
| assertEquals(2, activeProfilePlugins.size(), "The activeProfile should be active in the maven project"); |
| |
| checkReportPluginWithArtifactId( |
| activeProfilePlugins, |
| "plugin-all-profiles", |
| "Active all ||${project.basedir}||", |
| "<plugin-all-profiles-in>Active all ||${project.basedir}||</plugin-all-profiles-in>"); |
| |
| checkReportPluginWithArtifactId( |
| activeProfilePlugins, |
| "only-active-profile", |
| "Active only ||${project.basedir}||", |
| "<plugin-in-active-profile-only>Active only ||${project.basedir}||</plugin-in-active-profile-only>"); |
| |
| // ============================================= |
| |
| Profile inactiveProfile = originalModel.getProfiles().stream() |
| .filter(profile -> profile.getId().equals("inactiveProfile")) |
| .findFirst() |
| .orElse(null); |
| assertNotNull(inactiveProfile, "Unable to find the inactiveProfile"); |
| |
| assertFalse( |
| isActiveProfile(pom.getMavenProject(), inactiveProfile), |
| "The inactiveProfile should NOT be active in the maven project"); |
| |
| assertEquals("||${project.basedir}||", inactiveProfile.getProperties().get("prop-inactive")); |
| |
| List<ReportPlugin> inactiveProfilePlugins = |
| inactiveProfile.getReporting().getPlugins(); |
| assertEquals(2, inactiveProfilePlugins.size(), "Number of active profile plugins"); |
| |
| checkReportPluginWithArtifactId( |
| inactiveProfilePlugins, |
| "plugin-all-profiles", |
| "Inactive all ||${project.basedir}||", |
| "<plugin-all-profiles-ina>Inactive all ||${project.basedir}||</plugin-all-profiles-ina>"); |
| |
| checkReportPluginWithArtifactId( |
| inactiveProfilePlugins, |
| "only-inactive-profile", |
| "Inactive only ||${project.basedir}||", |
| "<plugin-in-inactive-only>Inactive only ||${project.basedir}||</plugin-in-inactive-only>"); |
| } |
| |
| // Some better conventions for the test poms needs to be created and each of these tests |
| // that represent a verification of a specification item needs to be a couple lines at most. |
| // The expressions help a lot, but we need a clean to pick up a directory of POMs, automatically load |
| // them into a resolver, create the expression to extract the data to validate the Model, and the URI |
| // to validate the properties. We also need a way to navigate from the Tex specification documents to |
| // the test in question and vice versa. A little Eclipse plugin would do the trick. |
| public void testThatExecutionsWithoutIdsAreMergedAndTheChildWins() throws Exception { |
| PomTestWrapper tester = buildPom("micromailer"); |
| assertModelEquals(tester, "child-descriptor", "build/plugins[1]/executions[1]/goals[1]"); |
| } |
| |
| /*MNG- |
| public void testDependencyScope() |
| throws Exception |
| { |
| PomTestWrapper pom = buildPom( "dependency-scope/sub" ); |
| |
| }*/ |
| |
| /*MNG- 4010*/ |
| @Test |
| void testDuplicateExclusionsDependency() throws Exception { |
| PomTestWrapper pom = buildPom("duplicate-exclusions-dependency/sub"); |
| assertEquals(1, ((List<?>) pom.getValue("dependencies[1]/exclusions")).size()); |
| } |
| |
| /*MNG- 4008*/ |
| @Test |
| void testMultipleFilters() throws Exception { |
| PomTestWrapper pom = buildPom("multiple-filters"); |
| assertEquals(4, ((List<?>) pom.getValue("build/filters")).size()); |
| } |
| |
| /* MNG-4005: postponed to 3.1 |
| public void testValidationErrorUponNonUniqueDependencyKey() |
| throws Exception |
| { |
| try |
| { |
| buildPom( "unique-dependency-key/deps" ); |
| fail( "Non-unique dependency keys did not cause validation error" ); |
| } |
| catch ( ProjectBuildingException e ) |
| { |
| // expected |
| } |
| } |
| |
| @Test |
| public void testValidationErrorUponNonUniqueDependencyManagementKey() |
| throws Exception |
| { |
| try |
| { |
| buildPom( "unique-dependency-key/dep-mgmt" ); |
| fail( "Non-unique dependency keys did not cause validation error" ); |
| } |
| catch ( ProjectBuildingException e ) |
| { |
| // expected |
| } |
| } |
| |
| @Test |
| public void testValidationErrorUponNonUniqueDependencyKeyInProfile() |
| throws Exception |
| { |
| try |
| { |
| buildPom( "unique-dependency-key/deps-in-profile" ); |
| fail( "Non-unique dependency keys did not cause validation error" ); |
| } |
| catch ( ProjectBuildingException e ) |
| { |
| // expected |
| } |
| } |
| |
| @Test |
| public void testValidationErrorUponNonUniqueDependencyManagementKeyInProfile() |
| throws Exception |
| { |
| try |
| { |
| buildPom( "unique-dependency-key/dep-mgmt-in-profile" ); |
| fail( "Non-unique dependency keys did not cause validation error" ); |
| } |
| catch ( ProjectBuildingException e ) |
| { |
| // expected |
| } |
| } |
| */ |
| |
| @Test |
| void testDuplicateDependenciesCauseLastDeclarationToBePickedInLenientMode() throws Exception { |
| PomTestWrapper pom = buildPom("unique-dependency-key/deps", true, null, null); |
| assertEquals(1, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("0.2", pom.getValue("dependencies[1]/version")); |
| } |
| |
| /* MNG-3567*/ |
| @Test |
| void testParentInterpolation() throws Exception { |
| PomTestWrapper pom = buildPom("parent-interpolation/sub"); |
| pom = new PomTestWrapper(pom.getMavenProject().getParent()); |
| assertEquals("1.3.0-SNAPSHOT", pom.getValue("build/plugins[1]/version")); |
| } |
| |
| /* |
| public void testMaven() |
| throws Exception |
| { |
| PomTestWrapper pom = buildPomFromMavenProject( "maven-build/sub/pom.xml", null ); |
| |
| for( String s: pom.getMavenProject().getTestClasspathElements() ) |
| { |
| System.out.println( s ); |
| } |
| |
| } |
| */ |
| |
| /* MNG-3567*/ |
| @Test |
| void testPluginManagementInherited() throws Exception { |
| PomTestWrapper pom = buildPom("pluginmanagement-inherited/sub"); |
| assertEquals("1.0-alpha-21", pom.getValue("build/plugins[1]/version")); |
| } |
| |
| /* MNG-2174*/ |
| @Test |
| void testPluginManagementDependencies() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-management-dependencies/sub", "test"); |
| assertEquals("1.0-alpha-21", pom.getValue("build/plugins[1]/version")); |
| assertEquals("1.0", pom.getValue("build/plugins[1]/dependencies[1]/version")); |
| } |
| |
| /* MNG-3877*/ |
| @Test |
| void testReportingInterpolation() throws Exception { |
| PomTestWrapper pom = buildPom("reporting-interpolation"); |
| assertEquals( |
| createPath(Arrays.asList( |
| System.getProperty("user.dir"), |
| "src", |
| "test", |
| "resources-project-builder", |
| "reporting-interpolation", |
| "target", |
| "site")), |
| pom.getValue("reporting/outputDirectory")); |
| } |
| |
| @Test |
| void testPluginOrder() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-order"); |
| assertEquals("plexus-component-metadata", pom.getValue("build/plugins[1]/artifactId")); |
| assertEquals("maven-surefire-plugin", pom.getValue("build/plugins[2]/artifactId")); |
| } |
| |
| @Test |
| void testErroneousJoiningOfDifferentPluginsWithEqualDependencies() throws Exception { |
| PomTestWrapper pom = buildPom("equal-plugin-deps"); |
| assertEquals("maven-it-plugin-a", pom.getValue("build/plugins[1]/artifactId")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/dependencies")).size()); |
| assertEquals("maven-it-plugin-b", pom.getValue("build/plugins[2]/artifactId")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/dependencies")).size()); |
| } |
| |
| /** MNG-3821 */ |
| @Test |
| void testErroneousJoiningOfDifferentPluginsWithEqualExecutionIds() throws Exception { |
| PomTestWrapper pom = buildPom("equal-plugin-exec-ids"); |
| assertEquals("maven-it-plugin-a", pom.getValue("build/plugins[1]/artifactId")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("maven-it-plugin-b", pom.getValue("build/plugins[2]/artifactId")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("maven-it-plugin-a", pom.getValue("reporting/plugins[1]/artifactId")); |
| assertEquals(1, ((List<?>) pom.getValue("reporting/plugins[1]/reportSets")).size()); |
| assertEquals("maven-it-plugin-b", pom.getValue("reporting/plugins[2]/artifactId")); |
| assertEquals(1, ((List<?>) pom.getValue("reporting/plugins[1]/reportSets")).size()); |
| } |
| |
| /** MNG-3998 */ |
| @Test |
| void testExecutionConfiguration() throws Exception { |
| PomTestWrapper pom = buildPom("execution-configuration"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("src/main/mdo/nexus.xml", (pom.getValue("build/plugins[1]/executions[1]/configuration[1]/model"))); |
| assertEquals( |
| "src/main/mdo/security.xml", (pom.getValue("build/plugins[1]/executions[2]/configuration[1]/model"))); |
| } |
| |
| /* |
| public void testPluginConfigDuplicate() |
| throws Exception |
| { |
| PomTestWrapper pom = buildPom( "plugin-config-duplicate/dup" ); |
| } |
| */ |
| @Test |
| void testSingleConfigurationInheritance() throws Exception { |
| PomTestWrapper pom = buildPom("single-configuration-inheritance"); |
| |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/configuration[1]/rules")).size()); |
| assertEquals( |
| "2.0.6", |
| pom.getValue( |
| "build/plugins[1]/executions[1]/configuration[1]/rules[1]/requireMavenVersion[1]/version")); |
| assertEquals( |
| "[1.4,)", |
| pom.getValue("build/plugins[1]/executions[1]/configuration[1]/rules[1]/requireJavaVersion[1]/version")); |
| } |
| |
| @Test |
| void testConfigWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("config-with-plugin-mng"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals( |
| "src/main/mdo/security.xml", pom.getValue("build/plugins[1]/executions[2]/configuration[1]/model")); |
| assertEquals("1.0.8", pom.getValue("build/plugins[1]/executions[1]/configuration[1]/version")); |
| } |
| |
| /** MNG-3965 */ |
| @Test |
| void testExecutionConfigurationSubcollections() throws Exception { |
| PomTestWrapper pom = buildPom("execution-configuration-subcollections"); |
| assertEquals( |
| 2, |
| ((List<?>) pom.getValue("build/plugins[1]/executions[1]/configuration[1]/rules[1]/bannedDependencies")) |
| .size()); |
| } |
| |
| /** MNG-3985 */ |
| @Test |
| void testMultipleRepositories() throws Exception { |
| PomTestWrapper pom = buildPom("multiple-repos/sub"); |
| assertEquals(2, ((List<?>) pom.getValue("repositories")).size()); |
| } |
| |
| /** MNG-3965 */ |
| @Test |
| void testMultipleExecutionIds() throws Exception { |
| PomTestWrapper pom = buildPom("dual-execution-ids/sub"); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| } |
| |
| /** MNG-3997 */ |
| @Test |
| void testConsecutiveEmptyElements() throws Exception { |
| buildPom("consecutive_empty_elements"); |
| } |
| |
| @Test |
| void testOrderOfGoalsFromPluginExecutionWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-goals-order/wo-plugin-mgmt"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/goals")).size()); |
| assertEquals("b", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("a", pom.getValue("build/plugins[1]/executions[1]/goals[2]")); |
| assertEquals("d", pom.getValue("build/plugins[1]/executions[1]/goals[3]")); |
| assertEquals("c", pom.getValue("build/plugins[1]/executions[1]/goals[4]")); |
| assertEquals("e", pom.getValue("build/plugins[1]/executions[1]/goals[5]")); |
| } |
| |
| /* MNG-3886*/ |
| @Test |
| void testOrderOfGoalsFromPluginExecutionWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-goals-order/w-plugin-mgmt"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/goals")).size()); |
| assertEquals("b", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("a", pom.getValue("build/plugins[1]/executions[1]/goals[2]")); |
| assertEquals("d", pom.getValue("build/plugins[1]/executions[1]/goals[3]")); |
| assertEquals("c", pom.getValue("build/plugins[1]/executions[1]/goals[4]")); |
| assertEquals("e", pom.getValue("build/plugins[1]/executions[1]/goals[5]")); |
| } |
| |
| @Test |
| void testOrderOfPluginExecutionsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-order/wo-plugin-mgmt"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("b", pom.getValue("build/plugins[1]/executions[1]/id")); |
| assertEquals("a", pom.getValue("build/plugins[1]/executions[2]/id")); |
| assertEquals("d", pom.getValue("build/plugins[1]/executions[3]/id")); |
| assertEquals("c", pom.getValue("build/plugins[1]/executions[4]/id")); |
| assertEquals("e", pom.getValue("build/plugins[1]/executions[5]/id")); |
| } |
| |
| /* MNG-3887 */ |
| @Test |
| void testOrderOfPluginExecutionsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-order/w-plugin-mgmt"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("b", pom.getValue("build/plugins[1]/executions[1]/id")); |
| assertEquals("a", pom.getValue("build/plugins[1]/executions[2]/id")); |
| assertEquals("d", pom.getValue("build/plugins[1]/executions[3]/id")); |
| assertEquals("c", pom.getValue("build/plugins[1]/executions[4]/id")); |
| assertEquals("e", pom.getValue("build/plugins[1]/executions[5]/id")); |
| } |
| |
| @Test |
| void testMergeOfPluginExecutionsWhenChildInheritsPluginVersion() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-merging-wo-version/sub"); |
| assertEquals(4, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| } |
| |
| /* MNG-3943*/ |
| @Test |
| void testMergeOfPluginExecutionsWhenChildAndParentUseDifferentPluginVersions() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-merging-version-insensitive/sub"); |
| assertEquals(4, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| } |
| |
| @Test |
| void testInterpolationWithXmlMarkup() throws Exception { |
| PomTestWrapper pom = buildPom("xml-markup-interpolation"); |
| assertEquals("<?xml version='1.0'?>Tom&Jerry", pom.getValue("properties/xmlTest")); |
| } |
| |
| /* MNG-3925 */ |
| @Test |
| void testOrderOfMergedPluginExecutionsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("merged-plugin-exec-order/wo-plugin-mgmt/sub"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("parent-1", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("parent-2", pom.getValue("build/plugins[1]/executions[2]/goals[1]")); |
| assertEquals("child-default", pom.getValue("build/plugins[1]/executions[3]/goals[1]")); |
| assertEquals("child-1", pom.getValue("build/plugins[1]/executions[4]/goals[1]")); |
| assertEquals("child-2", pom.getValue("build/plugins[1]/executions[5]/goals[1]")); |
| } |
| |
| @Test |
| void testOrderOfMergedPluginExecutionsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("merged-plugin-exec-order/w-plugin-mgmt/sub"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("parent-1", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("parent-2", pom.getValue("build/plugins[1]/executions[2]/goals[1]")); |
| assertEquals("child-default", pom.getValue("build/plugins[1]/executions[3]/goals[1]")); |
| assertEquals("child-1", pom.getValue("build/plugins[1]/executions[4]/goals[1]")); |
| assertEquals("child-2", pom.getValue("build/plugins[1]/executions[5]/goals[1]")); |
| } |
| |
| /* MNG-3984*/ |
| @Test |
| void testDifferentContainersWithSameId() throws Exception { |
| PomTestWrapper pom = buildPom("join-different-containers-same-id"); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/goals")).size()); |
| assertEquals( |
| 1, |
| ((List<?>) pom.getValue( |
| "build/pluginManagement/plugins[@artifactId='maven-it-plugin-b']/executions[1]/goals")) |
| .size()); |
| } |
| |
| /* MNG-3937*/ |
| @Test |
| void testOrderOfMergedPluginExecutionGoalsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("merged-plugin-exec-goals-order/wo-plugin-mgmt/sub"); |
| |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/goals")).size()); |
| assertEquals("child-a", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("merged", pom.getValue("build/plugins[1]/executions[1]/goals[2]")); |
| assertEquals("child-b", pom.getValue("build/plugins[1]/executions[1]/goals[3]")); |
| assertEquals("parent-b", pom.getValue("build/plugins[1]/executions[1]/goals[4]")); |
| assertEquals("parent-a", pom.getValue("build/plugins[1]/executions[1]/goals[5]")); |
| } |
| |
| @Test |
| void testOrderOfMergedPluginExecutionGoalsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("merged-plugin-exec-goals-order/w-plugin-mgmt/sub"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/goals")).size()); |
| assertEquals("child-a", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("merged", pom.getValue("build/plugins[1]/executions[1]/goals[2]")); |
| assertEquals("child-b", pom.getValue("build/plugins[1]/executions[1]/goals[3]")); |
| assertEquals("parent-b", pom.getValue("build/plugins[1]/executions[1]/goals[4]")); |
| assertEquals("parent-a", pom.getValue("build/plugins[1]/executions[1]/goals[5]")); |
| } |
| |
| /*MNG-3938*/ |
| @Test |
| void testOverridingOfInheritedPluginExecutionsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-merging/wo-plugin-mgmt/sub"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("child-default", pom.getValue("build/plugins[1]/executions[@id='default']/phase")); |
| assertEquals("child-non-default", pom.getValue("build/plugins[1]/executions[@id='non-default']/phase")); |
| } |
| |
| /* MNG-3938 */ |
| @Test |
| void testOverridingOfInheritedPluginExecutionsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-merging/w-plugin-mgmt/sub"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("child-default", pom.getValue("build/plugins[1]/executions[@id='default']/phase")); |
| assertEquals("child-non-default", pom.getValue("build/plugins[1]/executions[@id='non-default']/phase")); |
| } |
| |
| /* MNG-3906*/ |
| @Test |
| void testOrderOfMergedPluginDependenciesWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("merged-plugin-class-path-order/wo-plugin-mgmt/sub"); |
| |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/dependencies")).size()); |
| assertNotNull(pom.getValue("build/plugins[1]/dependencies[1]")); |
| assertEquals("c", pom.getValue("build/plugins[1]/dependencies[1]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[1]/version")); |
| assertEquals("a", pom.getValue("build/plugins[1]/dependencies[2]/artifactId")); |
| assertEquals("2", pom.getValue("build/plugins[1]/dependencies[2]/version")); |
| assertEquals("b", pom.getValue("build/plugins[1]/dependencies[3]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[3]/version")); |
| assertEquals("e", pom.getValue("build/plugins[1]/dependencies[4]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[4]/version")); |
| assertEquals("d", pom.getValue("build/plugins[1]/dependencies[5]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[5]/version")); |
| } |
| |
| @Test |
| void testOrderOfMergedPluginDependenciesWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("merged-plugin-class-path-order/w-plugin-mgmt/sub"); |
| assertEquals(5, ((List<?>) pom.getValue("build/plugins[1]/dependencies")).size()); |
| assertEquals("c", pom.getValue("build/plugins[1]/dependencies[1]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[1]/version")); |
| assertEquals("a", pom.getValue("build/plugins[1]/dependencies[2]/artifactId")); |
| assertEquals("2", pom.getValue("build/plugins[1]/dependencies[2]/version")); |
| assertEquals("b", pom.getValue("build/plugins[1]/dependencies[3]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[3]/version")); |
| assertEquals("e", pom.getValue("build/plugins[1]/dependencies[4]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[4]/version")); |
| assertEquals("d", pom.getValue("build/plugins[1]/dependencies[5]/artifactId")); |
| assertEquals("1", pom.getValue("build/plugins[1]/dependencies[5]/version")); |
| } |
| |
| @Test |
| void testInterpolationOfNestedBuildDirectories() throws Exception { |
| PomTestWrapper pom = buildPom("nested-build-dir-interpolation"); |
| assertEquals( |
| new File(pom.getBasedir(), "target/classes/dir0"), new File((String) pom.getValue("properties/dir0"))); |
| assertEquals(new File(pom.getBasedir(), "src/test/dir1"), new File((String) pom.getValue("properties/dir1"))); |
| assertEquals( |
| new File(pom.getBasedir(), "target/site/dir2"), new File((String) pom.getValue("properties/dir2"))); |
| } |
| |
| @Test |
| void testAppendArtifactIdOfChildToInheritedUrls() throws Exception { |
| PomTestWrapper pom = buildPom("url-inheritance/sub"); |
| assertEquals("https://parent.url/child", pom.getValue("url")); |
| assertEquals("https://parent.url/org", pom.getValue("organization/url")); |
| assertEquals("https://parent.url/license.txt", pom.getValue("licenses[1]/url")); |
| assertEquals("https://parent.url/viewvc/child", pom.getValue("scm/url")); |
| assertEquals("https://parent.url/scm/child", pom.getValue("scm/connection")); |
| assertEquals("https://parent.url/scm/child", pom.getValue("scm/developerConnection")); |
| assertEquals("https://parent.url/issues", pom.getValue("issueManagement/url")); |
| assertEquals("https://parent.url/ci", pom.getValue("ciManagement/url")); |
| assertEquals("https://parent.url/dist", pom.getValue("distributionManagement/repository/url")); |
| assertEquals("https://parent.url/snaps", pom.getValue("distributionManagement/snapshotRepository/url")); |
| assertEquals("https://parent.url/site/child", pom.getValue("distributionManagement/site/url")); |
| assertEquals("https://parent.url/download", pom.getValue("distributionManagement/downloadUrl")); |
| } |
| |
| /* MNG-3846*/ |
| @Test |
| void testAppendArtifactIdOfParentAndChildToInheritedUrls() throws Exception { |
| PomTestWrapper pom = buildPom("url-inheritance/another-parent/sub"); |
| assertEquals("https://parent.url/ap/child", pom.getValue("url")); |
| assertEquals("https://parent.url/org", pom.getValue("organization/url")); |
| assertEquals("https://parent.url/license.txt", pom.getValue("licenses[1]/url")); |
| assertEquals("https://parent.url/viewvc/ap/child", pom.getValue("scm/url")); |
| assertEquals("https://parent.url/scm/ap/child", pom.getValue("scm/connection")); |
| assertEquals("https://parent.url/scm/ap/child", pom.getValue("scm/developerConnection")); |
| assertEquals("https://parent.url/issues", pom.getValue("issueManagement/url")); |
| assertEquals("https://parent.url/ci", pom.getValue("ciManagement/url")); |
| assertEquals("https://parent.url/dist", pom.getValue("distributionManagement/repository/url")); |
| assertEquals("https://parent.url/snaps", pom.getValue("distributionManagement/snapshotRepository/url")); |
| assertEquals("https://parent.url/site/ap/child", pom.getValue("distributionManagement/site/url")); |
| assertEquals("https://parent.url/download", pom.getValue("distributionManagement/downloadUrl")); |
| } |
| |
| @Test |
| void testNonInheritedElementsInSubtreesOverriddenByChild() throws Exception { |
| PomTestWrapper pom = buildPom("limited-inheritance/child"); |
| assertNull(pom.getValue("organization/url")); |
| assertNull(pom.getValue("issueManagement/system")); |
| assertEquals(0, ((List<?>) pom.getValue("ciManagement/notifiers")).size()); |
| assertEquals("child-distros", pom.getValue("distributionManagement/repository/id")); |
| assertEquals("ssh://child.url/distros", pom.getValue("distributionManagement/repository/url")); |
| assertNull(pom.getValue("distributionManagement/repository/name")); |
| assertEquals(true, pom.getValue("distributionManagement/repository/uniqueVersion")); |
| assertEquals("default", pom.getValue("distributionManagement/repository/layout")); |
| assertEquals("child-snaps", pom.getValue("distributionManagement/snapshotRepository/id")); |
| assertEquals("ssh://child.url/snaps", pom.getValue("distributionManagement/snapshotRepository/url")); |
| assertNull(pom.getValue("distributionManagement/snapshotRepository/name")); |
| assertEquals(true, pom.getValue("distributionManagement/snapshotRepository/uniqueVersion")); |
| assertEquals("default", pom.getValue("distributionManagement/snapshotRepository/layout")); |
| assertEquals("child-site", pom.getValue("distributionManagement/site/id")); |
| assertEquals("scp://child.url/site", pom.getValue("distributionManagement/site/url")); |
| assertNull(pom.getValue("distributionManagement/site/name")); |
| } |
| |
| @Test |
| void testXmlTextCoalescing() throws Exception { |
| PomTestWrapper pom = buildPom("xml-coalesce-text"); |
| assertEquals("A Test Project Property", pom.getValue("properties/prop0")); |
| assertEquals("That's a test!", pom.getValue("properties/prop1")); |
| assertEquals( |
| 32 * 1024, |
| pom.getValue("properties/prop2") |
| .toString() |
| .trim() |
| .replaceAll("[\n\r]", "") |
| .length()); |
| } |
| |
| @Test |
| void testFullInterpolationOfNestedExpressions() throws Exception { |
| PomTestWrapper pom = buildPom("full-interpolation"); |
| for (int i = 0; i < 24; i++) { |
| String index = ((i < 10) ? "0" : "") + i; |
| assertEquals("PASSED", pom.getValue("properties/property" + index)); |
| } |
| } |
| |
| @Test |
| void testInterpolationWithBasedirAlignedDirectories() throws Exception { |
| PomTestWrapper pom = buildPom("basedir-aligned-interpolation"); |
| assertEquals( |
| new File(pom.getBasedir(), "src/main/java"), |
| new File(pom.getValue("properties/buildMainSrc").toString())); |
| assertEquals( |
| new File(pom.getBasedir(), "src/test/java"), |
| new File(pom.getValue("properties/buildTestSrc").toString())); |
| assertEquals( |
| new File(pom.getBasedir(), "src/main/scripts"), |
| new File(pom.getValue("properties/buildScriptSrc").toString())); |
| assertEquals( |
| new File(pom.getBasedir(), "target"), |
| new File(pom.getValue("properties/buildOut").toString())); |
| assertEquals( |
| new File(pom.getBasedir(), "target/classes"), |
| new File(pom.getValue("properties/buildMainOut").toString())); |
| assertEquals( |
| new File(pom.getBasedir(), "target/test-classes"), |
| new File(pom.getValue("properties/buildTestOut").toString())); |
| assertEquals( |
| new File(pom.getBasedir(), "target/site"), |
| new File(pom.getValue("properties/siteOut").toString())); |
| } |
| |
| /* MNG-3944*/ |
| @Test |
| void testInterpolationOfBasedirInPomWithUnusualName() throws Exception { |
| PomTestWrapper pom = buildPom("basedir-interpolation/pom-with-unusual-name.xml"); |
| assertEquals(pom.getBasedir(), new File(pom.getValue("properties/prop0").toString())); |
| assertEquals(pom.getBasedir(), new File(pom.getValue("properties/prop1").toString())); |
| } |
| |
| /* MNG-3979 */ |
| @Test |
| void testJoiningOfContainersWhenChildHasEmptyElements() throws Exception { |
| PomTestWrapper pom = buildPom("id-container-joining-with-empty-elements/sub"); |
| assertNotNull(pom); |
| } |
| |
| @Test |
| void testOrderOfPluginConfigurationElementsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-order/wo-plugin-mgmt"); |
| assertEquals("one", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[1]")); |
| assertEquals("two", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[2]")); |
| assertEquals("three", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[3]")); |
| assertEquals("four", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[4]")); |
| } |
| |
| /* MNG-3827*/ |
| @Test |
| void testOrderOfPluginConfigurationElementsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-order/w-plugin-mgmt"); |
| assertEquals("one", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[1]")); |
| assertEquals("two", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[2]")); |
| assertEquals("three", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[3]")); |
| assertEquals("four", pom.getValue("build/plugins[1]/configuration/stringParams/stringParam[4]")); |
| } |
| |
| @Test |
| void testOrderOfPluginExecutionConfigurationElementsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-config-order/wo-plugin-mgmt"); |
| String prefix = "build/plugins[1]/executions[1]/configuration/"; |
| assertEquals("one", pom.getValue(prefix + "stringParams/stringParam[1]")); |
| assertEquals("two", pom.getValue(prefix + "stringParams/stringParam[2]")); |
| assertEquals("three", pom.getValue(prefix + "stringParams/stringParam[3]")); |
| assertEquals("four", pom.getValue(prefix + "stringParams/stringParam[4]")); |
| assertEquals("key1", pom.getValue(prefix + "propertiesParam/property[1]/name")); |
| assertEquals("key2", pom.getValue(prefix + "propertiesParam/property[2]/name")); |
| } |
| |
| /* MNG-3864*/ |
| @Test |
| void testOrderOfPluginExecutionConfigurationElementsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-config-order/w-plugin-mgmt"); |
| String prefix = "build/plugins[1]/executions[1]/configuration/"; |
| assertEquals("one", pom.getValue(prefix + "stringParams/stringParam[1]")); |
| assertEquals("two", pom.getValue(prefix + "stringParams/stringParam[2]")); |
| assertEquals("three", pom.getValue(prefix + "stringParams/stringParam[3]")); |
| assertEquals("four", pom.getValue(prefix + "stringParams/stringParam[4]")); |
| assertEquals("key1", pom.getValue(prefix + "propertiesParam/property[1]/name")); |
| assertEquals("key2", pom.getValue(prefix + "propertiesParam/property[2]/name")); |
| } |
| |
| /* MNG-3836*/ |
| @Test |
| void testMergeOfInheritedPluginConfiguration() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-merging/child"); |
| |
| String prefix = "build/plugins[1]/configuration/"; |
| assertEquals("PASSED", pom.getValue(prefix + "propertiesFile")); |
| assertEquals("PASSED", pom.getValue(prefix + "parent")); |
| assertEquals("PASSED-1", pom.getValue(prefix + "stringParams/stringParam[1]")); |
| assertEquals("PASSED-3", pom.getValue(prefix + "stringParams/stringParam[2]")); |
| assertEquals("PASSED-2", pom.getValue(prefix + "stringParams/stringParam[3]")); |
| assertEquals("PASSED-4", pom.getValue(prefix + "stringParams/stringParam[4]")); |
| assertEquals("PASSED-1", pom.getValue(prefix + "listParam/listParam[1]")); |
| assertEquals("PASSED-3", pom.getValue(prefix + "listParam/listParam[2]")); |
| assertEquals("PASSED-2", pom.getValue(prefix + "listParam/listParam[3]")); |
| assertEquals("PASSED-4", pom.getValue(prefix + "listParam/listParam[4]")); |
| } |
| |
| /* MNG-2591 */ |
| @Test |
| void testAppendOfInheritedPluginConfigurationWithNoProfile() throws Exception { |
| testAppendOfInheritedPluginConfiguration("no-profile"); |
| } |
| |
| /* MNG-2591*/ |
| @Test |
| void testAppendOfInheritedPluginConfigurationWithActiveProfile() throws Exception { |
| testAppendOfInheritedPluginConfiguration("with-profile"); |
| } |
| |
| private void testAppendOfInheritedPluginConfiguration(String test) throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-append/" + test + "/subproject"); |
| String prefix = "build/plugins[1]/configuration/"; |
| assertEquals("PARENT-1", pom.getValue(prefix + "stringParams/stringParam[1]")); |
| assertEquals("PARENT-3", pom.getValue(prefix + "stringParams/stringParam[2]")); |
| assertEquals("PARENT-2", pom.getValue(prefix + "stringParams/stringParam[3]")); |
| assertEquals("PARENT-4", pom.getValue(prefix + "stringParams/stringParam[4]")); |
| assertEquals("CHILD-1", pom.getValue(prefix + "stringParams/stringParam[5]")); |
| assertEquals("CHILD-3", pom.getValue(prefix + "stringParams/stringParam[6]")); |
| assertEquals("CHILD-2", pom.getValue(prefix + "stringParams/stringParam[7]")); |
| assertEquals("CHILD-4", pom.getValue(prefix + "stringParams/stringParam[8]")); |
| assertNull(pom.getValue(prefix + "stringParams/stringParam[9]")); |
| assertEquals("PARENT-1", pom.getValue(prefix + "listParam/listParam[1]")); |
| assertEquals("PARENT-3", pom.getValue(prefix + "listParam/listParam[2]")); |
| assertEquals("PARENT-2", pom.getValue(prefix + "listParam/listParam[3]")); |
| assertEquals("PARENT-4", pom.getValue(prefix + "listParam/listParam[4]")); |
| assertEquals("CHILD-1", pom.getValue(prefix + "listParam/listParam[5]")); |
| assertEquals("CHILD-3", pom.getValue(prefix + "listParam/listParam[6]")); |
| assertEquals("CHILD-2", pom.getValue(prefix + "listParam/listParam[7]")); |
| assertEquals("CHILD-4", pom.getValue(prefix + "listParam/listParam[8]")); |
| assertNull(pom.getValue(prefix + "listParam/listParam[9]")); |
| } |
| |
| /* MNG-4000 */ |
| @Test |
| void testMultiplePluginExecutionsWithAndWithoutIdsWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-w-and-wo-id/wo-plugin-mgmt"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("log-string", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("log-string", pom.getValue("build/plugins[1]/executions[2]/goals[1]")); |
| } |
| |
| @Test |
| void testMultiplePluginExecutionsWithAndWithoutIdsWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-w-and-wo-id/w-plugin-mgmt"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("log-string", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals("log-string", pom.getValue("build/plugins[1]/executions[2]/goals[1]")); |
| } |
| |
| @Test |
| void testDependencyOrderWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("dependency-order/wo-plugin-mgmt"); |
| assertEquals(4, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("a", pom.getValue("dependencies[1]/artifactId")); |
| assertEquals("c", pom.getValue("dependencies[2]/artifactId")); |
| assertEquals("b", pom.getValue("dependencies[3]/artifactId")); |
| assertEquals("d", pom.getValue("dependencies[4]/artifactId")); |
| } |
| |
| @Test |
| void testDependencyOrderWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("dependency-order/w-plugin-mgmt"); |
| assertEquals(4, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("a", pom.getValue("dependencies[1]/artifactId")); |
| assertEquals("c", pom.getValue("dependencies[2]/artifactId")); |
| assertEquals("b", pom.getValue("dependencies[3]/artifactId")); |
| assertEquals("d", pom.getValue("dependencies[4]/artifactId")); |
| } |
| |
| @Test |
| void testBuildDirectoriesUsePlatformSpecificFileSeparator() throws Exception { |
| PomTestWrapper pom = buildPom("platform-file-separator"); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/directory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/outputDirectory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/testOutputDirectory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/sourceDirectory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/testSourceDirectory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/resources[1]/directory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/testResources[1]/directory")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("build/filters[1]")); |
| assertPathWithNormalizedFileSeparators(pom.getValue("reporting/outputDirectory")); |
| } |
| |
| /* MNG-4008 */ |
| @Test |
| void testMergedFilterOrder() throws Exception { |
| PomTestWrapper pom = buildPom("merged-filter-order/sub"); |
| |
| assertEquals(7, ((List<?>) pom.getValue("build/filters")).size()); |
| assertThat(pom.getValue("build/filters[1]").toString(), endsWith("child-a.properties")); |
| assertThat(pom.getValue("build/filters[2]").toString(), endsWith("child-c.properties")); |
| assertThat(pom.getValue("build/filters[3]").toString(), endsWith("child-b.properties")); |
| assertThat(pom.getValue("build/filters[4]").toString(), endsWith("child-d.properties")); |
| assertThat(pom.getValue("build/filters[5]").toString(), endsWith("parent-c.properties")); |
| assertThat(pom.getValue("build/filters[6]").toString(), endsWith("parent-b.properties")); |
| assertThat(pom.getValue("build/filters[7]").toString(), endsWith("parent-d.properties")); |
| } |
| |
| /** MNG-4027*/ |
| @Test |
| void testProfileInjectedDependencies() throws Exception { |
| PomTestWrapper pom = buildPom("profile-injected-dependencies"); |
| assertEquals(4, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("a", pom.getValue("dependencies[1]/artifactId")); |
| assertEquals("c", pom.getValue("dependencies[2]/artifactId")); |
| assertEquals("b", pom.getValue("dependencies[3]/artifactId")); |
| assertEquals("d", pom.getValue("dependencies[4]/artifactId")); |
| } |
| |
| /** IT-0021*/ |
| @Test |
| void testProfileDependenciesMultipleProfiles() throws Exception { |
| PomTestWrapper pom = buildPom("profile-dependencies-multiple-profiles", "profile-1", "profile-2"); |
| assertEquals(2, ((List<?>) pom.getValue("dependencies")).size()); |
| } |
| |
| @Test |
| void testDependencyInheritance() throws Exception { |
| PomTestWrapper pom = buildPom("dependency-inheritance/sub"); |
| assertEquals(1, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("4.13.1", pom.getValue("dependencies[1]/version")); |
| } |
| |
| /** MNG-4034 */ |
| @Test |
| void testManagedProfileDependency() throws Exception { |
| PomTestWrapper pom = this.buildPom("managed-profile-dependency/sub", "maven-core-it"); |
| assertEquals(1, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("org.apache.maven.its", pom.getValue("dependencies[1]/groupId")); |
| assertEquals("maven-core-it-support", pom.getValue("dependencies[1]/artifactId")); |
| assertEquals("1.3", pom.getValue("dependencies[1]/version")); |
| assertEquals("runtime", pom.getValue("dependencies[1]/scope")); |
| assertEquals(1, ((List<?>) pom.getValue("dependencies[1]/exclusions")).size()); |
| assertEquals("commons-lang", pom.getValue("dependencies[1]/exclusions[1]/groupId")); |
| } |
| |
| /** MNG-4040 */ |
| @Test |
| void testProfileModuleInheritance() throws Exception { |
| PomTestWrapper pom = this.buildPom("profile-module-inheritance/sub", "dist"); |
| assertEquals(0, ((List<?>) pom.getValue("modules")).size()); |
| } |
| |
| /** MNG-3621 */ |
| @Test |
| void testUncPath() throws Exception { |
| PomTestWrapper pom = this.buildPom("unc-path/sub"); |
| assertEquals("file:////host/site/test-child", pom.getValue("distributionManagement/site/url")); |
| } |
| |
| /** MNG-2006 */ |
| @Test |
| void testUrlAppendWithChildPathAdjustment() throws Exception { |
| PomTestWrapper pom = this.buildPom("url-append/child"); |
| assertEquals("https://project.url/child", pom.getValue("url")); |
| assertEquals("https://viewvc.project.url/child", pom.getValue("scm/url")); |
| assertEquals("https://scm.project.url/child", pom.getValue("scm/connection")); |
| assertEquals("https://scm.project.url/child", pom.getValue("scm/developerConnection")); |
| assertEquals("https://site.project.url/child", pom.getValue("distributionManagement/site/url")); |
| } |
| |
| /** MNG-0479 */ |
| @Test |
| void testRepoInheritance() throws Exception { |
| PomTestWrapper pom = this.buildPom("repo-inheritance"); |
| assertEquals(1, ((List<?>) pom.getValue("repositories")).size()); |
| assertEquals("it0043", pom.getValue("repositories[1]/name")); |
| } |
| |
| @Test |
| void testEmptyScm() throws Exception { |
| PomTestWrapper pom = this.buildPom("empty-scm"); |
| assertNull(pom.getValue("scm")); |
| } |
| |
| @Test |
| void testPluginConfigurationUsingAttributesWithoutPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-attributes/wo-plugin-mgmt"); |
| assertEquals("src", pom.getValue("build/plugins[1]/configuration/domParam/copy/@todir")); |
| assertEquals("true", pom.getValue("build/plugins[1]/configuration/domParam/copy/@overwrite")); |
| assertEquals("target", pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@dir")); |
| assertNull(pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@todir")); |
| assertNull(pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@overwrite")); |
| } |
| |
| /** MNG-4053*/ |
| @Test |
| void testPluginConfigurationUsingAttributesWithPluginManagement() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-attributes/w-plugin-mgmt"); |
| assertEquals("src", pom.getValue("build/plugins[1]/configuration/domParam/copy/@todir")); |
| assertEquals("true", pom.getValue("build/plugins[1]/configuration/domParam/copy/@overwrite")); |
| assertEquals("target", pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@dir")); |
| assertNull(pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@todir")); |
| assertNull(pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@overwrite")); |
| } |
| |
| @Test |
| void testPluginConfigurationUsingAttributesWithPluginManagementAndProfile() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-config-attributes/w-profile", "maven-core-it"); |
| assertEquals("src", pom.getValue("build/plugins[1]/configuration/domParam/copy/@todir")); |
| assertEquals("true", pom.getValue("build/plugins[1]/configuration/domParam/copy/@overwrite")); |
| assertEquals("target", pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@dir")); |
| assertNull(pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@todir")); |
| assertNull(pom.getValue("build/plugins[1]/configuration/domParam/copy/fileset/@overwrite")); |
| } |
| |
| @Test |
| void testPomEncoding() throws Exception { |
| PomTestWrapper pom = buildPom("pom-encoding/utf-8"); |
| assertEquals("TEST-CHARS: \u00DF\u0131\u03A3\u042F\u05D0\u20AC", pom.getValue("description")); |
| pom = buildPom("pom-encoding/latin-1"); |
| assertEquals("TEST-CHARS: \u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\u00DF", pom.getValue("description")); |
| } |
| |
| /* MNG-4070 */ |
| @Test |
| void testXmlWhitespaceHandling() throws Exception { |
| PomTestWrapper pom = buildPom("xml-whitespace/sub"); |
| assertEquals("org.apache.maven.its.mng4070", pom.getValue("groupId")); |
| } |
| |
| /* MNG-3760*/ |
| @Test |
| void testInterpolationOfBaseUri() throws Exception { |
| PomTestWrapper pom = buildPom("baseuri-interpolation/pom.xml"); |
| assertNotEquals( |
| pom.getBasedir().toURI().toString(), |
| pom.getValue("properties/prop1").toString()); |
| } |
| |
| /* MNG-6386 */ |
| @Test |
| void testInterpolationOfRfc3986BaseUri() throws Exception { |
| PomTestWrapper pom = buildPom("baseuri-interpolation/pom.xml"); |
| String prop1 = pom.getValue("properties/prop1").toString(); |
| assertEquals(pom.getBasedir().toPath().toUri().toASCIIString(), prop1); |
| assertThat(prop1, startsWith("file:///")); |
| } |
| |
| /* MNG-3811*/ |
| @Test |
| void testReportingPluginConfig() throws Exception { |
| PomTestWrapper pom = buildPom("reporting-plugin-config/sub"); |
| |
| assertEquals(3, ((List<?>) pom.getValue("reporting/plugins[1]/configuration/stringParams")).size()); |
| assertEquals("parentParam", pom.getValue("reporting/plugins[1]/configuration/stringParams[1]/stringParam[1]")); |
| assertEquals("childParam", pom.getValue("reporting/plugins[1]/configuration/stringParams[1]/stringParam[2]")); |
| assertEquals( |
| " preserve space ", |
| pom.getValue("reporting/plugins[1]/configuration/stringParams[1]/stringParam[3]")); |
| assertEquals("true", pom.getValue("reporting/plugins[1]/configuration/booleanParam")); |
| } |
| |
| @Test |
| void testPropertiesNoDuplication() throws Exception { |
| PomTestWrapper pom = buildPom("properties-no-duplication/sub"); |
| assertEquals(3, ((Properties) pom.getValue("properties")).size()); |
| assertEquals("child", pom.getValue("properties/pomProfile")); |
| } |
| |
| @Test |
| void testPomInheritance() throws Exception { |
| PomTestWrapper pom = buildPom("pom-inheritance/sub"); |
| assertEquals("parent-description", pom.getValue("description")); |
| assertEquals("jar", pom.getValue("packaging")); |
| } |
| |
| @Test |
| void testCompleteModelWithoutParent() throws Exception { |
| PomTestWrapper pom = buildPom("complete-model/wo-parent"); |
| |
| testCompleteModel(pom); |
| } |
| |
| @Test |
| void testCompleteModelWithParent() throws Exception { |
| PomTestWrapper pom = buildPom("complete-model/w-parent/sub"); |
| |
| testCompleteModel(pom); |
| } |
| |
| private void testCompleteModel(PomTestWrapper pom) throws Exception { |
| assertEquals("4.0.0", pom.getValue("modelVersion")); |
| |
| assertEquals("org.apache.maven.its.mng", pom.getValue("groupId")); |
| assertEquals("test", pom.getValue("artifactId")); |
| assertEquals("0.2", pom.getValue("version")); |
| assertEquals("pom", pom.getValue("packaging")); |
| |
| assertEquals("project-name", pom.getValue("name")); |
| assertEquals("project-description", pom.getValue("description")); |
| assertEquals("https://project.url/", pom.getValue("url")); |
| assertEquals("2009", pom.getValue("inceptionYear")); |
| |
| assertEquals("project-org", pom.getValue("organization/name")); |
| assertEquals("https://project-org.url/", pom.getValue("organization/url")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("licenses")).size()); |
| assertEquals("project-license", pom.getValue("licenses[1]/name")); |
| assertEquals("https://project.url/license", pom.getValue("licenses[1]/url")); |
| assertEquals("repo", pom.getValue("licenses[1]/distribution")); |
| assertEquals("free", pom.getValue("licenses[1]/comments")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("developers")).size()); |
| assertEquals("dev", pom.getValue("developers[1]/id")); |
| assertEquals("project-developer", pom.getValue("developers[1]/name")); |
| assertEquals("developer@", pom.getValue("developers[1]/email")); |
| assertEquals("https://developer", pom.getValue("developers[1]/url")); |
| assertEquals("developer", pom.getValue("developers[1]/organization")); |
| assertEquals("https://devel.org", pom.getValue("developers[1]/organizationUrl")); |
| assertEquals("-1", pom.getValue("developers[1]/timezone")); |
| assertEquals("yes", pom.getValue("developers[1]/properties/developer")); |
| assertEquals(1, ((List<?>) pom.getValue("developers[1]/roles")).size()); |
| assertEquals("devel", pom.getValue("developers[1]/roles[1]")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("contributors")).size()); |
| assertEquals("project-contributor", pom.getValue("contributors[1]/name")); |
| assertEquals("contributor@", pom.getValue("contributors[1]/email")); |
| assertEquals("https://contributor", pom.getValue("contributors[1]/url")); |
| assertEquals("contributor", pom.getValue("contributors[1]/organization")); |
| assertEquals("https://contrib.org", pom.getValue("contributors[1]/organizationUrl")); |
| assertEquals("+1", pom.getValue("contributors[1]/timezone")); |
| assertEquals("yes", pom.getValue("contributors[1]/properties/contributor")); |
| assertEquals(1, ((List<?>) pom.getValue("contributors[1]/roles")).size()); |
| assertEquals("contrib", pom.getValue("contributors[1]/roles[1]")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("mailingLists")).size()); |
| assertEquals("project-mailing-list", pom.getValue("mailingLists[1]/name")); |
| assertEquals("subscribe@", pom.getValue("mailingLists[1]/subscribe")); |
| assertEquals("unsubscribe@", pom.getValue("mailingLists[1]/unsubscribe")); |
| assertEquals("post@", pom.getValue("mailingLists[1]/post")); |
| assertEquals("mail-archive", pom.getValue("mailingLists[1]/archive")); |
| assertEquals(1, ((List<?>) pom.getValue("mailingLists[1]/otherArchives")).size()); |
| assertEquals("other-archive", pom.getValue("mailingLists[1]/otherArchives[1]")); |
| |
| assertEquals("2.0.1", pom.getValue("prerequisites/maven")); |
| |
| assertEquals("https://project.url/trunk", pom.getValue("scm/url")); |
| assertEquals("https://project.url/scm", pom.getValue("scm/connection")); |
| assertEquals("https://project.url/scm", pom.getValue("scm/developerConnection")); |
| assertEquals("TAG", pom.getValue("scm/tag")); |
| |
| assertEquals("issues", pom.getValue("issueManagement/system")); |
| assertEquals("https://project.url/issues", pom.getValue("issueManagement/url")); |
| |
| assertEquals("ci", pom.getValue("ciManagement/system")); |
| assertEquals("https://project.url/ci", pom.getValue("ciManagement/url")); |
| assertEquals(1, ((List<?>) pom.getValue("ciManagement/notifiers")).size()); |
| assertEquals("irc", pom.getValue("ciManagement/notifiers[1]/type")); |
| assertEquals("ci@", pom.getValue("ciManagement/notifiers[1]/address")); |
| assertEquals(Boolean.TRUE, pom.getValue("ciManagement/notifiers[1]/sendOnError")); |
| assertEquals(Boolean.FALSE, pom.getValue("ciManagement/notifiers[1]/sendOnFailure")); |
| assertEquals(Boolean.FALSE, pom.getValue("ciManagement/notifiers[1]/sendOnWarning")); |
| assertEquals(Boolean.FALSE, pom.getValue("ciManagement/notifiers[1]/sendOnSuccess")); |
| assertEquals("ci", pom.getValue("ciManagement/notifiers[1]/configuration/ciProp")); |
| |
| assertEquals("project.distros", pom.getValue("distributionManagement/repository/id")); |
| assertEquals("distros", pom.getValue("distributionManagement/repository/name")); |
| assertEquals("https://project.url/dist", pom.getValue("distributionManagement/repository/url")); |
| assertEquals(Boolean.TRUE, pom.getValue("distributionManagement/repository/uniqueVersion")); |
| |
| assertEquals("project.snaps", pom.getValue("distributionManagement/snapshotRepository/id")); |
| assertEquals("snaps", pom.getValue("distributionManagement/snapshotRepository/name")); |
| assertEquals("https://project.url/snaps", pom.getValue("distributionManagement/snapshotRepository/url")); |
| assertEquals(Boolean.FALSE, pom.getValue("distributionManagement/snapshotRepository/uniqueVersion")); |
| |
| assertEquals("project.site", pom.getValue("distributionManagement/site/id")); |
| assertEquals("docs", pom.getValue("distributionManagement/site/name")); |
| assertEquals("https://project.url/site", pom.getValue("distributionManagement/site/url")); |
| |
| assertEquals("https://project.url/download", pom.getValue("distributionManagement/downloadUrl")); |
| assertEquals("reloc-gid", pom.getValue("distributionManagement/relocation/groupId")); |
| assertEquals("reloc-aid", pom.getValue("distributionManagement/relocation/artifactId")); |
| assertEquals("reloc-version", pom.getValue("distributionManagement/relocation/version")); |
| assertEquals("project-reloc-msg", pom.getValue("distributionManagement/relocation/message")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("modules")).size()); |
| assertEquals("sub", pom.getValue("modules[1]")); |
| |
| assertEquals(3, ((Map<?, ?>) pom.getValue("properties")).size()); |
| assertEquals("project-property", pom.getValue("properties[1]/itProperty")); |
| assertEquals("UTF-8", pom.getValue("properties[1]/project.build.sourceEncoding")); |
| assertEquals("UTF-8", pom.getValue("properties[1]/project.reporting.outputEncoding")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("dependencyManagement/dependencies")).size()); |
| assertEquals("org.apache.maven.its", pom.getValue("dependencyManagement/dependencies[1]/groupId")); |
| assertEquals("managed-dep", pom.getValue("dependencyManagement/dependencies[1]/artifactId")); |
| assertEquals("0.1", pom.getValue("dependencyManagement/dependencies[1]/version")); |
| assertEquals("war", pom.getValue("dependencyManagement/dependencies[1]/type")); |
| assertEquals("runtime", pom.getValue("dependencyManagement/dependencies[1]/scope")); |
| assertEquals(Boolean.FALSE, pom.getValue("dependencyManagement/dependencies[1]/optional")); |
| assertEquals(1, ((List<?>) pom.getValue("dependencyManagement/dependencies[1]/exclusions")).size()); |
| assertEquals( |
| "org.apache.maven.its", pom.getValue("dependencyManagement/dependencies[1]/exclusions[1]/groupId")); |
| assertEquals( |
| "excluded-managed-dep", pom.getValue("dependencyManagement/dependencies[1]/exclusions[1]/artifactId")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("dependencies")).size()); |
| assertEquals("org.apache.maven.its", pom.getValue("dependencies[1]/groupId")); |
| assertEquals("dep", pom.getValue("dependencies[1]/artifactId")); |
| assertEquals("0.2", pom.getValue("dependencies[1]/version")); |
| assertEquals("ejb", pom.getValue("dependencies[1]/type")); |
| assertEquals("test", pom.getValue("dependencies[1]/scope")); |
| assertEquals(Boolean.TRUE, pom.getValue("dependencies[1]/optional")); |
| assertEquals(1, ((List<?>) pom.getValue("dependencies[1]/exclusions")).size()); |
| assertEquals("org.apache.maven.its", pom.getValue("dependencies[1]/exclusions[1]/groupId")); |
| assertEquals("excluded-dep", pom.getValue("dependencies[1]/exclusions[1]/artifactId")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("repositories")).size()); |
| assertEquals("project-remote-repo", pom.getValue("repositories[1]/id")); |
| assertEquals("https://project.url/remote", pom.getValue("repositories[1]/url")); |
| assertEquals("repo", pom.getValue("repositories[1]/name")); |
| |
| assertEquals("test", pom.getValue("build/defaultGoal")); |
| assertEquals("coreit", pom.getValue("build/finalName")); |
| |
| assertPathSuffixEquals("build", pom.getValue("build/directory")); |
| assertPathSuffixEquals("build/main", pom.getValue("build/outputDirectory")); |
| assertPathSuffixEquals("build/test", pom.getValue("build/testOutputDirectory")); |
| assertPathSuffixEquals("sources/main", pom.getValue("build/sourceDirectory")); |
| assertPathSuffixEquals("sources/test", pom.getValue("build/testSourceDirectory")); |
| assertPathSuffixEquals("sources/scripts", pom.getValue("build/scriptSourceDirectory")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("build/filters")).size()); |
| assertPathSuffixEquals("src/main/filter/it.properties", pom.getValue("build/filters[1]")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("build/resources")).size()); |
| assertPathSuffixEquals("res/main", pom.getValue("build/resources[1]/directory")); |
| assertPathSuffixEquals("main", pom.getValue("build/resources[1]/targetPath")); |
| assertEquals(Boolean.TRUE, pom.getValue("build/resources[1]/filtering")); |
| assertEquals(1, ((List<?>) pom.getValue("build/resources[1]/includes")).size()); |
| assertPathSuffixEquals("main.included", pom.getValue("build/resources[1]/includes[1]")); |
| assertEquals(1, ((List<?>) pom.getValue("build/resources[1]/excludes")).size()); |
| assertPathSuffixEquals("main.excluded", pom.getValue("build/resources[1]/excludes[1]")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("build/testResources")).size()); |
| assertPathSuffixEquals("res/test", pom.getValue("build/testResources[1]/directory")); |
| assertPathSuffixEquals("test", pom.getValue("build/testResources[1]/targetPath")); |
| assertEquals(Boolean.TRUE, pom.getValue("build/testResources[1]/filtering")); |
| assertEquals(1, ((List<?>) pom.getValue("build/testResources[1]/includes")).size()); |
| assertPathSuffixEquals("test.included", pom.getValue("build/testResources[1]/includes[1]")); |
| assertEquals(1, ((List<?>) pom.getValue("build/testResources[1]/excludes")).size()); |
| assertPathSuffixEquals("test.excluded", pom.getValue("build/testResources[1]/excludes[1]")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("build/extensions")).size()); |
| assertEquals("org.apache.maven.its.ext", pom.getValue("build/extensions[1]/groupId")); |
| assertEquals("ext", pom.getValue("build/extensions[1]/artifactId")); |
| assertEquals("3.0", pom.getValue("build/extensions[1]/version")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins")).size()); |
| assertEquals("org.apache.maven.its.plugins", pom.getValue("build/plugins[1]/groupId")); |
| assertEquals("maven-it-plugin-build", pom.getValue("build/plugins[1]/artifactId")); |
| assertEquals("2.1-SNAPSHOT", pom.getValue("build/plugins[1]/version")); |
| assertEquals("test.properties", pom.getValue("build/plugins[1]/configuration/outputFile")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/executions")).size()); |
| assertEquals("test", pom.getValue("build/plugins[1]/executions[1]/id")); |
| assertEquals("validate", pom.getValue("build/plugins[1]/executions[1]/phase")); |
| assertEquals("pom.properties", pom.getValue("build/plugins[1]/executions[1]/configuration/outputFile")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/executions[1]/goals")).size()); |
| assertEquals("eval", pom.getValue("build/plugins[1]/executions[1]/goals[1]")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/dependencies")).size()); |
| assertEquals("org.apache.maven.its", pom.getValue("build/plugins[1]/dependencies[1]/groupId")); |
| assertEquals("build-plugin-dep", pom.getValue("build/plugins[1]/dependencies[1]/artifactId")); |
| assertEquals("0.3", pom.getValue("build/plugins[1]/dependencies[1]/version")); |
| assertEquals("zip", pom.getValue("build/plugins[1]/dependencies[1]/type")); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins[1]/dependencies[1]/exclusions")).size()); |
| assertEquals("org.apache.maven.its", pom.getValue("build/plugins[1]/dependencies[1]/exclusions[1]/groupId")); |
| assertEquals( |
| "excluded-build-plugin-dep", pom.getValue("build/plugins[1]/dependencies[1]/exclusions[1]/artifactId")); |
| |
| assertEquals(Boolean.TRUE, pom.getValue("reporting/excludeDefaults")); |
| assertPathSuffixEquals("docs", pom.getValue("reporting/outputDirectory")); |
| |
| assertEquals(1, ((List<?>) pom.getValue("reporting/plugins")).size()); |
| assertEquals("org.apache.maven.its.plugins", pom.getValue("reporting/plugins[1]/groupId")); |
| assertEquals("maven-it-plugin-reporting", pom.getValue("reporting/plugins[1]/artifactId")); |
| assertEquals("2.0-SNAPSHOT", pom.getValue("reporting/plugins[1]/version")); |
| assertEquals("test.html", pom.getValue("reporting/plugins[1]/configuration/outputFile")); |
| assertEquals(1, ((List<?>) pom.getValue("reporting/plugins[1]/reportSets")).size()); |
| assertEquals("it", pom.getValue("reporting/plugins[1]/reportSets[1]/id")); |
| assertEquals("index.html", pom.getValue("reporting/plugins[1]/reportSets[1]/configuration/outputFile")); |
| assertEquals(1, ((List<?>) pom.getValue("reporting/plugins[1]/reportSets[1]/reports")).size()); |
| assertEquals("run", pom.getValue("reporting/plugins[1]/reportSets[1]/reports[1]")); |
| } |
| |
| /* MNG-2309*/ |
| @Test |
| void testProfileInjectionOrder() throws Exception { |
| PomTestWrapper pom = buildPom("profile-injection-order", "pom-a", "pom-b", "pom-e", "pom-c", "pom-d"); |
| assertEquals("e", pom.getValue("properties[1]/pomProperty")); |
| } |
| |
| @Test |
| void testPropertiesInheritance() throws Exception { |
| PomTestWrapper pom = buildPom("properties-inheritance/sub"); |
| assertEquals("parent-property", pom.getValue("properties/parentProperty")); |
| assertEquals("child-property", pom.getValue("properties/childProperty")); |
| assertEquals("child-override", pom.getValue("properties/overriddenProperty")); |
| } |
| |
| /* MNG-4102*/ |
| @Test |
| void testInheritedPropertiesInterpolatedWithValuesFromChildWithoutProfiles() throws Exception { |
| PomTestWrapper pom = buildPom("inherited-properties-interpolation/no-profile/sub"); |
| |
| assertEquals("CHILD", pom.getValue("properties/overridden")); |
| assertEquals("CHILD", pom.getValue("properties/interpolated")); |
| } |
| |
| /* MNG-4102 */ |
| @Test |
| void testInheritedPropertiesInterpolatedWithValuesFromChildWithActiveProfiles() throws Exception { |
| PomTestWrapper pom = buildPom("inherited-properties-interpolation/active-profile/sub"); |
| |
| assertEquals(1, pom.getMavenProject().getModel().getProfiles().size()); |
| |
| buildPom("inherited-properties-interpolation/active-profile/sub", "it-parent", "it-child"); |
| assertEquals("CHILD", pom.getValue("properties/overridden")); |
| assertEquals("CHILD", pom.getValue("properties/interpolated")); |
| } |
| |
| /* MNG-3545 */ |
| @Test |
| void testProfileDefaultActivation() throws Exception { |
| PomTestWrapper pom = buildPom("profile-default-deactivation", "profile4"); |
| assertEquals(1, pom.getMavenProject().getActiveProfiles().size()); |
| assertEquals(1, ((List<?>) pom.getValue("build/plugins")).size()); |
| assertEquals("2.1", pom.getValue("build/plugins[1]/version")); |
| } |
| |
| /* MNG-1995 */ |
| @Test |
| void testBooleanInterpolation() throws Exception { |
| PomTestWrapper pom = buildPom("boolean-interpolation"); |
| assertEquals(true, pom.getValue("repositories[1]/releases/enabled")); |
| assertEquals(true, pom.getValue("build/resources[1]/filtering")); |
| } |
| |
| /* MNG-3899 */ |
| @Test |
| void testBuildExtensionInheritance() throws Exception { |
| PomTestWrapper pom = buildPom("build-extension-inheritance/sub"); |
| assertEquals(3, ((List<?>) pom.getValue("build/extensions")).size()); |
| assertEquals("b", pom.getValue("build/extensions[1]/artifactId")); |
| assertEquals("a", pom.getValue("build/extensions[2]/artifactId")); |
| assertEquals("0.2", pom.getValue("build/extensions[2]/version")); |
| assertEquals("c", pom.getValue("build/extensions[3]/artifactId")); |
| } |
| |
| /*MNG-1957*/ |
| @Test |
| void testJdkActivation() throws Exception { |
| Properties props = new Properties(); |
| props.put("java.version", "1.5.0_15"); |
| |
| PomTestWrapper pom = buildPom("jdk-activation", props, null); |
| assertEquals(3, pom.getMavenProject().getActiveProfiles().size()); |
| assertEquals("PASSED", pom.getValue("properties/jdkProperty3")); |
| assertEquals("PASSED", pom.getValue("properties/jdkProperty2")); |
| assertEquals("PASSED", pom.getValue("properties/jdkProperty1")); |
| } |
| |
| /* MNG-2174 */ |
| @Test |
| void testProfilePluginMngDependencies() throws Exception { |
| PomTestWrapper pom = buildPom("profile-plugin-mng-dependencies/sub", "maven-core-it"); |
| assertEquals("a", pom.getValue("build/plugins[1]/dependencies[1]/artifactId")); |
| } |
| |
| /** MNG-4116 */ |
| @Test |
| void testPercentEncodedUrlsMustNotBeDecoded() throws Exception { |
| PomTestWrapper pom = this.buildPom("url-no-decoding"); |
| assertEquals("https://maven.apache.org/spacy%20path", pom.getValue("url")); |
| assertEquals("https://svn.apache.org/viewvc/spacy%20path", pom.getValue("scm/url")); |
| assertEquals("scm:svn:svn+ssh://svn.apache.org/spacy%20path", pom.getValue("scm/connection")); |
| assertEquals("scm:svn:svn+ssh://svn.apache.org/spacy%20path", pom.getValue("scm/developerConnection")); |
| assertEquals("https://issues.apache.org/spacy%20path", pom.getValue("issueManagement/url")); |
| assertEquals("https://ci.apache.org/spacy%20path", pom.getValue("ciManagement/url")); |
| assertEquals( |
| "scm:svn:svn+ssh://dist.apache.org/spacy%20path", |
| pom.getValue("distributionManagement/repository/url")); |
| assertEquals( |
| "scm:svn:svn+ssh://snap.apache.org/spacy%20path", |
| pom.getValue("distributionManagement/snapshotRepository/url")); |
| assertEquals("scm:svn:svn+ssh://site.apache.org/spacy%20path", pom.getValue("distributionManagement/site/url")); |
| } |
| |
| @Test |
| void testPluginManagementInheritance() throws Exception { |
| PomTestWrapper pom = this.buildPom("plugin-management-inheritance"); |
| assertEquals( |
| "0.1-stub-SNAPSHOT", |
| pom.getValue("build/pluginManagement/plugins[@artifactId='maven-compiler-plugin']/version")); |
| } |
| |
| @Test |
| void testProfilePlugins() throws Exception { |
| PomTestWrapper pom = this.buildPom("profile-plugins", "standard"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins")).size()); |
| assertEquals("maven-assembly2-plugin", pom.getValue("build/plugins[2]/artifactId")); |
| } |
| |
| @Test |
| void testPluginInheritanceSimple() throws Exception { |
| PomTestWrapper pom = this.buildPom("plugin-inheritance-simple/sub"); |
| assertEquals(2, ((List<?>) pom.getValue("build/plugins")).size()); |
| } |
| |
| @Test |
| void testPluginManagementDuplicate() throws Exception { |
| PomTestWrapper pom = this.buildPom("plugin-management-duplicate/sub"); |
| assertEquals(7, ((List<?>) pom.getValue("build/pluginManagement/plugins")).size()); |
| } |
| |
| @Test |
| void testDistributionManagement() throws Exception { |
| PomTestWrapper pom = this.buildPom("distribution-management"); |
| assertEquals("legacy", pom.getValue("distributionManagement/repository/layout")); |
| } |
| |
| @Test |
| void testDependencyScopeInheritance() throws Exception { |
| PomTestWrapper pom = buildPom("dependency-scope-inheritance/sub"); |
| String scope = (String) pom.getValue("dependencies[1]/scope"); |
| assertEquals("compile", scope); |
| } |
| |
| @Test |
| void testDependencyScope() throws Exception { |
| buildPom("dependency-scope/sub"); |
| } |
| |
| // This will fail on a validation error if incorrect |
| public void testDependencyManagementWithInterpolation() throws Exception { |
| buildPom("dependency-management-with-interpolation/sub"); |
| } |
| |
| @Test |
| void testInterpolationWithSystemProperty() throws Exception { |
| Properties sysProps = new Properties(); |
| sysProps.setProperty("system.property", "PASSED"); |
| PomTestWrapper pom = buildPom("system-property-interpolation", sysProps, null); |
| assertEquals("PASSED", pom.getValue("name")); |
| } |
| |
| /* MNG-4129 */ |
| @Test |
| void testPluginExecutionInheritanceWhenChildDoesNotDeclarePlugin() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-inheritance/wo-merge"); |
| @SuppressWarnings("unchecked") |
| List<PluginExecution> executions = (List<PluginExecution>) pom.getValue( |
| "build/pluginsAsMap[@name='org.apache.maven.its.plugins:maven-it-plugin-log-file']/executions"); |
| assertEquals(1, executions.size()); |
| assertEquals("inherited-execution", executions.get(0).getId()); |
| } |
| |
| @Test |
| void testPluginExecutionInheritanceWhenChildDoesDeclarePluginAsWell() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-inheritance/w-merge"); |
| @SuppressWarnings("unchecked") |
| List<PluginExecution> executions = (List<PluginExecution>) pom.getValue( |
| "build/pluginsAsMap[@name='org.apache.maven.its.plugins:maven-it-plugin-log-file']/executions"); |
| assertEquals(1, executions.size()); |
| assertEquals("inherited-execution", executions.get(0).getId()); |
| } |
| |
| /* MNG-4193 */ |
| @Test |
| void testValidationErrorUponNonUniqueArtifactRepositoryId() throws Exception { |
| assertThrows( |
| ProjectBuildingException.class, |
| () -> buildPom("unique-repo-id/artifact-repo"), |
| "Non-unique repository ids did not cause validation error"); |
| } |
| |
| /* MNG-4193 */ |
| @Test |
| void testValidationErrorUponNonUniquePluginRepositoryId() throws Exception { |
| assertThrows( |
| ProjectBuildingException.class, |
| () -> buildPom("unique-repo-id/plugin-repo"), |
| "Non-unique repository ids did not cause validation error"); |
| } |
| |
| /* MNG-4193 */ |
| @Test |
| void testValidationErrorUponNonUniqueArtifactRepositoryIdInProfile() throws Exception { |
| assertThrows( |
| ProjectBuildingException.class, |
| () -> buildPom("unique-repo-id/artifact-repo-in-profile"), |
| "Non-unique repository ids did not cause validation error"); |
| } |
| |
| /* MNG-4193 */ |
| @Test |
| void testValidationErrorUponNonUniquePluginRepositoryIdInProfile() throws Exception { |
| assertThrows( |
| ProjectBuildingException.class, |
| () -> buildPom("unique-repo-id/plugin-repo-in-profile"), |
| "Non-unique repository ids did not cause validation error"); |
| } |
| |
| /** MNG-3843 */ |
| @Test |
| void testPrerequisitesAreNotInherited() throws Exception { |
| PomTestWrapper pom = buildPom("prerequisites-inheritance/child"); |
| assertSame(null, pom.getValue("prerequisites")); |
| } |
| |
| @Test |
| void testLicensesAreInheritedButNotAggregated() throws Exception { |
| PomTestWrapper pom = buildPom("licenses-inheritance/child-2"); |
| assertEquals(1, ((List<?>) pom.getValue("licenses")).size()); |
| assertEquals("child-license", pom.getValue("licenses[1]/name")); |
| assertEquals("https://child.url/license", pom.getValue("licenses[1]/url")); |
| } |
| |
| @Test |
| void testDevelopersAreInheritedButNotAggregated() throws Exception { |
| PomTestWrapper pom = buildPom("developers-inheritance/child-2"); |
| assertEquals(1, ((List<?>) pom.getValue("developers")).size()); |
| assertEquals("child-developer", pom.getValue("developers[1]/name")); |
| } |
| |
| @Test |
| void testContributorsAreInheritedButNotAggregated() throws Exception { |
| PomTestWrapper pom = buildPom("contributors-inheritance/child-2"); |
| assertEquals(1, ((List<?>) pom.getValue("contributors")).size()); |
| assertEquals("child-contributor", pom.getValue("contributors[1]/name")); |
| } |
| |
| @Test |
| void testMailingListsAreInheritedButNotAggregated() throws Exception { |
| PomTestWrapper pom = buildPom("mailing-lists-inheritance/child-2"); |
| assertEquals(1, ((List<?>) pom.getValue("mailingLists")).size()); |
| assertEquals("child-mailing-list", pom.getValue("mailingLists[1]/name")); |
| } |
| |
| @Test |
| void testPluginInheritanceOrder() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-inheritance-order/child"); |
| |
| assertEquals("maven-it-plugin-log-file", pom.getValue("build/plugins[1]/artifactId")); |
| assertEquals("maven-it-plugin-expression", pom.getValue("build/plugins[2]/artifactId")); |
| assertEquals("maven-it-plugin-configuration", pom.getValue("build/plugins[3]/artifactId")); |
| |
| assertEquals("maven-it-plugin-log-file", pom.getValue("reporting/plugins[1]/artifactId")); |
| assertEquals("maven-it-plugin-expression", pom.getValue("reporting/plugins[2]/artifactId")); |
| assertEquals("maven-it-plugin-configuration", pom.getValue("reporting/plugins[3]/artifactId")); |
| } |
| |
| @Test |
| void testCliPropsDominateProjectPropsDuringInterpolation() throws Exception { |
| Properties props = new Properties(); |
| props.setProperty("testProperty", "PASSED"); |
| PomTestWrapper pom = buildPom("interpolation-cli-wins", null, props); |
| |
| assertEquals("PASSED", pom.getValue("properties/interpolatedProperty")); |
| } |
| |
| @Test |
| void testParentPomPackagingMustBePom() throws Exception { |
| assertThrows( |
| ProjectBuildingException.class, |
| () -> buildPom("parent-pom-packaging/sub"), |
| "Wrong packaging of parent POM was not rejected"); |
| } |
| |
| /** MNG-522, MNG-3018 */ |
| @Test |
| void testManagedPluginConfigurationAppliesToImplicitPluginsIntroducedByPackaging() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-management-for-implicit-plugin/child"); |
| assertEquals( |
| "passed.txt", |
| pom.getValue("build/plugins[@artifactId='maven-resources-plugin']/configuration/pathname")); |
| assertEquals( |
| "passed.txt", |
| pom.getValue("build/plugins[@artifactId='maven-it-plugin-log-file']/configuration/logFile")); |
| } |
| |
| @Test |
| void testDefaultPluginsExecutionContributedByPackagingExecuteBeforeUserDefinedExecutions() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-order-and-default-exec"); |
| @SuppressWarnings("unchecked") |
| List<PluginExecution> executions = |
| (List<PluginExecution>) pom.getValue("build/plugins[@artifactId='maven-resources-plugin']/executions"); |
| assertNotNull(executions); |
| assertEquals(4, executions.size()); |
| assertEquals("default-resources", executions.get(0).getId()); |
| assertEquals("default-testResources", executions.get(1).getId()); |
| assertEquals("test-1", executions.get(2).getId()); |
| assertEquals("test-2", executions.get(3).getId()); |
| } |
| |
| @Test |
| void testPluginDeclarationsRetainPomOrderAfterInjectionOfDefaultPlugins() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-exec-order-with-lifecycle"); |
| @SuppressWarnings("unchecked") |
| List<Plugin> plugins = (List<Plugin>) pom.getValue("build/plugins"); |
| int resourcesPlugin = -1; |
| int customPlugin = -1; |
| for (int i = 0; i < plugins.size(); i++) { |
| Plugin plugin = plugins.get(i); |
| if ("maven-resources-plugin".equals(plugin.getArtifactId())) { |
| assertThat(resourcesPlugin, lessThan(0)); |
| resourcesPlugin = i; |
| } else if ("maven-it-plugin-log-file".equals(plugin.getArtifactId())) { |
| assertThat(customPlugin, lessThan(0)); |
| customPlugin = i; |
| } |
| } |
| assertEquals(customPlugin, resourcesPlugin - 1, plugins.toString()); |
| } |
| |
| /** MNG-4415 */ |
| @Test |
| void testPluginOrderAfterMergingWithInheritedPlugins() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-inheritance-merge-order/sub"); |
| |
| List<String> expected = new ArrayList<>(); |
| expected.add("maven-it-plugin-error"); |
| expected.add("maven-it-plugin-configuration"); |
| expected.add("maven-it-plugin-dependency-resolution"); |
| expected.add("maven-it-plugin-packaging"); |
| expected.add("maven-it-plugin-log-file"); |
| expected.add("maven-it-plugin-expression"); |
| expected.add("maven-it-plugin-fork"); |
| expected.add("maven-it-plugin-touch"); |
| |
| List<String> actual = new ArrayList<>(); |
| @SuppressWarnings("unchecked") |
| List<Plugin> plugins = (List<Plugin>) pom.getValue("build/plugins"); |
| for (Plugin plugin : plugins) { |
| actual.add(plugin.getArtifactId()); |
| } |
| |
| actual.retainAll(expected); |
| |
| assertEquals(actual, expected); |
| } |
| |
| /** MNG-4416 */ |
| @Test |
| void testPluginOrderAfterMergingWithInjectedPlugins() throws Exception { |
| PomTestWrapper pom = buildPom("plugin-injection-merge-order"); |
| |
| List<String> expected = new ArrayList<>(); |
| expected.add("maven-it-plugin-error"); |
| expected.add("maven-it-plugin-configuration"); |
| expected.add("maven-it-plugin-dependency-resolution"); |
| expected.add("maven-it-plugin-packaging"); |
| expected.add("maven-it-plugin-log-file"); |
| expected.add("maven-it-plugin-expression"); |
| expected.add("maven-it-plugin-fork"); |
| expected.add("maven-it-plugin-touch"); |
| |
| List<String> actual = new ArrayList<>(); |
| @SuppressWarnings("unchecked") |
| List<Plugin> plugins = (List<Plugin>) pom.getValue("build/plugins"); |
| for (Plugin plugin : plugins) { |
| actual.add(plugin.getArtifactId()); |
| } |
| |
| actual.retainAll(expected); |
| |
| assertEquals(actual, expected); |
| } |
| |
| @Test |
| void testProjectArtifactIdIsNotInheritedButMandatory() throws Exception { |
| assertThrows( |
| ProjectBuildingException.class, |
| () -> buildPom("artifact-id-inheritance/child"), |
| "Missing artifactId did not cause validation error"); |
| } |
| |
| private void assertPathSuffixEquals(String expected, Object actual) { |
| String a = actual.toString(); |
| a = a.substring(a.length() - expected.length()).replace('\\', '/'); |
| assertEquals(expected, a); |
| } |
| |
| private void assertPathWithNormalizedFileSeparators(Object value) { |
| assertEquals(new File(value.toString()).getPath(), value.toString()); |
| } |
| |
| private PomTestWrapper buildPom(String pomPath, String... profileIds) throws Exception { |
| return buildPom(pomPath, null, null, profileIds); |
| } |
| |
| private PomTestWrapper buildPom( |
| String pomPath, Properties systemProperties, Properties userProperties, String... profileIds) |
| throws Exception { |
| return buildPom(pomPath, false, systemProperties, userProperties, profileIds); |
| } |
| |
| private PomTestWrapper buildPom( |
| String pomPath, |
| boolean lenientValidation, |
| Properties systemProperties, |
| Properties userProperties, |
| String... profileIds) |
| throws Exception { |
| File pomFile = new File(testDirectory, pomPath); |
| if (pomFile.isDirectory()) { |
| pomFile = new File(pomFile, "pom.xml"); |
| } |
| |
| ProjectBuildingRequest config = new DefaultProjectBuildingRequest(); |
| |
| String localRepoUrl = |
| System.getProperty("maven.repo.local", System.getProperty("user.home") + "/.m2/repository"); |
| localRepoUrl = "file://" + localRepoUrl; |
| config.setLocalRepository(repositorySystem.createArtifactRepository( |
| "local", localRepoUrl, new DefaultRepositoryLayout(), null, null)); |
| config.setActiveProfileIds(Arrays.asList(profileIds)); |
| config.setSystemProperties(systemProperties); |
| config.setUserProperties(userProperties); |
| config.setValidationLevel( |
| lenientValidation |
| ? ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 |
| : ModelBuildingRequest.VALIDATION_LEVEL_STRICT); |
| |
| DefaultRepositorySystemSession repoSession = MavenRepositorySystemUtils.newSession(); |
| LocalRepository localRepo = |
| new LocalRepository(config.getLocalRepository().getBasedir()); |
| repoSession.setLocalRepositoryManager( |
| new SimpleLocalRepositoryManagerFactory().newInstance(repoSession, localRepo)); |
| config.setRepositorySession(repoSession); |
| |
| return new PomTestWrapper(pomFile, projectBuilder.build(pomFile, config).getProject()); |
| } |
| |
| protected void assertModelEquals(PomTestWrapper pom, Object expected, String expression) { |
| assertEquals(expected, pom.getValue(expression)); |
| } |
| |
| private static String createPath(List<String> elements) { |
| StringBuilder buffer = new StringBuilder(256); |
| for (String s : elements) { |
| buffer.append(s).append(File.separator); |
| } |
| return buffer.toString().substring(0, buffer.toString().length() - 1); |
| } |
| } |