diff --git a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java index 6d24b81442..588e3c2ea2 100644 --- a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java +++ b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/IntegrationTestSuite.java @@ -141,7 +141,7 @@ public class IntegrationTestSuite suite.addTestSuite( MavenIT0087Test.class ); suite.addTestSuite( MavenIT0088Test.class ); suite.addTestSuite( MavenIT0089Test.class ); - suite.addTestSuite( MavenIT0090Test.class); + suite.addTestSuite( MavenIT0090Test.class ); suite.addTestSuite( MavenIT0092Test.class ); suite.addTestSuite( MavenIT0094Test.class ); suite.addTestSuite( MavenIT0095Test.class ); @@ -159,10 +159,11 @@ public class IntegrationTestSuite suite.addTestSuite( MavenIT0113ServerAuthzAvailableToWagonMgrInPlugin.class ); suite.addTestSuite( MavenIT0114ExtensionThatProvidesResources.class ); suite.addTestSuite( MavenIT0118AttachedArtifactsInReactor.class ); - suite.addTestSuite( MavenITmng2254PomEncodingTest.class); + suite.addTestSuite( MavenITmng2254PomEncodingTest.class ); suite.addTestSuite( MavenIT0129ResourceProvidedToAPluginAsAPluginDependency.class ); - suite.addTestSuite( MavenITmng2045testJarDependenciesBrokenInReactorTest.class); - suite.addTestSuite( MavenITmng2277AggregatorAndResolutionPluginsTest.class); + suite.addTestSuite( MavenITmng2045testJarDependenciesBrokenInReactorTest.class ); + suite.addTestSuite( MavenITmng2277AggregatorAndResolutionPluginsTest.class ); + suite.addTestSuite( MavenITmng1412DependenciesOrderTest.class ); // ---------------------------------------------------------------------------------------------------- // Tests that need to be fixed. diff --git a/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng1412DependenciesOrderTest.java b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng1412DependenciesOrderTest.java new file mode 100644 index 0000000000..986b108ce8 --- /dev/null +++ b/its/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng1412DependenciesOrderTest.java @@ -0,0 +1,43 @@ +package org.apache.maven.integrationtests; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.integrationtests.AbstractMavenIntegrationTestCase; +import org.apache.maven.it.Verifier; +import org.apache.maven.it.util.ResourceExtractor; + +/** + * Test that dependencies order in classpath matches pom.xml. + * + * @author Herve Boutemy + * + */ +public class MavenITmng1412DependenciesOrderTest + extends AbstractMavenIntegrationTestCase +{ + public MavenITmng1412DependenciesOrderTest() + throws InvalidVersionSpecificationException + { + super( "(2.0.8,)" ); // 2.0.9+ + } + + public void testitMNG1412() + throws Exception + { + // The testdir is computed from the location of this file. + File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-1412-DependenciesOrder" ); + + Verifier verifier = new Verifier( testDir.getAbsolutePath() ); + + List cliOptions = new ArrayList(); + cliOptions.add( "-N" ); + verifier.executeGoal( "test" ); + + verifier.verifyErrorFreeLog(); + + verifier.resetStreams(); + } +} diff --git a/its/core-integration-tests/src/test/resources/mng-1412-DependenciesOrder/pom.xml b/its/core-integration-tests/src/test/resources/mng-1412-DependenciesOrder/pom.xml new file mode 100644 index 0000000000..88a4b0ef32 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-1412-DependenciesOrder/pom.xml @@ -0,0 +1,35 @@ + + 4.0.0 + org.apache.maven.its + maven-it-MNG1412-DependenciesOrder + 0.0.1-SNAPSHOT + Check that dependencies are available in classpath in same order as declared in POM + + + commons-net + commons-net + 1.4.1 + + + commons-collections + commons-collections + 3.2 + + + commons-lang + commons-lang + 2.3 + + + commons-io + commons-io + 1.3.1 + + + junit + junit + 3.8.1 + test + + + \ No newline at end of file diff --git a/its/core-integration-tests/src/test/resources/mng-1412-DependenciesOrder/src/test/java/org/apache/maven/its/itmng1412/ITmng1412DependenciesOrderTest.java b/its/core-integration-tests/src/test/resources/mng-1412-DependenciesOrder/src/test/java/org/apache/maven/its/itmng1412/ITmng1412DependenciesOrderTest.java new file mode 100644 index 0000000000..6055839a16 --- /dev/null +++ b/its/core-integration-tests/src/test/resources/mng-1412-DependenciesOrder/src/test/java/org/apache/maven/its/itmng1412/ITmng1412DependenciesOrderTest.java @@ -0,0 +1,55 @@ +package org.apache.maven.its.itmng1412; + +import java.io.IOException; +import java.net.URL; +import java.util.Enumeration; +import java.util.jar.Attributes; +import java.util.jar.Manifest; + +import org.apache.commons.lang.StringUtils; + +import junit.framework.TestCase; + +/** + * Test that dependencies order in classpath matches pom.xml. + * + * @author Herve Boutemy + * + */ +public class ITmng1412DependenciesOrderTest +extends TestCase +{ + private final static String[] EXTENSIONS = { + // same order as in pom.xml + "commons-net", + "commons-collections", + "commons-lang", + "commons-io", + }; + + public void testOrder() throws IOException + { + String expected = StringUtils.join( EXTENSIONS, ',' ); + StringBuffer found = new StringBuffer(); + + Enumeration resources = this.getClass().getClassLoader().getResources( "META-INF/MANIFEST.MF" ); + while ( resources.hasMoreElements() ) + { + URL url = (URL) resources.nextElement(); + + Manifest manifest = new Manifest( url.openStream() ); + Attributes attributes = manifest.getMainAttributes(); + String extensionName = attributes.getValue( "Extension-Name" ); + + if ( ( extensionName != null ) && extensionName.startsWith( "commons" ) ) + { + if ( found.length() > 0 ) + { + found.append( ',' ); + } + found.append( extensionName ); + } + } + assertEquals( "dependencies order in classpath should match pom.xml", expected, found.toString() ); + } +}