diff --git a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java index 8c0a551238ee..233cc66a7189 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java +++ b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java @@ -205,7 +205,7 @@ public abstract class RunConfigurationProducer { @Nullable public RunnerAndConfigurationSettings findExistingConfiguration(ConfigurationContext context) { final RunManager runManager = RunManager.getInstance(context.getProject()); - final List configurations = runManager.getConfigurationSettingsList(myConfigurationFactory.getType()); + final List configurations = getConfigurationSettingsList(runManager); for (RunnerAndConfigurationSettings configurationSettings : configurations) { if (isConfigurationFromContext((T) configurationSettings.getConfiguration(), context)) { return configurationSettings; @@ -214,6 +214,14 @@ public abstract class RunConfigurationProducer { return null; } + /** + * @return list of configurations that may match this producer + */ + @NotNull + protected List getConfigurationSettingsList(@NotNull RunManager runManager) { + return runManager.getConfigurationSettingsList(myConfigurationFactory.getType()); + } + protected RunnerAndConfigurationSettings cloneTemplateConfiguration(@NotNull final ConfigurationContext context) { return cloneTemplateConfigurationStatic(context, myConfigurationFactory); } diff --git a/python/src/com/jetbrains/python/testing/universalTests/PyUniversalTests.kt b/python/src/com/jetbrains/python/testing/universalTests/PyUniversalTests.kt index 94a7d3030c2b..a7af9b43b4ad 100644 --- a/python/src/com/jetbrains/python/testing/universalTests/PyUniversalTests.kt +++ b/python/src/com/jetbrains/python/testing/universalTests/PyUniversalTests.kt @@ -20,6 +20,7 @@ package com.jetbrains.python.testing.universalTests import com.google.gson.Gson import com.intellij.execution.Location import com.intellij.execution.PsiLocation +import com.intellij.execution.RunManager import com.intellij.execution.RunnerAndConfigurationSettings import com.intellij.execution.actions.ConfigurationContext import com.intellij.execution.actions.ConfigurationFromContext @@ -325,6 +326,11 @@ object PyUniversalTestsConfigurationProducer : RunConfigurationProducer { + // Some configurations have same type but produces different class (doctest, for example) + // to prevent ClassCastException we only allow our configurations + return super.getConfigurationSettingsList(runManager).filter { it.configuration is PyUniversalTestConfiguration } + } /** * Find concrete element to be used as test target.