001package org.eclipse.aether.internal.test.util;
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 static org.junit.Assert.*;
023
024import java.io.IOException;
025import java.util.Collection;
026import java.util.Iterator;
027import java.util.List;
028
029import org.eclipse.aether.artifact.Artifact;
030import org.eclipse.aether.graph.Dependency;
031import org.eclipse.aether.graph.Exclusion;
032import org.eclipse.aether.internal.test.util.ArtifactDescription;
033import org.eclipse.aether.internal.test.util.IniArtifactDataReader;
034import org.eclipse.aether.repository.RemoteRepository;
035import org.junit.Before;
036import org.junit.Test;
037
038/**
039 */
040public class IniArtifactDataReaderTest
041{
042
043    private IniArtifactDataReader parser;
044
045    @Before
046    public void setup()
047    {
048        this.parser = new IniArtifactDataReader( "org/eclipse/aether/internal/test/util/" );
049    }
050
051    @Test
052    public void testRelocation()
053        throws IOException
054    {
055        String def = "[relocation]\ngid:aid:ext:ver";
056
057        ArtifactDescription description = parser.parseLiteral( def );
058
059        Artifact artifact = description.getRelocation();
060        assertNotNull( artifact );
061        assertEquals( "aid", artifact.getArtifactId() );
062        assertEquals( "gid", artifact.getGroupId() );
063        assertEquals( "ver", artifact.getVersion() );
064        assertEquals( "ext", artifact.getExtension() );
065    }
066
067    @Test
068    public void testDependencies()
069        throws IOException
070    {
071        String def = "[dependencies]\ngid:aid:ext:ver\n-exclusion:aid\ngid2:aid2:ext2:ver2";
072
073        ArtifactDescription description = parser.parseLiteral( def );
074
075        List<Dependency> dependencies = description.getDependencies();
076        assertNotNull( dependencies );
077        assertEquals( 2, dependencies.size() );
078
079        Dependency dependency = dependencies.get( 0 );
080        assertEquals( "compile", dependency.getScope() );
081
082        Artifact artifact = dependency.getArtifact();
083        assertNotNull( artifact );
084        assertEquals( "aid", artifact.getArtifactId() );
085        assertEquals( "gid", artifact.getGroupId() );
086        assertEquals( "ver", artifact.getVersion() );
087        assertEquals( "ext", artifact.getExtension() );
088
089        Collection<Exclusion> exclusions = dependency.getExclusions();
090        assertNotNull( exclusions );
091        assertEquals( 1, exclusions.size() );
092        Exclusion exclusion = exclusions.iterator().next();
093        assertEquals( "exclusion", exclusion.getGroupId() );
094        assertEquals( "aid", exclusion.getArtifactId() );
095        assertEquals( "*", exclusion.getClassifier() );
096        assertEquals( "*", exclusion.getExtension() );
097
098        dependency = dependencies.get( 1 );
099
100        artifact = dependency.getArtifact();
101        assertNotNull( artifact );
102        assertEquals( "aid2", artifact.getArtifactId() );
103        assertEquals( "gid2", artifact.getGroupId() );
104        assertEquals( "ver2", artifact.getVersion() );
105        assertEquals( "ext2", artifact.getExtension() );
106    }
107
108    @Test
109    public void testManagedDependencies()
110        throws IOException
111    {
112        String def = "[managed-dependencies]\ngid:aid:ext:ver\n-exclusion:aid\ngid2:aid2:ext2:ver2:runtime";
113
114        ArtifactDescription description = parser.parseLiteral( def );
115
116        List<Dependency> dependencies = description.getManagedDependencies();
117        assertNotNull( dependencies );
118        assertEquals( 2, dependencies.size() );
119
120        Dependency dependency = dependencies.get( 0 );
121        assertEquals( "", dependency.getScope() );
122
123        Artifact artifact = dependency.getArtifact();
124        assertNotNull( artifact );
125        assertEquals( "aid", artifact.getArtifactId() );
126        assertEquals( "gid", artifact.getGroupId() );
127        assertEquals( "ver", artifact.getVersion() );
128        assertEquals( "ext", artifact.getExtension() );
129
130        Collection<Exclusion> exclusions = dependency.getExclusions();
131        assertNotNull( exclusions );
132        assertEquals( 1, exclusions.size() );
133        Exclusion exclusion = exclusions.iterator().next();
134        assertEquals( "exclusion", exclusion.getGroupId() );
135        assertEquals( "aid", exclusion.getArtifactId() );
136        assertEquals( "*", exclusion.getClassifier() );
137        assertEquals( "*", exclusion.getExtension() );
138
139        dependency = dependencies.get( 1 );
140        assertEquals( "runtime", dependency.getScope() );
141
142        artifact = dependency.getArtifact();
143        assertNotNull( artifact );
144        assertEquals( "aid2", artifact.getArtifactId() );
145        assertEquals( "gid2", artifact.getGroupId() );
146        assertEquals( "ver2", artifact.getVersion() );
147        assertEquals( "ext2", artifact.getExtension() );
148
149        assertEquals( 0, dependency.getExclusions().size() );
150    }
151
152    @Test
153    public void testResource()
154        throws IOException
155    {
156        ArtifactDescription description = parser.parse( "ArtifactDataReaderTest.ini" );
157
158        Artifact artifact = description.getRelocation();
159        assertEquals( "gid", artifact.getGroupId() );
160        assertEquals( "aid", artifact.getArtifactId() );
161        assertEquals( "ver", artifact.getVersion() );
162        assertEquals( "ext", artifact.getExtension() );
163
164        assertEquals( 1, description.getRepositories().size() );
165        RemoteRepository repo = description.getRepositories().get( 0 );
166        assertEquals( "id", repo.getId() );
167        assertEquals( "type", repo.getContentType() );
168        assertEquals( "protocol://some/url?for=testing", repo.getUrl() );
169
170        assertDependencies( description.getDependencies() );
171        assertDependencies( description.getManagedDependencies() );
172
173    }
174
175    private void assertDependencies( List<Dependency> deps )
176    {
177        assertEquals( 4, deps.size() );
178
179        Dependency dep = deps.get( 0 );
180        assertEquals( "scope", dep.getScope() );
181        assertFalse( dep.isOptional() );
182        assertEquals( 2, dep.getExclusions().size() );
183        Iterator<Exclusion> it = dep.getExclusions().iterator();
184        Exclusion excl = it.next();
185        assertEquals( "gid3", excl.getGroupId() );
186        assertEquals( "aid", excl.getArtifactId() );
187        excl = it.next();
188        assertEquals( "gid2", excl.getGroupId() );
189        assertEquals( "aid2", excl.getArtifactId() );
190
191        Artifact art = dep.getArtifact();
192        assertEquals( "gid", art.getGroupId() );
193        assertEquals( "aid", art.getArtifactId() );
194        assertEquals( "ver", art.getVersion() );
195        assertEquals( "ext", art.getExtension() );
196
197        dep = deps.get( 1 );
198        assertEquals( "scope", dep.getScope() );
199        assertTrue( dep.isOptional() );
200        assertEquals( 0, dep.getExclusions().size() );
201
202        art = dep.getArtifact();
203        assertEquals( "gid", art.getGroupId() );
204        assertEquals( "aid2", art.getArtifactId() );
205        assertEquals( "ver", art.getVersion() );
206        assertEquals( "ext", art.getExtension() );
207
208        dep = deps.get( 2 );
209        assertEquals( "scope", dep.getScope() );
210        assertTrue( dep.isOptional() );
211        assertEquals( 0, dep.getExclusions().size() );
212
213        art = dep.getArtifact();
214        assertEquals( "gid", art.getGroupId() );
215        assertEquals( "aid", art.getArtifactId() );
216        assertEquals( "ver3", art.getVersion() );
217        assertEquals( "ext", art.getExtension() );
218
219        dep = deps.get( 3 );
220        assertEquals( "scope5", dep.getScope() );
221        assertTrue( dep.isOptional() );
222        assertEquals( 0, dep.getExclusions().size() );
223
224        art = dep.getArtifact();
225        assertEquals( "gid1", art.getGroupId() );
226        assertEquals( "aid", art.getArtifactId() );
227        assertEquals( "ver", art.getVersion() );
228        assertEquals( "ext", art.getExtension() );
229    }
230
231}