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.nio.charset.StandardCharsets;
24 import java.util.ArrayList;
25 import java.util.Collections;
26 import java.util.List;
27 import java.util.Properties;
28
29 import org.apache.commons.io.FileUtils;
30 import org.apache.maven.model.Resource;
31 import org.codehaus.plexus.PlexusTestCase;
32
33
34
35
36 public class EscapeStringTest
37 extends PlexusTestCase
38 {
39
40 File outputDirectory = new File( getBasedir(), "target/EscapeStringTest" );
41
42 File unitDirectory = new File( getBasedir(), "src/test/units-files/escape-remove-char" );
43
44 @Override
45 protected void setUp()
46 throws Exception
47 {
48 super.setUp();
49 if ( outputDirectory.exists() )
50 {
51 FileUtils.deleteDirectory( outputDirectory );
52 }
53 outputDirectory.mkdirs();
54 }
55
56 public void testEscape()
57 throws Exception
58 {
59 File baseDir = new File( "c:\\foo\\bar" );
60 StubMavenProject mavenProject = new StubMavenProject( baseDir );
61 mavenProject.setVersion( "1.0" );
62 mavenProject.setGroupId( "org.apache" );
63 mavenProject.setName( "test project" );
64
65 Properties projectProperties = new Properties();
66 projectProperties.put( "foo", "bar" );
67 projectProperties.put( "java.version", "zloug" );
68 projectProperties.put( "replaceThis", "I am the replacement" );
69 mavenProject.setProperties( projectProperties );
70 MavenResourcesFiltering mavenResourcesFiltering = lookup( MavenResourcesFiltering.class );
71
72 Resource resource = new Resource();
73 List<Resource> resources = new ArrayList<>();
74 resources.add( resource );
75 resource.setDirectory( unitDirectory.getPath() );
76 resource.setFiltering( true );
77
78 List<String> filtersFile = new ArrayList<>();
79
80 List<String> nonFilteredFileExtensions = Collections.singletonList( "gif" );
81
82 MavenResourcesExecution mavenResourcesExecution =
83 new MavenResourcesExecution( resources, outputDirectory, mavenProject, "UTF-8", filtersFile,
84 nonFilteredFileExtensions, new StubMavenSession() );
85 mavenResourcesExecution.setUseDefaultFilterWrappers( true );
86
87 mavenResourcesExecution.setEscapeString( "!" );
88
89 mavenResourcesFiltering.filterResources( mavenResourcesExecution );
90
91 File file = new File( outputDirectory, "content.xml" );
92 String content = FileUtils.readFileToString( file, StandardCharsets.UTF_8 );
93 assertTrue( content.contains( "<broken-tag>Content with replacement: I am the replacement !</broken-tag>" ) );
94 assertTrue( content.contains( "<broken-tag>Content with escaped replacement: Do not ${replaceThis} !</broken-tag>" ) );
95 }
96 }