View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  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,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.shared.artifact.filter.collection;
20  
21  import java.io.File;
22  import java.io.IOException;
23  import java.util.ArrayList;
24  import java.util.HashSet;
25  import java.util.Set;
26  
27  import org.apache.commons.io.FileUtils;
28  import org.apache.maven.artifact.Artifact;
29  import org.apache.maven.plugin.testing.ArtifactStubFactory;
30  import org.junit.Test;
31  
32  import static org.junit.Assert.assertEquals;
33  import static org.junit.Assert.assertTrue;
34  
35  /**
36   * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
37   */
38  public class TestFilterArtifacts {
39      @Test
40      public void testNullFilters() throws IOException, ArtifactFilterException {
41  
42          // TODO: convert these old tests to use the abstract test case for dep
43          // plugin
44          File outputFolder = new File("target/filters/");
45  
46          FileUtils.deleteDirectory(outputFolder);
47  
48          ArtifactStubFactory fact = new ArtifactStubFactory(outputFolder, false);
49  
50          Set<Artifact> artifacts = fact.getReleaseAndSnapshotArtifacts();
51          FilterArtifacts fa = new FilterArtifacts();
52  
53          fa.filter(artifacts);
54  
55          // make sure null filters don't hurt anything.
56          fa.addFilter(null);
57  
58          fa.filter(artifacts);
59          assertEquals(0, fa.getFilters().size());
60  
61          ArrayList<ArtifactsFilter> filters = new ArrayList<>();
62          filters.add(null);
63          filters.add(null);
64          fa.setFilters(filters);
65  
66          assertEquals(2, fa.getFilters().size());
67  
68          fa.filter(artifacts);
69      }
70  
71      @Test
72      public void testArtifactFilter() {
73          Set<Artifact> a = new HashSet<>();
74          FilterArtifacts fa = new FilterArtifacts();
75          ArtifactsFilter scope = new ScopeFilter("compile", "system");
76          ArtifactsFilter type = new TypeFilter("jar", "war");
77          ArtifactsFilter trans = new ProjectTransitivityFilter(a, true);
78  
79          assertEquals(0, fa.getFilters().size());
80          fa.addFilter(scope);
81          assertEquals(1, fa.getFilters().size());
82          fa.addFilter(type);
83          assertEquals(2, fa.getFilters().size());
84          assertTrue(fa.getFilters().get(0) instanceof ScopeFilter);
85          assertTrue(fa.getFilters().get(1) instanceof TypeFilter);
86          fa.addFilter(1, trans);
87          assertEquals(3, fa.getFilters().size());
88          assertTrue(fa.getFilters().get(0) instanceof ScopeFilter);
89          assertTrue(fa.getFilters().get(1) instanceof ProjectTransitivityFilter);
90          assertTrue(fa.getFilters().get(2) instanceof TypeFilter);
91  
92          ArrayList<ArtifactsFilter> list = new ArrayList<>(fa.getFilters());
93  
94          fa.clearFilters();
95          assertEquals(0, fa.getFilters().size());
96  
97          fa.setFilters(list);
98          assertEquals(3, fa.getFilters().size());
99          assertTrue(fa.getFilters().get(0) instanceof ScopeFilter);
100         assertTrue(fa.getFilters().get(1) instanceof ProjectTransitivityFilter);
101         assertTrue(fa.getFilters().get(2) instanceof TypeFilter);
102     }
103 
104     @Test
105     public void testArtifactFilterWithClassifier() throws IOException, ArtifactFilterException {
106         File outputFolder = new File("target/filters/");
107         FileUtils.deleteDirectory(outputFolder);
108         ArtifactStubFactory fact = new ArtifactStubFactory(outputFolder, false);
109 
110         Set<Artifact> artifacts = fact.getClassifiedArtifacts();
111         FilterArtifacts fa = new FilterArtifacts();
112         fa.addFilter(new ClassifierFilter("", "four"));
113         Set<Artifact> results = fa.filter(artifacts);
114         assertEquals(3, results.size());
115         fa.addFilter(new ClassifierFilter("two,three", ""));
116         results = fa.filter(artifacts);
117         assertEquals(2, results.size());
118     }
119 }