1 package org.apache.maven.shared.artifact.filter.collection;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
37
38 public class TestFilterArtifacts
39 {
40 @Test
41 public void testNullFilters()
42 throws IOException, ArtifactFilterException
43
44 {
45
46
47 File outputFolder = new File( "target/filters/" );
48
49 FileUtils.deleteDirectory( outputFolder );
50
51 ArtifactStubFactory fact = new ArtifactStubFactory( outputFolder, false );
52
53 Set<Artifact> artifacts = fact.getReleaseAndSnapshotArtifacts();
54 FilterArtifacts fa = new FilterArtifacts();
55
56 fa.filter( artifacts );
57
58
59 fa.addFilter( null );
60
61 fa.filter( artifacts );
62 assertEquals( 0, fa.getFilters().size() );
63
64 ArrayList<ArtifactsFilter> filters = new ArrayList<>();
65 filters.add( null );
66 filters.add( null );
67 fa.setFilters( filters );
68
69 assertEquals( 2, fa.getFilters().size() );
70
71 fa.filter( artifacts );
72 }
73
74 @Test
75 public void testArtifactFilter()
76 {
77 Set<Artifact> a = new HashSet<>();
78 FilterArtifacts fa = new FilterArtifacts();
79 ArtifactsFilter scope = new ScopeFilter( "compile", "system" );
80 ArtifactsFilter type = new TypeFilter( "jar", "war" );
81 ArtifactsFilter trans = new ProjectTransitivityFilter( a, true );
82
83 assertEquals( 0, fa.getFilters().size() );
84 fa.addFilter( scope );
85 assertEquals( 1, fa.getFilters().size() );
86 fa.addFilter( type );
87 assertEquals( 2, fa.getFilters().size() );
88 assertTrue( fa.getFilters().get( 0 ) instanceof ScopeFilter );
89 assertTrue( fa.getFilters().get( 1 ) instanceof TypeFilter );
90 fa.addFilter( 1, trans );
91 assertEquals( 3, fa.getFilters().size() );
92 assertTrue( fa.getFilters().get( 0 ) instanceof ScopeFilter );
93 assertTrue( fa.getFilters().get( 1 ) instanceof ProjectTransitivityFilter );
94 assertTrue( fa.getFilters().get( 2 ) instanceof TypeFilter );
95
96 ArrayList<ArtifactsFilter> list = new ArrayList<>( fa.getFilters() );
97
98 fa.clearFilters();
99 assertEquals( 0, fa.getFilters().size() );
100
101 fa.setFilters( list );
102 assertEquals( 3, fa.getFilters().size() );
103 assertTrue( fa.getFilters().get( 0 ) instanceof ScopeFilter );
104 assertTrue( fa.getFilters().get( 1 ) instanceof ProjectTransitivityFilter );
105 assertTrue( fa.getFilters().get( 2 ) instanceof TypeFilter );
106
107 }
108
109 @Test
110 public void testArtifactFilterWithClassifier() throws IOException, ArtifactFilterException
111 {
112 File outputFolder = new File( "target/filters/" );
113 FileUtils.deleteDirectory( outputFolder );
114 ArtifactStubFactory fact = new ArtifactStubFactory( outputFolder, false );
115
116 Set<Artifact> artifacts = fact.getClassifiedArtifacts();
117 FilterArtifacts fa = new FilterArtifacts();
118 fa.addFilter( new ClassifierFilter( "", "four" ) );
119 Set<Artifact> results = fa.filter( artifacts );
120 assertEquals( 3, results.size() );
121 fa.addFilter( new ClassifierFilter( "two,three", "" ) );
122 results = fa.filter( artifacts );
123 assertEquals( 2, results.size() );
124 }
125
126 }