def test_normalizing_functions_from_other_modules(self): mod1 = testutils.create_module(self.project, "mod1") mod1.write( dedent("""\ def a_func(param): pass """) ) self.mod.write( dedent("""\ import mod1 mod1.a_func(param=1) """) ) signature = change_signature.ChangeSignature( self.project, mod1, mod1.read().index("a_func") + 1 ) self.project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) self.assertEqual( dedent("""\ import mod1 mod1.a_func(1) """), self.mod.read(), )
def test_normalizing_parameters_for_args_parameter(self): self.mod.write('def a_func(*arg):\n pass\na_func(1, 2)\n') signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index('a_func') + 1) self.project.do(signature.get_changes( [change_signature.ArgumentNormalizer()])) self.assertEquals('def a_func(*arg):\n pass\na_func(1, 2)\n', self.mod.read())
def test_normalizing_parameters_for_unsorted_keyword(self): self.mod.write('def a_func(p1, p2):\n pass\na_func(p2=2, p1=1)') signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index('a_func') + 1) self.project.do(signature.get_changes( [change_signature.ArgumentNormalizer()])) self.assertEquals('def a_func(p1, p2):\n pass\na_func(1, 2)', self.mod.read())
def test_normalizing_parameters_for_trivial_case2(self): code = 'def a_func(param):\n pass\na_func(2)' self.mod.write(code) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index('a_func') + 1) self.project.do(signature.get_changes( [change_signature.ArgumentNormalizer()])) self.assertEquals(code, self.mod.read())
def test_preserving_args_and_keywords_order(self): self.mod.write('def a_func(*args, **kwds):\n pass\n' 'a_func(3, 1, 2, a=1, c=3, b=2)\n') signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index('a_func') + 1) self.project.do(signature.get_changes( [change_signature.ArgumentNormalizer()])) self.assertEquals('def a_func(*args, **kwds):\n pass\n' 'a_func(3, 1, 2, a=1, c=3, b=2)\n', self.mod.read())
def test_normalizing_functions_from_other_modules(self): mod1 = testutils.create_module(self.project, 'mod1') mod1.write('def a_func(param):\n pass\n') self.mod.write('import mod1\nmod1.a_func(param=1)\n') signature = change_signature.ChangeSignature( self.project, mod1, mod1.read().index('a_func') + 1) self.project.do(signature.get_changes( [change_signature.ArgumentNormalizer()])) self.assertEquals('import mod1\nmod1.a_func(1)\n', self.mod.read())
def test_normalizing_parameters_for_trivial_case2(self): code = dedent("""\ def a_func(param): pass a_func(2)""") self.mod.write(code) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index("a_func") + 1 ) self.project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) self.assertEqual(code, self.mod.read())
def test_normalizing_parameters_for_unneeded_keyword_for_methods(self): code = 'class A(object):\n' \ ' def a_func(self, param):\n' \ ' pass\n' \ 'a_var = A()\n' \ 'a_var.a_func(param=1)\n' self.mod.write(code) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index('a_func') + 1) self.project.do(signature.get_changes( [change_signature.ArgumentNormalizer()])) expected = 'class A(object):\n' \ ' def a_func(self, param):\n' \ ' pass\n' \ 'a_var = A()\n' \ 'a_var.a_func(1)\n' self.assertEquals(expected, self.mod.read())
def test_normalizing_parameters_for_unsorted_keyword(self): self.mod.write( dedent("""\ def a_func(p1, p2): pass a_func(p2=2, p1=1)""" ) ) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index("a_func") + 1 ) self.project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) self.assertEqual( dedent("""\ def a_func(p1, p2): pass a_func(1, 2)""" ), self.mod.read() )
def test_preserving_args_and_keywords_order(self): self.mod.write( dedent("""\ def a_func(*args, **kwds): pass a_func(3, 1, 2, a=1, c=3, b=2) """) ) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index("a_func") + 1 ) self.project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) self.assertEqual( dedent("""\ def a_func(*args, **kwds): pass a_func(3, 1, 2, a=1, c=3, b=2) """), self.mod.read(), )
def test_normalizing_parameters_for_args_parameter_and_keywords(self): self.mod.write( dedent("""\ def a_func(param, *args): pass a_func(*[1, 2, 3]) """) ) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index("a_func") + 1 ) self.project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) self.assertEqual( dedent("""\ def a_func(param, *args): pass a_func(*[1, 2, 3]) """), self.mod.read(), )
def test_normalizing_parameters_for_unneeded_keyword_for_methods(self): code = dedent("""\ class A(object): def a_func(self, param): pass a_var = A() a_var.a_func(param=1) """) self.mod.write(code) signature = change_signature.ChangeSignature( self.project, self.mod, self.mod.read().index("a_func") + 1 ) self.project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) expected = dedent("""\ class A(object): def a_func(self, param): pass a_var = A() a_var.a_func(1) """) self.assertEqual(expected, self.mod.read())
from rope.refactor import change_signature import testutils project = testutils.sample_project() pycore = project.pycore mod = testutils.create_module(project, "mod") code = ("class A(object):\n" " def a_func(self, param):\n" " pass\n" "a_var = A()\n" "a_var.a_func(param=1)\n") mod.write(code) signature = change_signature.ChangeSignature(project, mod, mod.read().index("a_func") + 1) project.do(signature.get_changes([change_signature.ArgumentNormalizer()])) expected = ("class A(object):\n" " def a_func(self, param):\n" " pass\n" "a_var = A()\n" "a_var.a_func(1)\n") print("==================== Before Refactoring ====================") print(code) print("==================== After Refactoring =====================") print(mod.read())