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