Exemplo n.º 1
0
 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(),
     )
Exemplo n.º 2
0
 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())
Exemplo n.º 3
0
 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())
Exemplo n.º 4
0
 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())
Exemplo n.º 5
0
 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())
Exemplo n.º 6
0
 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())
Exemplo n.º 7
0
 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())
Exemplo n.º 8
0
 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())
Exemplo n.º 9
0
 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()
     )
Exemplo n.º 10
0
 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(),
     )
Exemplo n.º 11
0
 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(),
     )
Exemplo n.º 12
0
 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())