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();