blob: 02e9f5ba172e1fb9f510b5d224279ac1dd322093 [file] [log] [blame]
package org.apache.maven.it;
import java.io.BufferedWriter;
/*
* 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.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.codehaus.plexus.util.StringUtils;
/**
* This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-5937">MNG-5937</a>.
*
*/
public class MavenITmng5937MavenWrapper
extends AbstractMavenIntegrationTestCase
{
private Path wrapperDistro;
private final Map<String,String> envVars;
private final Path baseDir = Paths.get( "target/test-classes/mng-5937 wrapper" );
private ZipUnArchiver zipUnArchiver = new ZipUnArchiver();
public MavenITmng5937MavenWrapper()
throws Exception
{
super( "[4.0.0-alpha-1,)" );
String localRepo = System.getProperty("maven.repo.local");
envVars = new HashMap<>( 4 );
envVars.put( "MVNW_REPOURL", Paths.get( localRepo ).toUri().toURL().toString() );
envVars.put( "MVNW_VERBOSE", "true" );
String javaHome = System.getenv( "JAVA_HOME" );
if ( javaHome != null )
{
// source needs to call the javac executable.
// if JAVA_HOME is not set, ForkedLauncher sets it to java.home, which is the JRE home
envVars.put( "JAVA_HOME", javaHome );
}
}
public void setUp()
throws Exception
{
String mavenDist = System.getProperty( "maven.distro" );
if ( StringUtils.isEmpty( mavenDist ) )
{
throw new IllegalStateException( "Missing maven.distro=${mavenDistro} parameter to test maven-wrapper: see run ITs instructions" );
}
Verifier distInstaller = newVerifier( baseDir.toAbsolutePath().toFile().toString() );
distInstaller.setSystemProperty( "file", mavenDist );
distInstaller.setSystemProperty( "groupId", "org.apache.maven" );
distInstaller.setSystemProperty( "artifactId", "apache-maven" );
distInstaller.setSystemProperty( "version", getMavenVersion().toString() );
distInstaller.setSystemProperty( "classifier", "bin" );
distInstaller.setSystemProperty( "packaging", "zip" );
distInstaller.executeGoal( "org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file" );
String distroValue = System.getProperty( "maven.wrapper.distrodir" );
if ( StringUtils.isEmpty( distroValue ) )
{
throw new IllegalStateException( "Missing maven.wrapper.distrodir=${wrapperDistroDir} parameter to test maven-wrapper: see run ITs instructions" );
}
wrapperDistro = Paths.get( distroValue );
}
public void testitMNG5937Bin()
throws Exception
{
final File testDir = baseDir.resolve( "bin" ).toFile();
unpack( testDir.toPath(), "bin" );
envVars.put( "MAVEN_BASEDIR", testDir.getAbsolutePath() );
Verifier verifier = newVerifier( testDir.getAbsolutePath() );
verifier.setAutoclean( false );
verifier.setDebug( true );
verifier.executeGoal( "validate", envVars );
verifier.verifyErrorFreeLog();
verifier.resetStreams();
}
public void testitMNG5937Script()
throws Exception
{
final File testDir = baseDir.resolve( "script" ).toFile();
unpack( testDir.toPath(), "script" );
envVars.put( "MAVEN_BASEDIR", testDir.getAbsolutePath() );
Verifier verifier = newVerifier( testDir.getAbsolutePath() );
verifier.setAutoclean( false );
verifier.setDebug( true );
verifier.executeGoal( "validate", envVars );
verifier.verifyErrorFreeLog();
verifier.resetStreams();
}
public void testitMNG5937Source()
throws Exception
{
final File testDir = baseDir.resolve( "source" ).toFile();
unpack( testDir.toPath(), "source" );
envVars.put( "MAVEN_BASEDIR", testDir.getAbsolutePath() );
Verifier verifier = newVerifier( testDir.getAbsolutePath() );
verifier.setAutoclean( false );
verifier.setDebug( true );
verifier.executeGoal( "validate", envVars );
verifier.verifyErrorFreeLog();
verifier.resetStreams();
}
public void testitMNG5937WrapperProperties()
throws Exception
{
final File testDir = baseDir.resolve( "properties" ).toFile();
unpack( testDir.toPath(), "bin" );
Path p = baseDir.resolve( "properties/.mvn/wrapper/maven-wrapper.properties" );
try ( BufferedWriter out = Files.newBufferedWriter( p, StandardOpenOption.TRUNCATE_EXISTING ) )
{
String localRepo = System.getProperty("maven.repo.local");
out.append( "distributionUrl = " + Paths.get( localRepo ).toUri().toURL().toString() )
.append( "org/apache/maven/apache-maven/")
.append( getMavenVersion().toString() )
.append( "/apache-maven-")
.append( getMavenVersion().toString() )
.append( "-bin.zip" );
}
envVars.remove( "MVNW_REPOURL" );
envVars.put( "MAVEN_BASEDIR", testDir.getAbsolutePath() );
Verifier verifier = newVerifier( testDir.getAbsolutePath() );
verifier.setAutoclean( false );
verifier.setDebug( true );
verifier.executeGoal( "validate", envVars );
verifier.verifyErrorFreeLog();
verifier.resetStreams();
}
private void unpack( Path target, String classifier ) throws IOException
{
Path distro = wrapperDistro.resolve( "apache-maven-wrapper-" + getMavenVersion() + '-' + classifier + ".zip" );
zipUnArchiver.setSourceFile( distro.toFile() );
zipUnArchiver.setDestDirectory( target.toFile() );
zipUnArchiver.enableLogging( new ConsoleLogger() );
zipUnArchiver.extract();
}
}