package org.apache.maven.plugins.invoker;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.io.Reader;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.maven.model.Scm;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.plugins.invoker.CompositeMap;
import org.apache.maven.plugins.invoker.InvokerMojo;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
/**
* @author Olivier Lamy
* @since 22 nov. 07
* @version $Id: InterpolationTest.java 1783819 2017-02-21 02:30:23Z schulte $
*/
public class InterpolationTest
extends AbstractMojoTestCase
{
protected MavenProjectStub buildMavenProjectStub()
{
ExtendedMavenProjectStub project = new ExtendedMavenProjectStub();
project.setVersion( "1.0-SNAPSHOT" );
project.setArtifactId( "foo" );
project.setGroupId( "bar" );
Properties properties = new Properties();
properties.put( "fooOnProject", "barOnProject" );
project.setProperties( properties );
Scm scm = new Scm();
scm.setConnection( "http://blabla" );
project.setScm( scm );
return project;
}
public void testCompositeMap()
throws Exception
{
Properties properties = new Properties();
properties.put( "foo", "bar" );
properties.put( "version", "2.0-SNAPSHOT" );
CompositeMap compositeMap = new CompositeMap( buildMavenProjectStub(), (Map) properties, false );
assertEquals( "1.0-SNAPSHOT", compositeMap.get( "pom.version" ) );
assertEquals( "bar", compositeMap.get( "foo" ) );
assertEquals( "bar", compositeMap.get( "pom.groupId" ) );
assertEquals( "http://blabla", compositeMap.get( "pom.scm.connection" ) );
assertEquals( "barOnProject", compositeMap.get( "fooOnProject" ) );
}
public void testPomInterpolation()
throws Exception
{
Reader reader = null;
File interpolatedPomFile;
try
{
InvokerMojo invokerMojo = new InvokerMojo();
setVariableValueToObject( invokerMojo, "project", buildMavenProjectStub() );
setVariableValueToObject( invokerMojo, "settings", new Settings() );
Properties properties = new Properties();
properties.put( "foo", "bar" );
properties.put( "version", "2.0-SNAPSHOT" );
setVariableValueToObject( invokerMojo, "filterProperties", properties );
String dirPath = getBasedir() + File.separatorChar + "src" + File.separatorChar + "test"
+ File.separatorChar + "resources" + File.separatorChar + "unit" + File.separatorChar + "interpolation";
interpolatedPomFile = new File( getBasedir(), "target/interpolated-pom.xml" );
invokerMojo.buildInterpolatedFile( new File( dirPath, "pom.xml" ), interpolatedPomFile );
reader = ReaderFactory.newXmlReader( interpolatedPomFile );
String content = IOUtil.toString( reader );
assertTrue( content.indexOf( "<interpolateValue>bar</interpolateValue>" ) > 0 );
reader.close();
reader = null;
// recreate it to test delete if exists before creation
invokerMojo.buildInterpolatedFile( new File( dirPath, "pom.xml" ), interpolatedPomFile );
reader = ReaderFactory.newXmlReader( interpolatedPomFile );
content = IOUtil.toString( reader );
assertTrue( content.indexOf( "<interpolateValue>bar</interpolateValue>" ) > 0 );
reader.close();
reader = null;
}
finally
{
IOUtil.close( reader );
}
}
public void testProfilesWithNoFile()
throws Exception
{
InvokerMojo invokerMojo = new InvokerMojo();
setVariableValueToObject( invokerMojo, "profiles", Arrays.asList( "zloug" ) );
setVariableValueToObject( invokerMojo, "settings", new Settings() );
String dirPath = getBasedir() + File.separatorChar + "src" + File.separatorChar + "test" + File.separatorChar
+ "resources" + File.separatorChar + "unit" + File.separatorChar + "profiles-from-file";
List<String> profiles = invokerMojo.getProfiles( new File( dirPath ) );
assertTrue( profiles.contains( "zloug" ) );
assertEquals( 1, profiles.size() );
}
}