From 4bae7ca3c34c55ea4e34712b1f03f604d3df23b7 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Tue, 1 Sep 2015 13:01:48 +0300 Subject: [PATCH] PY-16656 Add test cases. Issue was fixed when enter and space handlers started to use PyDocstringGenerator --- ...erDocStringStubInFunctionWithSelf.after.py | 8 +++ .../enterDocStringStubInFunctionWithSelf.py | 3 ++ ...cStringStubInStaticMethodWithSelf.after.py | 10 ++++ ...nterDocStringStubInStaticMethodWithSelf.py | 5 ++ .../com/jetbrains/python/PyEditingTest.java | 50 ++++++++++++------- 5 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 python/testData/editing/enterDocStringStubInFunctionWithSelf.after.py create mode 100644 python/testData/editing/enterDocStringStubInFunctionWithSelf.py create mode 100644 python/testData/editing/enterDocStringStubInStaticMethodWithSelf.after.py create mode 100644 python/testData/editing/enterDocStringStubInStaticMethodWithSelf.py diff --git a/python/testData/editing/enterDocStringStubInFunctionWithSelf.after.py b/python/testData/editing/enterDocStringStubInFunctionWithSelf.after.py new file mode 100644 index 000000000000..06a079eb4336 --- /dev/null +++ b/python/testData/editing/enterDocStringStubInFunctionWithSelf.after.py @@ -0,0 +1,8 @@ +def foo(self, x): + """ + + :param self: + :param x: + :return: + """ + pass \ No newline at end of file diff --git a/python/testData/editing/enterDocStringStubInFunctionWithSelf.py b/python/testData/editing/enterDocStringStubInFunctionWithSelf.py new file mode 100644 index 000000000000..048c4843313c --- /dev/null +++ b/python/testData/editing/enterDocStringStubInFunctionWithSelf.py @@ -0,0 +1,3 @@ +def foo(self, x): + """ + pass \ No newline at end of file diff --git a/python/testData/editing/enterDocStringStubInStaticMethodWithSelf.after.py b/python/testData/editing/enterDocStringStubInStaticMethodWithSelf.after.py new file mode 100644 index 000000000000..3493557837e0 --- /dev/null +++ b/python/testData/editing/enterDocStringStubInStaticMethodWithSelf.after.py @@ -0,0 +1,10 @@ +class C: + @staticmethod + def m(self, x): + """ + + :param self: + :param x: + :return: + """ + pass \ No newline at end of file diff --git a/python/testData/editing/enterDocStringStubInStaticMethodWithSelf.py b/python/testData/editing/enterDocStringStubInStaticMethodWithSelf.py new file mode 100644 index 000000000000..2da6597ca2a1 --- /dev/null +++ b/python/testData/editing/enterDocStringStubInStaticMethodWithSelf.py @@ -0,0 +1,5 @@ +class C: + @staticmethod + def m(self, x): + """ + pass \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyEditingTest.java b/python/testSrc/com/jetbrains/python/PyEditingTest.java index 928883f1eb7b..2d07f84fc546 100644 --- a/python/testSrc/com/jetbrains/python/PyEditingTest.java +++ b/python/testSrc/com/jetbrains/python/PyEditingTest.java @@ -26,9 +26,9 @@ import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.util.Computable; import com.intellij.psi.PsiFile; import com.jetbrains.python.documentation.DocStringFormat; -import com.jetbrains.python.documentation.PyDocumentationSettings; import com.jetbrains.python.fixtures.PyTestCase; import com.jetbrains.python.psi.LanguageLevel; +import org.jetbrains.annotations.NotNull; /** * @author yole @@ -198,40 +198,47 @@ public class PyEditingTest extends PyTestCase { } public void testEnterStubInDocstring() { // CR-PY-144 - final PyDocumentationSettings documentationSettings = PyDocumentationSettings.getInstance(myFixture.getModule()); - final DocStringFormat oldFormat = documentationSettings.getFormat(); - documentationSettings.setFormat(DocStringFormat.PLAIN); - try { - doTestEnter("def foo():\n \"\"\"", "def foo():\n" + - " \"\"\"\n" + - " \n" + - " \"\"\""); - } finally { - documentationSettings.setFormat(oldFormat); - } + runWithDocStringFormat(DocStringFormat.PLAIN, new Runnable() { + public void run() { + doTestEnter("def foo():\n \"\"\"", "def foo():\n" + + " \"\"\"\n" + + " \n" + + " \"\"\""); + } + }); } public void testEnterDocStringStubInClass() { - doTypingTest('\n'); + doDocStringTypingTest('\n', DocStringFormat.REST); } public void testEnterDocStringStubInFile() { - doTypingTest('\n'); + doDocStringTypingTest('\n', DocStringFormat.REST); + } + + // PY-16656 + public void testEnterDocStringStubInFunctionWithSelf() { + doDocStringTypingTest('\n', DocStringFormat.REST); + } + + // PY-16656 + public void testEnterDocStringStubInStaticMethodWithSelf() { + doDocStringTypingTest('\n', DocStringFormat.REST); } // PY-3421 public void testSpaceDocStringStubInFunction() { - doTypingTest(' '); + doDocStringTypingTest(' ', DocStringFormat.REST); } // PY-3421 public void testSpaceDocStringStubInFile() { - doTypingTest(' '); + doDocStringTypingTest(' ', DocStringFormat.REST); } // PY-3421 public void testSpaceDocStringStubInClass() { - doTypingTest(' '); + doDocStringTypingTest(' ', DocStringFormat.REST); } public void testEnterInString() { // PY-1738 @@ -424,6 +431,15 @@ public class PyEditingTest extends PyTestCase { myFixture.checkResultByFile(testName + ".after.py"); } + private void doDocStringTypingTest(final char character, @NotNull DocStringFormat format) { + runWithDocStringFormat(format, new Runnable() { + @Override + public void run() { + doTypingTest(character); + } + }); + } + private void doTyping(final char character) { final int offset = myFixture.getEditor().getCaretModel().getOffset(); final PsiFile file = WriteCommandAction.runWriteCommandAction(null, new Computable() {