]> source.dussan.org Git - archiva.git/blob
9a332bdca29f6060533fa370c5afe96fae634c46
[archiva.git] /
1 package org.apache.maven.archiva.reporting;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.artifact.Artifact;
20 import org.apache.maven.model.Model;
21 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
22 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
23
24 import java.io.File;
25 import java.io.FileReader;
26 import java.io.IOException;
27 import java.io.Reader;
28
29 /**
30  * This class tests the LocationArtifactReportProcessor.
31  */
32 public class LocationArtifactReportProcessorTest
33     extends AbstractRepositoryReportsTestCase
34 {
35     private ArtifactReportProcessor artifactReportProcessor;
36
37     private ReportingDatabase reportDatabase;
38
39     public void setUp()
40         throws Exception
41     {
42         super.setUp();
43         artifactReportProcessor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "artifact-location" );
44
45         ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
46         reportDatabase = new ReportingDatabase( reportGroup );
47     }
48
49     /**
50      * Test the LocationArtifactReporter when the artifact's physical location matches the location specified
51      * both in the file system pom and in the pom included in the package.
52      */
53     public void testPackagedPomLocationArtifactReporterSuccess()
54         throws IOException, XmlPullParserException
55     {
56         Artifact artifact = createArtifact( "org.apache.maven", "maven-model", "2.0" );
57
58         artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
59         assertEquals( 0, reportDatabase.getNumFailures() );
60         assertEquals( 0, reportDatabase.getNumWarnings() );
61     }
62
63     /**
64      * Test the LocationArtifactReporter when the artifact is in the location specified in the
65      * file system pom (but the jar file does not have a pom included in its package).
66      */
67     public void testLocationArtifactReporterSuccess()
68         throws IOException, XmlPullParserException
69     {
70         Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1" );
71         Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
72
73         Model model = readPom( repository.pathOf( pomArtifact ) );
74         artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
75         assertEquals( 0, reportDatabase.getNumFailures() );
76         assertEquals( 0, reportDatabase.getNumWarnings() );
77     }
78
79     /**
80      * Test the LocationArtifactReporter when the artifact is in the location specified in the
81      * file system pom, but the pom itself is passed in.
82      */
83     public void testLocationArtifactReporterSuccessPom()
84         throws IOException, XmlPullParserException
85     {
86         Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
87
88         Model model = readPom( repository.pathOf( pomArtifact ) );
89         artifactReportProcessor.processArtifact( pomArtifact, model, reportDatabase );
90         assertEquals( 0, reportDatabase.getNumFailures() );
91         assertEquals( 0, reportDatabase.getNumWarnings() );
92     }
93
94     /**
95      * Test the LocationArtifactReporter when the artifact is in the location specified in the
96      * file system pom, with a classifier.
97      */
98     public void testLocationArtifactReporterSuccessClassifier()
99         throws IOException, XmlPullParserException
100     {
101         Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "java-source" );
102         Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
103
104         Model model = readPom( repository.pathOf( pomArtifact ) );
105         artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
106         assertEquals( 0, reportDatabase.getNumFailures() );
107         assertEquals( 0, reportDatabase.getNumWarnings() );
108     }
109
110     /**
111      * Test the LocationArtifactReporter when the artifact is in the location specified in the
112      * file system pom, with a classifier.
113      */
114     public void testLocationArtifactReporterSuccessZip()
115         throws IOException, XmlPullParserException
116     {
117         Artifact artifact =
118             createArtifactWithClassifier( "groupId", "artifactId", "1.0-alpha-1", "distribution-zip", "src" );
119         Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
120
121         Model model = readPom( repository.pathOf( pomArtifact ) );
122         artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
123         assertEquals( 0, reportDatabase.getNumFailures() );
124         assertEquals( 0, reportDatabase.getNumWarnings() );
125     }
126
127     /**
128      * Test the LocationArtifactReporter when the artifact is in the location specified in the
129      * file system pom, with a classifier.
130      */
131     public void testLocationArtifactReporterSuccessTgz()
132         throws IOException, XmlPullParserException
133     {
134         Artifact artifact =
135             createArtifactWithClassifier( "groupId", "artifactId", "1.0-alpha-1", "distribution-tgz", "src" );
136         Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
137
138         Model model = readPom( repository.pathOf( pomArtifact ) );
139         artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
140         assertEquals( 0, reportDatabase.getNumFailures() );
141         assertEquals( 0, reportDatabase.getNumWarnings() );
142     }
143
144     /**
145      * Test the LocationArtifactReporter when the artifact is not in the location specified
146      * in the file system pom.
147      */
148     public void testLocationArtifactReporterFailure()
149         throws IOException, XmlPullParserException
150     {
151         Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2" );
152         Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2", "pom" );
153
154         try
155         {
156             Model model = readPom( repository.pathOf( pomArtifact ) );
157             artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
158             fail( "Should not have passed the artifact" );
159         }
160         catch ( IllegalStateException e )
161         {
162             // correct!
163         }
164     }
165
166     /**
167      * Test the LocationArtifactReporter when the artifact's physical location does not match the
168      * location in the file system pom but instead matches the specified location in the packaged pom.
169      */
170     public void testFsPomArtifactMatchFailure()
171         throws IOException, XmlPullParserException
172     {
173         Artifact artifact = createArtifact( "org.apache.maven", "maven-archiver", "2.0" );
174
175         Artifact pomArtifact = createArtifact( "org.apache.maven", "maven-archiver", "2.0", "pom" );
176         Model model = readPom( repository.pathOf( pomArtifact ) );
177         artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
178         assertEquals( 1, reportDatabase.getNumFailures() );
179     }
180
181     private Model readPom( String path )
182         throws IOException, XmlPullParserException
183     {
184         Reader reader = new FileReader( new File( repository.getBasedir(), path ) );
185         Model model = new MavenXpp3Reader().read( reader );
186         // hokey inheritence to avoid some errors right now
187         if ( model.getGroupId() == null )
188         {
189             model.setGroupId( model.getParent().getGroupId() );
190         }
191         if ( model.getVersion() == null )
192         {
193             model.setVersion( model.getParent().getVersion() );
194         }
195         return model;
196     }
197
198     /**
199      * Test the LocationArtifactReporter when the artifact's physical location does not match the
200      * location specified in the packaged pom but matches the location specified in the file system pom.
201      */
202     public void testPkgPomArtifactMatchFailure()
203         throws IOException, XmlPullParserException
204     {
205         Artifact artifact = createArtifact( "org.apache.maven", "maven-monitor", "2.1" );
206
207         artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
208         assertEquals( 1, reportDatabase.getNumFailures() );
209     }
210
211     /**
212      * Test the LocationArtifactReporter when the artifact's physical location does not match both the
213      * location specified in the packaged pom and the location specified in the file system pom.
214      */
215     public void testBothPomArtifactMatchFailure()
216         throws IOException, XmlPullParserException
217     {
218         Artifact artifact = createArtifact( "org.apache.maven", "maven-project", "2.1" );
219
220         artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
221         assertEquals( 1, reportDatabase.getNumFailures() );
222     }
223
224 }