View Javadoc

1   package org.apache.maven.plugin.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.plugin.dependency.testUtils.DependencyArtifactStubFactory;
32  import org.apache.maven.plugin.dependency.testUtils.DependencyTestUtils;
33  import org.apache.maven.plugin.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   */
42  public class TestMarkerFileFilter
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 void testMarkerFile() throws ArtifactFilterException
73         
74      {
75          MarkerFileFilter filter = new MarkerFileFilter( true, true, false, new DefaultFileMarkerHandler( outputFolder ) );
76          Set<Artifact> result = filter.filter( artifacts );
77          assertEquals( 2, result.size() );
78  
79          filter.setOverWriteReleases( false );
80          filter.setOverWriteSnapshots( false );
81          result = filter.filter( artifacts );
82          assertEquals( 2, result.size() );
83      }
84  
85      public void testMarkerSnapshots() throws ArtifactFilterException, MojoExecutionException, IOException
86         
87      {
88          DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler( fact.getSnapshotArtifact(), outputFolder );
89          handler.setMarker();
90  
91          MarkerFileFilter filter = new MarkerFileFilter( true, false, false, new DefaultFileMarkerHandler( outputFolder ) );
92          Set<Artifact> result = filter.filter( artifacts );
93          assertEquals( 1, result.size() );
94  
95          filter.setOverWriteSnapshots( true );
96          result = filter.filter( artifacts );
97          assertEquals( 2, result.size() );
98          assertTrue( handler.clearMarker() );
99          DependencyTestUtils.removeDirectory( outputFolder );
100         assertFalse( outputFolder.exists() );
101     }
102 
103     public void testMarkerRelease()
104         throws IOException, ArtifactFilterException, MojoExecutionException
105     {
106         DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler( fact.getReleaseArtifact(), outputFolder );
107         handler.setMarker();
108 
109         MarkerFileFilter filter = new MarkerFileFilter( false, false, false,
110                                                         new DefaultFileMarkerHandler( outputFolder ) );
111         Set<Artifact> result = filter.filter( artifacts );
112         assertEquals( 1, result.size() );
113 
114         filter.setOverWriteReleases( true );
115         result = filter.filter( artifacts);
116         assertEquals( 2, result.size() );
117 
118         assertTrue( handler.clearMarker() );
119         DependencyTestUtils.removeDirectory( outputFolder );
120         assertFalse( outputFolder.exists() );
121     }
122 
123     public void testMarkerTimestamp()
124         throws IOException, MojoExecutionException, ArtifactFilterException
125     {
126         // filter includes release artifact because no marker present
127         // filter includes snapshot artifact becaues it is newer than marker
128         DependencyArtifactStubFactory fileFact = new DependencyArtifactStubFactory( outputFolder, true );
129         Artifact snap = fileFact.getSnapshotArtifact();
130         Artifact release = fileFact.getReleaseArtifact();
131         Set<Artifact> tempArtifacts = new HashSet<Artifact>();
132         tempArtifacts.add( snap );
133         tempArtifacts.add( release );
134         DefaultFileMarkerHandler handler = new DefaultFileMarkerHandler( snap, outputFolder );
135         handler.setMarker();
136         snap.getFile().setLastModified( snap.getFile().lastModified() + 1500 );
137         MarkerFileFilter filter = new MarkerFileFilter( false, false, true, new DefaultFileMarkerHandler( outputFolder ) );
138         Set<Artifact> result = filter.filter( tempArtifacts );
139         assertEquals( 2, result.size() );
140 
141         // update marker; filter won't include snapshot because timestamps equal
142         handler.setMarker();
143         result = filter.filter( tempArtifacts );
144         assertEquals( 1, result.size() );
145         
146         // filter won't include snapshot because it is older than marker
147         snap.getFile().setLastModified( snap.getFile().lastModified() - 10000 );
148 
149         result = filter.filter( tempArtifacts );
150         assertEquals( 1, result.size() );
151 
152         assertTrue( handler.clearMarker() );
153         assertFalse( handler.isMarkerSet() );
154         snap.getFile().delete();
155         release.getFile().delete();
156         DependencyTestUtils.removeDirectory( outputFolder );
157         assertFalse( outputFolder.exists() );
158     }
159 
160     public void testGettersSetters()
161     {
162         MarkerFileFilter filter = new MarkerFileFilter( true, false, true, new DefaultFileMarkerHandler( outputFolder ) );
163         assertEquals( true, filter.isOverWriteReleases() );
164         assertEquals( false, filter.isOverWriteSnapshots() );
165         assertEquals( true, filter.isOverWriteIfNewer() );
166 
167         filter.setOverWriteReleases( false );
168         filter.setOverWriteSnapshots( true );
169         filter.setOverWriteIfNewer( false );
170 
171         assertEquals( false, filter.isOverWriteReleases() );
172         assertEquals( true, filter.isOverWriteSnapshots() );
173         assertEquals( false, filter.isOverWriteIfNewer() );
174 
175     }
176 
177 }