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 File destFolder =
83 DependencyUtil.getFormattedOutputDirectory( false, useSubDirectoryPerType, useSubDirectoryPerArtifact,
84 false, false, outputFolder, artifact );
85 File destFile = new File( destFolder, DependencyUtil.getFormattedFileName( artifact, removeVersion ) );
86
87 destFile.getParentFile().mkdirs();
88 assertTrue( destFile.createNewFile() );
89 return destFile;
90 }
91
92 public void testDestFileRelease()
93 throws IOException, ArtifactFilterException
94 {
95 DestFileFilter filter = new DestFileFilter( outputFolder );
96 Artifact artifact = fact.getReleaseArtifact();
97
98 assertTrue( filter.isArtifactIncluded( artifact ) );
99 createFile( artifact );
100 assertFalse( filter.isArtifactIncluded( artifact) );
101
102 filter.setOverWriteReleases( true );
103 assertTrue( filter.isArtifactIncluded( artifact ) );
104 }
105
106 public void testDestFileSnapshot()
107 throws IOException, ArtifactFilterException
108 {
109 DestFileFilter filter = new DestFileFilter( outputFolder );
110 Artifact artifact = fact.getSnapshotArtifact();
111
112 assertTrue( filter.isArtifactIncluded( artifact ) );
113 createFile( artifact );
114 assertFalse( filter.isArtifactIncluded( artifact ) );
115
116 filter.setOverWriteSnapshots( true );
117 assertTrue( filter.isArtifactIncluded( artifact ) );
118 }
119
120 public void testDestFileStripVersion()
121 throws IOException, ArtifactFilterException
122 {
123 DestFileFilter filter = new DestFileFilter( outputFolder );
124 Artifact artifact = fact.getSnapshotArtifact();
125 filter.setRemoveVersion( true );
126
127 assertTrue( filter.isArtifactIncluded( artifact) );
128 createFile( artifact, false, false, true );
129 assertFalse( filter.isArtifactIncluded( artifact ) );
130
131 filter.setOverWriteSnapshots( true );
132 assertTrue( filter.isArtifactIncluded( artifact ) );
133 }
134
135 public void testDestFileSubPerArtifact()
136 throws IOException, ArtifactFilterException
137 {
138 DestFileFilter filter = new DestFileFilter( outputFolder );
139 Artifact artifact = fact.getSnapshotArtifact();
140 filter.setUseSubDirectoryPerArtifact( true );
141
142 assertTrue( filter.isArtifactIncluded( artifact ) );
143 createFile( artifact, true, false, false );
144 assertFalse( filter.isArtifactIncluded( artifact ) );
145
146 filter.setOverWriteSnapshots( true );
147 assertTrue( filter.isArtifactIncluded( artifact ) );
148 }
149
150 public void testDestFileSubPerType()
151 throws MojoExecutionException, IOException, ArtifactFilterException
152 {
153 DestFileFilter filter = new DestFileFilter( outputFolder );
154 Artifact artifact = fact.getSnapshotArtifact();
155 filter.setUseSubDirectoryPerType( true );
156
157 assertTrue( filter.isArtifactIncluded( artifact) );
158 createFile( artifact, false, true, false );
159 assertFalse( filter.isArtifactIncluded( artifact ) );
160
161 filter.setOverWriteSnapshots( true );
162 assertTrue( filter.isArtifactIncluded( artifact ) );
163 }
164
165 public void testDestFileOverwriteIfNewer()
166 throws MojoExecutionException, IOException, ArtifactFilterException
167 {
168 DestFileFilter filter = new DestFileFilter( outputFolder );
169
170 fact.setCreateFiles( true );
171 Artifact artifact = fact.getSnapshotArtifact();
172 File artifactFile = artifact.getFile();
173 artifactFile.setLastModified( artifactFile.lastModified() );
174 filter.setOverWriteIfNewer( true );
175
176
177 assertTrue( filter.isArtifactIncluded( artifact) );
178
179
180 File destFile = createFile( artifact, false, false, false );
181
182
183 destFile.setLastModified( artifactFile.lastModified() - 1000 );
184 assertTrue( filter.isArtifactIncluded( artifact ) );
185
186
187 destFile.setLastModified( artifactFile.lastModified() + 1000 );
188
189 assertFalse( filter.isArtifactIncluded( artifact ) );
190 }
191
192 public void testGettersSetters()
193 {
194 DestFileFilter filter = new DestFileFilter( null );
195 assertTrue( filter.getOutputFileDirectory() == null );
196 filter.setOutputFileDirectory( outputFolder );
197 assertSame( outputFolder, filter.getOutputFileDirectory() );
198
199 filter.setOverWriteIfNewer( true );
200 assertTrue( filter.isOverWriteIfNewer() );
201 filter.setOverWriteIfNewer( false );
202 assertFalse( filter.isOverWriteIfNewer() );
203
204 filter.setOverWriteReleases( true );
205 assertTrue( filter.isOverWriteReleases() );
206 filter.setOverWriteReleases( false );
207 assertFalse( filter.isOverWriteReleases() );
208
209 filter.setOverWriteSnapshots( true );
210 assertTrue( filter.isOverWriteSnapshots() );
211 filter.setOverWriteSnapshots( false );
212 assertFalse( filter.isOverWriteSnapshots() );
213
214 filter.setUseSubDirectoryPerArtifact( true );
215 assertTrue( filter.isUseSubDirectoryPerArtifact() );
216 filter.setUseSubDirectoryPerArtifact( false );
217 assertFalse( filter.isUseSubDirectoryPerArtifact() );
218
219 filter.setUseSubDirectoryPerType( true );
220 assertTrue( filter.isUseSubDirectoryPerType() );
221 filter.setUseSubDirectoryPerType( false );
222 assertFalse( filter.isUseSubDirectoryPerType() );
223
224 filter.setRemoveVersion( true );
225 assertTrue( filter.isRemoveVersion() );
226 filter.setRemoveVersion( false );
227 assertFalse( filter.isRemoveVersion() );
228 }
229 }