View Javadoc
1   package org.apache.archiva.repository.content.maven2;
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   *
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 }