View Javadoc
1   package org.apache.maven.plugins.dependency.utils.filters;
2   
3   /* 
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.    
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.plugins.dependency.testUtils.DependencyArtifactStubFactory;
32  import org.apache.maven.plugins.dependency.testUtils.DependencyTestUtils;
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   * @author brianf
40   */
41  public class TestMarkerFileFilter
42      extends TestCase
43  {
44      Set<Artifact> artifacts = new HashSet<Artifact>();
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          DependencyTestUtils.removeDirectory( 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          DependencyTestUtils.removeDirectory( 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         DependencyTestUtils.removeDirectory( 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         DependencyTestUtils.removeDirectory( outputFolder );
123         assertFalse( outputFolder.exists() );
124     }
125 
126     public void testMarkerTimestamp()
127         throws IOException, MojoExecutionException, ArtifactFilterException
128     {
129         // filter includes release artifact because no marker present
130         // filter includes snapshot artifact becaues it is newer than marker
131         DependencyArtifactStubFactory fileFact = new DependencyArtifactStubFactory( outputFolder, true );
132         Artifact snap = fileFact.getSnapshotArtifact();
133         Artifact release = fileFact.getReleaseArtifact();
134         Set<Artifact> tempArtifacts = new HashSet<Artifact>();
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         // update marker; filter won't include snapshot because timestamps equal
146         handler.setMarker();
147         result = filter.filter( tempArtifacts );
148         assertEquals( 1, result.size() );
149 
150         // filter won't include snapshot because it is older than marker
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         DependencyTestUtils.removeDirectory( 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         assertEquals( true, filter.isOverWriteReleases() );
169         assertEquals( false, filter.isOverWriteSnapshots() );
170         assertEquals( true, filter.isOverWriteIfNewer() );
171 
172         filter.setOverWriteReleases( false );
173         filter.setOverWriteSnapshots( true );
174         filter.setOverWriteIfNewer( false );
175 
176         assertEquals( false, filter.isOverWriteReleases() );
177         assertEquals( true, filter.isOverWriteSnapshots() );
178         assertEquals( false, filter.isOverWriteIfNewer() );
179 
180     }
181 
182 }