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