def setUp(self):
     super(AutoImportObservingTest, self).setUp()
     self.project = testutils.sample_project()
     self.mod1 = testutils.create_module(self.project, "mod1")
     self.pkg = testutils.create_package(self.project, "pkg")
     self.mod2 = testutils.create_module(self.project, "mod2", self.pkg)
     self.importer = autoimport.AutoImport(self.project, observe=True)
Esempio n. 2
0
 def test_not_reaching_maximum_recursions_when_importing_variables(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('from mod2 import myvar\n')
     mod2.write('from mod1 import myvar\n')
     pymod1 = self.pycore.resource_to_pyobject(mod1)
     pymod1['myvar'].get_object()
 def setUp(self):
     super(AutoImportTest, self).setUp()
     self.project = testutils.sample_project(extension_modules=["sys"])
     self.mod1 = testutils.create_module(self.project, "mod1")
     self.pkg = testutils.create_package(self.project, "pkg")
     self.mod2 = testutils.create_module(self.project, "mod2", self.pkg)
     self.importer = autoimport.AutoImport(self.project, observe=False)
Esempio n. 4
0
 def test_get_definition_location_for_filtered_packages(self):
     pkg = testutils.create_package(self.project, 'pkg')
     testutils.create_module(self.project, 'mod', pkg)
     init_module = self.pycore.get_module('pkg.__init__')
     mod = self.pycore.get_string_module('import pkg.mod')
     pkg_pyname = mod['pkg']
     self.assertEquals((init_module, 1), pkg_pyname.get_definition_location())
Esempio n. 5
0
 def test_not_reaching_maximum_recursions_with_from_star_imports(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('from mod2 import *\n')
     mod2.write('from mod1 import *\n')
     pymod1 = self.pycore.resource_to_pyobject(mod1)
     pymod1.get_attributes()
Esempio n. 6
0
 def setUp(self):
     super(AutoImportTest, self).setUp()
     self.project = testutils.sample_project()
     self.mod1 = testutils.create_module(self.project, 'mod1')
     self.pkg = testutils.create_package(self.project, 'pkg')
     self.mod2 = testutils.create_module(self.project, 'mod2', self.pkg)
     self.importer = autoimport.AutoImport(self.project, observe=False)
Esempio n. 7
0
 def test_imported_as_names(self):
     testutils.create_module(self.project, 'mod1')
     mod = testutils.create_module(self.project, 'mod2')
     mod.write('import mod1 as my_import\n')
     module = self.pycore.get_module('mod2')
     imported_mod = module['my_import'].get_object()
     self.assertEquals(get_base_type('Module'), imported_mod.get_type())
Esempio n. 8
0
 def setUp(self):
     super(GenerateTest, self).setUp()
     self.project = testutils.sample_project()
     self.pycore = self.project.get_pycore()
     self.mod = testutils.create_module(self.project, 'mod1')
     self.mod2 = testutils.create_module(self.project, 'mod2')
     self.pkg = testutils.create_package(self.project, 'pkg')
Esempio n. 9
0
 def test_imported_names(self):
     testutils.create_module(self.project, 'mod1')
     mod = testutils.create_module(self.project, 'mod2')
     mod.write('import mod1\n')
     module = self.project.get_module('mod2')
     imported_sys = module['mod1'].get_object()
     self.assertEquals(get_base_type('Module'), imported_sys.get_type())
Esempio n. 10
0
 def test_get_pyname_definition_location_importes(self):
     testutils.create_module(self.project, 'mod')
     mod = libutils.get_string_module(self.project, 'import mod\n')
     imported_module = self.project.get_module('mod')
     module_pyname = mod['mod']
     self.assertEquals((imported_module, 1),
                       module_pyname.get_definition_location())
Esempio n. 11
0
 def test_completing_names_after_from_import2(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('myvar = None\n')
     result = self._assist('from mod1 import ', resource=mod2)
     self.assertTrue(len(result) > 0)
     self.assert_completion_in_result('myvar', 'global', result)
Esempio n. 12
0
 def xxx_test_from_package_import_package(self):
     pkg1 = testutils.create_package(self.project, 'pkg1')
     pkg2 = testutils.create_package(self.project, 'pkg2', pkg1)
     testutils.create_module(self.project, 'mod', pkg2)
     mod = self.pycore.get_string_module('from pkg1 import pkg2\n')
     package = mod['pkg2']
     self.assertEquals(0, len(package.get_attributes()))
Esempio n. 13
0
 def test_circular_imports2(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write(
         'from mod2 import Sample2\nclass Sample1(object):\n    pass\n')
     mod2.write(
         'from mod1 import Sample1\nclass Sample2(object):\n    pass\n')
     self.project.get_module('mod1').get_attributes()
Esempio n. 14
0
 def test_find_occurrences_resources_parameter(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('a_var = 1\n')
     mod2.write('import mod1\nmy_var = mod1.a_var')
     result = find_occurrences(self.project, mod1, 1, resources=[mod1])
     self.assertEquals(1, len(result))
     self.assertEquals((mod1, 0), (result[0].resource, result[0].offset))
Esempio n. 15
0
 def test_renaming_resources_using_rename_module_refactoring(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('a_var = 1')
     mod2.write('import mod1\nmy_var = mod1.a_var\n')
     renamer = rename.Rename(self.project, mod1)
     renamer.get_changes('newmod').do()
     self.assertEquals('import newmod\nmy_var = newmod.a_var\n', mod2.read())
Esempio n. 16
0
 def test_relative_imports_for_string_scopes(self):
     pkg = testutils.create_package(self.project, 'pkg')
     mod1 = testutils.create_module(self.project, 'mod1', pkg)
     mod2 = testutils.create_module(self.project, 'mod2', pkg)
     mod2.write('import mod1\n')
     mod1_object = self.pycore.resource_to_pyobject(mod1)
     mod2_scope = self.pycore.get_string_scope(mod2.read(), mod2)
     self.assertEquals(mod1_object, mod2_scope['mod1'].get_object())
Esempio n. 17
0
    def setUp(self):
        super(AddImportTest, self).setUp()
        self.project = testutils.sample_project()

        self.mod1 = testutils.create_module(self.project, "mod1")
        self.mod2 = testutils.create_module(self.project, "mod2")
        self.pkg = testutils.create_package(self.project, "pkg")
        self.mod3 = testutils.create_module(self.project, "mod3", self.pkg)
Esempio n. 18
0
 def test_module_dti(self):
     mod1 = testutils.create_module(self.project, "mod1")
     mod2 = testutils.create_module(self.project, "mod2")
     code = 'import mod1\ndef a_func(arg):\n    return eval("arg")\n' "a_var = a_func(mod1)\n"
     mod2.write(code)
     self.pycore.run_module(mod2).wait_process()
     pymod2 = self.pycore.resource_to_pyobject(mod2)
     self.assertEquals(self.pycore.resource_to_pyobject(mod1), pymod2["a_var"].get_object())
Esempio n. 19
0
 def test_new_style_relative_imports(self):
     pkg = testutils.create_package(self.project, 'pkg')
     mod1 = testutils.create_module(self.project, 'mod1', pkg)
     mod2 = testutils.create_module(self.project, 'mod2', pkg)
     mod2.write('from . import mod1\n')
     mod1_object = self.pycore.resource_to_pyobject(mod1)
     mod2_object = self.pycore.resource_to_pyobject(mod2)
     self.assertEquals(mod1_object, mod2_object['mod1'].get_object())
Esempio n. 20
0
 def test_nested_modules(self):
     pkg = testutils.create_package(self.project, 'pkg')
     testutils.create_module(self.project, 'mod', pkg)
     imported_module = self.project.get_module('pkg.mod')
     scope = libutils.get_string_scope(self.project, 'import pkg.mod\n')
     mod_pyobject = scope['pkg'].get_object()['mod']
     self.assertEquals((imported_module, 1),
                       mod_pyobject.get_definition_location())
Esempio n. 21
0
 def test_assist_on_relative_imports(self):
     pkg = testutils.create_package(self.project, 'pkg')
     mod1 = testutils.create_module(self.project, 'mod1', pkg)
     mod2 = testutils.create_module(self.project, 'mod2', pkg)
     mod1.write('def a_func():\n    pass\n')
     code = 'import mod1\nmod1.'
     result = self._assist(code, resource=mod2)
     self.assert_completion_in_result('a_func', 'attribute', result)
Esempio n. 22
0
 def test_get_doc_on_relative_imports(self):
     pkg = testutils.create_package(self.project, 'pkg')
     mod1 = testutils.create_module(self.project, 'mod1', pkg)
     mod2 = testutils.create_module(self.project, 'mod2', pkg)
     mod1.write('def a_func():\n    """hey"""\n    pass\n')
     code = 'import mod1\nmod1.a_func\n'
     result = get_doc(self.project, code, len(code) - 2, mod2)
     self.assertTrue(result.endswith('hey'))
Esempio n. 23
0
 def test_from_package_import_module_get_definition_location(self):
     pkg = testutils.create_package(self.project, 'pkg')
     testutils.create_module(self.project, 'mod', pkg)
     pkg_mod = self.pycore.get_module('pkg.mod')
     mod = self.pycore.get_string_module('from pkg import mod\n')
     imported_mod = mod['mod']
     self.assertEquals((pkg_mod, 1),
                       imported_mod.get_definition_location())
Esempio n. 24
0
 def test_applying_all_changes_together(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('import mod2\nmod2.a_func()\n')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod2.write('def a_func():\n    pass\na_func()\n')
     self._rename(mod2, len(mod2.read()) - 5, 'new_func')
     self.assertEquals('import mod2\nmod2.new_func()\n', mod1.read())
     self.assertEquals('def new_func():\n    pass\nnew_func()\n',
                       mod2.read())
Esempio n. 25
0
 def test_renaming_modules_aliased(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('def a_func():\n    pass\n')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod2.write('import mod1 as m\nm.a_func()\n')
     self._rename(mod1, None, 'newmod')
     self.assertTrue(not mod1.exists() and
                     self.project.find_module('newmod') is not None)
     self.assertEquals('import newmod as m\nm.a_func()\n', mod2.read())
Esempio n. 26
0
 def test_renaming_modules(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('def a_func():\n    pass\n')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod2.write('from mod1 import a_func\n')
     self._rename(mod2, mod2.read().index('mod1') + 1, 'newmod')
     self.assertTrue(not mod1.exists() and
                     self.project.find_module('newmod') is not None)
     self.assertEquals('from newmod import a_func\n', mod2.read())
Esempio n. 27
0
 def test_get_location_on_relative_imports(self):
     pkg = testutils.create_package(self.project, 'pkg')
     mod1 = testutils.create_module(self.project, 'mod1', pkg)
     mod2 = testutils.create_module(self.project, 'mod2', pkg)
     mod1.write('def a_func():\n    pass\n')
     code = 'import mod1\nmod1.a_func\n'
     result = get_definition_location(self.project, code,
                                      len(code) - 2, mod2)
     self.assertEquals((mod1, 1), result)
Esempio n. 28
0
 def test_resources_parameter_not_changing_defining_module(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod1.write('def f():\n    pass\n')
     mod2.write('import mod1\nmod1.f()\n')
     self._rename(mod1, mod1.read().rindex('f'), 'g',
                  resources=[mod2])
     self.assertEquals('def f():\n    pass\n', mod1.read())
     self.assertEquals('import mod1\nmod1.g()\n', mod2.read())
Esempio n. 29
0
 def test_renaming_functions_from_another_module(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('def a_func():\n    pass\na_func()\n')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod2.write('import mod1\nmod1.a_func()\n')
     self._rename(mod2, len(mod2.read()) - 5, 'new_func')
     self.assertEquals('def new_func():\n    pass\nnew_func()\n',
                       mod1.read())
     self.assertEquals('import mod1\nmod1.new_func()\n', mod2.read())
Esempio n. 30
0
 def test_undoing_renaming_modules(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('def a_func():\n    pass\n')
     mod2 = testutils.create_module(self.project, 'mod2')
     mod2.write('from mod1 import a_func\n')
     self._rename(mod2, 6, 'newmod')
     self.project.history.undo()
     self.assertEquals('mod1.py', mod1.path)
     self.assertEquals('from mod1 import a_func\n', mod2.read())
Esempio n. 31
0
 def test_caching_pymodule_with_syntax_errors(self):
     self.project.prefs['ignore_syntax_errors'] = True
     self.project.prefs['automatic_soa'] = True
     self.project.pycore._init_automatic_soa()
     source = 'import sys\nab cd'
     mod = testutils.create_module(self.project, 'mod')
     mod.write(source)
     from rope.contrib import fixsyntax
     fixer = fixsyntax.FixSyntax(self.project.pycore, source, mod, 10)
     pymodule = fixer.get_pymodule()
     self.assertTrue(pymodule.source_code.startswith('import sys\npass\n'))
Esempio n. 32
0
 def test_invalidating_cache_after_resource_change_for_init_dot_pys(self):
     pkg = testutils.create_package(self.project, 'pkg')
     mod = testutils.create_module(self.project, 'mod')
     init_dot_py = pkg.get_child('__init__.py')
     init_dot_py.write('a_var = 10\n')
     mod.write('import pkg\n')
     pymod = self.project.get_module('mod')
     self.assertTrue('a_var' in pymod['pkg'].get_object())
     init_dot_py.write('new_var = 10\n')
     self.assertTrue(
         'a_var' not in pymod['pkg'].get_object().get_attributes())
Esempio n. 33
0
 def test_renaming_when_unsure_with_confirmation(self):
     def confirm(occurrence):
         return False
     code = 'class C(object):\n    def a_func(self):\n        pass\n' \
            'def f(arg):\n    arg.a_func()\n'
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write(code)
     self._rename(mod1, code.index('a_func'), 'new_func', unsure=confirm)
     self.assertEqual(
         'class C(object):\n    def new_func(self):\n        pass\n'
         'def f(arg):\n    arg.a_func()\n', mod1.read())
Esempio n. 34
0
 def test_renaming_when_unsure_not_renaming_knowns(self):
     code = 'class C1(object):\n    def a_func(self):\n        pass\n' \
            'class C2(object):\n    def a_func(self):\n        pass\n' \
            'c1 = C1()\nc1.a_func()\nc2 = C2()\nc2.a_func()\n'
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write(code)
     self._rename(mod1, code.index('a_func'), 'new_func', unsure=self._true)
     self.assertEqual(
         'class C1(object):\n    def new_func(self):\n        pass\n'
         'class C2(object):\n    def a_func(self):\n        pass\n'
         'c1 = C1()\nc1.new_func()\nc2 = C2()\nc2.a_func()\n', mod1.read())
Esempio n. 35
0
 def test_changing_occurrs_in_the_same_module_with_conflict_ranges(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class C(object):\n' \
            '    def create(self):\n' \
            '        return C()\n'
     mod.write(code)
     self._introduce_factory(mod, mod.read().index('C'), 'create_c', True)
     expected = 'class C(object):\n' \
                '    def create(self):\n' \
                '        return create_c()\n'
     self.assertTrue(mod.read().startswith(expected))
Esempio n. 36
0
 def test_adding_factory_for_global_factories(self):
     code = 'class AClass(object):\n    an_attr = 10\n'
     mod = testutils.create_module(self.project, 'mod')
     mod.write(code)
     expected = 'class AClass(object):\n' \
                '    an_attr = 10\n\n' \
                'def create(*args, **kwds):\n' \
                '    return AClass(*args, **kwds)\n'
     self._introduce_factory(mod, mod.read().index('AClass') + 1,
                             'create', global_factory=True)
     self.assertEqual(expected, mod.read())
Esempio n. 37
0
 def test_class_methods(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class SampleClass(object):\n' \
            '    def sample_method(self):\n' \
            '        pass\n'
     mod.write(code)
     mod_element = self.project.get_module('mod')
     sample_class = mod_element['SampleClass'].get_object()
     self.assertTrue('sample_method' in sample_class)
     method = sample_class['sample_method'].get_object()
     self.assertEquals(get_base_type('Function'), method.get_type())
Esempio n. 38
0
 def test_resources_parameter(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(1)\n')
     signature = change_signature.ChangeSignature(
         self.project, mod1,
         mod1.read().index('a_func') + 1)
     signature.get_changes([change_signature.ArgumentRemover(0)],
                           resources=[mod1]).do()
     self.assertEquals('import mod1\nmod1.a_func(1)\n', self.mod.read())
     self.assertEquals('def a_func():\n    pass\n', mod1.read())
Esempio n. 39
0
 def test_not_leaking_for_vars_inside_parent_scope(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class C(object):\n' \
            '    def f(self):\n' \
            '        for my_var1, my_var2 in []:\n' \
            '            pass\n'
     mod.write(code)
     pymod = self.pycore.resource_to_pyobject(mod)
     c_class = pymod['C'].get_object()
     self.assertFalse('my_var1' in c_class)
     self.assertFalse('my_var2' in c_class)
Esempio n. 40
0
 def test_find_occurrences_and_class_hierarchies(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('class A(object):\n    def f():\n        pass\n'
                'class B(A):\n    def f():\n        pass\n')
     offset = mod1.read().rindex('f')
     result1 = find_occurrences(self.project, mod1, offset)
     result2 = find_occurrences(self.project,
                                mod1,
                                offset,
                                in_hierarchy=True)
     self.assertEqual(1, len(result1))
     self.assertEqual(2, len(result2))
Esempio n. 41
0
 def test_class_attributes_set_in_init_overwriting_a_defined(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class C(object):\n' \
            '    def __init__(self):\n' \
            '        self.f = 20\n' \
            '    def f():\n' \
            '        pass\n'
     mod.write(code)
     mod_element = self.project.get_module('mod')
     sample_class = mod_element['C'].get_object()
     f = sample_class['f'].get_object()
     self.assertTrue(isinstance(f, AbstractFunction))
Esempio n. 42
0
    def test_class_from_another_module_dti(self):
        mod1 = testutils.create_module(self.project, "mod1")
        mod2 = testutils.create_module(self.project, "mod2")
        code1 = dedent("""\
            class AClass(object):
                pass
        """)
        code2 = dedent("""\
            from mod1 import AClass

            def a_func(arg):
                return eval("arg")
            a_var = a_func(AClass)
        """)
        mod1.write(code1)
        mod2.write(code2)
        self.pycore.run_module(mod2).wait_process()
        # pymod1 = self.project.get_pymodule(mod1)
        pymod2 = self.project.get_pymodule(mod2)
        self.assertEqual(pymod2["AClass"].get_object(),
                         pymod2["a_var"].get_object())
Esempio n. 43
0
 def test_rename_in_module_renaming_one_letter_names_for_expressions(self):
     mod1 = testutils.create_module(self.project, 'mod1')
     mod1.write('a = 10\nprint(1+a)\n')
     pymod = self.project.get_module('mod1')
     old_pyname = pymod['a']
     finder = rope.refactor.occurrences.create_finder(
         self.project, 'a', old_pyname)
     refactored = rename.rename_in_module(finder,
                                          'new_var',
                                          pymodule=pymod,
                                          replace_primary=True)
     self.assertEquals('new_var = 10\nprint(1+new_var)\n', refactored)
Esempio n. 44
0
    def test_changing_occurrences_in_other_modules(self):
        mod1 = testutils.create_module(self.project, "mod1")
        mod2 = testutils.create_module(self.project, "mod2")
        mod1.write("class AClass(object):\n    an_attr = 10\n")
        mod2.write("import mod1\na_var = mod1.AClass()\n")
        self._introduce_factory(mod1,
                                mod1.read().index("AClass") + 1, "create")
        expected1 = dedent("""\
            class AClass(object):
                an_attr = 10

                @staticmethod
                def create(*args, **kwds):
                    return AClass(*args, **kwds)
        """)
        expected2 = dedent("""\
            import mod1
            a_var = mod1.AClass.create()
        """)
        self.assertEqual(expected1, mod1.read())
        self.assertEqual(expected2, mod2.read())
Esempio n. 45
0
 def test_function_argument_dti2(self):
     mod = testutils.create_module(self.project, "mod")
     code = dedent("""\
         def a_func(arg, a_builtin_type):
             pass
         a_func(a_func, [])
     """)
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     pyscope = self.project.get_pymodule(mod).get_scope()
     self.assertEqual(pyscope["a_func"].get_object(),
                      pyscope.get_scopes()[0]["arg"].get_object())
Esempio n. 46
0
 def test_strs_and_dynamicoi(self):
     mod = testutils.create_module(self.project, "mod")
     code = dedent("""\
         def a_func(arg):
             return eval("arg")
         a_var = a_func("hey")
     """)
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     pymod = self.project.get_pymodule(mod)
     a_var = pymod["a_var"].get_object()
     self.assertTrue(isinstance(a_var.get_type(), rope.base.builtins.Str))
Esempio n. 47
0
 def test_simple_dti(self):
     mod = testutils.create_module(self.project, "mod")
     code = dedent("""\
         def a_func(arg):
             return eval("arg")
         a_var = a_func(a_func)
     """)
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     pymod = self.project.get_pymodule(mod)
     self.assertEqual(pymod["a_func"].get_object(),
                      pymod["a_var"].get_object())
Esempio n. 48
0
 def test_trivial_find_implementations(self):
     mod1 = testutils.create_module(self.project, "mod1")
     mod1.write(
         dedent("""\
             class A(object):
                 def f(self):
                     pass
         """)
     )
     offset = mod1.read().rindex("f(")
     result = find_implementations(self.project, mod1, offset)
     self.assertEqual([], result)
Esempio n. 49
0
    def test_handling_relative_imports_when_inlining(self):
        pkg = testutils.create_package(self.project, "pkg")
        mod3 = testutils.create_module(self.project, "mod3", pkg)
        mod4 = testutils.create_module(self.project, "mod4", pkg)
        mod4.write("var = 1\n")
        mod3.write(
            dedent("""\
                from . import mod4

                def f():
                    print(mod4.var)
            """))
        self.mod.write(
            dedent("""\
                import pkg.mod3

                pkg.mod3.f()
            """))
        self._inline2(self.mod, self.mod.read().index("f(") + 1)
        # Cannot determine the exact import
        self.assertTrue("\n\nprint(mod4.var)\n" in self.mod.read())
Esempio n. 50
0
    def test_renaming_methods_in_sibling_classes(self):
        mod = testutils.create_module(self.project, 'mod1')
        mod.write('class A(object):\n    def a_method(self):\n        pass\n'
                  'class B(A):\n    def a_method(self):\n        pass\n'
                  'class C(A):\n    def a_method(self):\n        pass\n')

        self._rename(mod, mod.read().rindex('a_method') + 1, 'new_method',
                     in_hierarchy=True)
        self.assertEquals(
            'class A(object):\n    def new_method(self):\n        pass\n'
            'class B(A):\n    def new_method(self):\n        pass\n'
            'class C(A):\n    def new_method(self):\n        pass\n',
            mod.read())
Esempio n. 51
0
    def test_import_if_necessary_in_other_mods_for_global_factories(self):
        mod1 = testutils.create_module(self.project, "mod1")
        mod2 = testutils.create_module(self.project, "mod2")
        mod1.write("class AClass(object):\n    an_attr = 10\n")
        mod2.write("from mod1 import AClass\npair = AClass(), AClass\n")
        self._introduce_factory(mod1,
                                mod1.read().index("AClass") + 1,
                                "create",
                                global_factory=True)
        expected1 = dedent("""\
            class AClass(object):
                an_attr = 10

            def create(*args, **kwds):
                return AClass(*args, **kwds)
        """)
        expected2 = dedent("""\
            from mod1 import AClass, create
            pair = create(), AClass
        """)
        self.assertEqual(expected1, mod1.read())
        self.assertEqual(expected2, mod2.read())
Esempio n. 52
0
 def test_changing_occurances_for_renamed_classes(self):
     code = 'class AClass(object):\n    an_attr = 10\na_class = AClass\na_var = a_class()'
     mod = testutils.create_module(self.project, 'mod')
     mod.write(code)
     expected = 'class AClass(object):\n' \
                '    an_attr = 10\n\n' \
                '    @staticmethod\n' \
                '    def create(*args, **kwds):\n' \
                '        return AClass(*args, **kwds)\n' \
                'a_class = AClass\n' \
                'a_var = a_class()'
     self._introduce_factory(mod, mod.read().index('a_class') + 1, 'create')
     self.assertEquals(expected, mod.read())
Esempio n. 53
0
 def test_invalidating_cache_after_rsrc_chng_for_nested_init_dot_pys(self):
     pkg1 = testutils.create_package(self.project, 'pkg1')
     pkg2 = testutils.create_package(self.project, 'pkg2', pkg1)
     mod = testutils.create_module(self.project, 'mod')
     init_dot_py = pkg2.get_child('__init__.py')
     init_dot_py.write('a_var = 10\n')
     mod.write('import pkg1\n')
     pymod = self.project.get_module('mod')
     self.assertTrue(
         'a_var' in pymod['pkg1'].get_object()['pkg2'].get_object())
     init_dot_py.write('new_var = 10\n')
     self.assertTrue(
         'a_var' not in pymod['pkg1'].get_object()['pkg2'].get_object())
Esempio n. 54
0
 def test_handling_generator_functions_for_strs(self):
     mod = testutils.create_module(self.project, "mod")
     mod.write(
         dedent("""\
             def f():
                 yield ""
             for s in f():
                 a_var = s
         """)
     )
     pymod = self.project.get_pymodule(mod)
     a_var = pymod["a_var"].get_object()
     self.assertTrue(isinstance(a_var.get_type(), rope.base.builtins.Str))
Esempio n. 55
0
 def test_variables_defined_in_excepts(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'try:\n' \
            '    myvar1 = 1\n' \
            'except:\n' \
            '    myvar2 = 1\n' \
            'finally:\n' \
            '    myvar3 = 1\n'
     mod.write(code)
     pymod = self.pycore.resource_to_pyobject(mod)
     self.assertTrue('myvar1' in pymod)
     self.assertTrue('myvar2' in pymod)
     self.assertTrue('myvar3' in pymod)
Esempio n. 56
0
 def test_a_function_with_different_returns(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class C1(object):\n    pass\nclass C2(object):\n    pass\n' \
            'def a_func(arg):\n    return eval("arg")\n' \
            'a = a_func(C1())\nb = a_func(C2())\n'
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     pymod = self.project.get_pymodule(mod)
     c1_class = pymod['C1'].get_object()
     c2_class = pymod['C2'].get_object()
     a_var = pymod['a'].get_object()
     b_var = pymod['b'].get_object()
     self.assertEqual(c1_class, a_var.get_type())
     self.assertEqual(c2_class, b_var.get_type())
Esempio n. 57
0
 def test_arguments_with_keywords(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class C1(object):\n    pass\nclass C2(object):\n    pass\n' \
            'def a_func(arg):\n    return eval("arg")\n' \
            'a = a_func(arg=C1())\nb = a_func(arg=C2())\n'
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     pymod = self.pycore.resource_to_pyobject(mod)
     c1_class = pymod['C1'].get_object()
     c2_class = pymod['C2'].get_object()
     a_var = pymod['a'].get_object()
     b_var = pymod['b'].get_object()
     self.assertEquals(c1_class, a_var.get_type())
     self.assertEquals(c2_class, b_var.get_type())
Esempio n. 58
0
    def test_not_saving_unknown_function_returns(self):
        mod2 = testutils.create_module(self.project, 'mod2')
        self.mod.write('class C(object):\n    pass\nl = []\nl.append(C())\n')
        mod2.write('import mod\ndef f():\n    return mod.l.pop()\na_var = f()\n')
        pymod = self.pycore.resource_to_pyobject(self.mod)
        pymod2 = self.pycore.resource_to_pyobject(mod2)
        c_class = pymod['C'].get_object()
        a_var = pymod2['a_var']

        self.pycore.analyze_module(mod2)
        self.assertNotEquals(c_class, a_var.get_object().get_type())

        self.pycore.analyze_module(self.mod)
        self.assertEquals(c_class, a_var.get_object().get_type())
Esempio n. 59
0
 def test_dict_keys_and_dynamicoi2(self):
     mod = testutils.create_module(self.project, 'mod')
     code = 'class C1(object):\n    pass\nclass C2(object):\n    pass\n' \
            'def a_func(arg):\n    return eval("arg")\n' \
            'a, b = a_func((C1(), C2()))\n'
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     pymod = self.project.get_pymodule(mod)
     c1_class = pymod['C1'].get_object()
     c2_class = pymod['C2'].get_object()
     a_var = pymod['a'].get_object()
     b_var = pymod['b'].get_object()
     self.assertEqual(c1_class, a_var.get_type())
     self.assertEqual(c2_class, b_var.get_type())
Esempio n. 60
0
 def test_invalidating_data_after_changing(self):
     mod = testutils.create_module(self.project, "mod")
     code = dedent("""\
         def a_func(arg):
             return eval("arg")
         a_var = a_func(a_func)
     """)
     mod.write(code)
     self.pycore.run_module(mod).wait_process()
     mod.write(code.replace("a_func", "newfunc"))
     mod.write(code)
     pymod = self.project.get_pymodule(mod)
     self.assertNotEqual(pymod["a_func"].get_object(),
                         pymod["a_var"].get_object())