PY-24607 PY-24602 Add tests on other older problems with Change Signature

All these issues have been resolved in the new version of
PyChangeSignatureUsageProcessor
This commit is contained in:
Mikhail Golubev
2017-06-07 19:36:15 +03:00
parent 59696e2c5f
commit d8b871aec1
17 changed files with 112 additions and 7 deletions

View File

@@ -5,3 +5,4 @@ def foo(a, d=1, b=None):
foo("a", b="b")
foo("a")
foo("a", b="b")
foo("a", b=None)

View File

@@ -0,0 +1,5 @@
def f(x, foo, y, **kwargs):
print(foo, kwargs)
f(42, foo=None, y=None, extra1=1, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, **kwargs):
print(foo, kwargs)
f(42, extra1=1, foo=None, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, y=None, **kwargs):
print(foo, kwargs)
f(42, foo=None, extra1=1, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, **kwargs):
print(foo, kwargs)
f(42, extra1=1, foo=None, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, **kwargs):
pass
f(42, extra1=1, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, **kwargs):
pass
f(42, extra1=1, foo=None, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(foo, **kwargs):
print(foo, kwargs)
f(foo=None, extra1=1, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, **kwargs):
print(foo, kwargs)
f(42, extra1=1, foo=None, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, bar, **kwargs):
print(foo, kwargs)
f(42, bar=None, extra1=1, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, **kwargs):
print(foo, kwargs)
f(42, extra1=1, foo=None, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(foo, x, **kwargs):
print(foo, kwargs)
f(42, x=None, extra1=1, extra2=2)

View File

@@ -0,0 +1,5 @@
def f(x, foo, **kwargs):
print(foo, kwargs)
f(42, extra1=1, foo=None, extra2=2)

View File

@@ -72,11 +72,17 @@ public class PyChangeSignatureTest extends PyTestCase {
new PyParameterInfo(-1, "c", "3", false)));
}
public void testAddDefaultParam() {
public void testAddDefaultParamAtEnd() {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(0, "a", null, false), new PyParameterInfo(1, "b", null, false),
new PyParameterInfo(-1, "c", "3", true)));
}
// PY-24607
public void testAddDefaultParamBeforeAnotherDefault() {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(0, "a", null, false), new PyParameterInfo(-1, "d", "1", true),
new PyParameterInfo(1, "b", "None", true)));
}
public void testRemoveDefaultFromParam() {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(0, "a", null, false), new PyParameterInfo(1, "b", "2", false)));
}
@@ -88,11 +94,6 @@ public class PyChangeSignatureTest extends PyTestCase {
doValidationTest(null, Arrays.asList(first, second), PyBundle.message("refactoring.change.signature.dialog.validation.default.missing"));
}
public void testAddDefaultParam1() {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(0, "a", null, false), new PyParameterInfo(-1, "d", "1", true),
new PyParameterInfo(1, "b", "None", true)));
}
public void testUpdateDocstring() {
getIndentOptions().INDENT_SIZE = 2;
final PyParameterInfo a = new PyParameterInfo(0, "a", null, false);
@@ -310,7 +311,6 @@ public class PyChangeSignatureTest extends PyTestCase {
new PyParameterInfo(1, "**kwargs", null, false)));
}
// PY-24480
public void testAddParameterBeforeVararg() {
doChangeSignatureTest(null, Arrays.asList(new PyParameterInfo(-1, "x", "42", false),
@@ -332,6 +332,49 @@ public class PyChangeSignatureTest extends PyTestCase {
});
}
// PY-24602
public void testScatteredKwargsArgsRemoveParam() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(0, "x", null, false),
new PyParameterInfo(2, "**kwargs", null, false)));
}
// PY-24602
public void testScatteredKwargsArgsRenameParam() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(0, "x", null, false),
new PyParameterInfo(1, "bar", null, false),
new PyParameterInfo(2, "**kwargs", null, false)));
}
// PY-24602
public void testScatteredKwargsArgsRemoveParamBefore() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(1, "foo", null, false),
new PyParameterInfo(2, "**kwargs", null, false)));
}
// PY-24602
public void testScatteredKwargsArgsAddParamAfter() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(0, "x", null, false),
new PyParameterInfo(1, "foo", null, false),
new PyParameterInfo(-1, "y", "None", false),
new PyParameterInfo(2, "**kwargs", null, false)));
}
// PY-24602
public void testScatteredKwargsArgsAddParamAfterWithDefault() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(0, "x", null, false),
new PyParameterInfo(1, "foo", null, false),
new PyParameterInfo(-1, "y", "None", true),
new PyParameterInfo(2, "**kwargs", null, false)));
}
// PY-24602
public void testScatteredKwargsArgsSwapParams() {
doChangeSignatureTest("f", Arrays.asList(new PyParameterInfo(0, "foo", null, false),
new PyParameterInfo(1, "x", null, false),
new PyParameterInfo(2, "**kwargs", null, false)));
}
public void doChangeSignatureTest(@Nullable String newName, @Nullable List<PyParameterInfo> parameters) {
myFixture.configureByFile("refactoring/changeSignature/" + getTestName(true) + ".before.py");
changeSignature(newName, parameters);