mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-22376: New test runners: Filter out DocTest configurations
* When RunConfigurationProducer finds config with id "test" it provides it to new configuration producer to check. But it could be doctest configuration and it leads to classcast
This commit is contained in:
@@ -205,7 +205,7 @@ public abstract class RunConfigurationProducer<T extends RunConfiguration> {
|
||||
@Nullable
|
||||
public RunnerAndConfigurationSettings findExistingConfiguration(ConfigurationContext context) {
|
||||
final RunManager runManager = RunManager.getInstance(context.getProject());
|
||||
final List<RunnerAndConfigurationSettings> configurations = runManager.getConfigurationSettingsList(myConfigurationFactory.getType());
|
||||
final List<RunnerAndConfigurationSettings> configurations = getConfigurationSettingsList(runManager);
|
||||
for (RunnerAndConfigurationSettings configurationSettings : configurations) {
|
||||
if (isConfigurationFromContext((T) configurationSettings.getConfiguration(), context)) {
|
||||
return configurationSettings;
|
||||
@@ -214,6 +214,14 @@ public abstract class RunConfigurationProducer<T extends RunConfiguration> {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list of configurations that may match this producer
|
||||
*/
|
||||
@NotNull
|
||||
protected List<RunnerAndConfigurationSettings> getConfigurationSettingsList(@NotNull RunManager runManager) {
|
||||
return runManager.getConfigurationSettingsList(myConfigurationFactory.getType());
|
||||
}
|
||||
|
||||
protected RunnerAndConfigurationSettings cloneTemplateConfiguration(@NotNull final ConfigurationContext context) {
|
||||
return cloneTemplateConfigurationStatic(context, myConfigurationFactory);
|
||||
}
|
||||
|
||||
@@ -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<PyUniver
|
||||
return true
|
||||
}
|
||||
|
||||
override fun getConfigurationSettingsList(runManager: RunManager): List<RunnerAndConfigurationSettings> {
|
||||
// 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.
|
||||
|
||||
Reference in New Issue
Block a user