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.markers.DefaultFileMarkerHandler;
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 TestMarkerFileFilter
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 void testMarkerFile()
72 throws ArtifactFilterException
73
74 {
75 MarkerFileFilter filter =
76 new MarkerFileFilter( true, true, false, new DefaultFileMarkerHandler( outputFolder ) );
77 Set<Artifact> result = filter.filter( artifacts );
78 assertEquals( 2, result.size() );
79
80 filter.setOverWriteReleases( false );
81 filter.setOverWriteSnapshots( false );
82 result = filter.filter( artifacts );
83 assertEquals( 2, result.size() );
84 }
85
86 public void testMarkerSnapshots()
87 throws ArtifactFilterException, MojoExecutionException, IOException
88
89 {
90 DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler( fact.getSnapshotArtifact(), outputFolder );
91 handler.setMarker();
92
93 MarkerFileFilter filter =
94 new MarkerFileFilter( true, false, false, new DefaultFileMarkerHandler( outputFolder ) );
95 Set<Artifact> result = filter.filter( artifacts );
96 assertEquals( 1, result.size() );
97
98 filter.setOverWriteSnapshots( true );
99 result = filter.filter( artifacts );
100 assertEquals( 2, result.size() );
101 assertTrue( handler.clearMarker() );
102 FileUtils.deleteDirectory( outputFolder );
103 assertFalse( outputFolder.exists() );
104 }
105
106 public void testMarkerRelease()
107 throws IOException, ArtifactFilterException, MojoExecutionException
108 {
109 DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler( fact.getReleaseArtifact(), outputFolder );
110 handler.setMarker();
111
112 MarkerFileFilter filter =
113 new MarkerFileFilter( false, false, false, new DefaultFileMarkerHandler( outputFolder ) );
114 Set<Artifact> result = filter.filter( artifacts );
115 assertEquals( 1, result.size() );
116
117 filter.setOverWriteReleases( true );
118 result = filter.filter( artifacts );
119 assertEquals( 2, result.size() );
120
121 assertTrue( handler.clearMarker() );
122 FileUtils.deleteDirectory( outputFolder );
123 assertFalse( outputFolder.exists() );
124 }
125
126 public void testMarkerTimestamp()
127 throws IOException, MojoExecutionException, ArtifactFilterException
128 {
129
130
131 DependencyArtifactStubFactory fileFact = new DependencyArtifactStubFactory( outputFolder, true );
132 Artifact snap = fileFact.getSnapshotArtifact();
133 Artifact release = fileFact.getReleaseArtifact();
134 Set<Artifact> tempArtifacts = new HashSet<>();
135 tempArtifacts.add( snap );
136 tempArtifacts.add( release );
137 DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler( snap, outputFolder );
138 handler.setMarker();
139 assertTrue( snap.getFile().setLastModified( snap.getFile().lastModified() + 1500 ) );
140 MarkerFileFilter filter =
141 new MarkerFileFilter( false, false, true, new DefaultFileMarkerHandler( outputFolder ) );
142 Set<Artifact> result = filter.filter( tempArtifacts );
143 assertEquals( 2, result.size() );
144
145
146 handler.setMarker();
147 result = filter.filter( tempArtifacts );
148 assertEquals( 1, result.size() );
149
150
151 assertTrue( snap.getFile().setLastModified( snap.getFile().lastModified() - 10000 ) );
152
153 result = filter.filter( tempArtifacts );
154 assertEquals( 1, result.size() );
155
156 assertTrue( handler.clearMarker() );
157 assertFalse( handler.isMarkerSet() );
158 snap.getFile().delete();
159 release.getFile().delete();
160 FileUtils.deleteDirectory( outputFolder );
161 assertFalse( outputFolder.exists() );
162 }
163
164 public void testGettersSetters()
165 {
166 MarkerFileFilter filter =
167 new MarkerFileFilter( true, false, true, new DefaultFileMarkerHandler( outputFolder ) );
168 assertTrue( filter.isOverWriteReleases() );
169 assertFalse( filter.isOverWriteSnapshots() );
170 assertTrue( filter.isOverWriteIfNewer() );
171
172 filter.setOverWriteReleases( false );
173 filter.setOverWriteSnapshots( true );
174 filter.setOverWriteIfNewer( false );
175
176 assertFalse( filter.isOverWriteReleases() );
177 assertTrue( filter.isOverWriteSnapshots() );
178 assertFalse( filter.isOverWriteIfNewer() );
179
180 }
181
182 }