1 package org.apache.maven.plugins.dependency.utils.filters;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.IOException;
24 import java.util.HashSet;
25 import java.util.Set;
26
27 import junit.framework.TestCase;
28
29 import org.apache.commons.io.FileUtils;
30 import org.apache.maven.artifact.Artifact;
31 import org.apache.maven.plugin.MojoExecutionException;
32 import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory;
33 import org.apache.maven.plugins.dependency.utils.DependencyUtil;
34 import org.apache.maven.plugin.logging.Log;
35 import org.apache.maven.plugin.testing.SilentLog;
36 import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
37
38
39
40
41 public class TestDestFileFilter
42 extends TestCase
43 {
44 Set<Artifact> artifacts = new HashSet<>();
45
46 Log log = new SilentLog();
47
48 File outputFolder;
49
50 DependencyArtifactStubFactory fact;
51
52 protected void setUp()
53 throws Exception
54 {
55 super.setUp();
56
57 outputFolder = new File( "target/markers/" );
58 FileUtils.deleteDirectory( outputFolder );
59 assertFalse( outputFolder.exists() );
60
61 this.fact = new DependencyArtifactStubFactory( outputFolder, false );
62 artifacts = fact.getReleaseAndSnapshotArtifacts();
63 }
64
65 protected void tearDown()
66 throws IOException
67 {
68 FileUtils.deleteDirectory( outputFolder );
69 }
70
71 public File createFile( Artifact artifact )
72 throws IOException
73 {
74 return createFile( artifact, false, false, false );
75 }
76
77 public File createFile( Artifact artifact, boolean useSubDirectoryPerArtifact, boolean useSubDirectoryPerType,
78 boolean removeVersion )
79 throws IOException
80 {
81 return createFile( artifact, useSubDirectoryPerArtifact, useSubDirectoryPerType, removeVersion, false );
82 }
83
84 public File createFile( Artifact artifact, boolean useSubDirectoryPerArtifact, boolean useSubDirectoryPerType,
85 boolean removeVersion, boolean removeClassifier )
86 throws IOException
87 {
88 File destFolder =
89 DependencyUtil.getFormattedOutputDirectory( false, useSubDirectoryPerType, useSubDirectoryPerArtifact,
90 false, false, outputFolder, artifact );
91 File destFile =
92 new File( destFolder,
93 DependencyUtil.getFormattedFileName( artifact, removeVersion, false, false, removeClassifier ) );
94
95 destFile.getParentFile().mkdirs();
96 assertTrue( destFile.createNewFile() );
97 return destFile;
98 }
99
100 public void testDestFileRelease()
101 throws IOException, ArtifactFilterException
102 {
103 DestFileFilter filter = new DestFileFilter( outputFolder );
104 Artifact artifact = fact.getReleaseArtifact();
105
106 assertTrue( filter.isArtifactIncluded( artifact ) );
107 createFile( artifact );
108 assertFalse( filter.isArtifactIncluded( artifact ) );
109
110 filter.setOverWriteReleases( true );
111 assertTrue( filter.isArtifactIncluded( artifact ) );
112 }
113
114 public void testDestFileSnapshot()
115 throws IOException, ArtifactFilterException
116 {
117 DestFileFilter filter = new DestFileFilter( outputFolder );
118 Artifact artifact = fact.getSnapshotArtifact();
119
120 assertTrue( filter.isArtifactIncluded( artifact ) );
121 createFile( artifact );
122 assertFalse( filter.isArtifactIncluded( artifact ) );
123
124 filter.setOverWriteSnapshots( true );
125 assertTrue( filter.isArtifactIncluded( artifact ) );
126 }
127
128 public void testDestFileStripVersion()
129 throws IOException, ArtifactFilterException
130 {
131 DestFileFilter filter = new DestFileFilter( outputFolder );
132 Artifact artifact = fact.getSnapshotArtifact();
133 filter.setRemoveVersion( true );
134
135 assertTrue( filter.isArtifactIncluded( artifact ) );
136 createFile( artifact, false, false, true );
137 assertFalse( filter.isArtifactIncluded( artifact ) );
138
139 filter.setOverWriteSnapshots( true );
140 assertTrue( filter.isArtifactIncluded( artifact ) );
141 }
142
143 public void testDestFileStripClassifier()
144 throws IOException, ArtifactFilterException
145 {
146 DestFileFilter filter = new DestFileFilter( outputFolder );
147 Artifact artifact = fact.getSnapshotArtifact();
148 filter.setRemoveClassifier( true );
149
150 assertTrue( filter.isArtifactIncluded( artifact ) );
151 createFile( artifact, false, false, false, true );
152 assertFalse( filter.isArtifactIncluded( artifact ) );
153
154 filter.setOverWriteSnapshots( true );
155 assertTrue( filter.isArtifactIncluded( artifact ) );
156 }
157
158 public void testDestFileSubPerArtifact()
159 throws IOException, ArtifactFilterException
160 {
161 DestFileFilter filter = new DestFileFilter( outputFolder );
162 Artifact artifact = fact.getSnapshotArtifact();
163 filter.setUseSubDirectoryPerArtifact( true );
164
165 assertTrue( filter.isArtifactIncluded( artifact ) );
166 createFile( artifact, true, false, false );
167 assertFalse( filter.isArtifactIncluded( artifact ) );
168
169 filter.setOverWriteSnapshots( true );
170 assertTrue( filter.isArtifactIncluded( artifact ) );
171 }
172
173 public void testDestFileSubPerType()
174 throws MojoExecutionException, IOException, ArtifactFilterException
175 {
176 DestFileFilter filter = new DestFileFilter( outputFolder );
177 Artifact artifact = fact.getSnapshotArtifact();
178 filter.setUseSubDirectoryPerType( true );
179
180 assertTrue( filter.isArtifactIncluded( artifact ) );
181 createFile( artifact, false, true, false );
182 assertFalse( filter.isArtifactIncluded( artifact ) );
183
184 filter.setOverWriteSnapshots( true );
185 assertTrue( filter.isArtifactIncluded( artifact ) );
186 }
187
188 public void testDestFileOverwriteIfNewer()
189 throws MojoExecutionException, IOException, ArtifactFilterException
190 {
191 DestFileFilter filter = new DestFileFilter( outputFolder );
192
193 fact.setCreateFiles( true );
194 Artifact artifact = fact.getSnapshotArtifact();
195 File artifactFile = artifact.getFile();
196 assertTrue( artifactFile.setLastModified( artifactFile.lastModified() ) );
197 filter.setOverWriteIfNewer( true );
198
199
200 assertTrue( filter.isArtifactIncluded( artifact ) );
201
202
203 File destFile = createFile( artifact, false, false, false );
204
205
206 assertTrue( destFile.setLastModified( artifactFile.lastModified() - 1000 ) );
207 assertTrue( filter.isArtifactIncluded( artifact ) );
208
209
210 assertTrue( destFile.setLastModified( artifactFile.lastModified() + 1000 ) );
211
212 assertFalse( filter.isArtifactIncluded( artifact ) );
213 }
214
215 public void testGettersSetters()
216 {
217 DestFileFilter filter = new DestFileFilter( null );
218 assertNull( filter.getOutputFileDirectory() );
219 filter.setOutputFileDirectory( outputFolder );
220 assertSame( outputFolder, filter.getOutputFileDirectory() );
221
222 filter.setOverWriteIfNewer( true );
223 assertTrue( filter.isOverWriteIfNewer() );
224 filter.setOverWriteIfNewer( false );
225 assertFalse( filter.isOverWriteIfNewer() );
226
227 filter.setOverWriteReleases( true );
228 assertTrue( filter.isOverWriteReleases() );
229 filter.setOverWriteReleases( false );
230 assertFalse( filter.isOverWriteReleases() );
231
232 filter.setOverWriteSnapshots( true );
233 assertTrue( filter.isOverWriteSnapshots() );
234 filter.setOverWriteSnapshots( false );
235 assertFalse( filter.isOverWriteSnapshots() );
236
237 filter.setUseSubDirectoryPerArtifact( true );
238 assertTrue( filter.isUseSubDirectoryPerArtifact() );
239 filter.setUseSubDirectoryPerArtifact( false );
240 assertFalse( filter.isUseSubDirectoryPerArtifact() );
241
242 filter.setUseSubDirectoryPerType( true );
243 assertTrue( filter.isUseSubDirectoryPerType() );
244 filter.setUseSubDirectoryPerType( false );
245 assertFalse( filter.isUseSubDirectoryPerType() );
246
247 filter.setRemoveVersion( true );
248 assertTrue( filter.isRemoveVersion() );
249 filter.setRemoveVersion( false );
250 assertFalse( filter.isRemoveVersion() );
251 }
252 }