You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2017/01/31 17:06:56 UTC

[1/4] maven-integration-testing git commit: [MNG-2199] Support version ranges in parent elements [Forced Update!]

Repository: maven-integration-testing
Updated Branches:
  refs/heads/DEPMGMT-IMPORT 414afe457 -> 11c330f9c (forced update)


[MNG-2199] Support version ranges in parent elements

o Updated the ITs to correctly detect parent resolution failures. Maven does
  not fail the build when it cannot resolve a parent but instead logs a
  warning message. The ITs never checked the log to contain the warning messages
  but instead asserted the build to fail when a parent cannot be resolved.
  The only Maven version supporting parent version ranges is Maven 3.2.2 due to
  this.
o Deprecated an incorrect test case for local parent resolution. Maven ignored
  the '<version>' in '<parent>' elements for local parent resolution. The core
  has been updated across various versions to eliminate any differences between
  local and remote parent resolution. When local parent resolution had been
  updated to match remote parent resolution, an existing IT started to fail
  testing incorrect behaviour. As soon as the '<parent>' is referenced using a
  version range, the '<version>' element in the project becomes mandatory and
  does no longer support using an expression any more. This has been that way
  for remote parent resolution from day one. It has never been supported to
  inherit a version from a parent when referencing that parent using a version
  range intentionally.
o Updated to account for updated error messages.


Project: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/commit/2348fbc3
Tree: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/tree/2348fbc3
Diff: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/diff/2348fbc3

Branch: refs/heads/DEPMGMT-IMPORT
Commit: 2348fbc31805560fdd6e1a68dbf7b52e00e0e992
Parents: 63bb518
Author: Christian Schulte <sc...@apache.org>
Authored: Sat Dec 12 19:25:15 2015 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Mon Jan 30 19:11:48 2017 +0100

----------------------------------------------------------------------
 .../apache/maven/it/IntegrationTestSuite.java   |   2 +
 ...mng2199DeprecatedParentVersionRangeTest.java |  65 ++++++
 ...MavenITmng2199ParentVersionRange350Test.java | 199 +++++++++++++++++++
 .../MavenITmng2199ParentVersionRangeTest.java   |  98 +++++----
 .../expression-local/child/pom.xml              |  12 ++
 .../expression-local/pom.xml                    |  10 +
 .../inherited-local/child/pom.xml               |  11 +
 .../inherited-local/pom.xml                     |  10 +
 .../invalid-local/child/pom.xml                 |  12 ++
 .../invalid-local/pom.xml                       |  10 +
 .../local-fallback-to-remote/child/pom.xml      |  18 ++
 .../local-fallback-to-remote/pom.xml            |   8 +
 .../valid-local/child/pom.xml                   |  11 +
 .../valid-local/pom.xml                         |  10 +
 14 files changed, 433 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
index a91eeb0..1f83b1f 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
@@ -123,6 +123,8 @@ public class IntegrationTestSuite
         suite.addTestSuite( MavenITmng5663NestedImportScopePomResolutionTest.class );
         suite.addTestSuite( MavenITmng2562Timestamp322Test.class );
         suite.addTestSuite( MavenITmng2199ParentVersionRangeTest.class );
