implement coverage for gradle-based tests IDEA-148672

This commit is contained in:
Nikita Skvortsov
2017-09-05 11:41:45 +03:00
parent f474aa503d
commit 4ed40920da
6 changed files with 65 additions and 10 deletions
@@ -29,5 +29,6 @@
<orderEntry type="module" module-name="openapi" />
<orderEntry type="module" module-name="configuration-store-impl" />
<orderEntry type="module" module-name="testExtensions" scope="TEST" />
<orderEntry type="module" module-name="execution-impl" />
</component>
</module>
@@ -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<ExternalSystemRunConfiguration> getConfigurationEditor() {
SettingsEditorGroup<ExternalSystemRunConfiguration> 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;
+1
View File
@@ -82,5 +82,6 @@
<orderEntry type="library" name="Kryo" level="project" />
<orderEntry type="library" name="Ant" level="project" />
<orderEntry type="library" name="gson" level="project" />
<orderEntry type="module" module-name="coverage" />
</component>
</module>
@@ -0,0 +1,5 @@
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<javaCoverageEngineExtension implementation="org.jetbrains.plugins.gradle.execution.test.runner.GradleCoverageExtension"/>
</extensions>
</idea-plugin>
+1
View File
@@ -40,6 +40,7 @@
<depends>com.intellij.modules.lang</depends>
<depends>org.intellij.groovy</depends>
<depends optional="true" config-file="gradle-maven-integration.xml">org.jetbrains.idea.maven</depends>
<depends optional="true" config-file="gradle-coverage-integration.xml">com.intellij.modules.coverage</depends>
<resource-bundle>i18n.GradleBundle</resource-bundle>
@@ -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
}