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.FileInputStream;
24 import java.io.IOException;
25 import java.util.ArrayList;
26 import java.util.Collections;
27 import java.util.List;
28 import java.util.Properties;
29
30 import org.apache.maven.execution.MavenSession;
31 import org.apache.maven.model.Resource;
32 import org.apache.maven.settings.Settings;
33 import org.codehaus.plexus.PlexusTestCase;
34 import org.codehaus.plexus.interpolation.PrefixedObjectValueSource;
35 import org.codehaus.plexus.interpolation.ValueSource;
36 import org.codehaus.plexus.util.FileUtils;
37 import org.codehaus.plexus.util.IOUtil;
38
39
40
41
42
43
44 public class DefaultMavenResourcesFilteringTest
45 extends PlexusTestCase
46 {
47
48 File outputDirectory = new File( getBasedir(), "target/DefaultMavenResourcesFilteringTest" );
49
50 protected void setUp()
51 throws Exception
52 {
53 super.setUp();
54 if ( outputDirectory.exists() )
55 {
56 FileUtils.forceDelete( outputDirectory );
57 }
58 outputDirectory.mkdirs();
59 }
60
61 public void testSimpleFiltering()
62 throws Exception
63 {
64 File baseDir = new File( "c:\\foo\\bar" );
65 StubMavenProject mavenProject = new StubMavenProject( baseDir );
66 mavenProject.setVersion( "1.0" );
67 mavenProject.setGroupId( "org.apache" );
68 mavenProject.setName( "test project" );
69
70 Properties projectProperties = new Properties();
71 projectProperties.put( "foo", "bar" );
72 projectProperties.put( "java.version", "zloug" );
73 mavenProject.setProperties( projectProperties );
74 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
75
76 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
77 File initialImageFile = new File( unitFilesDir, "happy_duke.gif" );
78
79 Resource resource = new Resource();
80 List resources = new ArrayList();
81 resources.add( resource );
82 resource.setDirectory( unitFilesDir );
83 resource.setFiltering( true );
84
85 List filtersFile = new ArrayList();
86 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
87
88 List nonFilteredFileExtensions = Collections.singletonList( "gif" );
89
90 mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, "UTF-8", filtersFile,
91 nonFilteredFileExtensions, new StubMavenSession() );
92
93 assertFiltering( baseDir, initialImageFile, false, false );
94 }
95
96 public void testSessionFiltering()
97 throws Exception
98 {
99 File baseDir = new File( "c:\\foo\\bar" );
100 StubMavenProject mavenProject = new StubMavenProject( baseDir );
101
102 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
103
104 String unitFilesDir = getBasedir() + "/src/test/units-files/session-filtering";
105
106 Resource resource = new Resource();
107 List resources = new ArrayList();
108 resources.add( resource );
109 resource.setDirectory( unitFilesDir );
110 resource.setFiltering( true );
111
112 List filtersFile = new ArrayList();
113
114 Settings settings = new Settings();
115 settings.setLocalRepository( System.getProperty( "localRepository", System.getProperty( "maven.repo.local",
116 "/path/to/local/repo" ) ) );
117
118 MavenSession session = new StubMavenSession( settings );
119
120 mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, "UTF-8", filtersFile,
121 Collections.EMPTY_LIST, session );
122
123 Properties result = new Properties();
124 FileInputStream in = null;
125 try
126 {
127 in = new FileInputStream( new File( outputDirectory, "session-filter-target.txt" ) );
128 result.load( in );
129 }
130 finally
131 {
132 IOUtil.close( in );
133 }
134
135 assertEquals( settings.getLocalRepository(), result.getProperty( "session.settings.local.repo" ) );
136 assertEquals( settings.getLocalRepository(), result.getProperty( "settings.local.repo" ) );
137 assertEquals( settings.getLocalRepository(), result.getProperty( "local.repo" ) );
138 }
139
140 public void testWithMavenResourcesExecution()
141 throws Exception
142 {
143 File baseDir = new File( "c:\\foo\\bar" );
144 StubMavenProject mavenProject = new StubMavenProject( baseDir );
145 mavenProject.setVersion( "1.0" );
146 mavenProject.setGroupId( "org.apache" );
147 mavenProject.setName( "test project" );
148
149 Properties projectProperties = new Properties();
150 projectProperties.put( "foo", "bar" );
151 projectProperties.put( "java.version", "zloug" );
152 mavenProject.setProperties( projectProperties );
153 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
154
155 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
156 File initialImageFile = new File( unitFilesDir, "happy_duke.gif" );
157
158 Resource resource = new Resource();
159 List resources = new ArrayList();
160 resources.add( resource );
161 resource.setDirectory( unitFilesDir );
162 resource.setFiltering( true );
163
164 List filtersFile = new ArrayList();
165 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
166
167 List nonFilteredFileExtensions = Collections.singletonList( "gif" );
168 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
169 "UTF-8", filtersFile,
170 nonFilteredFileExtensions,
171 new StubMavenSession() );
172 mavenResourcesExecution.setEscapeString( "\\" );
173 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
174 assertFiltering( baseDir, initialImageFile, true, false );
175 }
176
177 public void testWithMavenResourcesExecutionWithAdditionnalProperties()
178 throws Exception
179 {
180 File baseDir = new File( "c:\\foo\\bar" );
181 StubMavenProject mavenProject = new StubMavenProject( baseDir );
182 mavenProject.setVersion( "1.0" );
183 mavenProject.setGroupId( "org.apache" );
184 mavenProject.setName( "test project" );
185
186 Properties projectProperties = new Properties();
187 projectProperties.put( "foo", "bar" );
188 projectProperties.put( "java.version", "zloug" );
189 mavenProject.setProperties( projectProperties );
190 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
191
192 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
193 File initialImageFile = new File( unitFilesDir, "happy_duke.gif" );
194
195 Resource resource = new Resource();
196 List resources = new ArrayList();
197 resources.add( resource );
198 resource.setDirectory( unitFilesDir );
199 resource.setFiltering( true );
200
201 List filtersFile = new ArrayList();
202 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
203
204 List nonFilteredFileExtensions = Collections.singletonList( "gif" );
205 Properties additionalProperties = new Properties();
206 additionalProperties.put( "greatDate", "1973-06-14" );
207 additionalProperties.put( "pom.version", "99.00" );
208 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
209 "UTF-8", filtersFile,
210 nonFilteredFileExtensions,
211 new StubMavenSession() );
212 mavenResourcesExecution.setAdditionalProperties( additionalProperties );
213 mavenResourcesExecution.setEscapeString( "\\" );
214 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
215 assertFiltering( baseDir, initialImageFile, true, true );
216 }
217
218 private void assertFiltering( File baseDir, File initialImageFile, boolean escapeTest, boolean additionnalProperties )
219 throws Exception
220 {
221 assertEquals( 7, outputDirectory.listFiles().length );
222 Properties result = new Properties();
223 FileInputStream in = null;
224 try
225 {
226 in = new FileInputStream( new File( outputDirectory, "empty-maven-resources-filtering.txt" ) );
227 result.load( in );
228 }
229 finally
230 {
231 IOUtil.close( in );
232 }
233
234 assertTrue( result.isEmpty() );
235
236 result = new Properties();
237 in = null;
238 try
239 {
240 in = new FileInputStream( new File( outputDirectory, "maven-resources-filtering.txt" ) );
241 result.load( in );
242 }
243 finally
244 {
245 IOUtil.close( in );
246 }
247 assertFalse( result.isEmpty() );
248
249 if ( additionnalProperties )
250 {
251 assertEquals( "1973-06-14", result.getProperty( "goodDate" ) );
252 assertEquals( "99.00", result.get( "version" ) );
253 }
254 else
255 {
256 assertEquals( "1.0", result.get( "version" ) );
257 }
258 assertEquals( "org.apache", result.get( "groupId" ) );
259 assertEquals( "bar", result.get( "foo" ) );
260 assertEquals( "${foo.version}", result.get( "fooVersion" ) );
261
262 assertEquals( "@@", result.getProperty( "emptyexpression" ) );
263 assertEquals( "${}", result.getProperty( "emptyexpression2" ) );
264 assertEquals( System.getProperty( "user.dir" ), result.getProperty( "userDir" ) );
265 String userDir = result.getProperty( "userDir" );
266 assertTrue( new File( userDir ).exists() );
267 assertEquals( new File( System.getProperty( "user.dir" ) ), new File( userDir ) );
268 assertEquals( System.getProperty( "java.version" ), result.getProperty( "javaVersion" ) );
269
270 String userHome = result.getProperty( "userHome" );
271
272 assertTrue( "'" + userHome + "' does not exist.", new File( userHome ).exists() );
273 assertEquals( new File( System.getProperty( "user.home" ) ), new File( userHome ) );
274
275 if ( escapeTest )
276 {
277 assertEquals( "${java.version}", result.getProperty( "escapeJavaVersion" ) );
278 assertEquals( "@user.dir@", result.getProperty( "escapeuserDir" ) );
279 }
280 assertEquals( baseDir.toString(), result.get( "base" ) );
281 assertEquals( new File( baseDir.toString() ).getPath(), new File( result.getProperty( "base" ) ).getPath() );
282
283 File imageFile = new File( outputDirectory, "happy_duke.gif" );
284 assertTrue( imageFile.exists() );
285
286 assertTrue( filesAreIdentical( initialImageFile, imageFile ) );
287 }
288
289 public void testAddingTokens()
290 throws Exception
291 {
292 File baseDir = new File( "c:\\foo\\bar" );
293 final StubMavenProject mavenProject = new StubMavenProject( baseDir );
294 mavenProject.setVersion( "1.0" );
295 mavenProject.setGroupId( "org.apache" );
296 mavenProject.setName( "test project" );
297
298 Properties projectProperties = new Properties();
299 projectProperties.put( "foo", "bar" );
300 projectProperties.put( "java.version", "zloug" );
301 mavenProject.setProperties( projectProperties );
302 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
303
304 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
305 File initialImageFile = new File( unitFilesDir, "happy_duke.gif" );
306
307 Resource resource = new Resource();
308 List resources = new ArrayList();
309 resources.add( resource );
310 resource.setDirectory( unitFilesDir );
311 resource.setFiltering( true );
312
313 List filtersFile = new ArrayList();
314 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
315
316 List nonFilteredFileExtensions = Collections.singletonList( "gif" );
317
318 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
319 "UTF-8", null, nonFilteredFileExtensions,
320 new StubMavenSession() );
321
322 ValueSource vs = new PrefixedObjectValueSource( mavenResourcesExecution.getProjectStartExpressions(), mavenProject, true );
323
324 mavenResourcesExecution.addFilerWrapperWithEscaping( vs, "@", "@", null );
325
326 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
327 Properties result = PropertyUtils.loadPropertyFile( new File( outputDirectory, "maven-resources-filtering.txt" ), null );
328 assertFalse( result.isEmpty() );
329 assertEquals( mavenProject.getName(), result.get( "pomName" ) );
330 assertFiltering( baseDir, initialImageFile, false, false );
331 }
332
333 public void testNoFiltering()
334 throws Exception
335 {
336 StubMavenProject mavenProject = new StubMavenProject( new File( getBasedir() ) );
337 mavenProject.setVersion( "1.0" );
338 mavenProject.setGroupId( "org.apache" );
339
340 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
341
342 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
343 File initialImageFile = new File( unitFilesDir, "happy_duke.gif" );
344
345 Resource resource = new Resource();
346 List resources = new ArrayList();
347 resources.add( resource );
348
349 resource.setDirectory( unitFilesDir );
350 resource.setFiltering( false );
351 mavenResourcesFiltering.filterResources( resources, outputDirectory, mavenProject, "UTF-8", null, Collections.EMPTY_LIST,
352 new StubMavenSession() );
353
354 assertEquals( 7, outputDirectory.listFiles().length );
355 Properties result = PropertyUtils.loadPropertyFile( new File( outputDirectory, "empty-maven-resources-filtering.txt" ), null );
356 assertTrue( result.isEmpty() );
357
358 result = PropertyUtils.loadPropertyFile( new File( outputDirectory, "maven-resources-filtering.txt" ), null );
359 assertFalse( result.isEmpty() );
360
361 assertEquals( "${pom.version}", result.get( "version" ) );
362 assertEquals( "${pom.groupId}", result.get( "groupId" ) );
363 assertEquals( "${foo}", result.get( "foo" ) );
364 assertEquals( "@@", result.getProperty( "emptyexpression" ) );
365 assertEquals( "${}", result.getProperty( "emptyexpression2" ) );
366 File imageFile = new File( outputDirectory, "happy_duke.gif" );
367 assertTrue( filesAreIdentical( initialImageFile, imageFile ) );
368 }
369
370 public static boolean filesAreIdentical( File expected, File current )
371 throws IOException
372 {
373 if ( expected.length() != current.length() )
374 {
375 return false;
376 }
377 FileInputStream expectedIn = null;
378 FileInputStream currentIn = null;
379 try
380 {
381 expectedIn = new FileInputStream( expected );
382 currentIn = new FileInputStream( current );
383
384 byte[] expectedBuffer = IOUtil.toByteArray( expectedIn );
385
386 byte[] currentBuffer = IOUtil.toByteArray( currentIn );
387 if ( expectedBuffer.length != currentBuffer.length )
388 {
389 return false;
390 }
391 for ( int i = 0, size = expectedBuffer.length; i < size; i++ )
392 {
393 if ( expectedBuffer[i] != currentBuffer[i] )
394 {
395 return false;
396 }
397 }
398 }
399 finally
400 {
401 IOUtil.close( expectedIn );
402 IOUtil.close( currentIn );
403 }
404 return true;
405 }
406
407 public void testIncludeOneFile()
408 throws Exception
409 {
410 File baseDir = new File( "c:\\foo\\bar" );
411 StubMavenProject mavenProject = new StubMavenProject( baseDir );
412 mavenProject.setVersion( "1.0" );
413 mavenProject.setGroupId( "org.apache" );
414 mavenProject.setName( "test project" );
415
416 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
417
418 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
419
420 Resource resource = new Resource();
421 List resources = new ArrayList();
422 resources.add( resource );
423 resource.setDirectory( unitFilesDir );
424 resource.setFiltering( true );
425 resource.addInclude( "includ*" );
426
427 List filtersFile = new ArrayList();
428 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
429
430 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
431 "UTF-8", filtersFile, Collections.EMPTY_LIST,
432 new StubMavenSession() );
433 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
434
435 File[] files = outputDirectory.listFiles();
436 assertEquals( 1, files.length );
437 assertEquals( "includefile.txt", files[0].getName() );
438
439 }
440
441 public void testIncludeOneFileAndDirectory()
442 throws Exception
443 {
444 File baseDir = new File( "c:\\foo\\bar" );
445 StubMavenProject mavenProject = new StubMavenProject( baseDir );
446 mavenProject.setVersion( "1.0" );
447 mavenProject.setGroupId( "org.apache" );
448 mavenProject.setName( "test project" );
449
450 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
451
452 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
453
454 Resource resource = new Resource();
455 List resources = new ArrayList();
456 resources.add( resource );
457 resource.setDirectory( unitFilesDir );
458 resource.setFiltering( true );
459 resource.addInclude( "includ*" );
460 resource.addInclude( "**/includ*" );
461
462 List filtersFile = new ArrayList();
463 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
464
465 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
466 "UTF-8", filtersFile, Collections.EMPTY_LIST,
467 new StubMavenSession() );
468 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
469
470 File[] files = outputDirectory.listFiles();
471 assertEquals( 2, files.length );
472 File includeFile = new File( outputDirectory, "includefile.txt" );
473 assertTrue( includeFile.exists() );
474
475 includeFile = new File( new File( outputDirectory, "includedir" ), "include.txt" );
476 assertTrue( includeFile.exists() );
477
478 }
479
480 public void testExcludeOneFile()
481 throws Exception
482 {
483 File baseDir = new File( "c:\\foo\\bar" );
484 StubMavenProject mavenProject = new StubMavenProject( baseDir );
485 mavenProject.setVersion( "1.0" );
486 mavenProject.setGroupId( "org.apache" );
487 mavenProject.setName( "test project" );
488
489 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
490
491 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
492
493 Resource resource = new Resource();
494 List resources = new ArrayList();
495 resources.add( resource );
496 resource.setDirectory( unitFilesDir );
497 resource.setFiltering( true );
498 resource.addExclude( "*.gif" );
499 resource.addExclude( "**/excludedir/**" );
500
501 List filtersFile = new ArrayList();
502 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
503
504 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
505 "UTF-8", filtersFile, Collections.EMPTY_LIST,
506 new StubMavenSession() );
507 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
508
509 File[] files = outputDirectory.listFiles();
510 assertEquals( 5, files.length );
511 File includeFile = new File( outputDirectory, "includefile.txt" );
512 assertTrue( includeFile.exists() );
513
514 includeFile = new File( new File( outputDirectory, "includedir" ), "include.txt" );
515 assertTrue( includeFile.exists() );
516
517 File imageFile = new File( outputDirectory, "happy_duke.gif" );
518 assertFalse( imageFile.exists() );
519
520 File excludeDir = new File( outputDirectory, "excludedir" );
521 assertFalse( excludeDir.exists() );
522 }
523
524 public void testTargetAbsolutePath()
525 throws Exception
526 {
527 File baseDir = new File( "c:\\foo\\bar" );
528 StubMavenProject mavenProject = new StubMavenProject( baseDir );
529 mavenProject.setVersion( "1.0" );
530 mavenProject.setGroupId( "org.apache" );
531 mavenProject.setName( "test project" );
532
533 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
534
535 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
536
537 Resource resource = new Resource();
538 List resources = new ArrayList();
539 resources.add( resource );
540 resource.setDirectory( unitFilesDir );
541 resource.setFiltering( true );
542 resource.addInclude( "includ*" );
543
544 String targetPath = getBasedir() + "/target/testAbsolutePath/";
545 File targetPathFile = new File( targetPath );
546 resource.setTargetPath( targetPathFile.getAbsolutePath() );
547
548 if ( !targetPathFile.exists() )
549 {
550 targetPathFile.mkdirs();
551 }
552 else
553 {
554 FileUtils.cleanDirectory( targetPathFile );
555 }
556 List filtersFile = new ArrayList();
557 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
558
559 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
560 "UTF-8", filtersFile, Collections.EMPTY_LIST,
561 new StubMavenSession() );
562 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
563
564 File[] files = targetPathFile.listFiles();
565 assertEquals( 1, files.length );
566 assertEquals( "includefile.txt", files[0].getName() );
567 }
568
569 public void testTargetPath()
570 throws Exception
571 {
572 File baseDir = new File( "c:\\foo\\bar" );
573 StubMavenProject mavenProject = new StubMavenProject( baseDir );
574 mavenProject.setVersion( "1.0" );
575 mavenProject.setGroupId( "org.apache" );
576 mavenProject.setName( "test project" );
577
578 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
579
580 String unitFilesDir = getBasedir() + "/src/test/units-files/maven-resources-filtering";
581
582 Resource resource = new Resource();
583 List resources = new ArrayList();
584 resources.add( resource );
585 resource.setDirectory( unitFilesDir );
586 resource.setFiltering( true );
587 resource.addInclude( "includ*" );
588 resource.setTargetPath( "testTargetPath" );
589 List filtersFile = new ArrayList();
590 filtersFile.add( getBasedir() + "/src/test/units-files/maven-resources-filtering/empty-maven-resources-filtering.txt" );
591
592 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
593 "UTF-8", filtersFile, Collections.EMPTY_LIST,
594 new StubMavenSession() );
595 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
596
597 File targetPathFile = new File( outputDirectory, "testTargetPath" );
598
599 File[] files = targetPathFile.listFiles();
600 assertEquals( 1, files.length );
601 assertEquals( "includefile.txt", files[0].getName() );
602 }
603
604 public void testEmptyDirectories()
605 throws Exception
606 {
607 File baseDir = new File( "c:\\foo\\bar" );
608 StubMavenProject mavenProject = new StubMavenProject( baseDir );
609 mavenProject.setVersion( "1.0" );
610 mavenProject.setGroupId( "org.apache" );
611 mavenProject.setName( "test project" );
612
613 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
614
615 List resources = new ArrayList();
616 resources.add( new Resource()
617 {
618 {
619 setDirectory( getBasedir() + "/src/test/units-files/includeEmptyDirs" );
620 }
621 } );
622 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, outputDirectory, mavenProject,
623 "UTF-8", Collections.EMPTY_LIST,
624 Collections.EMPTY_LIST, new StubMavenSession() );
625 mavenResourcesExecution.setIncludeEmptyDirs( true );
626 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
627
628 File[] childs = outputDirectory.listFiles();
629 assertEquals( 3, childs.length );
630
631 for ( int i = 0, size = childs.length; i < size; i++ )
632 {
633 File file = childs[i];
634 if ( file.getName().endsWith( "dir1" ) || file.getName().endsWith( "empty-directory" )
635 || file.getName().endsWith( "empty-directory-child" ) )
636 {
637 if ( file.getName().endsWith( "dir1" ) )
638 {
639 assertEquals( 1, file.list().length );
640 assertTrue( file.listFiles()[0].getName().endsWith( "foo.txt" ) );
641 }
642 if ( file.getName().endsWith( "empty-directory" ) )
643 {
644 assertEquals( 0, file.list().length );
645 }
646 if ( file.getName().endsWith( "empty-directory-child" ) )
647 {
648 assertEquals( 1, file.list().length );
649 assertTrue( file.listFiles()[0].isDirectory() );
650 assertEquals( 0, file.listFiles()[0].listFiles().length );
651 }
652 }
653 else
654 {
655 fail( "unknow child file found " + file.getName() );
656 }
657 }
658 }
659
660
661
662
663 public void testMSHARED81()
664 throws Exception
665 {
666 StubMavenProject mavenProject = new StubMavenProject( new File( "/foo/bar" ) );
667
668 mavenProject.setVersion( "1.0" );
669
670 mavenProject.addProperty( "escaped", "this is escaped" );
671 mavenProject.addProperty( "escaped.at", "this is escaped.at" );
672 mavenProject.addProperty( "foo", "this is foo" );
673 mavenProject.addProperty( "bar", "this is bar" );
674
675 MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class.getName() );
676
677 List resources = new ArrayList();
678 resources.add( new Resource()
679 {
680 {
681 setDirectory( getBasedir() + "/src/test/units-files/MSHARED-81/resources" );
682 setFiltering( false );
683 }
684 } );
685 resources.add( new Resource()
686 {
687 {
688 setDirectory( getBasedir() + "/src/test/units-files/MSHARED-81/filtered" );
689 setFiltering( true );
690 }
691 } );
692 File output = new File( outputDirectory, "MSHARED-81" );
693 MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution( resources, output, mavenProject, "UTF-8",
694 Collections.EMPTY_LIST, Collections.EMPTY_LIST,
695 new StubMavenSession() );
696 mavenResourcesExecution.setIncludeEmptyDirs( true );
697 mavenResourcesExecution.setEscapeString( "\\" );
698
699 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
700
701 Properties filteredResult = PropertyUtils.loadPropertyFile( new File( output, "filtered.properties" ), null );
702
703 Properties expectedFilteredResult = PropertyUtils.loadPropertyFile( new File( getBasedir()
704 + "/src/test/units-files/MSHARED-81", "expected-filtered.properties" ), null );
705
706 System.out.println( "Expected:\n" );
707 expectedFilteredResult.list( System.out );
708 System.out.println( "\n\n\nGot:\n" );
709 filteredResult.list( System.out );
710
711 assertEquals( expectedFilteredResult, filteredResult );
712
713 Properties nonFilteredResult = PropertyUtils.loadPropertyFile( new File( output, "unfiltered.properties" ), null );
714
715 Properties expectedNonFilteredResult = PropertyUtils.loadPropertyFile( new File( getBasedir()
716 + "/src/test/units-files/MSHARED-81/resources", "unfiltered.properties" ), null );
717
718 assertTrue( nonFilteredResult.equals( expectedNonFilteredResult ) );
719 }
720
721 }