OLD | NEW |
(Empty) | |
| 1 try: |
| 2 import unittest2 as unittest |
| 3 except ImportError: |
| 4 import unittest |
| 5 |
| 6 import rope.base.exceptions |
| 7 from rope.refactor import change_signature |
| 8 from ropetest import testutils |
| 9 |
| 10 |
| 11 class ChangeSignatureTest(unittest.TestCase): |
| 12 |
| 13 def setUp(self): |
| 14 super(ChangeSignatureTest, self).setUp() |
| 15 self.project = testutils.sample_project() |
| 16 self.pycore = self.project.pycore |
| 17 self.mod = testutils.create_module(self.project, 'mod') |
| 18 |
| 19 def tearDown(self): |
| 20 testutils.remove_project(self.project) |
| 21 super(ChangeSignatureTest, self).tearDown() |
| 22 |
| 23 def test_normalizing_parameters_for_trivial_case(self): |
| 24 code = 'def a_func():\n pass\na_func()' |
| 25 self.mod.write(code) |
| 26 signature = change_signature.ChangeSignature( |
| 27 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 28 self.project.do(signature.get_changes( |
| 29 [change_signature.ArgumentNormalizer()])) |
| 30 self.assertEquals(code, self.mod.read()) |
| 31 |
| 32 def test_normalizing_parameters_for_trivial_case2(self): |
| 33 code = 'def a_func(param):\n pass\na_func(2)' |
| 34 self.mod.write(code) |
| 35 signature = change_signature.ChangeSignature( |
| 36 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 37 self.project.do(signature.get_changes( |
| 38 [change_signature.ArgumentNormalizer()])) |
| 39 self.assertEquals(code, self.mod.read()) |
| 40 |
| 41 def test_normalizing_parameters_for_unneeded_keyword(self): |
| 42 self.mod.write('def a_func(param):\n pass\na_func(param=1)') |
| 43 signature = change_signature.ChangeSignature( |
| 44 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 45 self.project.do(signature.get_changes( |
| 46 [change_signature.ArgumentNormalizer()])) |
| 47 self.assertEquals('def a_func(param):\n pass\na_func(1)', |
| 48 self.mod.read()) |
| 49 |
| 50 def test_normalizing_parameters_for_unneeded_keyword_for_methods(self): |
| 51 code = 'class A(object):\n' \ |
| 52 ' def a_func(self, param):\n' \ |
| 53 ' pass\n' \ |
| 54 'a_var = A()\n' \ |
| 55 'a_var.a_func(param=1)\n' |
| 56 self.mod.write(code) |
| 57 signature = change_signature.ChangeSignature( |
| 58 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 59 self.project.do(signature.get_changes( |
| 60 [change_signature.ArgumentNormalizer()])) |
| 61 expected = 'class A(object):\n' \ |
| 62 ' def a_func(self, param):\n' \ |
| 63 ' pass\n' \ |
| 64 'a_var = A()\n' \ |
| 65 'a_var.a_func(1)\n' |
| 66 self.assertEquals(expected, self.mod.read()) |
| 67 |
| 68 def test_normalizing_parameters_for_unsorted_keyword(self): |
| 69 self.mod.write('def a_func(p1, p2):\n pass\na_func(p2=2, p1=1)') |
| 70 signature = change_signature.ChangeSignature( |
| 71 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 72 self.project.do(signature.get_changes( |
| 73 [change_signature.ArgumentNormalizer()])) |
| 74 self.assertEquals('def a_func(p1, p2):\n pass\na_func(1, 2)', |
| 75 self.mod.read()) |
| 76 |
| 77 def test_raising_exceptions_for_non_functions(self): |
| 78 self.mod.write('a_var = 10') |
| 79 with self.assertRaises(rope.base.exceptions.RefactoringError): |
| 80 change_signature.ChangeSignature( |
| 81 self.project, self.mod, self.mod.read().index('a_var') + 1) |
| 82 |
| 83 def test_normalizing_parameters_for_args_parameter(self): |
| 84 self.mod.write('def a_func(*arg):\n pass\na_func(1, 2)\n') |
| 85 signature = change_signature.ChangeSignature( |
| 86 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 87 self.project.do(signature.get_changes( |
| 88 [change_signature.ArgumentNormalizer()])) |
| 89 self.assertEquals('def a_func(*arg):\n pass\na_func(1, 2)\n', |
| 90 self.mod.read()) |
| 91 |
| 92 def test_normalizing_parameters_for_args_parameter_and_keywords(self): |
| 93 self.mod.write( |
| 94 'def a_func(param, *args):\n pass\na_func(*[1, 2, 3])\n') |
| 95 signature = change_signature.ChangeSignature( |
| 96 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 97 self.project.do(signature.get_changes( |
| 98 [change_signature.ArgumentNormalizer()])) |
| 99 self.assertEquals('def a_func(param, *args):\n pass\n' |
| 100 'a_func(*[1, 2, 3])\n', self.mod.read()) |
| 101 |
| 102 def test_normalizing_functions_from_other_modules(self): |
| 103 mod1 = testutils.create_module(self.project, 'mod1') |
| 104 mod1.write('def a_func(param):\n pass\n') |
| 105 self.mod.write('import mod1\nmod1.a_func(param=1)\n') |
| 106 signature = change_signature.ChangeSignature( |
| 107 self.project, mod1, mod1.read().index('a_func') + 1) |
| 108 self.project.do(signature.get_changes( |
| 109 [change_signature.ArgumentNormalizer()])) |
| 110 self.assertEquals('import mod1\nmod1.a_func(1)\n', self.mod.read()) |
| 111 |
| 112 def test_normalizing_parameters_for_keyword_parameters(self): |
| 113 self.mod.write('def a_func(p1, **kwds):\n pass\n' |
| 114 'a_func(p2=2, p1=1)\n') |
| 115 signature = change_signature.ChangeSignature( |
| 116 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 117 self.project.do(signature.get_changes( |
| 118 [change_signature.ArgumentNormalizer()])) |
| 119 self.assertEquals('def a_func(p1, **kwds):\n pass\n' |
| 120 'a_func(1, p2=2)\n', self.mod.read()) |
| 121 |
| 122 def test_removing_arguments(self): |
| 123 self.mod.write('def a_func(p1):\n pass\na_func(1)\n') |
| 124 signature = change_signature.ChangeSignature( |
| 125 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 126 self.project.do(signature.get_changes( |
| 127 [change_signature.ArgumentRemover(0)])) |
| 128 self.assertEquals('def a_func():\n pass\na_func()\n', |
| 129 self.mod.read()) |
| 130 |
| 131 def test_removing_arguments_with_multiple_args(self): |
| 132 self.mod.write('def a_func(p1, p2):\n pass\na_func(1, 2)\n') |
| 133 signature = change_signature.ChangeSignature( |
| 134 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 135 self.project.do(signature.get_changes( |
| 136 [change_signature.ArgumentRemover(0)])) |
| 137 self.assertEquals('def a_func(p2):\n pass\na_func(2)\n', |
| 138 self.mod.read()) |
| 139 |
| 140 def test_removing_arguments_passed_as_keywords(self): |
| 141 self.mod.write('def a_func(p1):\n pass\na_func(p1=1)\n') |
| 142 signature = change_signature.ChangeSignature( |
| 143 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 144 self.project.do(signature.get_changes( |
| 145 [change_signature.ArgumentRemover(0)])) |
| 146 self.assertEquals('def a_func():\n pass\na_func()\n', |
| 147 self.mod.read()) |
| 148 |
| 149 def test_removing_arguments_with_defaults(self): |
| 150 self.mod.write('def a_func(p1=1):\n pass\na_func(1)\n') |
| 151 signature = change_signature.ChangeSignature( |
| 152 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 153 self.project.do(signature.get_changes( |
| 154 [change_signature.ArgumentRemover(0)])) |
| 155 self.assertEquals('def a_func():\n pass\na_func()\n', |
| 156 self.mod.read()) |
| 157 |
| 158 def test_removing_arguments_star_args(self): |
| 159 self.mod.write('def a_func(p1, *args):\n pass\na_func(1)\n') |
| 160 signature = change_signature.ChangeSignature( |
| 161 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 162 self.project.do(signature.get_changes( |
| 163 [change_signature.ArgumentRemover(1)])) |
| 164 self.assertEquals('def a_func(p1):\n pass\na_func(1)\n', |
| 165 self.mod.read()) |
| 166 |
| 167 def test_removing_keyword_arg(self): |
| 168 self.mod.write('def a_func(p1, **kwds):\n pass\na_func(1)\n') |
| 169 signature = change_signature.ChangeSignature( |
| 170 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 171 self.project.do(signature.get_changes( |
| 172 [change_signature.ArgumentRemover(1)])) |
| 173 self.assertEquals('def a_func(p1):\n pass\na_func(1)\n', |
| 174 self.mod.read()) |
| 175 |
| 176 def test_removing_keyword_arg2(self): |
| 177 self.mod.write('def a_func(p1, *args, **kwds):\n pass\na_func(1)\n') |
| 178 signature = change_signature.ChangeSignature( |
| 179 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 180 self.project.do(signature.get_changes( |
| 181 [change_signature.ArgumentRemover(2)])) |
| 182 self.assertEquals('def a_func(p1, *args):\n pass\na_func(1)\n', |
| 183 self.mod.read()) |
| 184 |
| 185 # XXX: What to do here for star args? |
| 186 @unittest.skip("How to deal with start args?") |
| 187 def xxx_test_removing_arguments_star_args2(self): |
| 188 self.mod.write('def a_func(p1, *args):\n pass\n' |
| 189 'a_func(2, 3, p1=1)\n') |
| 190 signature = change_signature.ChangeSignature( |
| 191 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 192 self.project.do(signature.get_changes( |
| 193 [change_signature.ArgumentRemover(1)])) |
| 194 self.assertEquals('def a_func(p1):\n pass\na_func(p1=1)\n', |
| 195 self.mod.read()) |
| 196 |
| 197 # XXX: What to do here for star args? |
| 198 def xxx_test_removing_arguments_star_args3(self): |
| 199 self.mod.write('def a_func(p1, *args):\n pass\n' |
| 200 'a_func(*[1, 2, 3])\n') |
| 201 signature = change_signature.ChangeSignature( |
| 202 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 203 self.project.do(signature.get_changes( |
| 204 [change_signature.ArgumentRemover(1)])) |
| 205 self.assertEquals('def a_func(p1):\n pass\na_func(*[1, 2, 3])\n', |
| 206 self.mod.read()) |
| 207 |
| 208 def test_adding_arguments_for_normal_args_changing_definition(self): |
| 209 self.mod.write('def a_func():\n pass\n') |
| 210 signature = change_signature.ChangeSignature( |
| 211 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 212 self.project.do(signature.get_changes( |
| 213 [change_signature.ArgumentAdder(0, 'p1')])) |
| 214 self.assertEquals('def a_func(p1):\n pass\n', self.mod.read()) |
| 215 |
| 216 def test_adding_arguments_for_normal_args_with_defaults(self): |
| 217 self.mod.write('def a_func():\n pass\na_func()\n') |
| 218 signature = change_signature.ChangeSignature( |
| 219 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 220 adder = change_signature.ArgumentAdder(0, 'p1', 'None') |
| 221 self.project.do(signature.get_changes([adder])) |
| 222 self.assertEquals('def a_func(p1=None):\n pass\na_func()\n', |
| 223 self.mod.read()) |
| 224 |
| 225 def test_adding_arguments_for_normal_args_changing_calls(self): |
| 226 self.mod.write('def a_func():\n pass\na_func()\n') |
| 227 signature = change_signature.ChangeSignature( |
| 228 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 229 adder = change_signature.ArgumentAdder(0, 'p1', 'None', '1') |
| 230 self.project.do(signature.get_changes([adder])) |
| 231 self.assertEquals('def a_func(p1=None):\n pass\na_func(1)\n', |
| 232 self.mod.read()) |
| 233 |
| 234 def test_adding_arguments_for_norm_args_chang_calls_with_kwords(self): |
| 235 self.mod.write('def a_func(p1=0):\n pass\na_func()\n') |
| 236 signature = change_signature.ChangeSignature( |
| 237 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 238 adder = change_signature.ArgumentAdder(1, 'p2', '0', '1') |
| 239 self.project.do(signature.get_changes([adder])) |
| 240 self.assertEquals('def a_func(p1=0, p2=0):\n pass\na_func(p2=1)\n', |
| 241 self.mod.read()) |
| 242 |
| 243 def test_adding_arguments_for_norm_args_chang_calls_with_no_value(self): |
| 244 self.mod.write('def a_func(p2=0):\n pass\na_func(1)\n') |
| 245 signature = change_signature.ChangeSignature( |
| 246 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 247 adder = change_signature.ArgumentAdder(0, 'p1', '0', None) |
| 248 self.project.do(signature.get_changes([adder])) |
| 249 self.assertEquals('def a_func(p1=0, p2=0):\n pass\na_func(p2=1)\n', |
| 250 self.mod.read()) |
| 251 |
| 252 def test_adding_duplicate_parameter_and_raising_exceptions(self): |
| 253 self.mod.write('def a_func(p1):\n pass\n') |
| 254 with self.assertRaises(rope.base.exceptions.RefactoringError): |
| 255 signature = change_signature.ChangeSignature( |
| 256 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 257 self.project.do(signature.get_changes( |
| 258 [change_signature.ArgumentAdder(1, 'p1')])) |
| 259 |
| 260 def test_inlining_default_arguments(self): |
| 261 self.mod.write('def a_func(p1=0):\n pass\na_func()\n') |
| 262 signature = change_signature.ChangeSignature( |
| 263 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 264 self.project.do(signature.get_changes( |
| 265 [change_signature.ArgumentDefaultInliner(0)])) |
| 266 self.assertEquals('def a_func(p1=0):\n pass\n' |
| 267 'a_func(0)\n', self.mod.read()) |
| 268 |
| 269 def test_inlining_default_arguments2(self): |
| 270 self.mod.write('def a_func(p1=0):\n pass\na_func(1)\n') |
| 271 signature = change_signature.ChangeSignature( |
| 272 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 273 self.project.do(signature.get_changes( |
| 274 [change_signature.ArgumentDefaultInliner(0)])) |
| 275 self.assertEquals('def a_func(p1=0):\n pass\n' |
| 276 'a_func(1)\n', self.mod.read()) |
| 277 |
| 278 def test_preserving_args_and_keywords_order(self): |
| 279 self.mod.write('def a_func(*args, **kwds):\n pass\n' |
| 280 'a_func(3, 1, 2, a=1, c=3, b=2)\n') |
| 281 signature = change_signature.ChangeSignature( |
| 282 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 283 self.project.do(signature.get_changes( |
| 284 [change_signature.ArgumentNormalizer()])) |
| 285 self.assertEquals('def a_func(*args, **kwds):\n pass\n' |
| 286 'a_func(3, 1, 2, a=1, c=3, b=2)\n', self.mod.read()) |
| 287 |
| 288 def test_change_order_for_only_one_parameter(self): |
| 289 self.mod.write('def a_func(p1):\n pass\na_func(1)\n') |
| 290 signature = change_signature.ChangeSignature( |
| 291 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 292 self.project.do(signature.get_changes( |
| 293 [change_signature.ArgumentReorderer([0])])) |
| 294 self.assertEquals('def a_func(p1):\n pass\na_func(1)\n', |
| 295 self.mod.read()) |
| 296 |
| 297 def test_change_order_for_two_parameter(self): |
| 298 self.mod.write('def a_func(p1, p2):\n pass\na_func(1, 2)\n') |
| 299 signature = change_signature.ChangeSignature( |
| 300 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 301 self.project.do(signature.get_changes( |
| 302 [change_signature.ArgumentReorderer([1, 0])])) |
| 303 self.assertEquals('def a_func(p2, p1):\n pass\na_func(2, 1)\n', |
| 304 self.mod.read()) |
| 305 |
| 306 def test_reordering_multi_line_function_headers(self): |
| 307 self.mod.write('def a_func(p1,\n p2):\n pass\na_func(1, 2)\n') |
| 308 signature = change_signature.ChangeSignature( |
| 309 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 310 self.project.do(signature.get_changes( |
| 311 [change_signature.ArgumentReorderer([1, 0])])) |
| 312 self.assertEquals('def a_func(p2, p1):\n pass\na_func(2, 1)\n', |
| 313 self.mod.read()) |
| 314 |
| 315 def test_changing_order_with_static_params(self): |
| 316 self.mod.write('def a_func(p1, p2=0, p3=0):\n pass\na_func(1, 2)\n') |
| 317 signature = change_signature.ChangeSignature( |
| 318 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 319 self.project.do(signature.get_changes( |
| 320 [change_signature.ArgumentReorderer([0, 2, 1])])) |
| 321 self.assertEquals('def a_func(p1, p3=0, p2=0):\n pass\n' |
| 322 'a_func(1, p2=2)\n', self.mod.read()) |
| 323 |
| 324 def test_doing_multiple_changes(self): |
| 325 changers = [] |
| 326 self.mod.write('def a_func(p1):\n pass\na_func(1)\n') |
| 327 changers.append(change_signature.ArgumentRemover(0)) |
| 328 changers.append(change_signature.ArgumentAdder(0, 'p2', None, None)) |
| 329 signature = change_signature.ChangeSignature( |
| 330 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 331 signature.get_changes(changers).do() |
| 332 self.assertEquals('def a_func(p2):\n pass\na_func()\n', |
| 333 self.mod.read()) |
| 334 |
| 335 def test_doing_multiple_changes2(self): |
| 336 changers = [] |
| 337 self.mod.write('def a_func(p1, p2):\n pass\na_func(p2=2)\n') |
| 338 changers.append(change_signature.ArgumentAdder(2, 'p3', None, '3')) |
| 339 changers.append(change_signature.ArgumentReorderer([1, 0, 2])) |
| 340 changers.append(change_signature.ArgumentRemover(1)) |
| 341 signature = change_signature.ChangeSignature( |
| 342 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 343 signature.get_changes(changers).do() |
| 344 self.assertEquals('def a_func(p2, p3):\n pass\na_func(2, 3)\n', |
| 345 self.mod.read()) |
| 346 |
| 347 def test_changing_signature_in_subclasses(self): |
| 348 self.mod.write( |
| 349 'class A(object):\n def a_method(self):\n pass\n' |
| 350 'class B(A):\n def a_method(self):\n pass\n') |
| 351 signature = change_signature.ChangeSignature( |
| 352 self.project, self.mod, self.mod.read().index('a_method') + 1) |
| 353 signature.get_changes([change_signature.ArgumentAdder(1, 'p1')], |
| 354 in_hierarchy=True).do() |
| 355 self.assertEquals( |
| 356 'class A(object):\n def a_method(self, p1):\n pass\n' |
| 357 'class B(A):\n def a_method(self, p1):\n pass\n', |
| 358 self.mod.read()) |
| 359 |
| 360 def test_differentiating_class_accesses_from_instance_accesses(self): |
| 361 self.mod.write( |
| 362 'class A(object):\n def a_func(self, param):\n pass\n' |
| 363 'a_var = A()\nA.a_func(a_var, param=1)') |
| 364 signature = change_signature.ChangeSignature( |
| 365 self.project, self.mod, self.mod.read().index('a_func') + 1) |
| 366 self.project.do(signature.get_changes( |
| 367 [change_signature.ArgumentRemover(1)])) |
| 368 self.assertEquals( |
| 369 'class A(object):\n def a_func(self):\n pass\n' |
| 370 'a_var = A()\nA.a_func(a_var)', self.mod.read()) |
| 371 |
| 372 def test_changing_signature_for_constructors(self): |
| 373 self.mod.write( |
| 374 'class C(object):\n def __init__(self, p):\n pass\n' |
| 375 'c = C(1)\n') |
| 376 signature = change_signature.ChangeSignature( |
| 377 self.project, self.mod, self.mod.read().index('C') + 1) |
| 378 signature.get_changes([change_signature.ArgumentRemover(1)]).do() |
| 379 self.assertEquals( |
| 380 'class C(object):\n def __init__(self):\n pass\n' |
| 381 'c = C()\n', |
| 382 self.mod.read()) |
| 383 |
| 384 def test_changing_signature_for_constructors2(self): |
| 385 self.mod.write( |
| 386 'class C(object):\n def __init__(self, p):\n pass\n' |
| 387 'c = C(1)\n') |
| 388 signature = change_signature.ChangeSignature( |
| 389 self.project, self.mod, self.mod.read().index('__init__') + 1) |
| 390 signature.get_changes([change_signature.ArgumentRemover(1)]).do() |
| 391 self.assertEquals( |
| 392 'class C(object):\n def __init__(self):\n pass\n' |
| 393 'c = C()\n', |
| 394 self.mod.read()) |
| 395 |
| 396 def test_changing_signature_for_constructors_when_using_super(self): |
| 397 self.mod.write( |
| 398 'class A(object):\n def __init__(self, p):\n pass\n' |
| 399 'class B(A):\n ' |
| 400 'def __init__(self, p):\n super(B, self).__init__(p)\n') |
| 401 signature = change_signature.ChangeSignature( |
| 402 self.project, self.mod, self.mod.read().index('__init__') + 1) |
| 403 signature.get_changes([change_signature.ArgumentRemover(1)]).do() |
| 404 self.assertEquals( |
| 405 'class A(object):\n def __init__(self):\n pass\n' |
| 406 'class B(A):\n ' |
| 407 'def __init__(self, p):\n super(B, self).__init__()\n', |
| 408 self.mod.read()) |
| 409 |
| 410 def test_redordering_arguments_reported_by_mft(self): |
| 411 self.mod.write('def f(a, b, c):\n pass\nf(1, 2, 3)\n') |
| 412 signature = change_signature.ChangeSignature( |
| 413 self.project, self.mod, self.mod.read().rindex('f')) |
| 414 signature.get_changes( |
| 415 [change_signature.ArgumentReorderer([1, 2, 0])]).do() |
| 416 self.assertEquals('def f(b, c, a):\n pass\nf(2, 3, 1)\n', |
| 417 self.mod.read()) |
| 418 |
| 419 def test_resources_parameter(self): |
| 420 mod1 = testutils.create_module(self.project, 'mod1') |
| 421 mod1.write('def a_func(param):\n pass\n') |
| 422 self.mod.write('import mod1\nmod1.a_func(1)\n') |
| 423 signature = change_signature.ChangeSignature( |
| 424 self.project, mod1, mod1.read().index('a_func') + 1) |
| 425 signature.get_changes([change_signature.ArgumentRemover(0)], |
| 426 resources=[mod1]).do() |
| 427 self.assertEquals('import mod1\nmod1.a_func(1)\n', self.mod.read()) |
| 428 self.assertEquals('def a_func():\n pass\n', mod1.read()) |
| 429 |
| 430 def test_reordering_and_automatic_defaults(self): |
| 431 code = 'def f(p1, p2=2):\n' \ |
| 432 ' pass\n' \ |
| 433 'f(1, 2)\n' |
| 434 self.mod.write(code) |
| 435 signature = change_signature.ChangeSignature( |
| 436 self.project, self.mod, code.index('f(')) |
| 437 reorder = change_signature.ArgumentReorderer([1, 0], autodef='1') |
| 438 signature.get_changes([reorder]).do() |
| 439 expected = 'def f(p2=2, p1=1):\n' \ |
| 440 ' pass\n' \ |
| 441 'f(2, 1)\n' |
| 442 self.assertEquals(expected, self.mod.read()) |
| 443 |
| 444 |
| 445 if __name__ == '__main__': |
| 446 unittest.main() |
OLD | NEW |