View Javadoc

1   package org.apache.maven.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  
24  /**
25   * FilenameParserTest
26   *
27   * @version $Id: FilenameParserTest.java 718864 2008-11-19 06:33:35Z brett $
28   */
29  public class FilenameParserTest
30      extends TestCase
31  {
32      public void testNameExtensionJar()
33      {
34          FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
35  
36          assertEquals( "maven-test-plugin-1.8.3", parser.getName() );
37          assertEquals( "jar", parser.getExtension() );
38      }
39  
40      public void testNameExtensionTarGz()
41      {
42          FilenameParser parser = new FilenameParser( "archiva-1.0-beta-2-bin.tar.gz" );
43  
44          assertEquals( "archiva-1.0-beta-2-bin", parser.getName() );
45          assertEquals( "tar.gz", parser.getExtension() );
46      }
47  
48      public void testNameExtensionTarBz2()
49      {
50          FilenameParser parser = new FilenameParser( "archiva-1.0-SNAPSHOT-src.tar.bz2" );
51  
52          assertEquals( "archiva-1.0-SNAPSHOT-src", parser.getName() );
53          assertEquals( "tar.bz2", parser.getExtension() );
54      }
55  
56      public void testNameExtensionCapitolizedTarGz()
57      {
58          FilenameParser parser = new FilenameParser( "ARCHIVA-1.0-BETA-2-BIN.TAR.GZ" );
59  
60          assertEquals( "ARCHIVA-1.0-BETA-2-BIN", parser.getName() );
61          assertEquals( "TAR.GZ", parser.getExtension() );
62      }
63  
64      public void testNext()
65      {
66          FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
67  
68          assertEquals( "maven-test-plugin-1.8.3", parser.getName() );
69          assertEquals( "jar", parser.getExtension() );
70  
71          assertEquals( "maven", parser.next() );
72          assertEquals( "test", parser.next() );
73          assertEquals( "plugin", parser.next() );
74          assertEquals( "1.8.3", parser.next() );
75          assertNull( parser.next() );
76      }
77  
78      public void testExpect()
79      {
80          FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
81  
82          assertEquals( "maven-test-plugin-1.8.3", parser.getName() );
83          assertEquals( "jar", parser.getExtension() );
84  
85          assertEquals( "maven-test-plugin", parser.expect( "maven-test-plugin" ) );
86          assertEquals( "1.8.3", parser.expect( "1.8.3" ) );
87          assertNull( parser.expect( "jar" ) );
88      }
89  
90      public void testExpectWithRemaining()
91      {
92          FilenameParser parser = new FilenameParser( "ganymede-ssh2-build250-sources.jar" );
93  
94          assertEquals( "ganymede-ssh2-build250-sources", parser.getName() );
95          assertEquals( "jar", parser.getExtension() );
96  
97          assertEquals( "ganymede-ssh2", parser.expect( "ganymede-ssh2" ) );
98          assertEquals( "build250", parser.expect( "build250" ) );
99          assertEquals( '-', parser.seperator() );
100         assertEquals( "sources", parser.remaining() );
101 
102         assertNull( parser.expect( "jar" ) );
103     }
104 
105     public void testExpectWithRemainingDualExtensions()
106     {
107         FilenameParser parser = new FilenameParser( "example-presentation-3.2.xml.zip" );
108 
109         assertEquals( "example-presentation-3.2.xml", parser.getName() );
110         assertEquals( "zip", parser.getExtension() );
111 
112         assertEquals( "example-presentation", parser.expect( "example-presentation" ) );
113         assertEquals( "3.2", parser.expect( "3.2" ) );
114         assertEquals( '.', parser.seperator() );
115         assertEquals( "xml", parser.remaining() );
116 
117     }
118 
119     public void testNextNonVersion()
120     {
121         FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" );
122 
123         assertEquals( "maven-test-plugin", parser.nextNonVersion() );
124         assertEquals( "1.8.3", parser.remaining() );
125     }
126 
127     public void testNextArbitraryNonVersion()
128     {
129         FilenameParser parser = new FilenameParser( "maven-jdk-1.4-plugin-1.0-20070828.123456-42.jar" );
130 
131         assertEquals( "maven-jdk-1.4-plugin", parser.nextNonVersion() );
132         assertEquals( "1.0-20070828.123456-42", parser.remaining() );
133     }
134 
135     public void testNextJython()
136     {
137         FilenameParser parser = new FilenameParser( "jython-20020827-no-oro.jar" );
138 
139         assertEquals( "jython", parser.nextNonVersion() );
140         assertEquals( "20020827", parser.nextVersion() );
141         assertEquals( "no-oro", parser.remaining() );
142     }
143 
144     public void testLongExtension()
145     {
146         FilenameParser parser = new FilenameParser( "libfobs4jmf-0.4.1.4-20080217.211715-4.jnilib" );
147 
148         assertEquals( "libfobs4jmf-0.4.1.4-20080217.211715-4", parser.getName() );
149         assertEquals( "jnilib", parser.getExtension() );
150     }
151 
152     public void testInterveningVersion()
153     {
154         FilenameParser parser = new FilenameParser( "artifact-id-1.0-abc-1.1-20080221.062205-9.pom" );
155 
156         assertEquals( "artifact-id", parser.nextNonVersion() );
157         assertEquals( "1.0-abc-1.1-20080221.062205-9", parser.expect( "1.0-abc-1.1-SNAPSHOT" ) );
158         assertNull( null, parser.remaining() );
159         assertEquals( "artifact-id-1.0-abc-1.1-20080221.062205-9", parser.getName() );
160         assertEquals( "pom", parser.getExtension() );
161     }
162 
163     public void testExpectWrongSnapshot()
164     {
165         FilenameParser parser = new FilenameParser( "artifact-id-1.0-20080221.062205-9.pom" );
166 
167         assertEquals( "artifact-id", parser.nextNonVersion() );
168         assertNull( parser.expect( "2.0-SNAPSHOT" ) );
169     }
170 
171     public void testExpectWrongSnapshot2()
172     {
173         // tests parsing axiom snapshots without exceptions
174         FilenameParser parser = new FilenameParser( "axiom-20080221.062205-9.pom" );
175 
176         assertEquals( "axiom", parser.nextNonVersion() );
177         assertNull( parser.expect( "SNAPSHOT" ) );
178     }
179 
180     public void testClassifier()
181     {
182         FilenameParser parser = new FilenameParser( "artifact-id-1.0-20070219.171202-34-test-sources.jar" );
183 
184         assertEquals( "artifact-id", parser.nextNonVersion() );
185         assertEquals( "1.0-20070219.171202-34", parser.nextVersion() );
186         assertEquals( "test-sources", parser.remaining() );
187         assertEquals( "artifact-id-1.0-20070219.171202-34-test-sources", parser.getName() );
188         assertEquals( "jar", parser.getExtension() );
189     }
190 
191     public void testNoExtension()
192     {
193         FilenameParser parser = new FilenameParser( "foo_bar" );
194         assertNull( parser.getExtension() );
195     }
196 }