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