From 36e972138260cc70abc1c83f8dbe91c18c7a230c Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Fri, 16 Jun 2017 14:05:26 +0300 Subject: [PATCH] PY-18816 Extract assertType() methods in PyTestCase to remove duplication --- .../env/python/PythonSkeletonsTest.java | 6 ++--- .../com/jetbrains/python/Py3TypeTest.java | 8 ------- .../com/jetbrains/python/PyTypeTest.java | 9 ++------ .../com/jetbrains/python/PyTypingTest.java | 12 ++-------- .../jetbrains/python/fixtures/PyTestCase.java | 22 +++++++++++++++---- .../com/jetbrains/python/pyi/PyiTypeTest.java | 8 ------- 6 files changed, 24 insertions(+), 41 deletions(-) diff --git a/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java b/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java index 82cd59a3bbb3..202cc5cbbd95 100644 --- a/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java +++ b/python/testSrc/com/jetbrains/env/python/PythonSkeletonsTest.java @@ -47,6 +47,7 @@ import org.junit.Test; import java.io.File; import java.util.Set; +import static com.jetbrains.python.fixtures.PyTestCase.assertType; import static org.junit.Assert.*; /** @@ -145,10 +146,7 @@ public class PythonSkeletonsTest extends PyEnvTestCase { ApplicationManager.getApplication().runReadAction(() -> { final PyExpression expr = myFixture.findElementByText("expr", PyExpression.class); final PsiFile file = myFixture.getFile(); - final TypeEvalContext context = TypeEvalContext.codeAnalysis(file.getProject(), file); - final PyType type = context.getType(expr); - final String actualType = PythonDocumentationProvider.getTypeName(type, context); - assertEquals("int", actualType); + assertType("int", expr, TypeEvalContext.codeAnalysis(file.getProject(), file)); }); } }); diff --git a/python/testSrc/com/jetbrains/python/Py3TypeTest.java b/python/testSrc/com/jetbrains/python/Py3TypeTest.java index 369f8f464aa0..edde80d71125 100644 --- a/python/testSrc/com/jetbrains/python/Py3TypeTest.java +++ b/python/testSrc/com/jetbrains/python/Py3TypeTest.java @@ -18,11 +18,9 @@ package com.jetbrains.python; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import com.intellij.testFramework.LightProjectDescriptor; -import com.jetbrains.python.documentation.PythonDocumentationProvider; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.PyExpression; -import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; /** @@ -616,10 +614,4 @@ public class Py3TypeTest extends PyTestCase { assertType(expectedType, expr, TypeEvalContext.codeAnalysis(project, containingFile)); assertType(expectedType, expr, TypeEvalContext.userInitiated(project, containingFile)); } - - private static void assertType(String expectedType, PyExpression expr, TypeEvalContext context) { - final PyType actual = context.getType(expr); - final String actualType = PythonDocumentationProvider.getTypeName(actual, context); - assertEquals(expectedType, actualType); - } } diff --git a/python/testSrc/com/jetbrains/python/PyTypeTest.java b/python/testSrc/com/jetbrains/python/PyTypeTest.java index 0e9215b43ace..284a50ef2112 100644 --- a/python/testSrc/com/jetbrains/python/PyTypeTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypeTest.java @@ -16,7 +16,6 @@ package com.jetbrains.python; import com.google.common.collect.ImmutableList; -import com.jetbrains.python.documentation.PythonDocumentationProvider; import com.jetbrains.python.documentation.docstrings.DocStringFormat; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.LanguageLevel; @@ -2005,9 +2004,7 @@ public class PyTypeTest extends PyTestCase { } private static void doTest(final String expectedType, final PyExpression expr, final TypeEvalContext context) { - PyType actual = context.getType(expr); - final String actualType = PythonDocumentationProvider.getTypeName(actual, context); - assertEquals(expectedType, actualType); + assertType(expectedType, expr, context); } private void doTest(@NotNull final String expectedType, @NotNull final String text) { @@ -2017,9 +2014,7 @@ public class PyTypeTest extends PyTestCase { private static void checkTypes(@NotNull String expectedType, @Nullable PyExpression expr) { assertNotNull(expr); for (TypeEvalContext context : getTypeEvalContexts(expr)) { - final PyType actual = context.getType(expr); - final String actualType = PythonDocumentationProvider.getTypeName(actual, context); - assertEquals("Failed in " + context, expectedType, actualType); + assertType(expectedType, expr, context); } } diff --git a/python/testSrc/com/jetbrains/python/PyTypingTest.java b/python/testSrc/com/jetbrains/python/PyTypingTest.java index 369f12d99800..6d695d6c50f1 100644 --- a/python/testSrc/com/jetbrains/python/PyTypingTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypingTest.java @@ -21,11 +21,9 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.testFramework.LightProjectDescriptor; -import com.jetbrains.python.documentation.PythonDocumentationProvider; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.PyExpression; -import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -993,13 +991,7 @@ public class PyTypingTest extends PyTestCase { final PyExpression expr = myFixture.findElementByText("expr", PyExpression.class); final TypeEvalContext codeAnalysis = TypeEvalContext.codeAnalysis(expr.getProject(),expr.getContainingFile()); final TypeEvalContext userInitiated = TypeEvalContext.userInitiated(expr.getProject(), expr.getContainingFile()).withTracing(); - assertType(expectedType, expr, codeAnalysis, "code analysis"); - assertType(expectedType, expr, userInitiated, "user initiated"); - } - - private static void assertType(String expectedType, PyExpression expr, TypeEvalContext context, String contextName) { - final PyType actual = context.getType(expr); - final String actualType = PythonDocumentationProvider.getTypeName(actual, context); - assertEquals("Failed in " + contextName + " context", expectedType, actualType); + assertType("Failed in code analysis context", expectedType, expr, codeAnalysis); + assertType("Failed in user initiated context", expectedType, expr, userInitiated); } } diff --git a/python/testSrc/com/jetbrains/python/fixtures/PyTestCase.java b/python/testSrc/com/jetbrains/python/fixtures/PyTestCase.java index f3da56390534..d4d95d39edd9 100644 --- a/python/testSrc/com/jetbrains/python/fixtures/PyTestCase.java +++ b/python/testSrc/com/jetbrains/python/fixtures/PyTestCase.java @@ -62,14 +62,14 @@ import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.PythonLanguage; import com.jetbrains.python.PythonTestUtil; import com.jetbrains.python.documentation.PyDocumentationSettings; +import com.jetbrains.python.documentation.PythonDocumentationProvider; import com.jetbrains.python.documentation.docstrings.DocStringFormat; import com.jetbrains.python.formatter.PyCodeStyleSettings; -import com.jetbrains.python.psi.LanguageLevel; -import com.jetbrains.python.psi.PyClass; -import com.jetbrains.python.psi.PyFile; -import com.jetbrains.python.psi.PyUtil; +import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyFileImpl; import com.jetbrains.python.psi.impl.PythonLanguageLevelPusher; +import com.jetbrains.python.psi.types.PyType; +import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Assert; @@ -434,5 +434,19 @@ public abstract class PyTestCase extends UsefulTestCase { assertNotNull(file); return file.findElementAt(myFixture.getCaretOffset()); } + + public static void assertType(@NotNull String expectedType, @NotNull PyTypedElement element, @NotNull TypeEvalContext context) { + assertType("Failed in " + context + " context", expectedType, element, context); + } + + public static void assertType(@NotNull String message, + @NotNull String expectedType, + @NotNull PyTypedElement element, + @NotNull TypeEvalContext context) { + final PyType actual = context.getType(element); + final String actualType = PythonDocumentationProvider.getTypeName(actual, context); + assertEquals(message, expectedType, actualType); + } + } diff --git a/python/testSrc/com/jetbrains/python/pyi/PyiTypeTest.java b/python/testSrc/com/jetbrains/python/pyi/PyiTypeTest.java index 2bbef7c6661a..ce6e92eb9cc9 100644 --- a/python/testSrc/com/jetbrains/python/pyi/PyiTypeTest.java +++ b/python/testSrc/com/jetbrains/python/pyi/PyiTypeTest.java @@ -24,11 +24,9 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.fixtures.CodeInsightTestFixture; -import com.jetbrains.python.documentation.PythonDocumentationProvider; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.PyTypedElement; -import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -78,12 +76,6 @@ public class PyiTypeTest extends PyTestCase { assertType(expectedType, typedElement, TypeEvalContext.userInitiated(project, containingFile)); } - private static void assertType(@NotNull String expectedType, @NotNull PyTypedElement element, @NotNull TypeEvalContext context) { - final PyType actual = context.getType(element); - final String actualType = PythonDocumentationProvider.getTypeName(actual, context); - assertEquals("Failed in " + context + " context", expectedType, actualType); - } - public void testFunctionParameter() { doTest("int"); }