1 package org.apache.maven.shared.filtering;
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.Reader;
24 import java.io.StringReader;
25 import java.nio.file.Files;
26 import java.util.ArrayList;
27 import java.util.Arrays;
28 import java.util.Collections;
29 import java.util.LinkedHashSet;
30 import java.util.List;
31 import java.util.Properties;
32
33 import org.apache.commons.io.IOUtils;
34 import org.apache.maven.project.MavenProject;
35 import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
36 import org.codehaus.plexus.PlexusTestCase;
37
38
39
40
41
42 public class DefaultMavenFileFilterTest
43 extends PlexusTestCase
44 {
45
46 File to = new File( getBasedir(), "target/reflection-test.properties" );
47
48 @Override
49 protected void setUp()
50 throws Exception
51 {
52 super.setUp();
53 Files.deleteIfExists( to.toPath() );
54 }
55
56 public void testNotOverwriteFile()
57 throws Exception
58 {
59 MavenFileFilter mavenFileFilter = lookup( MavenFileFilter.class );
60
61 File from = new File( getBasedir(), "src/test/units-files/reflection-test.properties" );
62
63 mavenFileFilter.copyFile( from, to, false, null, null );
64
65 from = new File( getBasedir(), "src/test/units-files/reflection-test-older.properties" );
66
67
68 from.setLastModified( 1 );
69
70 to.setLastModified( System.currentTimeMillis() );
71
72 mavenFileFilter.copyFile( from, to, false, null, null );
73
74 Properties properties = PropertyUtils.loadPropertyFile( to, null );
75 assertEquals( "${pom.version}", properties.getProperty( "version" ) );
76
77 }
78
79 public void testOverwriteFile()
80 throws Exception
81 {
82 MavenFileFilter mavenFileFilter = lookup( MavenFileFilter.class );
83
84 File from = new File( getBasedir(), "src/test/units-files/reflection-test.properties" );
85
86 mavenFileFilter.copyFile( from, to, false, null, null );
87
88 from = new File( getBasedir(), "src/test/units-files/reflection-test-older.properties" );
89
90
91 from.setLastModified( 1 );
92
93 to.setLastModified( System.currentTimeMillis() );
94
95 mavenFileFilter.copyFile( from, to, false, null, null, true );
96
97 Properties properties = PropertyUtils.loadPropertyFile( to, null );
98 assertEquals( "older file", properties.getProperty( "version" ) );
99
100 }
101
102 public void testNullSafeDefaultFilterWrappers()
103 throws Exception
104 {
105 MavenFileFilter mavenFileFilter = lookup( MavenFileFilter.class );
106
107 mavenFileFilter.getDefaultFilterWrappers( null, null, false, null, null );
108
109
110 }
111
112 public void testMultiFilterFileInheritance()
113 throws Exception
114 {
115 DefaultMavenFileFilter mavenFileFilter = new DefaultMavenFileFilter();
116
117 File testDir = new File( getBasedir(), "src/test/units-files/MSHARED-177" );
118
119 List<String> filters = new ArrayList<>();
120
121 filters.add( new File( testDir, "first_filter_file.properties" ).getAbsolutePath() );
122 filters.add( new File( testDir, "second_filter_file.properties" ).getAbsolutePath() );
123 filters.add( new File( testDir, "third_filter_file.properties" ).getAbsolutePath() );
124
125 final Properties filterProperties = new Properties();
126
127 mavenFileFilter.loadProperties( filterProperties, new File( getBasedir() ), filters, new Properties() );
128
129 assertTrue( filterProperties.getProperty( "third_filter_key" ).equals( "first and second" ) );
130 }
131
132
133
134 public void testMavenBasedir()
135 throws Exception
136 {
137 MavenFileFilter mavenFileFilter = lookup( MavenFileFilter.class );
138
139 AbstractMavenFilteringRequest req = new AbstractMavenFilteringRequest();
140 req.setFileFilters( Collections.singletonList( "src/main/filters/filefilter.properties" ) );
141
142 MavenProject mavenProject = new StubMavenProject( new File( "src/test/units-files/MSHARED-161" ) );
143 mavenProject.getBuild().setFilters( Collections.singletonList( "src/main/filters/buildfilter.properties" ) );
144 req.setMavenProject( mavenProject );
145 req.setInjectProjectBuildFilters( true );
146
147 List<FilterWrapper> wrappers = mavenFileFilter.getDefaultFilterWrappers( req );
148
149 try ( Reader reader = wrappers.get( 0 ).getReader( new StringReader( "${filefilter} ${buildfilter}" ) ) )
150 {
151 assertEquals( "true true", IOUtils.toString( reader ) );
152 }
153 }
154
155
156 public void testCustomDelimiters()
157 throws Exception
158 {
159 MavenFileFilter mavenFileFilter = lookup( MavenFileFilter.class );
160
161 AbstractMavenFilteringRequest req = new AbstractMavenFilteringRequest();
162 Properties additionalProperties = new Properties();
163 additionalProperties.setProperty( "FILTER.a.ME", "DONE" );
164 req.setAdditionalProperties( additionalProperties );
165 req.setDelimiters( new LinkedHashSet<>( Arrays.asList( "aaa*aaa", "abc*abc" ) ) );
166
167 List<FilterWrapper> wrappers = mavenFileFilter.getDefaultFilterWrappers( req );
168
169 Reader reader = wrappers.get( 0 ).getReader( new StringReader( "aaaFILTER.a.MEaaa" ) );
170 assertEquals( "DONE", IOUtils.toString( reader ) );
171
172 reader = wrappers.get( 0 ).getReader( new StringReader( "abcFILTER.a.MEabc" ) );
173 assertEquals( "DONE", IOUtils.toString( reader ) );
174 }
175
176
177 public void testLineWithSingleAtAndExpression()
178 throws Exception
179 {
180 MavenFileFilter mavenFileFilter = lookup( MavenFileFilter.class );
181
182 AbstractMavenFilteringRequest req = new AbstractMavenFilteringRequest();
183 Properties additionalProperties = new Properties();
184 additionalProperties.setProperty( "foo", "bar" );
185 req.setAdditionalProperties( additionalProperties );
186
187 List<FilterWrapper> wrappers = mavenFileFilter.getDefaultFilterWrappers( req );
188
189 try ( Reader reader = wrappers.get( 0 ).getReader( new StringReader( "toto@titi.com ${foo}" ) ) )
190 {
191 assertEquals( "toto@titi.com bar", IOUtils.toString( reader ) );
192 }
193 }
194 }