diff --git a/python/testData/refactoring/introduceField/py4414.after.py b/python/testData/refactoring/introduceField/py4414.after.py
new file mode 100644
index 000000000000..2311d3e9d6a9
--- /dev/null
+++ b/python/testData/refactoring/introduceField/py4414.after.py
@@ -0,0 +1,3 @@
+class SomeClass():
+ def a(self):
+ self.a = 1
diff --git a/python/testData/refactoring/introduceField/py4414.py b/python/testData/refactoring/introduceField/py4414.py
new file mode 100644
index 000000000000..cc792900f692
--- /dev/null
+++ b/python/testData/refactoring/introduceField/py4414.py
@@ -0,0 +1,3 @@
+class SomeClass():
+ def a(self):
+ 1
\ No newline at end of file
diff --git a/python/testData/refactoring/introduceField/py4453.after.py b/python/testData/refactoring/introduceField/py4453.after.py
new file mode 100644
index 000000000000..945ab52204bf
--- /dev/null
+++ b/python/testData/refactoring/introduceField/py4453.after.py
@@ -0,0 +1,12 @@
+import math
+
+__author__ = 'wombat'
+class SolverEquation:
+ def demo(self):
+ a = 3
+ b = 25
+ c = 46
+ self.a = math.sqrt(b ** 2 - 4 * a * c)
+ root1 = (-b + self.a) / (2*a)
+ root2 = (-b - self.a) / (2*a)
+ print(root1,root2)
\ No newline at end of file
diff --git a/python/testData/refactoring/introduceField/py4453.py b/python/testData/refactoring/introduceField/py4453.py
new file mode 100644
index 000000000000..9001d24c826e
--- /dev/null
+++ b/python/testData/refactoring/introduceField/py4453.py
@@ -0,0 +1,11 @@
+import math
+
+__author__ = 'wombat'
+class SolverEquation:
+ def demo(self):
+ a = 3
+ b = 25
+ c = 46
+ root1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / (2*a)
+ root2 = (-b - math.sqrt(b ** 2 - 4 * a * c)) / (2*a)
+ print(root1,root2)
\ No newline at end of file
diff --git a/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java b/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java
index d979f383410b..3750478347f7 100644
--- a/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java
+++ b/python/testSrc/com/jetbrains/python/PythonAllTestsSuite.java
@@ -62,7 +62,6 @@ public class PythonAllTestsSuite {
PyStatementMoverTest.class,
PyIntroduceVariableTest.class,
PyIntroduceFieldTest.class,
- PyInplaceIntroduceFieldTest.class,
PyIntroduceConstantTest.class,
PyClassNameCompletionTest.class,
PySuppressInspectionsTest.class,
diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyInplaceIntroduceFieldTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyInplaceIntroduceFieldTest.java
deleted file mode 100644
index 1dc12825d245..000000000000
--- a/python/testSrc/com/jetbrains/python/refactoring/PyInplaceIntroduceFieldTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.jetbrains.python.refactoring;
-
-import com.intellij.codeInsight.template.TemplateManager;
-import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
-import com.intellij.codeInsight.template.impl.TemplateState;
-import com.intellij.testFramework.LightPlatformTestCase;
-import com.jetbrains.python.fixtures.PyLightFixtureTestCase;
-import com.jetbrains.python.refactoring.introduce.IntroduceOperation;
-import com.jetbrains.python.refactoring.introduce.field.PyIntroduceFieldHandler;
-
-/**
- * @author yole
- */
-public class PyInplaceIntroduceFieldTest extends PyLightFixtureTestCase {
- @SuppressWarnings("JUnitTestCaseWithNonTrivialConstructors")
- public PyInplaceIntroduceFieldTest() {
- PyLightFixtureTestCase.initPlatformPrefix();
- }
-
- public void testPy4453() {
- doTest();
- }
-
- public void testPy4414() {
- doTest();
- }
-
- private void doTest() {
- String name = getTestName(true);
- myFixture.configureByFile("refactoring/inplaceIntroduceField/" + name + ".py");
- final boolean enabled = myFixture.getEditor().getSettings().isVariableInplaceRenameEnabled();
- TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(LightPlatformTestCase.getProject());
- try {
- templateManager.setTemplateTesting(true);
- myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(true);
-
- PyIntroduceFieldHandler handler = new PyIntroduceFieldHandler();
- final IntroduceOperation introduceOperation = new IntroduceOperation(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), "a",
- false, false);
- introduceOperation.setReplaceAll(true);
- handler.performAction(introduceOperation);
-
- TemplateState state = TemplateManagerImpl.getTemplateState(myFixture.getEditor());
- assert state != null;
- state.gotoEnd(false);
- myFixture.checkResultByFile("refactoring/inplaceIntroduceField/" + name + ".after.py", true);
- }
- finally {
- myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(enabled);
- templateManager.setTemplateTesting(false);
- }
- }
-}
diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java
index ebc89deff379..0cc5cf5c0225 100644
--- a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java
+++ b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceFieldTest.java
@@ -28,6 +28,14 @@ public class PyIntroduceFieldTest extends PyIntroduceTestCase {
doTestSuggestions(PyExpression.class, "s1");
}
+ public void testPy4453() {
+ doTestInplace();
+ }
+
+ public void testPy4414() {
+ doTestInplace();
+ }
+
@Override
protected IntroduceHandler createHandler() {
return new PyIntroduceFieldHandler();
diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java
index 8304fb3650f7..6331b338d565 100644
--- a/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java
+++ b/python/testSrc/com/jetbrains/python/refactoring/PyIntroduceTestCase.java
@@ -1,7 +1,11 @@
package com.jetbrains.python.refactoring;
+import com.intellij.codeInsight.template.TemplateManager;
+import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
+import com.intellij.codeInsight.template.impl.TemplateState;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.testFramework.LightPlatformTestCase;
import com.intellij.util.Consumer;
import com.jetbrains.python.fixtures.PyLightFixtureTestCase;
import com.jetbrains.python.psi.PyExpression;
@@ -51,4 +55,30 @@ public abstract class PyIntroduceTestCase extends PyLightFixtureTestCase {
myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(inplaceEnabled);
}
}
+
+ protected void doTestInplace() {
+ String name = getTestName(true);
+ myFixture.configureByFile(name + ".py");
+ final boolean enabled = myFixture.getEditor().getSettings().isVariableInplaceRenameEnabled();
+ TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(LightPlatformTestCase.getProject());
+ try {
+ templateManager.setTemplateTesting(true);
+ myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(true);
+
+ IntroduceHandler handler = createHandler();
+ final IntroduceOperation introduceOperation = new IntroduceOperation(myFixture.getProject(), myFixture.getEditor(), myFixture.getFile(), "a",
+ false, false);
+ introduceOperation.setReplaceAll(true);
+ handler.performAction(introduceOperation);
+
+ TemplateState state = TemplateManagerImpl.getTemplateState(myFixture.getEditor());
+ assert state != null;
+ state.gotoEnd(false);
+ myFixture.checkResultByFile(name + ".after.py", true);
+ }
+ finally {
+ myFixture.getEditor().getSettings().setVariableInplaceRenameEnabled(enabled);
+ templateManager.setTemplateTesting(false);
+ }
+ }
}