diff --git a/platform/external-system-impl/external-system-impl.iml b/platform/external-system-impl/external-system-impl.iml index 8cc8016672a4..c31b307dccd1 100644 --- a/platform/external-system-impl/external-system-impl.iml +++ b/platform/external-system-impl/external-system-impl.iml @@ -29,5 +29,6 @@ + \ No newline at end of file diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java index 6e63085272f5..61cdd23ddd1c 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java @@ -47,6 +47,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.FoldRegion; import com.intellij.openapi.editor.FoldingModel; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.externalSystem.ExternalSystemManager; import com.intellij.openapi.externalSystem.execution.ExternalSystemExecutionConsoleManager; import com.intellij.openapi.externalSystem.model.ProjectSystemId; @@ -125,6 +126,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i if (e != null) { mySettings = XmlSerializer.deserialize(e, ExternalSystemTaskExecutionSettings.class); } + JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element); } @Override @@ -144,6 +146,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i } } })); + JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element); } @NotNull @@ -156,6 +159,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i public SettingsEditor getConfigurationEditor() { SettingsEditorGroup group = new SettingsEditorGroup<>(); group.addEditor(ExecutionBundle.message("run.configuration.configuration.tab.title"), new ExternalSystemRunConfigurationEditor(getProject(), mySettings.getExternalSystemId())); + JavaRunConfigurationExtensionManager.getInstance().appendEditors(this, group); group.addEditor(ExecutionBundle.message("logs.tab.title"), new LogConfigurationPanel<>()); return group; } @@ -234,20 +238,29 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i if (mySettings.getTaskNames().isEmpty()) { throw new ExecutionException(ExternalSystemBundle.message("run.error.undefined.task")); } - String jvmAgentSetup = null; + + final JavaParameters extensionsJP = new JavaParameters(); + final RunConfigurationExtension[] extensions = Extensions.getExtensions(RunConfigurationExtension.EP_NAME); + for (RunConfigurationExtension ext : extensions) { + ext.updateJavaParameters(myConfiguration, extensionsJP, myEnv.getRunnerSettings()); + } + + String jvmAgentSetup; if (myDebugPort > 0) { jvmAgentSetup = "-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=" + myDebugPort; } else { - ParametersList parametersList = myEnv.getUserData(ExternalSystemTaskExecutionSettings.JVM_AGENT_SETUP_KEY); - if (parametersList != null) { - for (String parameter : parametersList.getList()) { - if (parameter.startsWith("-agentlib:")) continue; - if (parameter.startsWith("-agentpath:")) continue; - if (parameter.startsWith("-javaagent:")) continue; - throw new ExecutionException(ExternalSystemBundle.message("run.invalid.jvm.agent.configuration", parameter)); - } - jvmAgentSetup = parametersList.getParametersString(); + ParametersList parametersList = extensionsJP.getVMParametersList(); + final ParametersList data = myEnv.getUserData(ExternalSystemTaskExecutionSettings.JVM_AGENT_SETUP_KEY); + if (data != null) { + parametersList.addAll(data.getList()); } + for (String parameter : parametersList.getList()) { + if (parameter.startsWith("-agentlib:")) continue; + if (parameter.startsWith("-agentpath:")) continue; + if (parameter.startsWith("-javaagent:")) continue; + throw new ExecutionException(ExternalSystemBundle.message("run.invalid.jvm.agent.configuration", parameter)); + } + jvmAgentSetup = parametersList.getParametersString(); } ApplicationManager.getApplication().assertIsDispatchThread(); @@ -275,6 +288,9 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i : AbstractExternalSystemTaskConfigurationType.generateName( myProject, mySettings.getExternalSystemId(), mySettings.getExternalProjectPath(), mySettings.getTaskNames(), mySettings.getExecutionName(), ": ", ""); + + JavaRunConfigurationExtensionManager.getInstance().attachExtensionsToProcess(myConfiguration, processHandler, myEnv.getRunnerSettings()); + ApplicationManager.getApplication().executeOnPooledThread(() -> { final String startDateTime = DateFormatUtil.formatTimeWithSeconds(System.currentTimeMillis()); final String greeting; diff --git a/plugins/gradle/gradle.iml b/plugins/gradle/gradle.iml index 5219ab2f8e56..c5cd5cc3f55b 100644 --- a/plugins/gradle/gradle.iml +++ b/plugins/gradle/gradle.iml @@ -82,5 +82,6 @@ + \ No newline at end of file diff --git a/plugins/gradle/src/META-INF/gradle-coverage-integration.xml b/plugins/gradle/src/META-INF/gradle-coverage-integration.xml new file mode 100644 index 000000000000..d019eb562504 --- /dev/null +++ b/plugins/gradle/src/META-INF/gradle-coverage-integration.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/plugins/gradle/src/META-INF/plugin.xml b/plugins/gradle/src/META-INF/plugin.xml index 88d488cf9717..654cc4923ec6 100644 --- a/plugins/gradle/src/META-INF/plugin.xml +++ b/plugins/gradle/src/META-INF/plugin.xml @@ -40,6 +40,7 @@ com.intellij.modules.lang org.intellij.groovy org.jetbrains.idea.maven + com.intellij.modules.coverage i18n.GradleBundle diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleCoverageExtension.kt b/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleCoverageExtension.kt new file mode 100644 index 000000000000..b1d87e700425 --- /dev/null +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleCoverageExtension.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2000-2017 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 org.jetbrains.plugins.gradle.execution.test.runner + +import com.intellij.coverage.JavaCoverageEngineExtension +import com.intellij.execution.configurations.RunConfigurationBase +import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration +import org.jetbrains.plugins.gradle.util.GradleConstants + +/** + * Created by Nikita.Skvortsov + * date: 23.08.2017. + */ + +class GradleCoverageExtension: JavaCoverageEngineExtension() { + override fun isApplicableTo(conf: RunConfigurationBase?): Boolean = + conf is ExternalSystemRunConfiguration && GradleConstants.SYSTEM_ID == conf.settings.externalSystemId +} \ No newline at end of file