KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > project > interpolation > RegexBasedModelInterpolatorTest


1 package org.apache.maven.project.interpolation;
2
3 /*
4  * Copyright 2001-2005 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 import junit.framework.TestCase;
20
21 import org.apache.maven.model.Dependency;
22 import org.apache.maven.model.Model;
23 import org.apache.maven.model.Organization;
24 import org.apache.maven.model.Repository;
25 import org.apache.maven.model.Scm;
26
27 import java.io.IOException JavaDoc;
28 import java.util.Collections JavaDoc;
29 import java.util.Map JavaDoc;
30 import java.util.Properties JavaDoc;
31
32 /**
33  * @author jdcasey
34  * @version $Id: RegexBasedModelInterpolatorTest.java 391974 2006-04-06 12:47:20Z jdcasey $
35  */

36 public class RegexBasedModelInterpolatorTest
37     extends TestCase
38 {
39     private Map JavaDoc context;
40
41     protected void setUp()
42         throws Exception JavaDoc
43     {
44         super.setUp();
45
46         context = Collections.singletonMap( "basedir", "myBasedir" );
47     }
48
49     public void testShouldNotThrowExceptionOnReferenceToNonExistentValue()
50         throws IOException JavaDoc, ModelInterpolationException
51     {
52         Model model = new Model();
53
54         Scm scm = new Scm();
55         scm.setConnection( "${test}/somepath" );
56
57         model.setScm( scm );
58
59         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
60
61         assertEquals( "${test}/somepath", out.getScm().getConnection() );
62     }
63
64     public void testShouldThrowExceptionOnRecursiveScmConnectionReference()
65         throws IOException JavaDoc
66     {
67         Model model = new Model();
68
69         Scm scm = new Scm();
70         scm.setConnection( "${project.scm.connection}/somepath" );
71
72         model.setScm( scm );
73
74         try
75         {
76             Model out = new RegexBasedModelInterpolator().interpolate( model, context );
77
78             fail( "The interpolator should not allow self-referencing expressions in POM." );
79         }
80         catch ( ModelInterpolationException e )
81         {
82
83         }
84     }
85
86     public void testShouldNotThrowExceptionOnReferenceToValueContainingNakedExpression()
87         throws IOException JavaDoc, ModelInterpolationException
88     {
89         Model model = new Model();
90
91         Scm scm = new Scm();
92         scm.setConnection( "${test}/somepath" );
93
94         model.setScm( scm );
95
96         model.addProperty( "test", "test" );
97
98         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
99
100         assertEquals( "test/somepath", out.getScm().getConnection() );
101     }
102
103     public void testShouldInterpolateOrganizationNameCorrectly()
104         throws Exception JavaDoc
105     {
106         String JavaDoc orgName = "MyCo";
107
108         Model model = new Model();
109         model.setName( "${pom.organization.name} Tools" );
110
111         Organization org = new Organization();
112         org.setName( orgName );
113
114         model.setOrganization( org );
115
116         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
117
118         assertEquals( orgName + " Tools", out.getName() );
119     }
120
121     public void testShouldInterpolateDependencyVersionToSetSameAsProjectVersion()
122         throws Exception JavaDoc
123     {
124         Model model = new Model();
125         model.setVersion( "3.8.1" );
126
127         Dependency dep = new Dependency();
128         dep.setVersion( "${version}" );
129
130         model.addDependency( dep );
131
132         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
133
134         assertEquals( "3.8.1", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
135     }
136
137     public void testShouldNotInterpolateDependencyVersionWithInvalidReference()
138         throws Exception JavaDoc
139     {
140         Model model = new Model();
141         model.setVersion( "3.8.1" );
142
143         Dependency dep = new Dependency();
144         dep.setVersion( "${something}" );
145
146         model.addDependency( dep );
147
148         /*
149          // This is the desired behaviour, however there are too many crappy poms in the repo and an issue with the
150          // timing of executing the interpolation
151
152          try
153          {
154          new RegexBasedModelInterpolator().interpolate( model, context );
155          fail( "Should have failed to interpolate with invalid reference" );
156          }
157          catch ( ModelInterpolationException expected )
158          {
159          assertTrue( true );
160          }
161          */

162
163         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
164
165         assertEquals( "${something}", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
166     }
167
168     public void testTwoReferences()
169         throws Exception JavaDoc
170     {
171         Model model = new Model();
172         model.setVersion( "3.8.1" );
173         model.setArtifactId( "foo" );
174
175         Dependency dep = new Dependency();
176         dep.setVersion( "${artifactId}-${version}" );
177
178         model.addDependency( dep );
179
180         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
181
182         assertEquals( "foo-3.8.1", ( (Dependency) out.getDependencies().get( 0 ) ).getVersion() );
183     }
184
185     public void testBasedir()
186         throws Exception JavaDoc
187     {
188         Model model = new Model();
189         model.setVersion( "3.8.1" );
190         model.setArtifactId( "foo" );
191
192         Repository repository = new Repository();
193
194         repository.setUrl( "file://localhost/${basedir}/temp-repo" );
195
196         model.addRepository( repository );
197
198         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
199
200         assertEquals( "file://localhost/myBasedir/temp-repo", ( (Repository) out.getRepositories().get( 0 ) ).getUrl() );
201     }
202
203     public void testEnvars()
204         throws Exception JavaDoc
205     {
206         Properties JavaDoc envars = new Properties JavaDoc();
207
208         envars.setProperty( "HOME", "/path/to/home" );
209
210         Model model = new Model();
211
212         Properties JavaDoc modelProperties = new Properties JavaDoc();
213
214         modelProperties.setProperty( "outputDirectory", "${env.HOME}" );
215
216         model.setProperties( modelProperties );
217
218         Model out = new RegexBasedModelInterpolator( envars ).interpolate( model, context );
219
220         assertEquals( out.getProperties().getProperty( "outputDirectory" ), "/path/to/home" );
221     }
222
223     public void testEnvarExpressionThatEvaluatesToNullReturnsTheLiteralString()
224         throws Exception JavaDoc
225     {
226         Properties JavaDoc envars = new Properties JavaDoc();
227
228         Model model = new Model();
229
230         Properties JavaDoc modelProperties = new Properties JavaDoc();
231
232         modelProperties.setProperty( "outputDirectory", "${env.DOES_NOT_EXIST}" );
233
234         model.setProperties( modelProperties );
235
236         Model out = new RegexBasedModelInterpolator( envars ).interpolate( model, context );
237
238         assertEquals( out.getProperties().getProperty( "outputDirectory" ), "${env.DOES_NOT_EXIST}" );
239     }
240
241     public void testExpressionThatEvaluatesToNullReturnsTheLiteralString()
242         throws Exception JavaDoc
243     {
244         Model model = new Model();
245
246         Properties JavaDoc modelProperties = new Properties JavaDoc();
247
248         modelProperties.setProperty( "outputDirectory", "${DOES_NOT_EXIST}" );
249
250         model.setProperties( modelProperties );
251
252         Model out = new RegexBasedModelInterpolator().interpolate( model, context );
253
254         assertEquals( out.getProperties().getProperty( "outputDirectory" ), "${DOES_NOT_EXIST}" );
255     }
256 }
257
Popular Tags