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