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