+        suite.addTestSuite( MavenITmng2199ParentVersionRange350Test.class );
+        suite.addTestSuite( MavenITmng2199DeprecatedParentVersionRangeTest.class );
         suite.addTestSuite( MavenITmng5640LifecycleParticipantAfterSessionEnd.class );
         suite.addTestSuite( MavenITmng5639ImportScopePomResolutionTest.class );
         suite.addTestSuite( MavenITmng5608ProfileActivationWarningTest.class );

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199DeprecatedParentVersionRangeTest.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199DeprecatedParentVersionRangeTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199DeprecatedParentVersionRangeTest.java
new file mode 100644
index 0000000..8cf74a9
--- /dev/null
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199DeprecatedParentVersionRangeTest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.it;
+
+import java.io.File;
+import org.apache.maven.it.util.ResourceExtractor;
+
+@Deprecated
+public class MavenITmng2199DeprecatedParentVersionRangeTest
+    extends AbstractMavenIntegrationTestCase
+{
+
+    public MavenITmng2199DeprecatedParentVersionRangeTest()
+    {
+        // This test originally declared [3.2.2,) as the range although the project is not supported by that version.
+        // The first version supporting such projects is Maven 3.3.0 and that is not by design. Commit
+        // be3fb200326208ca4b8c41ebf16d5ae6b8049792 removed all version validation logic from local parent resolution.
+        // This is the only reason this test succeeds with Maven >= 3.3.0. You could have left out the parent version
+        // element completely and the test still succeeds with 3.3.0 <= Maven < 3.5.0. It never should have. Local
+        // parent version validation logic had been re-added in 3.3.4, then reviewed in 3.3.6 (still supporting such
+        // projects) and then finally made consistent to remote parent resolution in 3.5.0 which stops such projects
+        // from being supported again as it was the case in any Maven version prior 3.3.0.
+        super( "[3.3.0,3.3.9]" );
+    }
+
+    public void testBrokenProjectSilentlyProcessedUpToVerify()
+        throws Exception
+    {
+        // This test isn't actually testing anything version range related.
+        Verifier verifier = null;
+        File testDir =
+            ResourceExtractor.simpleExtractResources( getClass(), "/mng-2199-parent-version-range/local-parent" );
+
+        try
+        {
+            verifier = newVerifier( testDir.getAbsolutePath(), "remote" );
+            verifier.addCliOption( "-U" );
+            verifier.setAutoclean( false );
+
+            verifier.executeGoal( "verify" );
+            verifier.verifyErrorFreeLog();
+        }
+        finally
+        {
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRange350Test.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRange350Test.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRange350Test.java
new file mode 100644
index 0000000..070db37
--- /dev/null
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRange350Test.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.it;
+
+import java.io.File;
+import java.util.List;
+import java.util.regex.Pattern;
+import org.apache.maven.it.util.ResourceExtractor;
+
+public class MavenITmng2199ParentVersionRange350Test
+    extends AbstractMavenIntegrationTestCase
+{
+
+    public MavenITmng2199ParentVersionRange350Test()
+    {
+        super( "[3.5.0,)" );
+    }
+
+    public void testValidLocalParentVersionRange()
+        throws Exception
+    {
+        Verifier verifier = null;
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/valid-local/child" );
+
+        try
+        {
+            verifier = newVerifier( testDir.getAbsolutePath() );
+            verifier.executeGoal( "verify" );
+            verifier.verifyErrorFreeLog();
+
+            // All Maven versions not supporting remote parent version ranges will log a warning message whenever
+            // building a parent fails. The build succeeds without any parent. If that warning message appears in the
+            // log, parent resolution failed. For this test, this really just tests the project on disk getting tested
+            // is not corrupt. It's expected to find the local parent and not fall back to remote resolution. If it
+            // falls back to remote resolution, this just catches the test project to be broken.
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            assertFalse( "Unxpected error message found.",
+                         indexOf( lines, ".*Failed to build parent project.*" ) >= 0 );
+
+        }
+        finally
+        {
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
+        }
+    }
+
+    public void testInvalidLocalParentVersionRange()
+        throws Exception
+    {
+        // Fallback to remote resolution not tested here. Remote parent expected to not be available anywhere.
+        Verifier verifier = null;
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/invalid-local/child" );
+
+        try
+        {
+            verifier = newVerifier( testDir.getAbsolutePath() );
+            verifier.executeGoal( "verify" );
+            fail( "Expected 'VerificationException' not thrown." );
+        }
+        catch ( final VerificationException e )
+        {
+            assertNotNull( verifier );
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            int msg = indexOf( lines, ".*Non-resolvable parent POM org.apache.maven.its.mng2199:local-parent:\\[2,3\\].*" );
+            assertTrue( "Expected error message not found.", msg >= 0 );
+        }
+        finally
+        {
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
+        }
+    }
+
+    public void testInvalidLocalParentVersionRangeFallingBackToRemote()
+        throws Exception
+    {
+        Verifier verifier = null;
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/local-fallback-to-remote/child" );
+
+        try
+        {
+            verifier = newVerifier( testDir.getAbsolutePath(), "remote" );
+            verifier.executeGoal( "verify" );
+            verifier.verifyErrorFreeLog();
+
+            // All Maven versions not supporting remote parent version ranges will log a warning message whenever
+            // building a parent fails. The build succeeds without any parent. If that warning message appears in the
+            // log, parent resolution failed. For this test, local parent resolution falls back to remote parent
+            // resolution with a version range in use. If the warning message is in the logs, that remote parent
+            // resolution failed unexpectedly.
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            assertFalse( "Unxpected error message found.",
+                         indexOf( lines, ".*Failed to build parent project.*" ) >= 0 );
+
+        }
+        finally
+        {
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
+        }
+    }
+
+    public void testValidLocalParentVersionRangeInvalidVersionExpression()
+        throws Exception
+    {
+        Verifier verifier = null;
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/expression-local/child" );
+
+        try
+        {
+            verifier = newVerifier( testDir.getAbsolutePath() );
+            verifier.executeGoal( "verify" );
+            fail( "Expected 'VerificationException' not thrown." );
+        }
+        catch ( final VerificationException e )
+        {
+            assertNotNull( verifier );
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            int msg = indexOf( lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:expression.*" );
+            assertTrue( "Expected error message not found.", msg >= 0 );
+        }
+        finally
+        {
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
+        }
+    }
+
+    public void testValidLocalParentVersionRangeInvalidVersionInheritance()
+        throws Exception
+    {
+        Verifier verifier = null;
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/inherited-local/child" );
+
+        try
+        {
+            verifier = newVerifier( testDir.getAbsolutePath() );
+            verifier.executeGoal( "verify" );
+            fail( "Expected 'VerificationException' not thrown." );
+        }
+        catch ( final VerificationException e )
+        {
+            assertNotNull( verifier );
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            int msg = indexOf( lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:inherited.*" );
+            assertTrue( "Expected error message not found.", msg >= 0 );
+        }
+        finally
+        {
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
+        }
+    }
+
+    private static int indexOf( final List<String> logLines, final String regex )
+    {
+        final Pattern pattern = Pattern.compile( regex );
+
+        for ( int i = 0, l0 = logLines.size(); i < l0; i++ )
+        {
+            if ( pattern.matcher( logLines.get( i ) ).matches() )
+            {
+                return i;
+            }
+        }
+
+        return -1;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
index 16ac91c..d6bfdf9 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
@@ -33,7 +33,9 @@ public class MavenITmng2199ParentVersionRangeTest
         throws Exception
     {
         Verifier verifier = null;
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-2199-parent-version-range/valid-inclusive-upper-bound" );
+        File testDir =
+            ResourceExtractor.simpleExtractResources( getClass(),
+                                                      "/mng-2199-parent-version-range/valid-inclusive-upper-bound" );
 
         try
         {
@@ -43,10 +45,21 @@ public class MavenITmng2199ParentVersionRangeTest
 
             verifier.executeGoal( "verify" );
             verifier.verifyErrorFreeLog();
+
+            // All Maven versions not supporting remote parent version ranges will log a warning message whenever
+            // building a parent fails. The build succeeds without any parent. If that warning message appears in the
+            // log, parent resolution failed.
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            assertFalse( "Unxpected error message found.",
+                         indexOf( lines, ".*Failed to build parent project.*" ) >= 0 );
+
         }
         finally
         {
-            verifier.resetStreams();
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
         }
     }
 
@@ -54,7 +67,8 @@ public class MavenITmng2199ParentVersionRangeTest
         throws Exception
     {
         Verifier verifier = null;
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-2199-parent-version-range/valid-exclusive-upper-bound" );
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/valid-exclusive-upper-bound" );
 
         try
         {
@@ -64,14 +78,25 @@ public class MavenITmng2199ParentVersionRangeTest
 
             verifier.executeGoal( "verify" );
             verifier.verifyErrorFreeLog();
+
+            // All Maven versions not supporting remote parent version ranges will log a warning message whenever
+            // building a parent fails. The build succeeds without any parent. If that warning message appears in the
+            // log, parent resolution failed.
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            assertFalse( "Unxpected error message found.",
+                         indexOf( lines, ".*Failed to build parent project.*" ) >= 0 );
+
         }
         finally
         {
-            verifier.resetStreams();
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
         }
     }
 
-    public void testInvalidParentVersionRange()
+    public void testInvalidParentVersionRangeWithoutUpperBound()
         throws Exception
     {
         Verifier verifier = null;
@@ -87,13 +112,18 @@ public class MavenITmng2199ParentVersionRangeTest
         }
         catch ( final VerificationException e )
         {
+            assertNotNull( verifier );
             final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
-            int msg = indexOf( lines, ".*The requested version range.*does not specify an upper bound.*" );
-            assertTrue( "Expected error message not found.", msg >= 0 );
+            assertTrue( "Expected error message not found.",
+                        indexOf( lines, ".*(parent)? version range.*does not specify an upper bound.*" ) >= 0 );
+
         }
         finally
         {
-            verifier.resetStreams();
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
         }
     }
 
@@ -101,8 +131,8 @@ public class MavenITmng2199ParentVersionRangeTest
         throws Exception
     {
         Verifier verifier = null;
-        File testDir =
-            ResourceExtractor.simpleExtractResources( getClass(), "/mng-2199-parent-version-range/expression" );
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/expression" );
 
         try
         {
@@ -114,16 +144,17 @@ public class MavenITmng2199ParentVersionRangeTest
         }
         catch ( final VerificationException e )
         {
+            assertNotNull( verifier );
             final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
-            int msg =
-                indexOf( lines,
-                         ".*Version must be a constant @ org.apache.maven.its.mng2199:expression:\\$\\{project.parent.version\\}.*" );
-
+            int msg = indexOf( lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:expression.*" );
             assertTrue( "Expected error message not found.", msg >= 0 );
         }
         finally
         {
-            verifier.resetStreams();
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
         }
     }
 
@@ -131,8 +162,8 @@ public class MavenITmng2199ParentVersionRangeTest
         throws Exception
     {
         Verifier verifier = null;
-        File testDir =
-            ResourceExtractor.simpleExtractResources( getClass(), "/mng-2199-parent-version-range/inherited" );
+        File testDir = ResourceExtractor.simpleExtractResources(
+            getClass(), "/mng-2199-parent-version-range/inherited" );
 
         try
         {
@@ -144,37 +175,17 @@ public class MavenITmng2199ParentVersionRangeTest
         }
         catch ( final VerificationException e )
         {
+            assertNotNull( verifier );
             final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
-            int msg =
-                indexOf( lines,
-                         ".*Version must be a constant @ org.apache.maven.its.mng2199:inherited:\\[unknown-version\\].*" );
-
+            int msg = indexOf( lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:inherited.*" );
             assertTrue( "Expected error message not found.", msg >= 0 );
         }
         finally
         {
-            verifier.resetStreams();
-        }
-    }
-
-    public void testValidLocalParentVersionRange()
-        throws Exception
-    {
-        Verifier verifier = null;
-        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-2199-parent-version-range/local-parent" );
-
-        try
-        {
-            verifier = newVerifier( testDir.getAbsolutePath(), "remote" );
-            verifier.addCliOption( "-U" );
-            verifier.setAutoclean( false );
-
-            verifier.executeGoal( "verify" );
-            verifier.verifyErrorFreeLog();
-        }
-        finally
-        {
-            verifier.resetStreams();
+            if ( verifier != null )
+            {
+                verifier.resetStreams();
+            }
         }
     }
 
@@ -192,4 +203,5 @@ public class MavenITmng2199ParentVersionRangeTest
 
         return -1;
     }
+
 }

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml
new file mode 100644
index 0000000..39a2210
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/child/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <parent>
+    <groupId>org.apache.maven.its.mng2199</groupId>
+    <artifactId>local-parent</artifactId>
+    <version>[1,2]</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>expression</artifactId>
+  <!-- Must not use expressions, when using version ranges. -->
+  <version>${project.parent.version}</version>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/pom.xml
new file mode 100644
index 0000000..dfa12d6
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/expression-local/pom.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng2199</groupId>
+  <artifactId>local-parent</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-2199 :: Invalid Local Version Expression</name>
+  <description>Verifies that the build fails when using a parent version range in combination with a version expression for local parent resolution.</description>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml
new file mode 100644
index 0000000..9d54edd
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/child/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <parent>
+    <groupId>org.apache.maven.its.mng2199</groupId>
+    <artifactId>local-parent</artifactId>
+    <version>[1,2]</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>inherited</artifactId>
+  <!-- Must not inherit version, when using version ranges. -->
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/pom.xml
new file mode 100644
index 0000000..bcf66bf
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/inherited-local/pom.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng2199</groupId>
+  <artifactId>local-parent</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-2199 :: Invalid Local Version Inheritance</name>
+  <description>Verifies that the build fails when using a parent version range in combination with an inherited version.</description>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml
new file mode 100644
index 0000000..d9498d5
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/child/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <parent>
+    <groupId>org.apache.maven.its.mng2199</groupId>
+    <artifactId>local-parent</artifactId>
+    <!-- Not available anywhere. Not on disk, not in repository. -->
+    <version>[2,3]</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>invalid</artifactId>
+  <version>1</version>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/pom.xml
new file mode 100644
index 0000000..4e646fc
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/invalid-local/pom.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng2199</groupId>
+  <artifactId>local-parent</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-2199 :: Invalid Local Parent Version</name>
+  <description>Verifies that the build fails when using a parent version range not matching what is on disk (fallback to remote is not tested here - the parent does not exist anywhere but on disk).</description>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/child/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/child/pom.xml
new file mode 100644
index 0000000..346df47
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/child/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <!-- Not found on disk, but available remotely. -->
+    <version>[1,15)</version>
+  </parent>
+  <groupId>org.apache.maven.its.mng2199</groupId>
+  <artifactId>valid</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+
+  <name>Maven Integration Test :: MNG-2199 :: Valid POM</name>
+  <description>Verifies that the build succeeds by falling back to remote parent resolution when the local parent does not mach the range.</description>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/pom.xml
new file mode 100644
index 0000000..fa4eb52
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-fallback-to-remote/pom.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache</groupId>
+  <artifactId>apache</artifactId>
+  <version>DOES NOT EXIST</version>
+  <packaging>pom</packaging>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml
new file mode 100644
index 0000000..e61f908
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/child/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <parent>
+    <groupId>org.apache.maven.its.mng2199</groupId>
+    <artifactId>local-parent</artifactId>
+    <version>[1,2]</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>valid</artifactId>
+  <version>3.4.5</version>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2348fbc3/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/pom.xml b/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/pom.xml
new file mode 100644
index 0000000..559f3ae
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-2199-parent-version-range/valid-local/pom.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.its.mng2199</groupId>
+  <artifactId>local-parent</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+  <name>Maven Integration Test :: MNG-2199 :: Valid Local Parent Version Range</name>
+  <description>Verifies that the build succeeds when using a parent version range for local parent resolution.</description>
+</project>


[4/4] maven-integration-testing git commit: [MNG-5527] Dependency management import should support relocations.

Posted by sc...@apache.org.
[MNG-5527] Dependency management import should support relocations.


Project: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/commit/c49207cb
Tree: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/tree/c49207cb
Diff: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/diff/c49207cb

Branch: refs/heads/DEPMGMT-IMPORT
Commit: c49207cb2626168d5e24d9eb8b037ba7bbd04a3c
Parents: 2b4f196
Author: Christian Schulte <sc...@apache.org>
Authored: Wed Jun 22 17:41:42 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Tue Jan 31 18:05:47 2017 +0100

----------------------------------------------------------------------
 .../apache/maven/it/IntegrationTestSuite.java   |  1 +
 ...pendencyManagementImportRelocationsTest.java | 74 ++++++++++++++++++++
 .../test/resources/mng-5527/relocations/pom.xml | 72 +++++++++++++++++++
 .../its/mng5527/relocated1/bom/0/bom-0.pom      | 48 +++++++++++++
 .../its/mng5527/relocated2/bom/0/bom-0.pom      | 48 +++++++++++++
 .../its/mng5527/relocated3/bom/0/bom-0.pom      | 39 +++++++++++
 .../resources/mng-5527/settings-template.xml    | 43 ++++++++++++
 7 files changed, 325 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
index 41d2419..f0a5314 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
@@ -106,6 +106,7 @@ public class IntegrationTestSuite
         // -------------------------------------------------------------------------------------------------------------
         // suite.addTestSuite( MavenIT0108SnapshotUpdateTest.class ); -- MNG-3137
 
+        suite.addTestSuite( MavenITmng5527DependencyManagementImportRelocationsTest.class );
         suite.addTestSuite( MavenITmng4463DependencyManagementImportVersionRanges.class );
         suite.addTestSuite( MavenITmng5958LifecyclePhaseBinaryCompat.class );
         suite.addTestSuite( MavenITmng5898BuildMultimoduleWithEARFailsToResolveWARTest.class );

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5527DependencyManagementImportRelocationsTest.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5527DependencyManagementImportRelocationsTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5527DependencyManagementImportRelocationsTest.java
new file mode 100644
index 0000000..aac31d3
--- /dev/null
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5527DependencyManagementImportRelocationsTest.java
@@ -0,0 +1,74 @@
+package org.apache.maven.it;
+
+/*
+ * 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.
+ */
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.maven.it.util.ResourceExtractor;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * [MNG-5527] Dependency management import should support relocations.
+ *
+ * @author Christian Schulte
+ */
+public class MavenITmng5527DependencyManagementImportRelocationsTest
+    extends AbstractMavenIntegrationTestCase
+{
+
+    public MavenITmng5527DependencyManagementImportRelocationsTest()
+    {
+        super( "[3.5.1,)" );
+    }
+
+    public void testCanRelocateDependencyManagementImport()
+        throws Exception
+    {
+        final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-5527/relocations" );
+
+        final Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        verifier.setAutoclean( false );
+        verifier.filterFile( "../settings-template.xml", "settings.xml", "UTF-8",
+                             (Map) verifier.newDefaultFilterProperties() );
+
+        verifier.addCliOption( "-s" );
+        verifier.addCliOption( "settings.xml" );
+        verifier.executeGoals( Arrays.asList( new String[]
+        {
+            "clean", "verify"
+        } ) );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        verifier.verifyTextInLog( "LEVEL_1" );
+        verifier.verifyTextInLog( "LEVEL_2" );
+
+        final Properties properties = verifier.loadProperties( "target/project.properties" );
+        assertEquals( "1", properties.getProperty( "project.dependencyManagement.dependencies" ) );
+        assertEquals( "group-id-to-import:artifact-id-to-import:jar",
+                      properties.getProperty( "project.dependencyManagement.dependencies.0.managementKey" ) );
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/resources/mng-5527/relocations/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5527/relocations/pom.xml b/core-it-suite/src/test/resources/mng-5527/relocations/pom.xml
new file mode 100644
index 0000000..822f1cf
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5527/relocations/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng5527</groupId>
+  <artifactId>0</artifactId>
+  <version>2016062</version>
+  <packaging>pom</packaging>
+
+  <name>Maven Integration Test :: MNG-5527</name>
+
+  <description>
+    Tests that dependency management import relocations are supported.
+  </description>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven.its.mng5527.relocated1</groupId>
+        <artifactId>bom</artifactId>
+        <version>0</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <phase>verify</phase>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <configuration>
+              <expressions>
+                <expression>project/dependencyManagement</expression>
+              </expressions>
+              <outputFile>${project.build.directory}/project.properties</outputFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated1/bom/0/bom-0.pom
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated1/bom/0/bom-0.pom b/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated1/bom/0/bom-0.pom
new file mode 100644
index 0000000..9fd2234
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated1/bom/0/bom-0.pom
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng5527.relocated1</groupId>
+  <artifactId>bom</artifactId>
+  <version>0</version>
+  <packaging>pom</packaging>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>level1-group-id-must-not-be-imported</groupId>
+        <artifactId>level1-artifact-id-must-not-be-imported</artifactId>
+        <version>level1-version-must-not-be-imported</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <distributionManagement>
+    <relocation>
+      <groupId>org.apache.maven.its.mng5527.relocated2</groupId>
+      <artifactId>bom</artifactId>
+      <version>0</version>
+      <message>LEVEL_1</message>
+    </relocation>
+  </distributionManagement>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated2/bom/0/bom-0.pom
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated2/bom/0/bom-0.pom b/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated2/bom/0/bom-0.pom
new file mode 100644
index 0000000..cc5aa27
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated2/bom/0/bom-0.pom
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng5527.relocated2</groupId>
+  <artifactId>bom</artifactId>
+  <version>0</version>
+  <packaging>pom</packaging>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>level2-group-id-must-not-be-imported</groupId>
+        <artifactId>level2-artifact-id-must-not-be-imported</artifactId>
+        <version>level2-version-must-not-be-imported</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <distributionManagement>
+    <relocation>
+      <groupId>org.apache.maven.its.mng5527.relocated3</groupId>
+      <artifactId>bom</artifactId>
+      <version>0</version>
+      <message>LEVEL_2</message>
+    </relocation>
+  </distributionManagement>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated3/bom/0/bom-0.pom
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated3/bom/0/bom-0.pom b/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated3/bom/0/bom-0.pom
new file mode 100644
index 0000000..35c729e
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5527/repo/org/apache/maven/its/mng5527/relocated3/bom/0/bom-0.pom
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng5527.relocated3</groupId>
+  <artifactId>bom</artifactId>
+  <version>0</version>
+  <packaging>pom</packaging>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>group-id-to-import</groupId>
+        <artifactId>artifact-id-to-import</artifactId>
+        <version>version-to-import</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/c49207cb/core-it-suite/src/test/resources/mng-5527/settings-template.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5527/settings-template.xml b/core-it-suite/src/test/resources/mng-5527/settings-template.xml
new file mode 100644
index 0000000..f22a7f3
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5527/settings-template.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<settings>
+  <profiles>
+    <profile>
+      <id>maven-core-it-repo</id>
+      <repositories>
+        <repository>
+          <id>maven-core-it</id>
+          <url>@baseurl@/../repo</url>
+          <releases>
+            <checksumPolicy>ignore</checksumPolicy>
+          </releases>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+        </repository>
+      </repositories>
+    </profile>
+  </profiles>
+  <activeProfiles>
+    <activeProfile>maven-core-it-repo</activeProfile>
+  </activeProfiles>
+</settings>


[3/4] maven-integration-testing git commit: [MNG-5600] Dependency management import should support exclusions.

Posted by sc...@apache.org.
[MNG-5600] Dependency management import should support exclusions.


Project: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/commit/11c330f9
Tree: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/tree/11c330f9
Diff: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/diff/11c330f9

Branch: refs/heads/DEPMGMT-IMPORT
Commit: 11c330f9c435247cd77132530cc6f7c8831c904b
Parents: c49207c
Author: Christian Schulte <sc...@apache.org>
Authored: Sun Jun 19 17:18:51 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Tue Jan 31 18:05:47 2017 +0100

----------------------------------------------------------------------
 .../apache/maven/it/IntegrationTestSuite.java   |  1 +
 ...ependencyManagementImportExclusionsTest.java | 82 +++++++++++++++++++
 .../test/resources/mng-5600/exclusions/pom.xml  | 84 ++++++++++++++++++++
 .../apache/maven/its/mng5600/bom/0/bom-0.pom    | 44 ++++++++++
 .../resources/mng-5600/settings-template.xml    | 43 ++++++++++
 5 files changed, 254 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/11c330f9/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
index f0a5314..ef58c6d 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
@@ -106,6 +106,7 @@ public class IntegrationTestSuite
         // -------------------------------------------------------------------------------------------------------------
         // suite.addTestSuite( MavenIT0108SnapshotUpdateTest.class ); -- MNG-3137
 
+        suite.addTestSuite( MavenITmng5600DependencyManagementImportExclusionsTest.class );
         suite.addTestSuite( MavenITmng5527DependencyManagementImportRelocationsTest.class );
         suite.addTestSuite( MavenITmng4463DependencyManagementImportVersionRanges.class );
         suite.addTestSuite( MavenITmng5958LifecyclePhaseBinaryCompat.class );

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/11c330f9/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5600DependencyManagementImportExclusionsTest.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5600DependencyManagementImportExclusionsTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5600DependencyManagementImportExclusionsTest.java
new file mode 100644
index 0000000..fc2ef63
--- /dev/null
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5600DependencyManagementImportExclusionsTest.java
@@ -0,0 +1,82 @@
+package org.apache.maven.it;
+
+/*
+ * 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.
+ */
+import java.io.File;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.maven.it.util.ResourceExtractor;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * [MNG-5600] Dependency management import should support exclusions.
+ *
+ * @author Christian Schulte
+ */
+public class MavenITmng5600DependencyManagementImportExclusionsTest
+    extends AbstractMavenIntegrationTestCase
+{
+
+    public MavenITmng5600DependencyManagementImportExclusionsTest()
+    {
+        super( "[3.5.1,)" );
+    }
+
+    public void testCanExcludeDependenciesFromImport()
+        throws Exception
+    {
+        final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-5600/exclusions" );
+
+        final Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        verifier.setAutoclean( false );
+        verifier.filterFile( "../settings-template.xml", "settings.xml", "UTF-8",
+                             (Map) verifier.newDefaultFilterProperties() );
+
+        verifier.addCliOption( "-s" );
+        verifier.addCliOption( "settings.xml" );
+        verifier.executeGoals( Arrays.asList( new String[]
+        {
+            "clean", "verify"
+        } ) );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        final Properties properties = verifier.loadProperties( "target/project.properties" );
+        assertEquals( "1", properties.getProperty( "project.dependencyManagement.dependencies" ) );
+        assertEquals( "commons-lang:commons-lang:jar",
+                      properties.getProperty( "project.dependencyManagement.dependencies.0.managementKey" ) );
+
+        assertEquals( "2", properties.getProperty( "project.dependencyManagement.dependencies.0.exclusions" ) );
+        assertEquals( "commons-io",
+                      properties.getProperty( "project.dependencyManagement.dependencies.0.exclusions.0.groupId" ) );
+
+        assertEquals( "commons-io",
+                      properties.getProperty( "project.dependencyManagement.dependencies.0.exclusions.0.artifactId" ) );
+
+        assertEquals( "commons-logging",
+                      properties.getProperty( "project.dependencyManagement.dependencies.0.exclusions.1.groupId" ) );
+
+        assertEquals( "commons-logging",
+                      properties.getProperty( "project.dependencyManagement.dependencies.0.exclusions.1.artifactId" ) );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/11c330f9/core-it-suite/src/test/resources/mng-5600/exclusions/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5600/exclusions/pom.xml b/core-it-suite/src/test/resources/mng-5600/exclusions/pom.xml
new file mode 100644
index 0000000..dc06836
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5600/exclusions/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng5600</groupId>
+  <artifactId>0</artifactId>
+  <version>20160619</version>
+  <packaging>pom</packaging>
+
+  <name>Maven Integration Test :: MNG-5600</name>
+
+  <description>
+    Tests that dependency management import exclusions are supported.
+  </description>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven.its.mng5600</groupId>
+        <artifactId>bom</artifactId>
+        <version>0</version>
+        <type>pom</type>
+        <scope>import</scope>
+        <exclusions>
+          <exclusion>
+            <!-- Exclude commons-io from BOM and from all imported dependencies. -->
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+          </exclusion>
+          <exclusion>
+            <!-- Exclude commons-logging from all imported dependencies. -->
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-expression</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <phase>verify</phase>
+            <goals>
+              <goal>eval</goal>
+            </goals>
+            <configuration>
+              <expressions>
+                <expression>project/dependencyManagement</expression>
+              </expressions>
+              <outputFile>${project.build.directory}/project.properties</outputFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/11c330f9/core-it-suite/src/test/resources/mng-5600/repo/org/apache/maven/its/mng5600/bom/0/bom-0.pom
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5600/repo/org/apache/maven/its/mng5600/bom/0/bom-0.pom b/core-it-suite/src/test/resources/mng-5600/repo/org/apache/maven/its/mng5600/bom/0/bom-0.pom
new file mode 100644
index 0000000..6598212
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5600/repo/org/apache/maven/its/mng5600/bom/0/bom-0.pom
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng5600</groupId>
+  <artifactId>bom</artifactId>
+  <version>0</version>
+  <packaging>pom</packaging>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>2.5</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>2.6</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/11c330f9/core-it-suite/src/test/resources/mng-5600/settings-template.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-5600/settings-template.xml b/core-it-suite/src/test/resources/mng-5600/settings-template.xml
new file mode 100644
index 0000000..f22a7f3
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-5600/settings-template.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<settings>
+  <profiles>
+    <profile>
+      <id>maven-core-it-repo</id>
+      <repositories>
+        <repository>
+          <id>maven-core-it</id>
+          <url>@baseurl@/../repo</url>
+          <releases>
+            <checksumPolicy>ignore</checksumPolicy>
+          </releases>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+        </repository>
+      </repositories>
+    </profile>
+  </profiles>
+  <activeProfiles>
+    <activeProfile>maven-core-it-repo</activeProfile>
+  </activeProfiles>
+</settings>


[2/4] maven-integration-testing git commit: [MNG-4463] Version ranges cannot be used for artifacts with 'import' scope

Posted by sc...@apache.org.
[MNG-4463] Version ranges cannot be used for artifacts with 'import' scope


Project: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/commit/2b4f1965
Tree: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/tree/2b4f1965
Diff: http://git-wip-us.apache.org/repos/asf/maven-integration-testing/diff/2b4f1965

Branch: refs/heads/DEPMGMT-IMPORT
Commit: 2b4f1965a5ed2f57321e2eaf83d95a3d848c2531
Parents: 2348fbc
Author: Christian Schulte <sc...@apache.org>
Authored: Sat Jan 30 20:21:33 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Tue Jan 31 18:05:47 2017 +0100

----------------------------------------------------------------------
 .../apache/maven/it/IntegrationTestSuite.java   |   1 +
 ...DependencyManagementImportVersionRanges.java | 108 +++++++++++++++++++
 .../mng-4463/exclusive-upper-bound/pom.xml      |  76 +++++++++++++
 .../mng-4463/inclusive-upper-bound/pom.xml      |  76 +++++++++++++
 .../resources/mng-4463/no-upper-bound/pom.xml   |  54 ++++++++++
 5 files changed, 315 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2b4f1965/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
index 1f83b1f..41d2419 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/IntegrationTestSuite.java
@@ -106,6 +106,7 @@ public class IntegrationTestSuite
         // -------------------------------------------------------------------------------------------------------------
         // suite.addTestSuite( MavenIT0108SnapshotUpdateTest.class ); -- MNG-3137
 
+        suite.addTestSuite( MavenITmng4463DependencyManagementImportVersionRanges.class );
         suite.addTestSuite( MavenITmng5958LifecyclePhaseBinaryCompat.class );
         suite.addTestSuite( MavenITmng5898BuildMultimoduleWithEARFailsToResolveWARTest.class );
         suite.addTestSuite( MavenITmng5840ParentVersionRanges.class );

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2b4f1965/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4463DependencyManagementImportVersionRanges.java
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4463DependencyManagementImportVersionRanges.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4463DependencyManagementImportVersionRanges.java
new file mode 100644
index 0000000..84c573c
--- /dev/null
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4463DependencyManagementImportVersionRanges.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2016 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.it;
+
+import java.io.File;
+import java.util.List;
+import java.util.regex.Pattern;
+import org.apache.maven.it.util.ResourceExtractor;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * Integration tests for <a href="https://issues.apache.org/jira/browse/MNG-4463">MNG-4463</a>.
+ *
+ * @author Christian Schulte
+ */
+public class MavenITmng4463DependencyManagementImportVersionRanges
+    extends AbstractMavenIntegrationTestCase
+{
+
+    public MavenITmng4463DependencyManagementImportVersionRanges()
+    {
+        super( "[3.5.1,)" );
+    }
+
+    public void testInclusiveUpperBoundResolvesToHighestVersion()
+        throws Exception
+    {
+        final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4463/inclusive-upper-bound" );
+        final Verifier verifier = newVerifier( testDir.getAbsolutePath(), "remote" );
+        verifier.setAutoclean( false );
+        verifier.deleteDirectory( "target" );
+        verifier.executeGoal( "validate" );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        final List<String> artifacts = verifier.loadLines( "target/compile.txt", "UTF-8" );
+        assertTrue( artifacts.toString(), artifacts.contains( "org.apache.maven:maven-plugin-api:jar:3.0" ) );
+    }
+
+    public void testExclusiveUpperBoundResolvesToHighestVersion()
+        throws Exception
+    {
+        final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4463/exclusive-upper-bound" );
+        final Verifier verifier = newVerifier( testDir.getAbsolutePath(), "remote" );
+        verifier.setAutoclean( false );
+        verifier.deleteDirectory( "target" );
+        verifier.executeGoal( "validate" );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        List<String> artifacts = verifier.loadLines( "target/compile.txt", "UTF-8" );
+        assertTrue( artifacts.toString(), artifacts.contains( "org.apache.maven:maven-plugin-api:jar:3.0" ) );
+    }
+
+    public void testFailureWithoutUpperBound()
+        throws Exception
+    {
+        final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4463/no-upper-bound" );
+        final Verifier verifier = newVerifier( testDir.getAbsolutePath(), "remote" );
+
+        try
+        {
+            verifier.setAutoclean( false );
+            verifier.deleteDirectory( "target" );
+            verifier.executeGoal( "validate" );
+            fail( "Expected 'VerificationException' not thrown." );
+        }
+        catch ( final VerificationException e )
+        {
+            final List<String> lines = verifier.loadFile( new File( testDir, "log.txt" ), false );
+            assertTrue( "Expected error message not found.",
+                        indexOf( lines, ".*dependency version range.*does not specify an upper bound.*" ) >= 0 );
+        }
+        finally
+        {
+            verifier.resetStreams();
+        }
+    }
+
+    private static int indexOf( final List<String> logLines, final String regex )
+    {
+        final Pattern pattern = Pattern.compile( regex );
+
+        for ( int i = 0, l0 = logLines.size(); i < l0; i++ )
+        {
+            if ( pattern.matcher( logLines.get( i ) ).matches() )
+            {
+                return i;
+            }
+        }
+
+        return -1;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2b4f1965/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml b/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml
new file mode 100644
index 0000000..54404ac
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-4463/exclusive-upper-bound/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng4463</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+
+  <name>Maven Integration Test :: MNG-4463</name>
+  <description>
+    Tests that importing dependency management using version ranges
+    with exclusive upper bound resolves to the highest version.
+  </description>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven</artifactId>
+        <version>(,3.0.1)</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-dependency-resolution</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <compileArtifacts>target/compile.txt</compileArtifacts>
+        </configuration>
+        <executions>
+          <execution>
+            <id>test</id>
+            <phase>validate</phase>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2b4f1965/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml b/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml
new file mode 100644
index 0000000..0e91b01
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-4463/inclusive-upper-bound/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng4463</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+
+  <name>Maven Integration Test :: MNG-4463</name>
+  <description>
+    Tests that importing dependency management using version ranges
+    with inclusive upper bound resolves to the highest version.
+  </description>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven</artifactId>
+        <version>(,3.0]</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin-dependency-resolution</artifactId>
+        <version>2.1-SNAPSHOT</version>
+        <configuration>
+          <compileArtifacts>target/compile.txt</compileArtifacts>
+        </configuration>
+        <executions>
+          <execution>
+            <id>test</id>
+            <phase>validate</phase>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-integration-testing/blob/2b4f1965/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml
----------------------------------------------------------------------
diff --git a/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml b/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml
new file mode 100644
index 0000000..53ec4e3
--- /dev/null
+++ b/core-it-suite/src/test/resources/mng-4463/no-upper-bound/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.mng4463</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+
+  <name>Maven Integration Test :: MNG-4463</name>
+  <description>
+    Tests that importing dependency management using version ranges
+    without upper bound fails.
+  </description>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven</artifactId>
+        <version>(3.0,)</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+    </dependency>
+  </dependencies>
+</project>