]> source.dussan.org Git - archiva.git/blob
5e900277693b8182bf3e8cdce4ad6ba3898a8a50
[archiva.git] /
1 package org.apache.archiva.repository.content;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import junit.framework.TestCase;
23 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26
27 /**
28  * FilenameParserTest
29  *
30  * @version $Id$
31  */
32 @RunWith( ArchivaBlockJUnit4ClassRunner.class )
33 public class FilenameParserTest
34     extends TestCase
35 {
36     @Test
37     public void testNameExtensionJar()
38     {
39         FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
40
41         assertEquals( "maven-test-plugin-1.8.3", parser.getName() );
42         assertEquals( "jar", parser.getExtension() );
43     }
44
45     @Test
46     public void testNameExtensionTarGz()
47     {
48         FilenameParser parser = new FilenameParser( "archiva-1.0-beta-2-bin.tar.gz" );
49
50         assertEquals( "archiva-1.0-beta-2-bin", parser.getName() );
51         assertEquals( "tar.gz", parser.getExtension() );
52     }
53
54     @Test
55     public void testNameExtensionTarBz2()
56     {
57         FilenameParser parser = new FilenameParser( "archiva-1.0-SNAPSHOT-src.tar.bz2" );
58
59         assertEquals( "archiva-1.0-SNAPSHOT-src", parser.getName() );
60         assertEquals( "tar.bz2", parser.getExtension() );
61     }
62
63     @Test
64     public void testNameExtensionCapitolizedTarGz()
65     {
66         FilenameParser parser = new FilenameParser( "ARCHIVA-1.0-BETA-2-BIN.TAR.GZ" );
67
68         assertEquals( "ARCHIVA-1.0-BETA-2-BIN", parser.getName() );
69         assertEquals( "TAR.GZ", parser.getExtension() );
70     }
71
72     @Test
73     public void testNext()
74     {
75         FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
76
77         assertEquals( "maven-test-plugin-1.8.3", parser.getName() );
78         assertEquals( "jar", parser.getExtension() );
79
80         assertEquals( "maven", parser.next() );
81         assertEquals( "test", parser.next() );
82         assertEquals( "plugin", parser.next() );
83         assertEquals( "1.8.3", parser.next() );
84         assertNull( parser.next() );
85     }
86
87     @Test
88     public void testExpect()
89     {
90         FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
91
92         assertEquals( "maven-test-plugin-1.8.3", parser.getName() );
93         assertEquals( "jar", parser.getExtension() );
94
95         assertEquals( "maven-test-plugin", parser.expect( "maven-test-plugin" ) );
96         assertEquals( "1.8.3", parser.expect( "1.8.3" ) );
97         assertNull( parser.expect( "jar" ) );
98     }
99
100     @Test
101     public void testExpectWithRemaining()
102     {
103         FilenameParser parser = new FilenameParser( "ganymede-ssh2-build250-sources.jar" );
104
105         assertEquals( "ganymede-ssh2-build250-sources", parser.getName() );
106         assertEquals( "jar", parser.getExtension() );
107
108         assertEquals( "ganymede-ssh2", parser.expect( "ganymede-ssh2" ) );
109         assertEquals( "build250", parser.expect( "build250" ) );
110         assertEquals( '-', parser.seperator() );
111         assertEquals( "sources", parser.remaining() );
112
113         assertNull( parser.expect( "jar" ) );
114     }
115
116     @Test
117     public void testExpectWithRemainingDualExtensions()
118     {
119         FilenameParser parser = new FilenameParser( "example-presentation-3.2.xml.zip" );
120
121         assertEquals( "example-presentation-3.2.xml", parser.getName() );
122         assertEquals( "zip", parser.getExtension() );
123
124         assertEquals( "example-presentation", parser.expect( "example-presentation" ) );
125         assertEquals( "3.2", parser.expect( "3.2" ) );
126         assertEquals( '.', parser.seperator() );
127         assertEquals( "xml", parser.remaining() );
128
129     }
130
131     @Test
132     public void testNextNonVersion()
133     {
134         FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
135
136         assertEquals( "maven-test-plugin", parser.nextNonVersion() );
137         assertEquals( "1.8.3", parser.remaining() );
138     }
139
140     @Test
141     public void testNextArbitraryNonVersion()
142     {
143         FilenameParser parser = new FilenameParser( "maven-jdk-1.4-plugin-1.0-20070828.123456-42.jar" );
144
145         assertEquals( "maven-jdk-1.4-plugin", parser.nextNonVersion() );
146         assertEquals( "1.0-20070828.123456-42", parser.remaining() );
147     }
148
149     @Test
150     public void testNextJython()
151     {
152         FilenameParser parser = new FilenameParser( "jython-20020827-no-oro.jar" );
153
154         assertEquals( "jython", parser.nextNonVersion() );
155         assertEquals( "20020827", parser.nextVersion() );
156         assertEquals( "no-oro", parser.remaining() );
157     }
158
159     @Test
160     public void testLongExtension()
161     {
162         FilenameParser parser = new FilenameParser( "libfobs4jmf-0.4.1.4-20080217.211715-4.jnilib" );
163
164         assertEquals( "libfobs4jmf-0.4.1.4-20080217.211715-4", parser.getName() );
165         assertEquals( "jnilib", parser.getExtension() );
166     }
167
168     @Test
169     public void testInterveningVersion()
170     {
171         FilenameParser parser = new FilenameParser( "artifact-id-1.0-abc-1.1-20080221.062205-9.pom" );
172
173         assertEquals( "artifact-id", parser.nextNonVersion() );
174         assertEquals( "1.0-abc-1.1-20080221.062205-9", parser.expect( "1.0-abc-1.1-SNAPSHOT" ) );
175         assertNull( null, parser.remaining() );
176         assertEquals( "artifact-id-1.0-abc-1.1-20080221.062205-9", parser.getName() );
177         assertEquals( "pom", parser.getExtension() );
178     }
179
180     @Test
181     public void testExpectWrongSnapshot()
182     {
183         FilenameParser parser = new FilenameParser( "artifact-id-1.0-20080221.062205-9.pom" );
184
185         assertEquals( "artifact-id", parser.nextNonVersion() );
186         assertNull( parser.expect( "2.0-SNAPSHOT" ) );
187     }
188
189     @Test
190     public void testExpectWrongSnapshot2()
191     {
192         // tests parsing axiom snapshots without exceptions
193         FilenameParser parser = new FilenameParser( "axiom-20080221.062205-9.pom" );
194
195         assertEquals( "axiom", parser.nextNonVersion() );
196         assertNull( parser.expect( "SNAPSHOT" ) );
197     }
198
199     @Test
200     public void testClassifier()
201     {
202         FilenameParser parser = new FilenameParser( "artifact-id-1.0-20070219.171202-34-test-sources.jar" );
203
204         assertEquals( "artifact-id", parser.nextNonVersion() );
205         assertEquals( "1.0-20070219.171202-34", parser.nextVersion() );
206         assertEquals( "test-sources", parser.remaining() );
207         assertEquals( "artifact-id-1.0-20070219.171202-34-test-sources", parser.getName() );
208         assertEquals( "jar", parser.getExtension() );
209     }
210
211     @Test
212     public void testNoExtension()
213     {
214         FilenameParser parser = new FilenameParser( "foo_bar" );
215         assertNull( parser.getExtension() );
216     }
217 }