You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2008/05/22 22:27:50 UTC
svn commit: r659241 - in /maven/release/trunk/maven-release-manager/src:
main/java/org/apache/maven/shared/release/phase/
main/java/org/apache/maven/shared/release/util/
test/java/org/apache/maven/shared/release/phase/
Author: bentmann
Date: Thu May 22 13:27:48 2008
New Revision: 659241
URL: http://svn.apache.org/viewvc?rev=659241&view=rev
Log:
[MRELEASE-254] tests failed on windows
[MRELEASE-302] Test don't pass on windows due to encoding issues
o Ensured line separators are properly normalized
o Ensured XML reader is finally closed to free file handle and allow deletion of file
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractBackupPomsPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CreateBackupPomsPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java Thu May 22 13:27:48 2008
@@ -42,7 +42,6 @@
import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
import org.apache.maven.shared.release.util.ReleaseUtil;
import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.ReaderFactory;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.WriterFactory;
import org.jdom.Comment;
@@ -82,11 +81,6 @@
private ScmRepositoryConfigurator scmRepositoryConfigurator;
/**
- * The line separator to use.
- */
- private static final String LS = System.getProperty( "line.separator" );
-
- /**
* Configuration item for the suffix to add to rewritten POMs when simulating.
*/
private String pomSuffix;
@@ -117,12 +111,6 @@
}
}
- private static String readXmlFile( File file )
- throws IOException
- {
- return IOUtil.toString( ReaderFactory.newXmlReader( file ) );
- }
-
private void transformProject( MavenProject project, ReleaseDescriptor releaseDescriptor, Settings settings,
List reactorProjects, boolean simulate, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
@@ -132,7 +120,7 @@
String outtro = null;
try
{
- String content = readXmlFile( ReleaseUtil.getStandardPom( project ) );
+ String content = ReleaseUtil.readXmlFile( ReleaseUtil.getStandardPom( project ) );
// we need to eliminate any extra whitespace inside elements, as JDOM will nuke it
content = content.replaceAll( "<([^!][^>]*?)\\s{2,}([^>]*?)>", "<$1 $2>" );
content = content.replaceAll( "(\\s{2,}|[^\\s])/>", "$1 />" );
@@ -140,13 +128,14 @@
SAXBuilder builder = new SAXBuilder();
document = builder.build( new StringReader( content ) );
- // Normalize line endings. For some reason, JDOM replaces \r\n inside a comment with \n.
+ // Normalize line endings to platform's style (XML processors like JDOM normalize line endings to "\n" as
+ // per section 2.11 of the XML spec)
normaliseLineEndings( document );
// rewrite DOM as a string to find differences, since text outside the root element is not tracked
StringWriter w = new StringWriter();
Format format = Format.getRawFormat();
- format.setLineSeparator( LS );
+ format.setLineSeparator( ReleaseUtil.LS );
XMLOutputter out = new XMLOutputter( format );
out.output( document.getRootElement(), w );
@@ -206,7 +195,7 @@
for ( Iterator i = document.getDescendants( new ContentFilter( ContentFilter.COMMENT ) ); i.hasNext(); )
{
Comment c = (Comment) i.next();
- c.setText( c.getText().replaceAll( "\n", LS ) );
+ c.setText( ReleaseUtil.normalizeLineEndings( c.getText(), ReleaseUtil.LS ) );
}
}
@@ -675,7 +664,7 @@
}
Format format = Format.getRawFormat();
- format.setLineSeparator( LS );
+ format.setLineSeparator( ReleaseUtil.LS );
XMLOutputter out = new XMLOutputter( format );
out.output( document.getRootElement(), writer );
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java Thu May 22 13:27:48 2008
@@ -20,8 +20,12 @@
*/
import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
import java.util.Iterator;
import java.util.List;
@@ -35,6 +39,11 @@
private static final String POMv4 = "pom.xml";
+ /**
+ * The line separator to use.
+ */
+ public static final String LS = System.getProperty( "line.separator" );
+
private ReleaseUtil()
{
}
@@ -72,4 +81,48 @@
{
return new File( project.getFile().getParent(), RELEASE_POMv4 );
}
+
+ /**
+ * Gets the string contents of the specified XML file. Note: In contrast to an XML processor, the line separators in
+ * the returned string will be normalized to use the platform's native line separator. This is basically to save
+ * another normalization step when writing the string contents back to an XML file.
+ *
+ * @param file The path to the XML file to read in, must not be <code>null</code>.
+ * @return The string contents of the XML file.
+ * @throws IOException If the file could not be opened/read.
+ */
+ public static String readXmlFile( File file )
+ throws IOException
+ {
+ Reader reader = null;
+ try
+ {
+ reader = ReaderFactory.newXmlReader( file );
+ return normalizeLineEndings( IOUtil.toString( reader ), LS );
+ }
+ finally
+ {
+ IOUtil.close( reader );
+ }
+ }
+
+ /**
+ * Normalizes the line separators in the specified string.
+ *
+ * @param text The string to normalize, may be <code>null</code>.
+ * @param separator The line separator to use for normalization, typically "\n" or "\r\n", must not be
+ * <code>null</code>.
+ * @return The input string with normalized line separators or <code>null</code> if the string was
+ * <code>null</code>.
+ */
+ public static String normalizeLineEndings( String text, String separator )
+ {
+ String norm = text;
+ if ( text != null )
+ {
+ norm = text.replaceAll( "(\r\n)|(\n)|(\r)", separator );
+ }
+ return norm;
+ }
+
}
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractBackupPomsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractBackupPomsPhaseTest.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractBackupPomsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractBackupPomsPhaseTest.java Thu May 22 13:27:48 2008
@@ -23,11 +23,9 @@
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
import java.io.File;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -94,9 +92,4 @@
return project;
}
- protected String readXmlFile( File file )
- throws IOException
- {
- return IOUtil.toString( ReaderFactory.newXmlReader( file ) );
- }
}
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java Thu May 22 13:27:48 2008
@@ -44,10 +44,9 @@
import org.apache.maven.scm.manager.ScmManager;
import org.apache.maven.shared.release.scm.DefaultScmRepositoryConfigurator;
import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.ReaderFactory;
import org.jmock.Mock;
import java.io.File;
@@ -251,17 +250,11 @@
comparePomFiles( expectedFile, actualFile );
}
- protected String readXmlFile( File file )
- throws IOException
- {
- return IOUtil.toString( ReaderFactory.newXmlReader( file ) );
- }
-
protected void comparePomFiles( File expectedFile, File actualFile )
throws IOException
{
- String actual = readXmlFile( actualFile );
- String expected = readXmlFile( expectedFile );
+ String actual = ReleaseUtil.readXmlFile( actualFile );
+ String expected = ReleaseUtil.readXmlFile( expectedFile );
expected = expected.replaceAll( "\\$\\{remoterepo\\}", getRemoteRepositoryURL() );
assertEquals( "Check the transformed POM", expected, actual );
}
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CreateBackupPomsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CreateBackupPomsPhaseTest.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CreateBackupPomsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CreateBackupPomsPhaseTest.java Thu May 22 13:27:48 2008
@@ -20,6 +20,7 @@
*/
import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import java.util.List;
import java.util.Iterator;
@@ -112,9 +113,9 @@
{
assertTrue( "Check if backup file was created.", backupFile.exists() );
- String pomContents = readXmlFile( pomFile );
+ String pomContents = ReleaseUtil.readXmlFile( pomFile );
- String backupContents = readXmlFile( backupFile );
+ String backupContents = ReleaseUtil.readXmlFile( backupFile );
assertTrue( "Check if pom and backup files are identical", pomContents.equals( backupContents ) );
}
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java Thu May 22 13:27:48 2008
@@ -191,7 +191,7 @@
*/
protected String readTestProjectFile( String fileName ) throws IOException
{
- return readXmlFile( getTestFile( "target/test-classes/projects/generate-release-poms/" + fileName ) );
+ return ReleaseUtil.readXmlFile( getTestFile( "target/test-classes/projects/generate-release-poms/" + fileName ) );
}
/*
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RestoreBackupPomsPhaseTest.java Thu May 22 13:27:48 2008
@@ -21,6 +21,7 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
@@ -96,9 +97,9 @@
assertTrue( "Check if expected file exists.", expectedFile.exists() );
- String pomContents = readXmlFile( pomFile );
+ String pomContents = ReleaseUtil.readXmlFile( pomFile );
- String expectedContents = readXmlFile( expectedFile );
+ String expectedContents = ReleaseUtil.readXmlFile( expectedFile );
assertTrue( "Check if pom and backup files are identical", pomContents.equals( expectedContents ) );
}
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhaseTest.java Thu May 22 13:27:48 2008
@@ -22,6 +22,7 @@
import org.apache.maven.model.Scm;
import org.apache.maven.shared.release.ReleaseExecutionException;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import org.apache.maven.artifact.ArtifactUtils;
import java.io.File;
@@ -156,7 +157,7 @@
protected String readTestProjectFile( String fileName )
throws IOException
{
- return readXmlFile( getTestFile( "target/test-classes/projects/rewrite-for-development/" + fileName ) );
+ return ReleaseUtil.readXmlFile( getTestFile( "target/test-classes/projects/rewrite-for-development/" + fileName ) );
}
protected List createReactorProjects( String path, boolean copyFiles )
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java?rev=659241&r1=659240&r2=659241&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java Thu May 22 13:27:48 2008
@@ -21,6 +21,7 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import java.io.File;
import java.io.IOException;
@@ -56,7 +57,7 @@
protected String readTestProjectFile( String fileName )
throws IOException
{
- return readXmlFile( getTestFile( "target/test-classes/projects/rewrite-for-release/" + fileName ) );
+ return ReleaseUtil.readXmlFile( getTestFile( "target/test-classes/projects/rewrite-for-release/" + fileName ) );
}
public void testSimulateRewrite()