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.util.Arrays;
import java.util.Collections;
import java.util.Properties;
import org.apache.maven.plugins.invoker.InvokerProperties;
import org.apache.maven.shared.invoker.DefaultInvocationRequest;
import org.apache.maven.shared.invoker.InvocationRequest;
import junit.framework.TestCase;
/**
* Tests the invoker properties facade.
*
* @author Benjamin Bentmann
* @version $Id: InvokerPropertiesTest.java 1779250 2017-01-17 20:20:02Z rfscholte $
*/
public class InvokerPropertiesTest
extends TestCase
{
public void testConstructorNullSafe()
throws Exception
{
InvokerProperties facade = new InvokerProperties( null );
assertNotNull( facade.getProperties() );
}
public void testGetInvokerProperty()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
assertNull( facade.get( "undefined-key", 0 ) );
props.setProperty( "key", "value" );
assertEquals( "value", facade.get( "key", 1 ) );
props.setProperty( "key.1", "another-value" );
assertEquals( "another-value", facade.get( "key", 1 ) );
assertEquals( "value", facade.get( "key", 2 ) );
}
public void testGetJobName()
throws Exception
{
Properties props = new Properties();
final String jobName = "Build Job name";
props.put( "invoker.name", jobName );
InvokerProperties facade = new InvokerProperties( props );
assertEquals( jobName, facade.getJobName() );
}
public void testIsExpectedResult()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
assertTrue( facade.isExpectedResult( 0, 0 ) );
assertFalse( facade.isExpectedResult( 1, 0 ) );
props.setProperty( "invoker.buildResult", "success" );
assertTrue( facade.isExpectedResult( 0, 0 ) );
assertFalse( facade.isExpectedResult( 1, 0 ) );
props.setProperty( "invoker.buildResult", "failure" );
assertFalse( facade.isExpectedResult( 0, 0 ) );
assertTrue( facade.isExpectedResult( 1, 0 ) );
}
public void testConfigureRequestGoals()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
request.setGoals( Collections.singletonList( "test" ) );
facade.configureInvocation( request, 0 );
assertEquals( Collections.singletonList( "test" ), request.getGoals() );
props.setProperty( "invoker.goals", "verify" );
facade.configureInvocation( request, 0 );
assertEquals( Collections.singletonList( "verify" ), request.getGoals() );
props.setProperty( "invoker.goals", " " );
facade.configureInvocation( request, 0 );
assertEquals( Arrays.asList( new String[0] ), request.getGoals() );
props.setProperty( "invoker.goals", " clean , test verify " );
facade.configureInvocation( request, 0 );
assertEquals( Arrays.asList( new String[] { "clean", "test", "verify" } ), request.getGoals() );
props.setProperty( "invoker.goals", "" );
facade.configureInvocation( request, 0 );
assertEquals( Arrays.asList( new String[0] ), request.getGoals() );
}
public void testConfigureRequestProfiles()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
request.setProfiles( Collections.singletonList( "test" ) );
facade.configureInvocation( request, 0 );
assertEquals( Collections.singletonList( "test" ), request.getProfiles() );
props.setProperty( "invoker.profiles", "verify" );
facade.configureInvocation( request, 0 );
assertEquals( Collections.singletonList( "verify" ), request.getProfiles() );
props.setProperty( "invoker.profiles", " " );
facade.configureInvocation( request, 0 );
assertEquals( Arrays.asList( new String[0] ), request.getProfiles() );
props.setProperty( "invoker.profiles", " clean , test verify ," );
facade.configureInvocation( request, 0 );
assertEquals( Arrays.asList( new String[] { "clean", "test", "verify" } ), request.getProfiles() );
props.setProperty( "invoker.profiles", "" );
facade.configureInvocation( request, 0 );
assertEquals( Arrays.asList( new String[0] ), request.getProfiles() );
}
public void testConfigureRequestProject()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
File tempPom = File.createTempFile( "maven-invoker-plugin-test", ".pom" );
File tempDir = tempPom.getParentFile();
request.setBaseDirectory( tempDir );
facade.configureInvocation( request, 0 );
assertEquals( tempDir, request.getBaseDirectory() );
assertEquals( null, request.getPomFile() );
props.setProperty( "invoker.project", tempPom.getName() );
request.setBaseDirectory( tempDir );
facade.configureInvocation( request, 0 );
assertEquals( tempDir, request.getBaseDirectory() );
assertEquals( tempPom, request.getPomFile() );
props.setProperty( "invoker.project", "" );
request.setBaseDirectory( tempDir );
facade.configureInvocation( request, 0 );
assertEquals( tempDir, request.getBaseDirectory() );
assertEquals( null, request.getPomFile() );
tempPom.delete();
}
public void testConfigureRequestMavenOpts()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
request.setMavenOpts( "default" );
facade.configureInvocation( request, 0 );
assertEquals( "default", request.getMavenOpts() );
props.setProperty( "invoker.mavenOpts", "-Xmx512m" );
facade.configureInvocation( request, 0 );
assertEquals( "-Xmx512m", request.getMavenOpts() );
}
public void testConfigureRequestFailureBehavior()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
request.setReactorFailureBehavior( InvocationRequest.ReactorFailureBehavior.FailAtEnd );
facade.configureInvocation( request, 0 );
assertEquals( InvocationRequest.ReactorFailureBehavior.FailAtEnd, request.getReactorFailureBehavior() );
props.setProperty( "invoker.failureBehavior", InvocationRequest.ReactorFailureBehavior.FailNever.getLongOption() );
facade.configureInvocation( request, 0 );
assertEquals( "fail-never", request.getReactorFailureBehavior().getLongOption() );
}
public void testConfigureRequestRecursion()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
request.setRecursive( true );
facade.configureInvocation( request, 0 );
assertTrue( request.isRecursive() );
request.setRecursive( false );
facade.configureInvocation( request, 0 );
assertFalse( request.isRecursive() );
props.setProperty( "invoker.nonRecursive", "true" );
facade.configureInvocation( request, 0 );
assertFalse( request.isRecursive() );
props.setProperty( "invoker.nonRecursive", "false" );
facade.configureInvocation( request, 0 );
assertTrue( request.isRecursive() );
}
public void testConfigureRequestOffline()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
InvocationRequest request = new DefaultInvocationRequest();
request.setOffline( true );
facade.configureInvocation( request, 0 );
assertTrue( request.isOffline() );
request.setOffline( false );
facade.configureInvocation( request, 0 );
assertFalse( request.isOffline() );
props.setProperty( "invoker.offline", "true" );
facade.configureInvocation( request, 0 );
assertTrue( request.isOffline() );
props.setProperty( "invoker.offline", "false" );
facade.configureInvocation( request, 0 );
assertFalse( request.isOffline() );
}
public void testIsInvocationDefined()
throws Exception
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
assertFalse( facade.isInvocationDefined( 1 ) );
props.setProperty( "invoker.goals", "install" );
assertFalse( facade.isInvocationDefined( 1 ) );
props.setProperty( "invoker.goals.2", "install" );
assertFalse( facade.isInvocationDefined( 1 ) );
assertTrue( facade.isInvocationDefined( 2 ) );
assertFalse( facade.isInvocationDefined( 3 ) );
}
public void testIsSelectedDefined()
{
Properties props = new Properties();
InvokerProperties facade = new InvokerProperties( props );
assertFalse( facade.isSelectorDefined( 1 ) );
props.setProperty( "invoker.java.version", "1.6+" );
props.setProperty( "invoker.maven.version", "3.0+" );
props.setProperty( "invoker.os.family", "windows" );
assertFalse( facade.isSelectorDefined( 1 ) );
props.setProperty( "selector.2.java.version", "1.6+" );
props.setProperty( "selector.3.maven.version", "3.0+" );
props.setProperty( "selector.4.os.family", "windows" );
assertFalse( facade.isSelectorDefined( 1 ) );
assertTrue( facade.isSelectorDefined( 2 ) );
assertTrue( facade.isSelectorDefined( 3 ) );
assertTrue( facade.isSelectorDefined( 4 ) );
assertFalse( facade.isSelectorDefined( 5 ) );
}
}