blob: 067bec642af67201242f45ab2db36aa04c2f03fa [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed 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.
*/
package com.android.tools.idea.jps.builder;
import com.android.annotations.Nullable;
import com.google.common.io.Files;
import com.intellij.openapi.util.io.FileUtil;
import junit.framework.TestCase;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.List;
import static com.android.tools.idea.gradle.compiler.BuildProcessJvmArgs.*;
/**
* Tests for {@link BuilderExecutionSettings}.
*/
public class BuilderExecutionSettingsTest extends TestCase {
private File myGradleHomeDir;
private File myGradleServiceDir;
private File myJavaHomeDir;
private File myProjectDir;
@Override
protected void setUp() throws Exception {
super.setUp();
File tempDir = Files.createTempDir();
myGradleHomeDir = createDirectory(tempDir, "gradle-1.6");
myGradleServiceDir = createDirectory(tempDir, "gradle");
myJavaHomeDir = createDirectory(tempDir, "java");
myProjectDir = createDirectory(tempDir, "project1");
}
@NotNull
private static File createDirectory(@NotNull File parent, @NotNull String name) {
File dir = new File(parent, name);
FileUtil.createDirectory(dir);
return dir;
}
@Override
protected void tearDown() throws Exception {
delete(myGradleHomeDir);
delete(myGradleServiceDir);
delete(myJavaHomeDir);
delete(myProjectDir);
super.tearDown();
}
private static void delete(@Nullable File dir) {
if (dir != null) {
//noinspection ResultOfMethodCallIgnored
dir.delete();
}
}
public void testConstructorWithValidJvmArgs() {
String gradleHomeDirPath = myGradleHomeDir.getPath();
System.setProperty(GRADLE_HOME_DIR_PATH, gradleHomeDirPath);
String gradleHomeServicePath = myGradleServiceDir.getPath();
System.setProperty(GRADLE_SERVICE_DIR_PATH, gradleHomeServicePath);
String javaHomePath = myJavaHomeDir.getPath();
System.setProperty(GRADLE_JAVA_HOME_DIR_PATH, javaHomePath);
String projectDirPath = myProjectDir.getPath();
System.setProperty(PROJECT_DIR_PATH, projectDirPath);
System.setProperty(USE_EMBEDDED_GRADLE_DAEMON, "true");
System.setProperty(USE_GRADLE_VERBOSE_LOGGING, "true");
System.setProperty(GRADLE_CONFIGURATION_ON_DEMAND, "true");
System.setProperty(GRADLE_DAEMON_COMMAND_LINE_OPTION_PREFIX + 0, "--stacktrace");
System.setProperty(GRADLE_DAEMON_COMMAND_LINE_OPTION_PREFIX + 1, "--offline");
String xmx = "-Xmx2048m";
System.setProperty(GRADLE_DAEMON_JVM_OPTION_PREFIX + 0, xmx);
String maxPermSize = "-XX:MaxPermSize=512m";
System.setProperty(GRADLE_DAEMON_JVM_OPTION_PREFIX + 1, maxPermSize);
String httpProxyHost = "proxy.android.com";
System.setProperty(HTTP_PROXY_PROPERTY_PREFIX + 0, "http.proxyHost:" + httpProxyHost);
String httpProxyPort = "8080";
System.setProperty(HTTP_PROXY_PROPERTY_PREFIX + 1, "http.proxyPort:" + httpProxyPort);
// Add some garbage to test that parsing HTTP proxy properties is correct.
System.setProperty(HTTP_PROXY_PROPERTY_PREFIX + 2, "randomText");
System.setProperty(HTTP_PROXY_PROPERTY_PREFIX + 3, "randomText:");
System.setProperty(GRADLE_TASKS_TO_INVOKE_PROPERTY_PREFIX + 0, ":main:assemble");
System.setProperty(GRADLE_TASKS_TO_INVOKE_PROPERTY_PREFIX + 1, ":lib:assemble");
BuilderExecutionSettings settings = new BuilderExecutionSettings();
assertEquals(gradleHomeDirPath, pathOf(settings.getGradleHomeDir()));
assertEquals(gradleHomeServicePath, pathOf(settings.getGradleServiceDir()));
assertEquals(javaHomePath, pathOf(settings.getJavaHomeDir()));
assertEquals(projectDirPath, settings.getProjectDir().getPath());
assertTrue(settings.isEmbeddedModeEnabled());
assertTrue(settings.isVerboseLoggingEnabled());
assertTrue(settings.isConfigureOnDemand());
List<String> vmOptions = settings.getJvmOptions();
assertEquals(4, vmOptions.size());
assertTrue(vmOptions.contains(xmx));
assertTrue(vmOptions.contains(maxPermSize));
assertTrue(vmOptions.contains("-Dhttp.proxyHost=" + httpProxyHost));
assertTrue(vmOptions.contains("-Dhttp.proxyPort=" + httpProxyPort));
List<String> modulesToBuildNames = settings.getGradleTasksToInvoke();
assertEquals(2, modulesToBuildNames.size());
assertTrue(modulesToBuildNames.contains(":main:assemble"));
assertTrue(modulesToBuildNames.contains(":lib:assemble"));
List<String> commandLineOptions = settings.getCommandLineOptions();
assertEquals(2, commandLineOptions.size());
assertTrue(commandLineOptions.contains("--stacktrace"));
assertTrue(commandLineOptions.contains("--offline"));
}
private static String pathOf(@Nullable File dir) {
assertNotNull(dir);
return dir.getPath();
}
}