From b1840a4ca5a63df4b8abf9220bd4a1b0ee93d98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20Kn=C3=BCppel?= Date: Fri, 30 Sep 2022 13:35:23 +0200 Subject: [PATCH] [MRELEASE-1107] Respect "lineSeparator" also on "mvn release:prepare" This closes #154 --- .../plugins/release/AbstractReleaseMojo.java | 8 ++++ .../plugins/release/PrepareReleaseMojo.java | 5 +-- .../release/PrepareReleaseMojoTest.java | 43 ++++++++++++++++++- 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java index e93ebd08f..9f5192a4d 100644 --- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java +++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java @@ -257,6 +257,14 @@ public void setPomFileName( String pomFileName ) this.pomFileName = pomFileName; } + /** + * only used for unit tests in which some required values of the project would be null + */ + protected MavenProject getProject() + { + return this.project; + } + /** * Gets the list of projects in the build reactor. * diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java index d65c2f2ee..a7bc0f126 100644 --- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java +++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java @@ -387,10 +387,7 @@ protected void prepareRelease( boolean generateReleasePoms ) config.setScmReleaseCommitComment( scmReleaseCommitComment ); config.setAutoResolveSnapshots( autoResolveSnapshots ); config.setPinExternals( pinExternals ); - if ( generateReleasePoms ) - { - config.setLineSeparator( resolveLineSeparator() ); - } + config.setLineSeparator( resolveLineSeparator() ); if ( checkModificationExcludeList != null ) { diff --git a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java index 45681e540..4b087daf6 100644 --- a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java +++ b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java @@ -50,6 +50,7 @@ import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder; import org.apache.maven.shared.release.env.ReleaseEnvironment; import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -72,6 +73,7 @@ public void testPrepare() { File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" ); final PrepareReleaseMojo mojo = spy((PrepareReleaseMojo) lookupMojo( "prepare", testFile )); + mojo.getProject().setFile(testFile); setDefaults( mojo ); mojo.setBasedir( testFile.getParentFile() ); mojo.setPomFileName( "pom.xml" ); @@ -127,6 +129,7 @@ public void testPrepareWithExecutionException() { File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" ); final PrepareReleaseMojo mojo = (PrepareReleaseMojo) lookupMojo( "prepare", testFile ); + mojo.getProject().setFile(testFile); setDefaults( mojo ); mojo.setBasedir( testFile.getParentFile() ); mojo.setPomFileName( "pom.xml" ); @@ -169,6 +172,7 @@ public void testPrepareWithExecutionFailure() { File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" ); final PrepareReleaseMojo mojo = (PrepareReleaseMojo) lookupMojo( "prepare", testFile ); + mojo.getProject().setFile(testFile); setDefaults( mojo ); mojo.setBasedir( testFile.getParentFile() ); mojo.setPomFileName( "pom.xml" ); @@ -211,6 +215,7 @@ public void testLineSeparatorInPrepareWithPom() { File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" ); final PrepareWithPomReleaseMojo mojo = (PrepareWithPomReleaseMojo) lookupMojo( "prepare-with-pom", testFile ); + mojo.getProject().setFile(testFile); setDefaults( mojo ); setVariableValueToObject( mojo, "generateReleasePoms", Boolean.TRUE ); mojo.setBasedir( testFile.getParentFile() ); @@ -242,7 +247,43 @@ public List getProjects() testLineSeparator("system", System.lineSeparator(), mojo, mock, times++); } - private void testLineSeparator( String lineSeparator, String expected, PrepareWithPomReleaseMojo mojo, + public void testLineSeparatorInPrepare() + throws Exception + { + File testFile = getTestFile( "target/test-classes/mojos/prepare/prepare.xml" ); + final PrepareReleaseMojo mojo = (PrepareReleaseMojo) lookupMojo( "prepare", testFile ); + mojo.getProject().setFile(testFile); + setDefaults( mojo ); + mojo.setBasedir( testFile.getParentFile() ); + mojo.setPomFileName( "pom.xml" ); + mojo.project.setFile( testFile ); + mojo.session = new MavenSession( null, null, null, null, null, null, null, null, null ) + { + public Properties getExecutionProperties() + { + return new Properties(); + }; + + @Override + public List getProjects() + { + return Collections.singletonList( mojo.project ); + } + }; + + ReleaseManager mock = mock( ReleaseManager.class ); + mojo.setReleaseManager( mock ); + + int times = 1; + testLineSeparator(null, "\n", mojo, mock, times++); + testLineSeparator("source", "\n", mojo, mock, times++); + testLineSeparator("cr", "\r", mojo, mock, times++); + testLineSeparator("lf", "\n", mojo, mock, times++); + testLineSeparator("crlf", "\r\n", mojo, mock, times++); + testLineSeparator("system", System.lineSeparator(), mojo, mock, times++); + } + + private void testLineSeparator( String lineSeparator, String expected, PrepareReleaseMojo mojo, ReleaseManager releaseManager, int times ) throws Exception {