Author: gboue
Date: Sun Jan  8 22:33:36 2017
New Revision: 1777917

URL: http://svn.apache.org/viewvc?rev=1777917&view=rev
Log:
[MRELEASE-975] NPE when using an unknown project versionpolicy id

Passing an empty version policy hint (with -DprojectVersionPolicyId on the 
command-line), on an unknown one, should result in a helpful exception being 
thrown (not NullPointerException). Upgrading JUnit to 4.11 to use the expected 
exception mechanism (in order to test that the cause of the exception thrown is 
a PolicyException). This closes #8.

Modified:
    maven/release/trunk/maven-release-manager/pom.xml
    
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
    
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java

Modified: maven/release/trunk/maven-release-manager/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/pom.xml?rev=1777917&r1=1777916&r2=1777917&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Sun Jan  8 22:33:36 2017
@@ -157,7 +157,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>4.10</version>
+      <version>4.11</version>
       <scope>test</scope>
     </dependency>
     <dependency>

Modified: 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java?rev=1777917&r1=1777916&r2=1777917&view=diff
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
 Sun Jan  8 22:33:36 2017
@@ -321,8 +321,12 @@ public class MapVersionsPhase
         throws PolicyException, VersionParseException
     {
         VersionPolicy policy = versionPolicies.get( policyId );
-        VersionPolicyRequest request = new VersionPolicyRequest().setVersion( 
baseVersion );
+        if ( policy == null )
+        {
+            throw new PolicyException( "Policy '" + policyId + "' is unknown, 
available: " + versionPolicies.keySet() );
+        }
 
+        VersionPolicyRequest request = new VersionPolicyRequest().setVersion( 
baseVersion );
         return convertToSnapshot ? policy.getDevelopmentVersion( request 
).getVersion()
                         : policy.getReleaseVersion( request ).getVersion();
     }

Modified: 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java?rev=1777917&r1=1777916&r2=1777917&view=diff
==============================================================================
--- 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
 (original)
+++ 
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
 Sun Jan  8 22:33:36 2017
@@ -42,10 +42,14 @@ import org.apache.maven.shared.release.P
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
+import org.apache.maven.shared.release.policy.PolicyException;
 import org.apache.maven.shared.release.versions.VersionParseException;
 import org.codehaus.plexus.components.interactivity.Prompter;
 import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.hamcrest.CoreMatchers;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
@@ -63,6 +67,9 @@ public class MapVersionsPhaseTest
 
     private static final String TEST_MAP_RELEASE_VERSIONS = 
"test-map-release-versions";
 
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
     @Mock
     private Prompter mockPrompter;
 
@@ -2112,6 +2119,29 @@ public class MapVersionsPhaseTest
         verify( mockPrompter ).prompt( startsWith( "What is the release 
version for " ), eq( "1.11" ) );
     }
 
+    /**
+     * MRELEASE-975: Test that a PolicyException is thrown when using an 
unknown policy version hint.
+     * @throws Exception
+     */
+    @Test
+    public void testNonExistentVersionPolicy()
+        throws Exception
+    {
+        expectedException.expect( ReleaseExecutionException.class );
+        expectedException.expectCause( CoreMatchers.isA( PolicyException.class 
) );
+        
+        // prepare
+        MapVersionsPhase phase = (MapVersionsPhase) lookup( ReleasePhase.ROLE, 
TEST_MAP_RELEASE_VERSIONS );
+
+        List<MavenProject> reactorProjects = Collections.singletonList( 
createProject( "artifactId", "1.0-SNAPSHOT" ) );
+
+        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+        releaseDescriptor.setProjectVersionPolicyId( "UNKNOWN" );
+
+        // test
+        phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), 
reactorProjects );
+    }
+
     private static MavenProject createProject( String artifactId, String 
version )
     {
         Model model = new Model();


Reply via email to