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 static org.junit.Assert.assertEquals;
23 import static org.mockito.Matchers.eq;
24 import static org.mockito.Matchers.isA;
25 import static org.mockito.Mockito.when;
26
27 import java.io.Reader;
28 import java.io.StringReader;
29 import java.util.Arrays;
30 import java.util.Collections;
31 import java.util.HashSet;
32
33 import org.codehaus.plexus.interpolation.Interpolator;
34 import org.codehaus.plexus.interpolation.RecursionInterceptor;
35 import org.codehaus.plexus.util.IOUtil;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.mockito.Mock;
39 import org.mockito.MockitoAnnotations;
40
41 public class MultiDelimiterInterpolatorFilterReaderLineEndingTest extends AbstractInterpolatorFilterReaderLineEndingTest
42 {
43
44 @Mock
45 private Interpolator interpolator;
46
47 @Before
48 public void onSetup()
49 {
50 MockitoAnnotations.initMocks( this );
51 }
52
53 @Override
54 protected Reader getAaa_AaaReader( Reader in, Interpolator interpolator )
55 {
56 MultiDelimiterInterpolatorFilterReaderLineEnding reader = new MultiDelimiterInterpolatorFilterReaderLineEnding( in, interpolator, true );
57 reader.setDelimiterSpecs( Collections.singleton( "aaa*aaa" ) );
58 return reader;
59 }
60
61 @Override
62 protected Reader getAbc_AbcReader( Reader in, Interpolator interpolator )
63 {
64 MultiDelimiterInterpolatorFilterReaderLineEnding reader = new MultiDelimiterInterpolatorFilterReaderLineEnding( in, interpolator, true );
65 reader.setDelimiterSpecs( Collections.singleton( "abc*abc" ) );
66 return reader;
67 }
68
69 @Override
70 protected Reader getDollarBracesReader( Reader in, Interpolator interpolator, String escapeString )
71 {
72 MultiDelimiterInterpolatorFilterReaderLineEnding reader = new MultiDelimiterInterpolatorFilterReaderLineEnding( in, interpolator, true );
73 reader.setDelimiterSpecs( Collections.singleton( "${*}" ) );
74 reader.setEscapeString( escapeString );
75 return reader;
76 }
77
78 @Override
79 protected Reader getAtReader( Reader in, Interpolator interpolator, String escapeString )
80 {
81 MultiDelimiterInterpolatorFilterReaderLineEnding reader = new MultiDelimiterInterpolatorFilterReaderLineEnding( in, interpolator, true );
82 reader.setDelimiterSpecs( Collections.singleton( "@" ) );
83 reader.setEscapeString( escapeString );
84 return reader;
85 }
86
87
88 @Test
89 public void testLineWithSingleAtAndExpression()
90 throws Exception
91 {
92 when( interpolator.interpolate( eq( "${foo}" ), eq( "" ), isA( RecursionInterceptor.class ) ) ).thenReturn( "bar" );
93
94 Reader in = new StringReader( "toto@titi.com ${foo}" );
95 MultiDelimiterInterpolatorFilterReaderLineEnding reader =
96 new MultiDelimiterInterpolatorFilterReaderLineEnding( in, interpolator, true );
97 reader.setDelimiterSpecs( new HashSet<String>( Arrays.asList( "${*}", "@" ) ) );
98
99 assertEquals( "toto@titi.com bar", IOUtil.toString( reader ) );
100 }
101
102
103 @Test
104 public void testAtDollarExpression() throws Exception
105 {
106 when( interpolator.interpolate( eq( "${db.server}" ), eq( "" ), isA( RecursionInterceptor.class ) ) ).thenReturn( "DB_SERVER" );
107 when( interpolator.interpolate( eq( "${db.port}" ), eq( "" ), isA( RecursionInterceptor.class ) ) ).thenReturn( "DB_PORT" );
108 when( interpolator.interpolate( eq( "${db.name}" ), eq( "" ), isA( RecursionInterceptor.class ) ) ).thenReturn( "DB_NAME" );
109
110 Reader in = new StringReader( " url=\"jdbc:oracle:thin:\\@${db.server}:${db.port}:${db.name}\"" );
111 MultiDelimiterInterpolatorFilterReaderLineEnding reader =
112 new MultiDelimiterInterpolatorFilterReaderLineEnding( in, interpolator, true );
113 reader.setEscapeString( "\\" );
114 reader.setDelimiterSpecs( new HashSet<String>( Arrays.asList( "${*}", "@" ) ) );
115
116 assertEquals( " url=\"jdbc:oracle:thin:@DB_SERVER:DB_PORT:DB_NAME\"", IOUtil.toString( reader ) );
117 }
118 }