/******************************************************************************* * * Copyright (c) 2010-2011 Sonatype, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * * * *******************************************************************************/ package org.hudsonci.maven.plugin.builder.internal; import org.hudsonci.maven.plugin.builder.internal.MavenProcessBuilder; import org.hudsonci.maven.model.config.BuildConfigurationDTO; import hudson.EnvVars; import hudson.FilePath; import hudson.util.ArgumentListBuilder; import hudson.util.ClasspathBuilder; import org.junit.Before; import org.junit.Test; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * Tests for {@link MavenProcessBuilder}. */ public class MavenProcessBuilderTest { private MavenProcessBuilder builder; @Before public void setUp() throws Exception { builder = new MavenProcessBuilder(); } @Test public void testFullyConfigured() throws Exception { builder.withWindows(false); BuildConfigurationDTO config = new BuildConfigurationDTO(); builder.withConfiguration(config); FilePath mavenHome = new FilePath(new File("maven-home")); builder.withMavenHome(mavenHome); builder.withMavenExecutable(mavenHome.child("bin/mvn")); ClasspathBuilder cp = new ClasspathBuilder(); cp.add("foo").add("bar"); builder.withExtClasspath(cp); Map<String,String> vars = new HashMap<String,String>(); builder.withBuildVariables(vars); EnvVars env = new EnvVars(); builder.withEnv(env); FilePath workingDir = new FilePath(new File("working-dir")); builder.withWorkingDirectory(workingDir); FilePath repoDir = new FilePath(new File("repo-dir")); builder.withRepository(repoDir); OutputStream output = new ByteArrayOutputStream(); builder.withStandardOutput(output); int port = 666; builder.withPort(port); System.out.println("ARGS: " + builder.buildArguments()); System.out.println("OPTS: " + builder.buildOpts()); System.out.println("ENV: " + builder.buildEnv()); } @Test public void testDetectBannedOptions() { for (String arg : MavenProcessBuilder.BANNED_OPTIONS) { ArgumentListBuilder args = new ArgumentListBuilder(); args.add(arg); assertTrue(builder.detectBannedOptions(args)); } // Happy not on the banned list ArgumentListBuilder args = new ArgumentListBuilder(); args.add("-V"); args.add("-B"); assertFalse(builder.detectBannedOptions(args)); } @Test public void testDetectBannedProperties() { for (String arg : MavenProcessBuilder.BANNED_PROPERTIES) { ArgumentListBuilder args = new ArgumentListBuilder(); args.add(arg); assertTrue(builder.detectBannedProperties(args)); } // Happy not on the banned list { ArgumentListBuilder args = new ArgumentListBuilder(); args.add("-Dfoo=bar"); assertFalse(builder.detectBannedProperties(args)); } // This is valid, though pointless { ArgumentListBuilder args = new ArgumentListBuilder(); args.add("-Dhudson.eventspy=whatever"); assertFalse(builder.detectBannedProperties(args)); } } }