LazyRunConfigurationProducer — python

This commit is contained in:
Vladimir Krivosheev
2018-12-13 16:50:38 +01:00
parent dbecfeab36
commit ab06924f57
10 changed files with 58 additions and 61 deletions
@@ -4,7 +4,8 @@ package com.jetbrains.python.run;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.actions.ConfigurationFromContext;
import com.intellij.execution.actions.RunConfigurationProducer;
import com.intellij.execution.actions.LazyRunConfigurationProducer;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.util.Ref;
@@ -23,10 +24,11 @@ import java.io.File;
/**
* @author yole
*/
public class PythonRunConfigurationProducer extends RunConfigurationProducer<PythonRunConfiguration> {
public PythonRunConfigurationProducer() {
super(PythonConfigurationType.getInstance().getFactory());
public final class PythonRunConfigurationProducer extends LazyRunConfigurationProducer<PythonRunConfiguration> {
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return PythonConfigurationType.getInstance().getFactory();
}
@Override
@@ -7,14 +7,18 @@ import com.intellij.execution.actions.ConfigurationContext
import com.intellij.execution.actions.ConfigurationFromContext
import com.intellij.execution.actions.RunConfigurationProducer
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.execution.configurations.ConfigurationType
/**
* Parent of all test configuration producers
*/
abstract class AbstractPythonTestConfigurationProducer<T : AbstractPythonTestRunConfiguration<*>> : RunConfigurationProducer<T> {
constructor() : super(true)
/**
* @deprecated Override [getConfigurationFactory].
*/
@Deprecated("Override getConfigurationFactory")
constructor(configurationFactory: ConfigurationFactory) : super(configurationFactory)
constructor(configurationType: ConfigurationType) : super(configurationType)
/**
* Configuration type this producer accepts/creates
@@ -655,8 +655,8 @@ abstract class PyAbstractTestFactory<out CONF_T : PyAbstractTestConfiguration> :
/**
* Only one producer is registered with EP, but it uses factory configured by user to produce different configs
*/
object PyTestsConfigurationProducer : AbstractPythonTestConfigurationProducer<PyAbstractTestConfiguration>(
PythonTestConfigurationType.getInstance()) {
object PyTestsConfigurationProducer : AbstractPythonTestConfigurationProducer<PyAbstractTestConfiguration>() {
override fun getConfigurationFactory() = PythonTestConfigurationType.getInstance().configurationFactories[0]
override val configurationClass: Class<PyAbstractTestConfiguration> = PyAbstractTestConfiguration::class.java
@@ -47,6 +47,7 @@ public final class PythonTestConfigurationType extends ConfigurationTypeBase {
return super.getConfigurationFactories();
});
@NotNull
public static PythonTestConfigurationType getInstance() {
return ConfigurationTypeUtil.findConfigurationType(PythonTestConfigurationType.class);
}
@@ -1,18 +1,4 @@
/*
* Copyright 2000-2014 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.
*/
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.python.testing;
import com.google.common.collect.Sets;
@@ -51,10 +37,16 @@ import java.util.stream.Collectors;
abstract public class PythonTestLegacyConfigurationProducer<T extends AbstractPythonLegacyTestRunConfiguration<T>>
extends AbstractPythonTestConfigurationProducer<AbstractPythonLegacyTestRunConfiguration<T>> {
protected PythonTestLegacyConfigurationProducer(final ConfigurationFactory configurationFactory) {
/**
* @deprecated Override {@link #getConfigurationFactory}
*/
@Deprecated
protected PythonTestLegacyConfigurationProducer(ConfigurationFactory configurationFactory) {
super(configurationFactory);
}
protected PythonTestLegacyConfigurationProducer() {
}
@NotNull
@Override
@@ -4,6 +4,7 @@ package com.jetbrains.python.testing.doctest;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationFromContext;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
@@ -23,10 +24,11 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
public class PythonDocTestConfigurationProducer extends PythonTestLegacyConfigurationProducer {
public PythonDocTestConfigurationProducer() {
super(PythonTestConfigurationType.getInstance().PY_DOCTEST_FACTORY);
public final class PythonDocTestConfigurationProducer extends PythonTestLegacyConfigurationProducer {
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return PythonTestConfigurationType.getInstance().PY_DOCTEST_FACTORY;
}
@Override
@@ -2,6 +2,7 @@
package com.jetbrains.python.testing.nosetestLegacy;
import com.intellij.execution.Location;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.projectRoots.Sdk;
@@ -14,10 +15,11 @@ import com.jetbrains.python.testing.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class PythonNoseTestConfigurationProducer extends
PythonTestLegacyConfigurationProducer {
public PythonNoseTestConfigurationProducer() {
super(PythonTestConfigurationType.getInstance().LEGACY_NOSETEST_FACTORY);
public final class PythonNoseTestConfigurationProducer extends PythonTestLegacyConfigurationProducer {
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return PythonTestConfigurationType.getInstance().LEGACY_NOSETEST_FACTORY;
}
@Override
@@ -1,9 +1,10 @@
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.python.testing.pytestLegacy;
import com.google.common.collect.Lists;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.projectRoots.Sdk;
@@ -33,10 +34,11 @@ import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.List;
public class PyTestConfigurationProducer extends PythonTestLegacyConfigurationProducer<PyTestRunConfiguration> {
public PyTestConfigurationProducer() {
super(PythonTestConfigurationType.getInstance().LEGACY_PYTEST_FACTORY);
public final class PyTestConfigurationProducer extends PythonTestLegacyConfigurationProducer<PyTestRunConfiguration> {
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return PythonTestConfigurationType.getInstance().LEGACY_PYTEST_FACTORY;
}
@Override
@@ -1,37 +1,27 @@
/*
* Copyright 2000-2015 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.
*/
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.python.testing.tox;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.actions.RunConfigurationProducer;
import com.intellij.execution.actions.LazyRunConfigurationProducer;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
/**
* @author Ilya.Kazakevich
*/
public final class PyToxConfigurationProducer extends RunConfigurationProducer<PyToxConfiguration> {
public final class PyToxConfigurationProducer extends LazyRunConfigurationProducer<PyToxConfiguration> {
private static final String TOX_FILE_NAME = "tox.ini";
public PyToxConfigurationProducer() {
super(PyToxConfigurationFactory.INSTANCE);
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return PyToxConfigurationFactory.INSTANCE;
}
@Override
@@ -1,8 +1,8 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.jetbrains.python.testing.unittestLegacy;
import com.intellij.execution.Location;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.psi.PsiElement;
@@ -18,9 +18,11 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
public class PythonUnitTestConfigurationProducer extends PythonTestLegacyConfigurationProducer {
public PythonUnitTestConfigurationProducer() {
super(PythonTestConfigurationType.getInstance().LEGACY_UNITTEST_FACTORY);
public final class PythonUnitTestConfigurationProducer extends PythonTestLegacyConfigurationProducer {
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return PythonTestConfigurationType.getInstance().LEGACY_UNITTEST_FACTORY;
}
@Override