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