| /* |
| * 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_COUNT, "2"); |
| System.setProperty(GRADLE_DAEMON_COMMAND_LINE_OPTION_PREFIX + 0, "--stacktrace"); |
| System.setProperty(GRADLE_DAEMON_COMMAND_LINE_OPTION_PREFIX + 1, "--offline"); |
| |
| System.setProperty(GRADLE_DAEMON_JVM_OPTION_COUNT, "2"); |
| |
| 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); |
| |
| System.setProperty(HTTP_PROXY_PROPERTY_COUNT, "4"); |
| |
| 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(MODULES_TO_BUILD_PROPERTY_COUNT, "2"); |
| System.setProperty(MODULES_TO_BUILD_PROPERTY_PREFIX + 0, "main"); |
| System.setProperty(MODULES_TO_BUILD_PROPERTY_PREFIX + 1, "lib"); |
| |
| 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.getModulesToBuildNames(); |
| assertEquals(2, modulesToBuildNames.size()); |
| assertTrue(modulesToBuildNames.contains("main")); |
| assertTrue(modulesToBuildNames.contains("lib")); |
| |
| 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(); |
| } |
| } |