PY-44026 Add a flag to PyModuleNameCompletionContributor for some tests to pass

GitOrigin-RevId: 104959faf4784de40500b694556b552fdbb69021
This commit is contained in:
Lada Gagina
2021-02-17 15:56:37 +00:00
committed by intellij-monorepo-bot
parent bf9af6108f
commit 726f21a3ae
5 changed files with 23 additions and 0 deletions
@@ -10,6 +10,7 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.openapi.vfs.StandardFileSystems;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.jetbrains.python.codeInsight.completion.PyModuleNameCompletionContributor;
import com.jetbrains.python.documentation.docstrings.DocStringFormat;
import com.jetbrains.python.fixture.PythonCommonTestCase;
import com.jetbrains.python.psi.LanguageLevel;
@@ -29,6 +30,7 @@ public abstract class PythonCommonCompletionTest extends PythonCommonTestCase {
protected void setUp() throws Exception {
super.setUp();
myFixture.setTestDataPath(getTestDataPath());
PyModuleNameCompletionContributor.ENABLED = false;
}
protected void doTest() {
@@ -21,12 +21,21 @@ import com.jetbrains.python.psi.resolve.fromFoothold
import com.jetbrains.python.psi.resolve.resolveQualifiedName
import com.jetbrains.python.psi.types.PyModuleType
import com.jetbrains.python.psi.types.PyType
import org.jetbrains.annotations.TestOnly
/**
* Adds completion variants for modules and packages, inserts a dot after and calls completion on the result,
* see [PyUnresolvedModuleAttributeCompletionContributor]
*/
class PyModuleNameCompletionContributor : CompletionContributor() {
companion object {
// temporary solution for tests that are not prepared for module name completion firing everywhere
@TestOnly
@JvmField
var ENABLED = true
}
/**
* Checks whether completion should be performed for a given [parameters] and delegates actual work to [doFillCompletionVariants].
*/
@@ -82,6 +91,8 @@ class PyModuleNameCompletionContributor : CompletionContributor() {
}
private fun shouldDoCompletion(parameters: CompletionParameters): Boolean {
if (!ENABLED) return false
val element = parameters.position
val parent = element.parent
@@ -8,6 +8,7 @@ import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.TestDataPath;
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.codeInsight.completion.PyModuleNameCompletionContributor;
import com.jetbrains.python.fixtures.PyTestCase;
import com.jetbrains.python.inspections.PyMethodParametersInspection;
import com.jetbrains.python.psi.LanguageLevel;
@@ -180,6 +181,7 @@ public class Py3CompletionTest extends PyTestCase {
}
public void testAsync() {
PyModuleNameCompletionContributor.ENABLED = false;
runWithLanguageLevel(LanguageLevel.PYTHON35, this::doTest);
}
@@ -2,12 +2,18 @@
package com.jetbrains.python;
import com.intellij.codeInsight.completion.impl.CamelHumpMatcher;
import com.jetbrains.python.codeInsight.completion.PyModuleNameCompletionContributor;
import com.jetbrains.python.fixtures.PyTestCase;
import com.jetbrains.python.psi.LanguageLevel;
import java.util.List;
public class PythonKeywordCompletionTest extends PyTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
PyModuleNameCompletionContributor.ENABLED = false;
}
private void doTest3K() {
runWithLanguageLevel(LanguageLevel.PYTHON34, this::doTest);
@@ -45,6 +45,7 @@ import com.intellij.util.IncorrectOperationException;
import com.jetbrains.python.PythonHelpersLocator;
import com.jetbrains.python.PythonLanguage;
import com.jetbrains.python.PythonTestUtil;
import com.jetbrains.python.codeInsight.completion.PyModuleNameCompletionContributor;
import com.jetbrains.python.documentation.PyDocumentationSettings;
import com.jetbrains.python.documentation.PythonDocumentationProvider;
import com.jetbrains.python.documentation.docstrings.DocStringFormat;
@@ -267,6 +268,7 @@ public abstract class PyTestCase extends UsefulTestCase {
protected void tearDown() throws Exception {
try {
PyNamespacePackagesService.getInstance(myFixture.getModule()).resetAllNamespacePackages();
PyModuleNameCompletionContributor.ENABLED = true;
setLanguageLevel(null);
myFixture.tearDown();
myFixture = null;