/* * Copyright (c) 2010 Red Hat, Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see * <http://www.gnu.org/licenses>. */ package com.redhat.rcm.version.mgr.mod; import static com.redhat.rcm.version.mgr.mod.Interpolations.ARTIFACT_ID; import static com.redhat.rcm.version.mgr.mod.Interpolations.GROUP_ID; import static com.redhat.rcm.version.mgr.mod.Interpolations.PROPERTIES; import static com.redhat.rcm.version.mgr.mod.Interpolations.VERSION; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import java.util.Properties; import org.apache.maven.mae.project.ProjectToolsException; import org.apache.maven.model.Model; import org.junit.Test; import com.redhat.rcm.version.model.Project; public class InterpolationsTest { @Test public void avoidPropertyValueRecursion() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Properties p = new Properties(); p.setProperty( "foo", "${foo}" ); model.setProperties( p ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${foo}" ); src = PROPERTIES.interpolate( src, project ); assertThat( src.toString(), equalTo( "${foo}" ) ); } @Test public void resolveProperty_WholeValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Properties p = new Properties(); p.setProperty( "foo", "bar" ); model.setProperties( p ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${foo}" ); src = PROPERTIES.interpolate( src, project ); assertThat( src.toString(), equalTo( "bar" ) ); } @Test public void resolveProperty_FirstPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Properties p = new Properties(); p.setProperty( "foo", "bar" ); model.setProperties( p ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${foo}-bar" ); src = PROPERTIES.interpolate( src, project ); assertThat( src.toString(), equalTo( "bar-bar" ) ); } @Test public void resolveProperty_LastPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Properties p = new Properties(); p.setProperty( "foo", "bar" ); model.setProperties( p ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "baz-${foo}" ); src = PROPERTIES.interpolate( src, project ); assertThat( src.toString(), equalTo( "baz-bar" ) ); } @Test public void resolveProperty_MiddlePartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Properties p = new Properties(); p.setProperty( "foo", "bar" ); model.setProperties( p ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "a-${foo}-c" ); src = PROPERTIES.interpolate( src, project ); assertThat( src.toString(), equalTo( "a-bar-c" ) ); } @Test public void resolveGroupId_WholeValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${project.groupId}" ); src = GROUP_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "org.test" ) ); } @Test public void resolveGroupId_FirstPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${project.groupId}.test" ); src = GROUP_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "org.test.test" ) ); } @Test public void resolveGroupId_LastPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "test.${project.groupId}" ); src = GROUP_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "test.org.test" ) ); } @Test public void resolveGroupId_MiddlePartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "test.${project.groupId}.test" ); src = GROUP_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "test.org.test.test" ) ); } @Test public void resolveArtifactId_WholeValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${project.artifactId}" ); src = ARTIFACT_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "test-project" ) ); } @Test public void resolveArtifactId_FirstPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${project.artifactId}.test" ); src = ARTIFACT_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "test-project.test" ) ); } @Test public void resolveArtifactId_LastPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "test.${project.artifactId}" ); src = ARTIFACT_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "test.test-project" ) ); } @Test public void resolveArtifactId_MiddlePartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "test.${project.artifactId}.test" ); src = ARTIFACT_ID.interpolate( src, project ); assertThat( src.toString(), equalTo( "test.test-project.test" ) ); } @Test public void resolveVersion_WholeValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${project.version}" ); src = VERSION.interpolate( src, project ); assertThat( src.toString(), equalTo( "1.0.2" ) ); } @Test public void resolveVersion_FirstPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "${project.version}.test" ); src = VERSION.interpolate( src, project ); assertThat( src.toString(), equalTo( "1.0.2.test" ) ); } @Test public void resolveVersion_LastPartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "test.${project.version}" ); src = VERSION.interpolate( src, project ); assertThat( src.toString(), equalTo( "test.1.0.2" ) ); } @Test public void resolveVersion_MiddlePartOfLargerValue() throws ProjectToolsException { Model model = new Model(); model.setGroupId( "org.test" ); model.setArtifactId( "test-project" ); model.setVersion( "1.0.2" ); Project project = new Project( model ); StringBuilder src = new StringBuilder( "test.${project.version}.test" ); src = VERSION.interpolate( src, project ); assertThat( src.toString(), equalTo( "test.1.0.2.test" ) ); } }