1 package org.apache.maven.project.interpolation; 2 3 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 ; 28 import java.util.Collections ; 29 import java.util.Map ; 30 import java.util.Properties ; 31 32 36 public class RegexBasedModelInterpolatorTest 37 extends TestCase 38 { 39 private Map context; 40 41 protected void setUp() 42 throws Exception 43 { 44 super.setUp(); 45 46 context = Collections.singletonMap( "basedir", "myBasedir" ); 47 } 48 49 public void testShouldNotThrowExceptionOnReferenceToNonExistentValue() 50 throws IOException , 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 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 , 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 105 { 106 String 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 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 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 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 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 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 205 { 206 Properties envars = new Properties (); 207 208 envars.setProperty( "HOME", "/path/to/home" ); 209 210 Model model = new Model(); 211 212 Properties modelProperties = new Properties (); 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 225 { 226 Properties envars = new Properties (); 227 228 Model model = new Model(); 229 230 Properties modelProperties = new Properties (); 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 243 { 244 Model model = new Model(); 245 246 Properties modelProperties = new Properties (); 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 |