http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java new file mode 100644 index 0000000..9849971 --- /dev/null +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java @@ -0,0 +1,25 @@ +// CHECKSTYLE_OFF: RegexpHeader +/** + * <a href="http://maven.apache.org/resolver/">Maven Resolver</a> extensions for utilizing the Maven POM and Maven + * repository metadata. + */ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */
http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/site/apt/index.apt ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/site/apt/index.apt b/maven-resolver-provider/src/site/apt/index.apt new file mode 100644 index 0000000..600ec41 --- /dev/null +++ b/maven-resolver-provider/src/site/apt/index.apt @@ -0,0 +1,33 @@ +~~ Licensed to the Apache Software Foundation (ASF) under one +~~ or more contributor license agreements. See the NOTICE file +~~ distributed with this work for additional information +~~ regarding copyright ownership. The ASF licenses this file +~~ to you under the Apache License, Version 2.0 (the +~~ "License"); you may not use this file except in compliance +~~ with the License. You may obtain a copy of the License at +~~ +~~ http://www.apache.org/licenses/LICENSE-2.0 +~~ +~~ Unless required by applicable law or agreed to in writing, +~~ software distributed under the License is distributed on an +~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +~~ KIND, either express or implied. See the License for the +~~ specific language governing permissions and limitations +~~ under the License. + + ----- + Introduction + ----- + Hervé Boutemy + ----- + 2012-09-29 + ----- + +Maven Aether Provider + + Maven Aether Provider is an {{{http://www.eclipse.org/aether/}Aether}} extension to support + Maven POMs and local+remote repositories. + + Main component is <<<MavenRepositorySystemUtils>>> + ({{{./apidocs/org/apache/maven/repository/internal/MavenRepositorySystemUtils.html}javadoc}}, + {{{./xref/org/apache/maven/repository/internal/MavenRepositorySystemUtils.html}source}}). http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/site/site.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/site/site.xml b/maven-resolver-provider/src/site/site.xml new file mode 100644 index 0000000..3a16bf9 --- /dev/null +++ b/maven-resolver-provider/src/site/site.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<project xmlns="http://maven.apache.org/DECORATION/1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd"> + <body> + <menu name="Overview"> + <item name="Introduction" href="index.html"/> + <item name="JavaDocs" href="apidocs/index.html"/> + <item name="Source Xref" href="xref/index.html"/> + <!--item name="FAQ" href="faq.html"/--> + </menu> + + <menu ref="parent"/> + <menu ref="reports"/> + </body> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java new file mode 100644 index 0000000..b81450c --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java @@ -0,0 +1,87 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.net.MalformedURLException; + +import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; +import org.apache.maven.repository.internal.util.ConsoleTransferListener; +import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.PlexusConstants; +import org.codehaus.plexus.PlexusTestCase; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.repository.LocalRepository; +import org.eclipse.aether.repository.RemoteRepository; + +public abstract class AbstractRepositoryTestCase + extends PlexusTestCase +{ + protected RepositorySystem system; + + protected RepositorySystemSession session; + + @Override + protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration ) + { + super.customizeContainerConfiguration( containerConfiguration ); + containerConfiguration.setAutoWiring( true ); + containerConfiguration.setClassPathScanning( PlexusConstants.SCANNING_INDEX ); + } + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + system = lookup( RepositorySystem.class ); + session = newMavenRepositorySystemSession( system ); + } + + @Override + protected void tearDown() + throws Exception + { + session = null; + system = null; + super.tearDown(); + } + + public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) + { + DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); + + LocalRepository localRepo = new LocalRepository( "target/local-repo" ); + session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) ); + + session.setTransferListener( new ConsoleTransferListener() ); + session.setRepositoryListener( new ConsoleRepositoryListener() ); + + return session; + } + + public static RemoteRepository newTestRepository() + throws MalformedURLException + { + return new RemoteRepository.Builder( "repo", "default", + getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ).build(); + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java new file mode 100644 index 0000000..e873138 --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java @@ -0,0 +1,77 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import org.eclipse.aether.RepositoryEvent; +import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.RepositoryEventDispatcher; +import org.eclipse.aether.resolution.ArtifactDescriptorRequest; +import org.mockito.ArgumentCaptor; + +public class DefaultArtifactDescriptorReaderTest + extends AbstractRepositoryTestCase +{ + + public void testMng5459() + throws Exception + { + // prepare + DefaultArtifactDescriptorReader reader = (DefaultArtifactDescriptorReader) lookup( ArtifactDescriptorReader.class ); + + RepositoryEventDispatcher eventDispatcher = mock( RepositoryEventDispatcher.class ); + + ArgumentCaptor<RepositoryEvent> event = ArgumentCaptor.forClass( RepositoryEvent.class ); + + reader.setRepositoryEventDispatcher( eventDispatcher ); + + ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); + + request.addRepository( newTestRepository() ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "dep-mng5459", "jar", "0.4.0-SNAPSHOT" ) ); + + // execute + reader.readArtifactDescriptor( session, request ); + + // verify + verify( eventDispatcher ).dispatch( event.capture() ); + + boolean missingArtifactDescriptor = false; + + for( RepositoryEvent evt : event.getAllValues() ) + { + if ( EventType.ARTIFACT_DESCRIPTOR_MISSING.equals( evt.getType() ) ) + { + assertEquals( "Could not find artifact org.apache.maven.its:dep-mng5459:pom:0.4.0-20130404.090532-2 in repo (" + newTestRepository().getUrl() + ")", evt.getException().getMessage() ); + missingArtifactDescriptor = true; + } + } + + if( !missingArtifactDescriptor ) + { + fail( "Expected missing artifact descriptor for org.apache.maven.its:dep-mng5459:pom:0.4.0-20130404.090532-2" ); + } + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionRangeResolverTest.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionRangeResolverTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionRangeResolverTest.java new file mode 100644 index 0000000..7b7b71a --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionRangeResolverTest.java @@ -0,0 +1,455 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.Iterator; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.resolution.VersionRangeRequest; +import org.eclipse.aether.resolution.VersionRangeResolutionException; +import org.eclipse.aether.resolution.VersionRangeResult; +import org.eclipse.aether.util.version.GenericVersionScheme; +import org.eclipse.aether.version.Version; +import org.eclipse.aether.version.VersionScheme; + +/** + * Tests the {@link DefaultVersionRangeResolver} based on 'virtual' repository data stored at + * {@literal /maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/mng-3092/maven-metadata.xml} + * <p> + * Note: Information about the version scheme: {@link org.eclipse.aether.util.version.GenericVersionScheme}.<br/> + * Design document for dependency version ranges: <a + * href="https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution" + * >https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution</a> + * </p> + */ +public class DefaultVersionRangeResolverTest + extends AbstractRepositoryTestCase +{ + private final VersionScheme versionScheme = new GenericVersionScheme(); + + private DefaultVersionRangeResolver sut; + + private VersionRangeRequest request; + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + // be sure we're testing the right class, i.e. DefaultVersionRangeResolver.class + sut = ( DefaultVersionRangeResolver ) lookup( VersionRangeResolver.class, "default" ); + request = new VersionRangeRequest(); + request.addRepository( newTestRepository() ); + } + + @Override + protected void tearDown() + throws Exception + { + sut = null; + super.tearDown(); + } + + /** + * Test resolves version range {@code (,2.0.0]} (x <= 2.0.0). + * <p> + * The expected version range starts with the lowest version {@code 1.0.0-SNAPSHOT} and ends with the highest + * inclusive version {@code 2.0.0}. + * </p> + * + * @throws Exception + */ + public void testLeftOpenRightInclusive() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.0-SNAPSHOT" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "2.0.0" ); + final Version expectedReleaseVersion = versionScheme.parseVersion( "1.3.0" ); + final Version expectedSnapshotVersion = versionScheme.parseVersion( "1.2.1-SNAPSHOT" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "(,2.0.0]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 34, result.getVersions().size() ); + assertTrue( result.getVersions().contains( expectedReleaseVersion ) ); + assertTrue( result.getVersions().contains( expectedSnapshotVersion ) ); + } + + /** + * Test resolves version range {@code 1.2.0}. + * <p> + * The passed value is a 'soft' requirement on {@code 1.2.0} and <b>not</b> a real version range pattern. The + * resolver does nothing but insert the passed value into {@link VersionRangeResult}. + * </p> + * + * @throws Exception + */ + public void testSoft() + throws Exception + { + final Version expectedVersion = versionScheme.parseVersion( "1.2.0" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "1.2.0" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedVersion, result.getLowestVersion() ); + assertEquals( expectedVersion, result.getHighestVersion() ); + assertEquals( 1, result.getVersions().size() ); + } + + /** + * Test resolves version range {@code 1.2.4} for a <b>unknown</b> version. + * <p> + * The passed value is a 'soft' requirement on {@code 1.2.4} and <b>not</b> a real version range pattern. The + * resolver does nothing but insert the passed value into {@link VersionRangeResult}. + * </p> + * + * @throws Exception + */ + public void testSoft_unknown() + throws Exception + { + final Version expectedVersion = versionScheme.parseVersion( "1.2.4" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "1.2.4" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedVersion, result.getLowestVersion() ); + assertEquals( expectedVersion, result.getHighestVersion() ); + assertEquals( 1, result.getVersions().size() ); + } + + /** + * Test resolves version range {@code [1.2.0]}. + * <p> + * The passed value is a 'hard' requirement on {@code 1.2.0}. + * </p> + * + * @throws Exception + */ + public void testHard() + throws Exception + { + final Version expectedVersion = versionScheme.parseVersion( "1.2.0" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.2.0]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedVersion, result.getLowestVersion() ); + assertEquals( expectedVersion, result.getHighestVersion() ); + assertEquals( 1, result.getVersions().size() ); + } + + /** + * Test resolves version range {@code [1.2.4]} for a <b>unknown</b> version. + * <p> + * The passed value is a 'hard' requirement on the unknown version {@code 1.2.4}. The resolver does nothing but + * insert the passed value into {@link VersionRangeResult}. + * </p> + * + * @throws Exception + */ + public void testHard_unknown() + throws Exception + { + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.2.4]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertNull( result.getLowestVersion() ); + assertNull( result.getHighestVersion() ); + assertTrue( result.getVersions().isEmpty() ); + } + + /** + * Test resolves version range {@code [1.2]}. + * <p> + * Based on javadoc of {@link GenericVersionScheme}:<br> + * <blockquote> An empty segment/string is equivalent to 0. </blockquote> + * </p> + * + * @see GenericVersionScheme + * @throws Exception + */ + public void testHard_short() + throws Exception + { + final Version expectedVersion = versionScheme.parseVersion( "1.2.0" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.2]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedVersion, result.getLowestVersion() ); + assertEquals( expectedVersion, result.getHighestVersion() ); + assertEquals( 1, result.getVersions().size() ); + } + + /** + * Test resolves version range {@code [1.2.*]}. + * <p> + * Based on javadoc of {@link GenericVersionScheme}:<br> + * <blockquote> In addition to the above mentioned qualifiers, the tokens "min" and "max" may be used as final + * version segment to denote the smallest/greatest version having a given prefix. For example, "1.2.min" denotes the + * smallest version in the 1.2 line, "1.2.max" denotes the greatest version in the 1.2 line. A version range of the + * form "[M.N.*]" is short for "[M.N.min, M.N.max]". </blockquote> + * </p> + * + * @see GenericVersionScheme + * @throws Exception + */ + public void testHard_wildcard() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.2.0-SNAPSHOT" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "1.2.3" ); + final Version expectedSnapshotVersion = versionScheme.parseVersion( "1.2.2-SNAPSHOT" ); + final Version expectedReleaseVersion = versionScheme.parseVersion( "1.2.1" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.2.*]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 8, result.getVersions().size() ); + assertTrue( result.getVersions().contains( expectedSnapshotVersion ) ); + assertTrue( result.getVersions().contains( expectedReleaseVersion ) ); + } + + /** + * Test resolves version range {@code [1.0.0,2.0.0]} (1.0.0 <= x <= 2.0.0). + * <p> + * The expected version range starts with the lowest version {@code 1.0.0} and ends with the highest inclusive + * version {@code 2.0.0}. + * </p> + * + * @throws Exception + */ + public void testLeftInclusiveRightInclusive() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.0" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "2.0.0" ); + final Version expectedSnapshotVersion = versionScheme.parseVersion( "1.3.1-SNAPSHOT" ); + final Version expectedReleaseVersion = versionScheme.parseVersion( "1.3.1" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.0.0,2.0.0]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 33, result.getVersions().size() ); + assertTrue( result.getVersions().contains( expectedSnapshotVersion ) ); + assertTrue( result.getVersions().contains( expectedReleaseVersion ) ); + } + + /** + * Test resolves version range {@code [1.0.0,2.0.0)} (1.0.0 <= x < 2.0.0). + * <p> + * The expected version range starts with the lowest version {@code 1.0.0} and ends with the highest inclusive + * version {@code 2.0.0-SNAPSHOT}. + * </p> + * <p> + * Note: {@code 2.0.0-SNAPSHOT} is 'lower' than {@code 2.0.0} and will be part of this version range. + * </p> + * + * @throws Exception + */ + public void testLeftInclusiveRightExclusive() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.0" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "2.0.0-SNAPSHOT" ); + final Version expectedSnapshotVersion = versionScheme.parseVersion( "1.3.1-SNAPSHOT" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.0.0,2.0.0)" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( 32, result.getVersions().size() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertTrue( result.getVersions().contains( expectedSnapshotVersion ) ); + } + + /** + * Test resolves version range {@code (1.0.0,2.0.0]} (1.0.0 < x <= 2.0.0). + * <p> + * The expected version range starts with the lowest version {@code 1.0.1-SNAPSHOT} and ends with the highest + * inclusive version {@code 2.0.0}. + * </p> + * <p> + * Note: The version {@code 1.0.0} will be excluded by pattern and {@code 1.0.1-SNAPSHOT} is the lowest version + * instead. + * </p> + * + * @throws Exception + */ + public void testLeftExclusiveRightInclusive() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.1-SNAPSHOT" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "2.0.0" ); + final Version expectedSnapshotVersion = versionScheme.parseVersion( "1.3.1-SNAPSHOT" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "(1.0.0,2.0.0]" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 32, result.getVersions().size() ); + assertTrue( result.getVersions().contains( expectedSnapshotVersion ) ); + } + + /** + * Test resolves version range {@code (1.0.0,2.0.0)} (1.0.0 < x < 2.0.0). + * <p> + * The expected version range starts with the lowest version {@code 1.0.1-SNAPSHOT} and ends with the highest + * inclusive version {@code 2.0.0-SNAPSHOT}. + * </p> + * + * @throws Exception + */ + public void testLeftExclusiveRightExclusive() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.1-SNAPSHOT" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "2.0.0-SNAPSHOT" ); + final Version expectedSnapshotVersion = versionScheme.parseVersion( "1.3.1-SNAPSHOT" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "(1.0.0,2.0.0)" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 31, result.getVersions().size() ); + assertTrue( result.getVersions().contains( expectedSnapshotVersion ) ); + } + + /** + * Test resolves version range {@code [1.0.0,)} (x < 1.0.0). + * <p> + * The expected version range starts with the lowest version {@code 1.0.0} and ends with the highest inclusive + * version {@code 3.1.0-SNAPSHOT}. + * </p> + * + * @throws Exception + */ + public void testLeftInclusiveRightOpen() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.0" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "3.1.0-SNAPSHOT" ); + final Version expectedReleaseVersion = versionScheme.parseVersion( "2.0.0" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "[1.0.0,)" ) ); + + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 69, result.getVersions().size() ); + assertTrue( result.getVersions().contains( expectedReleaseVersion ) ); + } + + /** + * Test filter of resolved version range {@code (,2.0.0]} (x <= 2.0.0). + * <p> + * The expected versions are only non {@code SNAPSHOT}. The version range starts with the lowest version + * {@code 1.0.0} and ends with the highest inclusive version {@code 2.0.0}. + * </p> + * + * @throws Exception + */ + public void testVersionRangeResultFilter() + throws Exception + { + final Version expectedLowestVersion = versionScheme.parseVersion( "1.0.0" ); + final Version expectedHighestVersion = versionScheme.parseVersion( "2.0.0" ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "mng-3092", "jar", "(,2.0.0]" ) ); + + sut.setVersionRangeResultFilter( new TestOnlyVersionRangeResultFilter() ); + final VersionRangeResult result = sut.resolveVersionRange( session, request ); + + assertNotNull( result ); + assertEquals( expectedLowestVersion, result.getLowestVersion() ); + assertEquals( expectedHighestVersion, result.getHighestVersion() ); + assertEquals( 17, result.getVersions().size() ); + for ( Iterator<Version> it = result.getVersions().iterator(); it.hasNext(); ) + { + // XXX: better way to identify a SNAPSHOT version + if ( String.valueOf( it.next() ).endsWith( "SNAPSHOT" ) ) + { + fail( "Non filtered SNAPSHOT version in version range result." ); + } + } + } + + /** + * Test error handling if invalid {@link VersionRangeResultFilter} will be set. + * + * @throws Exception + */ + public void testInvalidVersionRangeResultFilter() + throws Exception + { + try + { + sut.setVersionRangeResultFilter( null ); + fail( "Exception expected by set invalid version range result filter." ); + } + catch ( NullPointerException iae ) + { + assertEquals( "versionRangeResultFilter cannot be null", iae.getMessage() ); + } + } + + private final class TestOnlyVersionRangeResultFilter implements VersionRangeResultFilter + { + + @Override + public VersionRangeResult filterVersionRangeResult( VersionRangeResult versionRangeResult ) + throws VersionRangeResolutionException + { + for ( Iterator<Version> it = versionRangeResult.getVersions().iterator(); it.hasNext(); ) + { + // XXX: better way to identify a SNAPSHOT version + if ( String.valueOf( it.next() ).endsWith( "SNAPSHOT" ) ) + { + it.remove(); + } + } + return versionRangeResult; + } + + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java new file mode 100644 index 0000000..90dd6a4 --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java @@ -0,0 +1,96 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.resolution.VersionRequest; +import org.eclipse.aether.resolution.VersionResult; +import org.eclipse.aether.artifact.DefaultArtifact; + +public class DefaultVersionResolverTest + extends AbstractRepositoryTestCase +{ + private DefaultVersionResolver versionResolver; + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + // be sure we're testing the right class, i.e. DefaultVersionResolver.class + versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" ); + } + + @Override + protected void tearDown() + throws Exception + { + versionResolver = null; + super.tearDown(); + } + + public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts() + throws Exception + { + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() ); + + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() ); + } + + public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts() + throws Exception + { + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + String versionA = "07.20.3-20120809.112124-88"; + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( versionA, resultA.getVersion() ); + + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + String versionB = "07.20.3-20120809.112920-97"; + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( versionB, resultB.getVersion() ); + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java new file mode 100644 index 0000000..768835a --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java @@ -0,0 +1,45 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.spi.locator.ServiceLocator; + +import junit.framework.TestCase; + +public class MavenRepositorySystemUtilsTest + extends TestCase +{ + + public void testGetRepositorySystem() + { + ServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); + RepositorySystem repoSys = locator.getService( RepositorySystem.class ); + assertNotNull( repoSys ); + } + + public void testGetMetadataGeneratorFactories() + { + ServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); + assertEquals( 2, locator.getServices( MetadataGeneratorFactory.class ).size() ); + } + +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java new file mode 100644 index 0000000..278231f --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java @@ -0,0 +1,82 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import static org.junit.Assert.assertTrue; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class RemoteSnapshotMetadataTest +{ + private Locale defaultLocale; + + @Before + public void setLocaleToUseBuddhistCalendar() + { + defaultLocale = Locale.getDefault(); + Locale.setDefault( new Locale( "th", "TH" ) ); + } + + @After + public void restoreLocale() + { + Locale.setDefault( defaultLocale ); + } + + static String gregorianDate() + { + SimpleDateFormat df = new SimpleDateFormat( "yyyyMMdd" ); + df.setCalendar( new GregorianCalendar() ); + df.setTimeZone( RemoteSnapshotMetadata.DEFAULT_SNAPSHOT_TIME_ZONE ); + return df.format( new Date() ); + } + + @Test + public void gregorianCalendarIsUsed() + { + String dateBefore = gregorianDate(); + + RemoteSnapshotMetadata metadata = new RemoteSnapshotMetadata( + new DefaultArtifact( "a:b:1-SNAPSHOT" ), false); + metadata.merge( new Metadata() ); + + String dateAfter = gregorianDate(); + + String ts = metadata.metadata.getVersioning().getSnapshot().getTimestamp(); + String datePart = ts.replaceAll( "\\..*", "" ); + + /* Allow for this test running across midnight */ + Set<String> expected = new HashSet<String>( Arrays.asList( dateBefore, dateAfter ) ); + assertTrue( "Expected " + datePart + " to be in " + expected, + expected.contains( datePart ) ); + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java new file mode 100644 index 0000000..db77a44 --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -0,0 +1,220 @@ +package org.apache.maven.repository.internal; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.Arrays; +import java.util.List; + +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.collection.CollectResult; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.resolution.ArtifactDescriptorRequest; +import org.eclipse.aether.resolution.ArtifactDescriptorResult; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.artifact.DefaultArtifact; + +public class RepositorySystemTest + extends AbstractRepositoryTestCase +{ + public void testResolveVersionRange() + throws Exception + { + //VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request ) + // throws VersionRangeResolutionException; + + } + + public void testResolveVersion() + throws Exception + { + //VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) + // throws VersionResolutionException; + } + + public void testReadArtifactDescriptor() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); + + ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); + request.setArtifact( artifact ); + request.addRepository( newTestRepository() ); + + ArtifactDescriptorResult result = system.readArtifactDescriptor( session, request ); + + List<Dependency> deps = result.getDependencies(); + assertEquals( 2, deps.size() ); + checkUtSimpleArtifactDependencies( deps.get( 0 ), deps.get( 1 ) ); + } + + /** + * check ut.simple:artifact:1.0 dependencies + */ + private void checkUtSimpleArtifactDependencies( Dependency dep1, Dependency dep2 ) + { + assertEquals( "compile", dep1.getScope() ); + assertFalse( dep1.isOptional() ); + assertEquals( 0, dep1.getExclusions().size() ); + Artifact depArtifact = dep1.getArtifact(); + assertEquals( "ut.simple", depArtifact.getGroupId() ); + assertEquals( "dependency", depArtifact.getArtifactId() ); + assertEquals( "1.0", depArtifact.getVersion() ); + assertEquals( "1.0", depArtifact.getBaseVersion() ); + assertNull( depArtifact.getFile() ); + assertFalse( depArtifact.isSnapshot() ); + assertEquals( "", depArtifact.getClassifier() ); + assertEquals( "jar", depArtifact.getExtension() ); + assertEquals( "java", depArtifact.getProperty( "language", null ) ); + assertEquals( "jar", depArtifact.getProperty( "type", null ) ); + assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); + assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); + assertEquals( 4, depArtifact.getProperties().size() ); + + assertEquals( "compile", dep2.getScope() ); + assertFalse( dep2.isOptional() ); + assertEquals( 0, dep2.getExclusions().size() ); + depArtifact = dep2.getArtifact(); + assertEquals( "ut.simple", depArtifact.getGroupId() ); + assertEquals( "dependency", depArtifact.getArtifactId() ); + assertEquals( "1.0", depArtifact.getVersion() ); + assertEquals( "1.0", depArtifact.getBaseVersion() ); + assertNull( depArtifact.getFile() ); + assertFalse( depArtifact.isSnapshot() ); + assertEquals( "sources", depArtifact.getClassifier() ); + assertEquals( "jar", depArtifact.getExtension() ); + assertEquals( "java", depArtifact.getProperty( "language", null ) ); + assertEquals( "jar", depArtifact.getProperty( "type", null ) ); // shouldn't it be java-sources given the classifier? + assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); // shouldn't it be false given the classifier? + assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); + assertEquals( 4, depArtifact.getProperties().size() ); + } + + public void testCollectDependencies() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); + // notice: extension and classifier not really used in this test... + + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot( new Dependency( artifact, null ) ); + collectRequest.addRepository( newTestRepository() ); + + CollectResult collectResult = system.collectDependencies( session, collectRequest ); + + List<DependencyNode> nodes = collectResult.getRoot().getChildren(); + assertEquals( 2, nodes.size() ); + checkUtSimpleArtifactDependencies( nodes.get( 0 ).getDependency(), nodes.get( 1 ).getDependency() ); + } + + public void testResolveArtifact() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:1.0" ); + + ArtifactRequest artifactRequest = new ArtifactRequest(); + artifactRequest.setArtifact( artifact ); + artifactRequest.addRepository( newTestRepository() ); + + ArtifactResult artifactResult = system.resolveArtifact( session, artifactRequest ); + checkArtifactResult( artifactResult, "artifact-1.0.jar" ); + + artifact = new DefaultArtifact( "ut.simple:artifact:zip:1.0" ); + artifactRequest.setArtifact( artifact ); + artifactResult = system.resolveArtifact( session, artifactRequest ); + checkArtifactResult( artifactResult, "artifact-1.0.zip" ); + + artifact = new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ); + artifactRequest.setArtifact( artifact ); + artifactResult = system.resolveArtifact( session, artifactRequest ); + checkArtifactResult( artifactResult, "artifact-1.0-classifier.zip" ); + } + + private void checkArtifactResult( ArtifactResult result, String filename ) + { + assertFalse( result.isMissing() ); + assertTrue( result.isResolved() ); + Artifact artifact = result.getArtifact(); + assertNotNull( artifact.getFile() ); + assertEquals( filename, artifact.getFile().getName() ); + } + + public void testResolveArtifacts() + throws Exception + { + ArtifactRequest req1 = new ArtifactRequest(); + req1.setArtifact( new DefaultArtifact( "ut.simple:artifact:1.0" ) ); + req1.addRepository( newTestRepository() ); + + ArtifactRequest req2 = new ArtifactRequest(); + req2.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:1.0" ) ); + req2.addRepository( newTestRepository() ); + + ArtifactRequest req3 = new ArtifactRequest(); + req3.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ) ); + req3.addRepository( newTestRepository() ); + + List<ArtifactRequest> requests = Arrays.asList( req1, req2, req3 ); + + List<ArtifactResult> results = system.resolveArtifacts( session, requests ); + + assertEquals( 3, results.size() ); + checkArtifactResult( results.get( 0 ), "artifact-1.0.jar" ); + checkArtifactResult( results.get( 1 ), "artifact-1.0.zip" ); + checkArtifactResult( results.get( 2 ), "artifact-1.0-classifier.zip" ); + } + + public void testResolveMetadata() + throws Exception + { + //List<MetadataResult> resolveMetadata( RepositorySystemSession session, + // Collection<? extends MetadataRequest> requests ); + } + + public void testInstall() + throws Exception + { + //InstallResult install( RepositorySystemSession session, InstallRequest request ) + // throws InstallationException; + // release, snapshot unique ou non unique, attachement + } + + public void testDeploy() + throws Exception + { + //DeployResult deploy( RepositorySystemSession session, DeployRequest request ) + // throws DeploymentException; + } + + public void testNewLocalRepositoryManager() + throws Exception + { + //LocalRepositoryManager newLocalRepositoryManager( LocalRepository localRepository ); + } + + public void testNewSyncContext() + throws Exception + { + //SyncContext newSyncContext( RepositorySystemSession session, boolean shared ); + } + +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java new file mode 100644 index 0000000..2879a9f --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java @@ -0,0 +1,132 @@ +package org.apache.maven.repository.internal.util; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.PrintStream; + +import org.eclipse.aether.AbstractRepositoryListener; +import org.eclipse.aether.RepositoryEvent; + +public class ConsoleRepositoryListener + extends AbstractRepositoryListener +{ + + private PrintStream out; + + public ConsoleRepositoryListener() + { + this( null ); + } + + public ConsoleRepositoryListener( PrintStream out ) + { + this.out = ( out != null ) ? out : System.out; + } + + public void artifactDeployed( RepositoryEvent event ) + { + println( "artifactDeployed", event.getArtifact() + " to " + event.getRepository() ); + } + + public void artifactDeploying( RepositoryEvent event ) + { + println( "artifactDeploying", event.getArtifact() + " to " + event.getRepository() ); + } + + public void artifactDescriptorInvalid( RepositoryEvent event ) + { + println( "artifactDescriptorInvalid", "for " + event.getArtifact() + ": " + event.getException().getMessage() ); + } + + public void artifactDescriptorMissing( RepositoryEvent event ) + { + println( "artifactDescriptorMissing", "for " + event.getArtifact() ); + } + + public void artifactInstalled( RepositoryEvent event ) + { + println( "artifactInstalled", event.getArtifact() + " to " + event.getFile() ); + } + + public void artifactInstalling( RepositoryEvent event ) + { + println( "artifactInstalling", event.getArtifact() + " to " + event.getFile() ); + } + + public void artifactResolved( RepositoryEvent event ) + { + println( "artifactResolved", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactDownloading( RepositoryEvent event ) + { + println( "artifactDownloading", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactDownloaded( RepositoryEvent event ) + { + println( "artifactDownloaded", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactResolving( RepositoryEvent event ) + { + println( "artifactResolving", event.getArtifact().toString() ); + } + + public void metadataDeployed( RepositoryEvent event ) + { + println( "metadataDeployed", event.getMetadata() + " to " + event.getRepository() ); + } + + public void metadataDeploying( RepositoryEvent event ) + { + println( "metadataDeploying", event.getMetadata() + " to " + event.getRepository() ); + } + + public void metadataInstalled( RepositoryEvent event ) + { + println( "metadataInstalled", event.getMetadata() + " to " + event.getFile() ); + } + + public void metadataInstalling( RepositoryEvent event ) + { + println( "metadataInstalling", event.getMetadata() + " to " + event.getFile() ); + } + + public void metadataInvalid( RepositoryEvent event ) + { + println( "metadataInvalid", event.getMetadata().toString() ); + } + + public void metadataResolved( RepositoryEvent event ) + { + println( "metadataResolved", event.getMetadata() + " from " + event.getRepository() ); + } + + public void metadataResolving( RepositoryEvent event ) + { + println( "metadataResolving", event.getMetadata() + " from " + event.getRepository() ); + } + + private void println( String event, String message ) + { + out.println( "Aether Repository - " + event + ": " + message ); + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java new file mode 100644 index 0000000..cf587d8 --- /dev/null +++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java @@ -0,0 +1,186 @@ +package org.apache.maven.repository.internal.util; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.PrintStream; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.eclipse.aether.transfer.AbstractTransferListener; +import org.eclipse.aether.transfer.TransferEvent; +import org.eclipse.aether.transfer.TransferResource; + +public class ConsoleTransferListener + extends AbstractTransferListener +{ + + private PrintStream out; + + private Map<TransferResource, Long> downloads = new ConcurrentHashMap<>(); + + private int lastLength; + + public ConsoleTransferListener() + { + this( null ); + } + + public ConsoleTransferListener( PrintStream out ) + { + this.out = ( out != null ) ? out : System.out; + } + + @Override + public void transferInitiated( TransferEvent event ) + { + String message = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading"; + + println( "transferInitiated", message + ": " + event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); + } + + @Override + public void transferProgressed( TransferEvent event ) + { + TransferResource resource = event.getResource(); + downloads.put( resource, event.getTransferredBytes() ); + + StringBuilder buffer = new StringBuilder( 64 ); + + for ( Map.Entry<TransferResource, Long> entry : downloads.entrySet() ) + { + long total = entry.getKey().getContentLength(); + long complete = entry.getValue(); + + buffer.append( getStatus( complete, total ) ).append( " " ); + } + + int pad = lastLength - buffer.length(); + lastLength = buffer.length(); + pad( buffer, pad ); + buffer.append( '\r' ); + + print( "transferProgressed", buffer.toString() ); + } + + private String getStatus( long complete, long total ) + { + if ( total >= 1024 ) + { + return toKB( complete ) + "/" + toKB( total ) + " KB "; + } + else if ( total >= 0 ) + { + return complete + "/" + total + " B "; + } + else if ( complete >= 1024 ) + { + return toKB( complete ) + " KB "; + } + else + { + return complete + " B "; + } + } + + private void pad( StringBuilder buffer, int spaces ) + { + String block = " "; + while ( spaces > 0 ) + { + int n = Math.min( spaces, block.length() ); + buffer.append( block, 0, n ); + spaces -= n; + } + } + + @Override + public void transferSucceeded( TransferEvent event ) + { + transferCompleted( event ); + + TransferResource resource = event.getResource(); + long contentLength = event.getTransferredBytes(); + if ( contentLength >= 0 ) + { + String type = ( event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded" ); + String len = contentLength >= 1024 ? toKB( contentLength ) + " KB" : contentLength + " B"; + + String throughput = ""; + long duration = System.currentTimeMillis() - resource.getTransferStartTime(); + if ( duration > 0 ) + { + DecimalFormat format = new DecimalFormat( "0.0", new DecimalFormatSymbols( Locale.ENGLISH ) ); + double kbPerSec = ( contentLength / 1024.0 ) / ( duration / 1000.0 ); + throughput = " at " + format.format( kbPerSec ) + " KB/sec"; + } + + println( "transferSucceeded", type + ": " + resource.getRepositoryUrl() + resource.getResourceName() + " (" + + len + throughput + ")" ); + } + } + + @Override + public void transferFailed( TransferEvent event ) + { + transferCompleted( event ); + + println( "transferFailed", event.getException().getClass() + ": " + event.getException().getMessage() ); + } + + private void transferCompleted( TransferEvent event ) + { + downloads.remove( event.getResource() ); + + StringBuilder buffer = new StringBuilder( 64 ); + pad( buffer, lastLength ); + buffer.append( '\r' ); + out.println( buffer ); + } + + @Override + public void transferCorrupted( TransferEvent event ) + { + println( "transferCorrupted", event.getException().getClass() + ": " + event.getException().getMessage() ); + } + + protected long toKB( long bytes ) + { + return ( bytes + 1023 ) / 1024; + } + + private void println( String event, String message ) + { + print( event, message ); + out.println(); + } + + private void print( String event, String message ) + { + out.print( "Aether Transfer - " + event ); + if ( message != null ) + { + out.print( ": " ); + out.print( message ); + } + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml new file mode 100644 index 0000000..9f0a7fe --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd" + modelVersion="1.1.0"> + <groupId>org.apache.maven.its</groupId> + <artifactId>dep-mng5324</artifactId> + <version>07.20.3-SNAPSHOT</version><!-- metadata for artifact snapshot --> + <versioning> + <snapshot> + <timestamp>20120809.112920</timestamp> + <buildNumber>97</buildNumber> + </snapshot> + <lastUpdated>20120809112920</lastUpdated> + <snapshotVersions> + <snapshotVersion> + <classifier>classifierA</classifier> + <extension>jar</extension> + <value>07.20.3-20120809.112124-88</value> + <updated>20120809112124</updated> + </snapshotVersion> + <snapshotVersion> + <classifier>classifierB</classifier> + <extension>jar</extension> + <value>07.20.3-20120809.112920-97</value> + <updated>20120809112920</updated> + </snapshotVersion> + </snapshotVersions> + </versioning> +</metadata> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 0000000..923f26f --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd" + modelVersion="1.1.0"> + <groupId>org.apache.maven.its</groupId> + <artifactId>dep-mng5459</artifactId> + <version>0.4.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20130404.090532</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + <lastUpdated>20130404093657</lastUpdated> + <snapshotVersions> + <snapshotVersion> + <extension>pom</extension> + <value>0.4.0-20130404.090532-2</value> + <updated>20130404090532</updated> + </snapshotVersion> + <snapshotVersion> + <extension>jar</extension> + <value>0.4.0-20130404.093655-3</value> + <updated>20130404093655</updated> + </snapshotVersion> + </snapshotVersions> + </versioning> +</metadata> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/mng-3092/maven-metadata.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/mng-3092/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/mng-3092/maven-metadata.xml new file mode 100644 index 0000000..65ab4b0 --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/mng-3092/maven-metadata.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd"> + <groupId>ut.simple</groupId> + <artifactId>parent</artifactId> + <versioning> + <latest>3.1.0-SNAPSHOT</latest> + <release>3.0.1</release> + <versions> + <version>1.0.0-SNAPSHOT</version> + <version>1.0.0</version> + <version>1.0.1-SNAPSHOT</version> + <version>1.0.1</version> + <version>1.0.2-SNAPSHOT</version> + <version>1.0.2</version> + <version>1.0.3-SNAPSHOT</version> + <version>1.0.3</version> + <version>1.1.0-SNAPSHOT</version> + <version>1.1.0</version> + <version>1.1.1-SNAPSHOT</version> + <version>1.1.1</version> + <version>1.1.2-SNAPSHOT</version> + <version>1.1.2</version> + <version>1.1.3-SNAPSHOT</version> + <version>1.1.3</version> + <version>1.2.0-SNAPSHOT</version> + <version>1.2.0</version> + <version>1.2.1-SNAPSHOT</version> + <version>1.2.1</version> + <version>1.2.2-SNAPSHOT</version> + <version>1.2.2</version> + <version>1.2.3-SNAPSHOT</version> + <version>1.2.3</version> + <version>1.3.0-SNAPSHOT</version> + <version>1.3.0</version> + <version>1.3.1-SNAPSHOT</version> + <version>1.3.1</version> + <version>1.3.2-SNAPSHOT</version> + <version>1.3.2</version> + <version>1.3.3-SNAPSHOT</version> + <version>1.3.3</version> + <version>2.0.0-SNAPSHOT</version> + <version>2.0.0</version> + <version>2.0.1-SNAPSHOT</version> + <version>2.0.1</version> + <version>2.0.2-SNAPSHOT</version> + <version>2.0.2</version> + <version>2.0.3-SNAPSHOT</version> + <version>2.0.3</version> + <version>2.1.0-SNAPSHOT</version> + <version>2.1.0</version> + <version>2.1.1-SNAPSHOT</version> + <version>2.1.1</version> + <version>2.1.2-SNAPSHOT</version> + <version>2.1.2</version> + <version>2.1.3-SNAPSHOT</version> + <version>2.1.3</version> + <version>2.2.0-SNAPSHOT</version> + <version>2.2.0</version> + <version>2.2.1-SNAPSHOT</version> + <version>2.2.1</version> + <version>2.2.2-SNAPSHOT</version> + <version>2.2.2</version> + <version>2.2.3-SNAPSHOT</version> + <version>2.2.3</version> + <version>2.3.0-SNAPSHOT</version> + <version>2.3.0</version> + <version>2.3.1-SNAPSHOT</version> + <version>2.3.1</version> + <version>2.3.2-SNAPSHOT</version> + <version>2.3.2</version> + <version>2.3.3-SNAPSHOT</version> + <version>2.3.3</version> + <version>3.0.0-SNAPSHOT</version> + <version>3.0.0</version> + <version>3.0.1-SNAPSHOT</version> + <version>3.0.1</version> + <version>3.0.2-SNAPSHOT</version> + <version>3.1.0-SNAPSHOT</version> + </versions> + <lastUpdated>20150401000001</lastUpdated> + </versioning> +</metadata> + http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom new file mode 100644 index 0000000..f8b72af --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>ut.simple</groupId> + <artifactId>parent</artifactId> + <version>1.0</version> + </parent> + + <artifactId>artifact</artifactId> + + <name>Simple Unit Test Artifact</name> + + <dependencies> + <dependency> + <groupId>ut.simple</groupId> + <artifactId>dependency</artifactId> + </dependency> + <dependency> + <groupId>ut.simple</groupId> + <artifactId>dependency</artifactId> + <version>1.0</version> + <classifier>sources</classifier> + </dependency> + </dependencies> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml new file mode 100644 index 0000000..2de7ecc --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd"> + <groupId>ut.simple</groupId> + <artifactId>artifact</artifactId> + <versioning> + <latest>1.0</latest> + <release>1.0</release> + <versions> + <version>1.0</version> + </versions> + <lastUpdated>20111123122038</lastUpdated> + </versioning> +</metadata> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom new file mode 100644 index 0000000..c021dfa --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>ut.simple</groupId> + <artifactId>dependency</artifactId> + <version>1.0</version> + + <name>Simple Unit Test Dependency</name> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml new file mode 100644 index 0000000..8a97c34 --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd"> + <groupId>ut.simple</groupId> + <artifactId>dependency</artifactId> + <versioning> + <latest>1.0</latest> + <release>1.0</release> + <versions> + <version>1.0</version> + </versions> + <lastUpdated>20111123122038</lastUpdated> + </versioning> +</metadata> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom b/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom new file mode 100644 index 0000000..ed64c9e --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>ut.simple</groupId> + <artifactId>parent</artifactId> + <version>1.0</version> + <packaging>pom</packaging> + + <name>Simple Unit Test Parent</name> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>ut.simple</groupId> + <artifactId>dependency</artifactId> + <version>1.0</version> + </dependency> + </dependencies> + </dependencyManagement> + +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/maven/blob/58554032/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml ---------------------------------------------------------------------- diff --git a/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml new file mode 100644 index 0000000..7199d52 --- /dev/null +++ b/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one + ~ or more contributor license agreements. See the NOTICE file + ~ distributed with this work for additional information + ~ regarding copyright ownership. The ASF licenses this file + ~ to you under the Apache License, Version 2.0 (the + ~ "License"); you may not use this file except in compliance + ~ with the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, + ~ software distributed under the License is distributed on an + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + ~ KIND, either express or implied. See the License for the + ~ specific language governing permissions and limitations + ~ under the License. +--> + +<metadata xmlns="http://maven.apache.org/METADATA/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/METADATA/1.1.0 http://maven.apache.org/xsd/metadata-1.1.0.xsd"> + <groupId>ut.simple</groupId> + <artifactId>parent</artifactId> + <versioning> + <latest>1.0</latest> + <release>1.0</release> + <versions> + <version>1.0</version> + </versions> + <lastUpdated>20111123122038</lastUpdated> + </versioning> +</metadata> \ No newline at end of file