001package org.apache.maven.repository.internal;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *   http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import java.util.Arrays;
023import java.util.List;
024
025import org.eclipse.aether.artifact.Artifact;
026import org.eclipse.aether.collection.CollectRequest;
027import org.eclipse.aether.collection.CollectResult;
028import org.eclipse.aether.graph.Dependency;
029import org.eclipse.aether.graph.DependencyNode;
030import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
031import org.eclipse.aether.resolution.ArtifactDescriptorResult;
032import org.eclipse.aether.resolution.ArtifactRequest;
033import org.eclipse.aether.resolution.ArtifactResult;
034import org.eclipse.aether.artifact.DefaultArtifact;
035
036public class RepositorySystemTest
037    extends AbstractRepositoryTestCase
038{
039    public void testResolveVersionRange()
040        throws Exception
041    {
042        //VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request )
043        //                throws VersionRangeResolutionException;
044
045    }
046
047    public void testResolveVersion()
048        throws Exception
049    {
050        //VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request )
051        //                throws VersionResolutionException;
052    }
053
054    public void testReadArtifactDescriptor()
055        throws Exception
056    {
057        Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" );
058
059        ArtifactDescriptorRequest request = new ArtifactDescriptorRequest();
060        request.setArtifact( artifact );
061        request.addRepository( newTestRepository() );
062
063        ArtifactDescriptorResult result = system.readArtifactDescriptor( session, request );
064
065        List<Dependency> deps = result.getDependencies();
066        assertEquals( 2, deps.size() );
067        checkUtSimpleArtifactDependencies( deps.get( 0 ), deps.get( 1 ) );
068    }
069
070    /**
071     * check ut.simple:artifact:1.0 dependencies
072     */
073    private void checkUtSimpleArtifactDependencies( Dependency dep1, Dependency dep2 )
074    {
075        assertEquals( "compile", dep1.getScope() );
076        assertFalse( dep1.isOptional() );
077        assertEquals( 0, dep1.getExclusions().size() );
078        Artifact depArtifact = dep1.getArtifact();
079        assertEquals( "ut.simple", depArtifact.getGroupId() );
080        assertEquals( "dependency", depArtifact.getArtifactId() );
081        assertEquals( "1.0", depArtifact.getVersion() );
082        assertEquals( "1.0", depArtifact.getBaseVersion() );
083        assertNull( depArtifact.getFile() );
084        assertFalse( depArtifact.isSnapshot() );
085        assertEquals( "", depArtifact.getClassifier() );
086        assertEquals( "jar", depArtifact.getExtension() );
087        assertEquals( "java", depArtifact.getProperty( "language", null ) );
088        assertEquals( "jar", depArtifact.getProperty( "type", null ) );
089        assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) );
090        assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) );
091        assertEquals( 4, depArtifact.getProperties().size() );
092
093        assertEquals( "compile", dep2.getScope() );
094        assertFalse( dep2.isOptional() );
095        assertEquals( 0, dep2.getExclusions().size() );
096        depArtifact = dep2.getArtifact();
097        assertEquals( "ut.simple", depArtifact.getGroupId() );
098        assertEquals( "dependency", depArtifact.getArtifactId() );
099        assertEquals( "1.0", depArtifact.getVersion() );
100        assertEquals( "1.0", depArtifact.getBaseVersion() );
101        assertNull( depArtifact.getFile() );
102        assertFalse( depArtifact.isSnapshot() );
103        assertEquals( "sources", depArtifact.getClassifier() );
104        assertEquals( "jar", depArtifact.getExtension() );
105        assertEquals( "java", depArtifact.getProperty( "language", null ) );
106        assertEquals( "jar", depArtifact.getProperty( "type", null ) ); // shouldn't it be java-sources given the classifier?
107        assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); // shouldn't it be false given the classifier?
108        assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) );
109        assertEquals( 4, depArtifact.getProperties().size() );
110    }
111
112    public void testCollectDependencies()
113        throws Exception
114    {
115        Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" );
116        // notice: extension and classifier not really used in this test...
117
118        CollectRequest collectRequest = new CollectRequest();
119        collectRequest.setRoot( new Dependency( artifact, null ) );
120        collectRequest.addRepository( newTestRepository() );
121
122        CollectResult collectResult = system.collectDependencies( session, collectRequest );
123
124        List<DependencyNode> nodes = collectResult.getRoot().getChildren();
125        assertEquals( 2, nodes.size() );
126        checkUtSimpleArtifactDependencies( nodes.get( 0 ).getDependency(), nodes.get( 1 ).getDependency() );
127    }
128
129    public void testResolveArtifact()
130        throws Exception
131    {
132        Artifact artifact = new DefaultArtifact( "ut.simple:artifact:1.0" );
133
134        ArtifactRequest artifactRequest = new ArtifactRequest();
135        artifactRequest.setArtifact( artifact );
136        artifactRequest.addRepository( newTestRepository() );
137
138        ArtifactResult artifactResult = system.resolveArtifact( session, artifactRequest );
139        checkArtifactResult( artifactResult, "artifact-1.0.jar" );
140
141        artifact = new DefaultArtifact( "ut.simple:artifact:zip:1.0" );
142        artifactRequest.setArtifact( artifact );
143        artifactResult = system.resolveArtifact( session, artifactRequest );
144        checkArtifactResult( artifactResult, "artifact-1.0.zip" );
145
146        artifact = new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" );
147        artifactRequest.setArtifact( artifact );
148        artifactResult = system.resolveArtifact( session, artifactRequest );
149        checkArtifactResult( artifactResult, "artifact-1.0-classifier.zip" );
150    }
151
152    private void checkArtifactResult( ArtifactResult result, String filename )
153    {
154        assertFalse( result.isMissing() );
155        assertTrue( result.isResolved() );
156        Artifact artifact = result.getArtifact();
157        assertNotNull( artifact.getFile() );
158        assertEquals( filename, artifact.getFile().getName() );
159    }
160
161    public void testResolveArtifacts()
162        throws Exception
163    {
164        ArtifactRequest req1 = new ArtifactRequest();
165        req1.setArtifact( new DefaultArtifact( "ut.simple:artifact:1.0" ) );
166        req1.addRepository( newTestRepository() );
167
168        ArtifactRequest req2 = new ArtifactRequest();
169        req2.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:1.0" ) );
170        req2.addRepository( newTestRepository() );
171
172        ArtifactRequest req3 = new ArtifactRequest();
173        req3.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ) );
174        req3.addRepository( newTestRepository() );
175
176        List<ArtifactRequest> requests = Arrays.asList( req1, req2, req3 );
177
178        List<ArtifactResult> results = system.resolveArtifacts( session, requests );
179
180        assertEquals( 3, results.size() );
181        checkArtifactResult( results.get( 0 ), "artifact-1.0.jar" );
182        checkArtifactResult( results.get( 1 ), "artifact-1.0.zip" );
183        checkArtifactResult( results.get( 2 ), "artifact-1.0-classifier.zip" );
184    }
185
186    public void testResolveMetadata()
187        throws Exception
188    {
189        //List<MetadataResult> resolveMetadata( RepositorySystemSession session,
190        //                                      Collection<? extends MetadataRequest> requests );
191    }
192
193    public void testInstall()
194        throws Exception
195    {
196        //InstallResult install( RepositorySystemSession session, InstallRequest request )
197        //                throws InstallationException;
198        // release, snapshot unique ou non unique, attachement
199    }
200
201    public void testDeploy()
202        throws Exception
203    {
204        //DeployResult deploy( RepositorySystemSession session, DeployRequest request )
205        //                throws DeploymentException;
206    }
207
208    public void testNewLocalRepositoryManager()
209        throws Exception
210    {
211        //LocalRepositoryManager newLocalRepositoryManager( LocalRepository localRepository );
212    }
213
214    public void testNewSyncContext()
215        throws Exception
216    {
217        //SyncContext newSyncContext( RepositorySystemSession session, boolean shared );
218    }
219
220}