fix a PY-8926 Python: Conversion of docsting into recommended triple double-quoted form keeps doublequote at last position

This commit is contained in:
Ekaterina Tuzova
2013-02-19 14:21:47 +04:00
parent 35114bfdce
commit 1e22104473
4 changed files with 15 additions and 1 deletions
@@ -3,6 +3,7 @@ package com.jetbrains.python.inspections.quickfix;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.psi.PyElementGenerator;
@@ -37,7 +38,7 @@ public class ConvertDocstringQuickFix implements LocalQuickFix {
int prefixLength = PyStringLiteralExpressionImpl
.getPrefixLength(stringText);
String prefix = stringText.substring(0, prefixLength);
String content = expression.getText().substring(prefixLength);
String content = stringText.substring(prefixLength);
if (content.startsWith("'''") ) {
content = content.substring(3, content.length()-3);
} else if (content.startsWith("\"\"\""))
@@ -46,6 +47,8 @@ public class ConvertDocstringQuickFix implements LocalQuickFix {
content = content.length() == 1 ? "" : content.substring(1, content.length()-1);
}
content = StringUtil.escapeQuotes(content);
PyExpression newString = elementGenerator.createDocstring(prefix+"\"\"\"" + content + "\"\"\"").getExpression();
expression.replace(newString);
}
@@ -0,0 +1,3 @@
def foo():
<weak_warning descr="Triple double-quoted strings should be used for docstrings."><caret>'</weak_warning>bla "blub"<weak_warning descr="Triple double-quoted strings should be used for docstrings.">'</weak_warning>
pass
@@ -0,0 +1,3 @@
def foo():
"""bla \"blub\""""
pass
@@ -312,6 +312,11 @@ public class PyQuickFixTest extends PyTestCase {
PyBundle.message("QFIX.convert.single.quoted.docstring"), true, true);
}
public void testConvertSingleQuotedDocstringEscape() { //PY-8926
doInspectionTest("ConvertSingleQuotedDocstringEscape.py", PySingleQuotedDocstringInspection.class,
PyBundle.message("QFIX.convert.single.quoted.docstring"), true, true);
}
public void testDefaultArgument() { //PY-3127
doInspectionTest("DefaultArgument.py", PyDefaultArgumentInspection.class,
PyBundle.message("QFIX.default.argument"), true, true);