You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2010/09/29 10:01:00 UTC
svn commit: r1002505 - in /maven/release/trunk/maven-release-manager/src:
main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
main/mdo/release-descriptor.mdo
test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
Author: brett
Date: Wed Sep 29 08:00:59 2010
New Revision: 1002505
URL: http://svn.apache.org/viewvc?rev=1002505&view=rev
Log:
[MRELEASE-524] command line versions don't seem to work on release:branch for specific format
- In interactive mode, the user was allways asked. Now he is only asked when the user did not specify versions explicitely. The fallback-suggestions on errors now are 1.0 for release, and 1.1-SNAPSHOT for development version.
- removed two runtime assertions that overeagerly tried to protect the ReleaseDescriptor
- Added test cases
Submitted by: Lars Corneliussen
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
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=1002505&r1=1002504&r2=1002505&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 Wed Sep 29 08:00:59 2010
@@ -170,19 +170,23 @@ public class MapVersionsPhase
VersionInfo currentVersionInfo = null;
VersionInfo releaseVersionInfo = null;
+ boolean releaseVersionIsExplicit = false;
+
VersionInfo nextSnapshotVersionInfo = null;
+ boolean nextSnapshotVersionIsExplicit = false;
try
{
currentVersionInfo = new DefaultVersionInfo( project.getVersion() );
- // The release version defaults to currentVersionInfo.getReleaseVersionString()
+ // The release/branch version defaults to currentVersionInfo (snapshot for branch, and release for tag)
releaseVersionInfo = currentVersionInfo;
// Check if the user specified a release version
if ( releaseDescriptor.getDefaultReleaseVersion() != null )
{
releaseVersionInfo = new DefaultVersionInfo( releaseDescriptor.getDefaultReleaseVersion() );
+ releaseVersionIsExplicit = true;
}
if ( releaseDescriptor.getReleaseVersions() != null )
{
@@ -190,18 +194,18 @@ public class MapVersionsPhase
if ( releaseVersion != null )
{
releaseVersionInfo = new DefaultVersionInfo( releaseVersion );
+ releaseVersionIsExplicit = true;
}
}
- if ( releaseVersionInfo != null )
- {
- nextSnapshotVersionInfo = releaseVersionInfo.getNextVersion();
- }
+ // The next snapshot version defaults to the next version after the release version
+ nextSnapshotVersionInfo = releaseVersionInfo.getNextVersion();
// Check if the user specified a new snapshot version
if ( releaseDescriptor.getDefaultDevelopmentVersion() != null )
{
nextSnapshotVersionInfo = new DefaultVersionInfo( releaseDescriptor.getDefaultDevelopmentVersion() );
+ nextSnapshotVersionIsExplicit = true;
}
if ( releaseDescriptor.getDevelopmentVersions() != null )
{
@@ -209,6 +213,7 @@ public class MapVersionsPhase
if ( nextDevVersion != null )
{
nextSnapshotVersionInfo = new DefaultVersionInfo( nextDevVersion );
+ nextSnapshotVersionIsExplicit = true;
}
}
@@ -220,6 +225,25 @@ public class MapVersionsPhase
{
logWarn( result, msg );
logDebug( result, e.getMessage(), e );
+
+ // set defaults for resume in interactive mode
+ if ( releaseVersionInfo == null )
+ {
+ try
+ {
+ releaseVersionInfo = new DefaultVersionInfo( "1.0" );
+ }
+ catch ( VersionParseException e1 )
+ {
+ // if that happens we are in serious trouble!
+ throw new ReleaseExecutionException( "Version 1.0 could not be parsed!", e1 );
+ }
+ }
+
+ if ( nextSnapshotVersionInfo == null )
+ {
+ nextSnapshotVersionInfo = releaseVersionInfo.getNextVersion();
+ }
}
else
{
@@ -241,25 +265,13 @@ public class MapVersionsPhase
ArtifactUtils.isSnapshot( project.getVersion() ) ||
releaseDescriptor.isUpdateVersionsToSnapshot() ) )
{
- if ( releaseVersionInfo != null )
- {
- nextVersion = releaseVersionInfo.getSnapshotVersionString();
- }
-
- if ( releaseDescriptor.isInteractive() )
+ nextVersion = releaseVersionInfo.getSnapshotVersionString();
+ if ( !releaseVersionIsExplicit && releaseDescriptor.isInteractive() )
{
nextVersion = prompter.prompt(
"What is the branch version for \"" + project.getName() + "\"? (" + projectId + ")",
nextVersion );
}
- else
- {
- Map relVersions = releaseDescriptor.getDevelopmentVersions();
- if ( relVersions.containsKey( projectId ) )
- {
- nextVersion = relVersions.remove( projectId ).toString();
- }
- }
}
else
{
@@ -273,31 +285,12 @@ public class MapVersionsPhase
if ( ArtifactUtils.isSnapshot( project.getVersion() ) &&
releaseDescriptor.isUpdateWorkingCopyVersions() )
{
- if ( currentVersionInfo != null )
- {
- if ( nextSnapshotVersionInfo != null )
- {
- nextVersion = nextSnapshotVersionInfo.getSnapshotVersionString();
- }
- else
- {
- nextVersion = "1.0-SNAPSHOT";
- }
- }
-
- if ( releaseDescriptor.isInteractive() )
+ nextVersion = nextSnapshotVersionInfo.getSnapshotVersionString();
+ if ( releaseDescriptor.isInteractive() && !nextSnapshotVersionIsExplicit )
{
nextVersion = prompter.prompt( "What is the new working copy version for \"" +
project.getName() + "\"? (" + projectId + ")", nextVersion );
}
- else
- {
- Map devVersions = releaseDescriptor.getDevelopmentVersions();
- if ( devVersions.containsKey( projectId ) )
- {
- nextVersion = devVersions.remove( projectId ).toString();
- }
- }
}
else
{
@@ -307,56 +300,26 @@ public class MapVersionsPhase
}
else
{
- if ( currentVersionInfo != null )
- {
- if ( nextSnapshotVersionInfo != null )
- {
- nextVersion = nextSnapshotVersionInfo.getSnapshotVersionString();
- }
- else
- {
- nextVersion = "1.0-SNAPSHOT";
- }
- }
-
- if ( releaseDescriptor.isInteractive() )
+ nextVersion = nextSnapshotVersionInfo.getSnapshotVersionString();
+ if ( releaseDescriptor.isInteractive() && !nextSnapshotVersionIsExplicit )
{
nextVersion = prompter.prompt( "What is the new development version for \"" +
project.getName() + "\"? (" + projectId + ")", nextVersion );
}
- else
- {
- Map devVersions = releaseDescriptor.getDevelopmentVersions();
- if ( devVersions.containsKey( projectId ) )
- {
- nextVersion = devVersions.remove( projectId ).toString();
- }
- }
}
}
else
{
if ( ArtifactUtils.isSnapshot( project.getVersion() ) )
{
- if ( releaseVersionInfo != null )
- {
- nextVersion = releaseVersionInfo.getReleaseVersionString();
- }
+ nextVersion = releaseVersionInfo.getReleaseVersionString();
- if ( releaseDescriptor.isInteractive() )
+ if ( releaseDescriptor.isInteractive() && !releaseVersionIsExplicit )
{
nextVersion = prompter.prompt(
"What is the release version for \"" + project.getName() + "\"? (" + projectId + ")",
nextVersion );
}
- else
- {
- Map relVersions = releaseDescriptor.getReleaseVersions();
- if ( relVersions.containsKey( projectId ) )
- {
- nextVersion = relVersions.remove( projectId ).toString();
- }
- }
}
else
{
Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?rev=1002505&r1=1002504&r2=1002505&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Wed Sep 29 08:00:59 2010
@@ -484,8 +484,6 @@
{
if (releaseVersions == null) {
releaseVersions = new java.util.HashMap();
- } else {
- assert !releaseVersions.containsKey( projectId );
}
releaseVersions.put( projectId, nextVersion );
@@ -501,8 +499,6 @@
{
if (developmentVersions == null) {
developmentVersions = new java.util.HashMap();
- } else {
- assert !developmentVersions.containsKey( projectId );
}
developmentVersions.put( projectId, nextVersion );
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=1002505&r1=1002504&r2=1002505&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 Wed Sep 29 08:00:59 2010
@@ -118,6 +118,42 @@ public class MapVersionsPhaseTest
releaseDescriptor.getReleaseVersions() );
}
+ /**
+ * MRELEASE-524: ignores commandline versions in batch mode
+ */
+ public void testMapReleaseVersionsNonInteractiveWithExplicitVersion()
+ throws Exception
+ {
+ List reactorProjects = Collections.singletonList( createProject( "artifactId", "SNAPSHOT" ) );
+
+ MapVersionsPhase phase = (MapVersionsPhase) lookup( ReleasePhase.ROLE, "test-map-release-versions" );
+
+ // execute
+ ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+ releaseDescriptor.addReleaseVersion( "groupId:artifactId", "2.0" );
+
+ Mock mockPrompter = new Mock( Prompter.class );
+ mockPrompter.expects( new TestFailureMatcher( "prompter should not be called" ) ).method( "prompt" );
+ phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+ phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+
+ assertEquals( "Check mapped versions", Collections.singletonMap( "groupId:artifactId", "2.0" ),
+ releaseDescriptor.getReleaseVersions() );
+
+ // simulate
+ releaseDescriptor = new ReleaseDescriptor();
+ releaseDescriptor.addReleaseVersion( "groupId:artifactId", "2.0" );
+
+ mockPrompter.reset();
+ mockPrompter.expects( new TestFailureMatcher( "prompter should not be called" ) ).method( "prompt" );
+
+ phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+
+ assertEquals( "Check mapped versions", Collections.singletonMap( "groupId:artifactId", "2.0" ),
+ releaseDescriptor.getReleaseVersions() );
+ }
+
public void testMapReleaseVersionsNonInteractive()
throws Exception
{
@@ -213,6 +249,43 @@ public class MapVersionsPhaseTest
releaseDescriptor.getDevelopmentVersions() );
}
+ /**
+ * MRELEASE-524: ignores commandline versions in batch mode
+ */
+ public void testMapDevVersionsNonInteractiveWithExplicitVersion()
+ throws Exception
+ {
+ MapVersionsPhase phase = (MapVersionsPhase) lookup( ReleasePhase.ROLE, "test-map-development-versions" );
+ List reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0" ) );
+
+ // execute
+ Mock mockPrompter = new Mock( Prompter.class );
+ mockPrompter.expects( new TestFailureMatcher( "prompter should not be called" ) ).method( "prompt" );
+ phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+ ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+ releaseDescriptor.setInteractive( false );
+ releaseDescriptor.addDevelopmentVersion( "groupId:artifactId", "2-SNAPSHOT" );
+
+ phase.execute( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+
+ assertEquals( "Check mapped versions", Collections.singletonMap( "groupId:artifactId", "2-SNAPSHOT" ),
+ releaseDescriptor.getDevelopmentVersions() );
+
+ // simulate
+ mockPrompter.reset();
+ mockPrompter.expects( new TestFailureMatcher( "prompter should not be called" ) ).method( "prompt" );
+
+ releaseDescriptor = new ReleaseDescriptor();
+ releaseDescriptor.setInteractive( false );
+ releaseDescriptor.addDevelopmentVersion( "groupId:artifactId", "2-SNAPSHOT" );
+
+ phase.simulate( releaseDescriptor, new DefaultReleaseEnvironment(), reactorProjects );
+
+ assertEquals( "Check mapped versions", Collections.singletonMap( "groupId:artifactId", "2-SNAPSHOT" ),
+ releaseDescriptor.getDevelopmentVersions() );
+ }
+
public void testPrompterException()
throws Exception
{
@@ -262,7 +335,8 @@ public class MapVersionsPhaseTest
MapVersionsPhase phase = (MapVersionsPhase) lookup( ReleasePhase.ROLE, "test-map-development-versions" );
Mock mockPrompter = new Mock( Prompter.class );
- mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).with( new IsAnything(), new IsNull() ).will(
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).with( new IsAnything(),
+ new IsEqual( "1.1-SNAPSHOT" ) ).will(
new ReturnStub( "2.0-SNAPSHOT" ) );
phase.setPrompter( (Prompter) mockPrompter.proxy() );
@@ -276,7 +350,8 @@ public class MapVersionsPhaseTest
releaseDescriptor.getDevelopmentVersions() );
mockPrompter.reset();
- mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).with( new IsAnything(), new IsNull() ).will(
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).with( new IsAnything(),
+ new IsEqual( "1.1-SNAPSHOT" ) ).will(
new ReturnStub( "2.0-SNAPSHOT" ) );
releaseDescriptor = new ReleaseDescriptor();