You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/01/27 20:40:25 UTC
svn commit: r1236858 - in /maven/release/trunk/maven-release-manager: pom.xml
src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.java
Author: rfscholte
Date: Fri Jan 27 19:40:25 2012
New Revision: 1236858
URL: http://svn.apache.org/viewvc?rev=1236858&view=rev
Log:
[MRELEASE-732] Use XMLUnit to verify pom.xml in unittests
Modified:
maven/release/trunk/maven-release-manager/pom.xml
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractReleaseTestCase.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=1236858&r1=1236857&r2=1236858&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Fri Jan 27 19:40:25 2012
@@ -214,6 +214,12 @@
<version>1.8.5</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
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=1236858&r1=1236857&r2=1236858&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 Fri Jan 27 19:40:25 2012
@@ -19,6 +19,17 @@ package org.apache.maven.shared.release.
* under the License.
*/
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
import org.apache.commons.lang.SystemUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
@@ -55,18 +66,14 @@ import org.codehaus.plexus.util.FileUtil
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
import org.codehaus.plexus.util.StringUtils;
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.Difference;
+import org.custommonkey.xmlunit.DifferenceListener;
+import org.custommonkey.xmlunit.XMLAssert;
+import org.custommonkey.xmlunit.XMLUnit;
import org.jmock.Mock;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
/**
* Base class for some release tests.
@@ -311,38 +318,55 @@ public abstract class AbstractReleaseTes
protected void comparePomFiles( File expectedFile, File actualFile, boolean normalizeLineEndings )
throws IOException
{
- String actual = read( actualFile, normalizeLineEndings );
- String expected = read( expectedFile, normalizeLineEndings );
- expected = expected.replaceAll( "\\$\\{remoterepo\\}", getRemoteRepositoryURL() );
- StringBuilder sb = new StringBuilder( "Check the transformed POM " + actualFile );
- sb.append( SystemUtils.LINE_SEPARATOR );
- sb.append( "expected : " ).append( SystemUtils.LINE_SEPARATOR );
- sb.append( expected ).append( SystemUtils.LINE_SEPARATOR );
- sb.append( "actual : " ).append( SystemUtils.LINE_SEPARATOR );
- sb.append( actual ).append( SystemUtils.LINE_SEPARATOR );
-
- assertEquals( sb.toString() , expected, actual );
- }
-
- /**
- * Mock-up of {@link ReleaseUtil#readXmlFile(File)}, except this one REMOVES line endings. There is something fishy
- * about the line ending conversion in that method, and it's not the class under test in these test cases.
- *
- * @param normalizeLineEndings TODO
- */
- private String read( File file, boolean normalizeLineEndings )
- throws IOException
- {
- Reader reader = null;
+ Reader expected = null;
+ Reader actual = null;
try
{
- reader = ReaderFactory.newXmlReader( file );
- String xml = IOUtil.toString( reader );
- return normalizeLineEndings ? ReleaseUtil.normalizeLineEndings( xml, "" ) : xml;
+ expected = ReaderFactory.newXmlReader( expectedFile );
+ actual = ReaderFactory.newXmlReader( actualFile );
+
+ StringBuffer sb = new StringBuffer( "Check the transformed POM " + actualFile );
+ sb.append( SystemUtils.LINE_SEPARATOR );
+
+ final String remoteRepositoryURL = getRemoteRepositoryURL();
+
+ XMLUnit.setNormalizeWhitespace( true );
+
+ Diff diff = XMLUnit.compareXML( expected, actual );
+
+ diff.overrideDifferenceListener( new DifferenceListener()
+ {
+
+ public void skippedComparison( Node arg0, Node arg1 )
+ {
+ //do nothing
+ }
+
+ public int differenceFound( Difference difference )
+ {
+ if( "${remoterepo}".equals( difference.getControlNodeDetail().getValue() ) &&
+ remoteRepositoryURL.equals( difference.getTestNodeDetail().getValue() ) )
+ {
+ return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
+ }
+ else
+ {
+ return DifferenceListener.RETURN_ACCEPT_DIFFERENCE;
+ }
+ }
+ });
+ diff.appendMessage( sb );
+
+ XMLAssert.assertXMLIdentical( diff, true );
+ }
+ catch ( SAXException e )
+ {
+ fail( e.getMessage() );
}
- finally
+ finally
{
- IOUtil.close( reader );
+ IOUtil.close( expected );
+ IOUtil.close( actual );
}
}