diff --git a/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java b/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java index 0a1a0d9a47cd..6f88bc48f25e 100644 --- a/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java +++ b/python/testSrc/com/jetbrains/env/python/testing/CreateConfigurationTestTask.java @@ -46,12 +46,12 @@ import java.util.Optional; * * @author Ilya.Kazakevich */ -abstract class CreateConfigurationTestTask extends PyExecutionFixtureTestTask { +public abstract class CreateConfigurationTestTask extends PyExecutionFixtureTestTask { @Nullable private final String myTestRunnerName; @NotNull - private final Class myExpectedConfigurationType; + private final Class myExpectedConfigurationType; /** * @param testRunnerName test runner name (to set as default to make sure producer launched) @@ -77,39 +77,49 @@ abstract class CreateConfigurationTestTask extends P for (final PsiElement elementToRightClickOn : getPsiElementsToRightClickOn()) { - final List configurationsFromContext = - new ConfigurationContext(elementToRightClickOn).getConfigurationsFromContext(); - Assert.assertNotNull("Producers were not able to create any configuration in " + elementToRightClickOn, configurationsFromContext); - - - final Optional maybeConfig = configurationsFromContext.stream() - .filter(o -> myExpectedConfigurationType.isAssignableFrom(o.getConfiguration().getClass())) - .findFirst(); - Assert.assertTrue("No configuration of expected type created", maybeConfig.isPresent()); - RunnerAndConfigurationSettings runnerAndConfigurationSettings = maybeConfig.get().getConfigurationSettings(); - - - Assert.assertNotNull("Producers were not able to create any configuration in " + elementToRightClickOn, runnerAndConfigurationSettings); - final RunConfiguration configuration = runnerAndConfigurationSettings.getConfiguration(); - Assert.assertNotNull("No real configuration created", configuration); - Assert.assertThat("No name for configuration", configuration.getName(), Matchers.not(Matchers.isEmptyOrNullString())); - Assert.assertThat("Bad configuration type in " + elementToRightClickOn, configuration, - Matchers.is(Matchers.instanceOf(myExpectedConfigurationType))); - - RunManager.getInstance(getProject()).addConfiguration(runnerAndConfigurationSettings, false); - @SuppressWarnings("unchecked") // Checked one line above - final T typedConfiguration = (T)configuration; + final T typedConfiguration = createConfigurationByElement(elementToRightClickOn, myExpectedConfigurationType); checkConfiguration(typedConfiguration, elementToRightClickOn); } }), ModalityState.NON_MODAL); } + /** + * Emulates right click and create configurwation + */ + @NotNull + public static T createConfigurationByElement(@NotNull final PsiElement elementToRightClickOn, + @NotNull Class expectedConfigurationType) { + final List configurationsFromContext = + new ConfigurationContext(elementToRightClickOn).getConfigurationsFromContext(); + Assert.assertNotNull("Producers were not able to create any configuration in " + elementToRightClickOn, configurationsFromContext); + + + final Optional maybeConfig = configurationsFromContext.stream() + .filter(o -> expectedConfigurationType.isAssignableFrom(o.getConfiguration().getClass())) + .findFirst(); + Assert.assertTrue("No configuration of expected type created", maybeConfig.isPresent()); + RunnerAndConfigurationSettings runnerAndConfigurationSettings = maybeConfig.get().getConfigurationSettings(); + + + Assert.assertNotNull("Producers were not able to create any configuration in " + elementToRightClickOn, runnerAndConfigurationSettings); + final RunConfiguration configuration = runnerAndConfigurationSettings.getConfiguration(); + Assert.assertNotNull("No real configuration created", configuration); + Assert.assertThat("No name for configuration", configuration.getName(), Matchers.not(Matchers.isEmptyOrNullString())); + Assert.assertThat("Bad configuration type in " + elementToRightClickOn, configuration, + Matchers.is(Matchers.instanceOf(expectedConfigurationType))); + + RunManager.getInstance(elementToRightClickOn.getProject()).addConfiguration(runnerAndConfigurationSettings, false); + + @SuppressWarnings("unchecked") // Checked one line above + final T typedConfiguration = (T)configuration; + return typedConfiguration; + } + @NotNull protected abstract List getPsiElementsToRightClickOn(); - protected void checkConfiguration(@NotNull final T configuration, @NotNull final PsiElement elementToRightClickOn) { // Configuration already checked when created, but you can do specific checks here }