Пример #1
0
def test_rename_mod(Script, dir_with_content):
    script = Script(
        'import modx; modx\n',
        path=os.path.join(dir_with_content, 'some_script.py'),
        project=medi.Project(dir_with_content),
    )
    refactoring = script.rename(line=1, new_name='modr')
    refactoring.apply()

    p1 = os.path.join(dir_with_content, 'modx.py')
    p2 = os.path.join(dir_with_content, 'modr.py')
    expected_code = 'import modr\nfoo\n'
    assert not os.path.exists(p1)
    with open(p2, newline='') as f:
        assert f.read() == expected_code

    assert refactoring.get_renames() == [(p1, p2)]

    assert refactoring.get_changed_files()[p1].get_new_code() == expected_code

    assert refactoring.get_diff() == dedent('''\
        rename from modx.py
        rename to modr.py
        --- modx.py
        +++ modr.py
        @@ -1,3 +1,3 @@
        -import modx
        +import modr
         foo
        --- some_script.py
        +++ some_script.py
        @@ -1,2 +1,2 @@
        -import modx; modx
        +import modr; modr
        ''').format(dir=dir_with_content)
Пример #2
0
 def refactor(self, environment):
     project = medi.Project(os.path.join(test_dir, 'refactor'))
     script = medi.Script(self._code,
                          path=self._path,
                          project=project,
                          environment=environment)
     refactor_func = getattr(script, self.refactor_type)
     return refactor_func(self._line_nr, self._index, **self._kwargs)
Пример #3
0
def test_sub_module(Script, medi_path):
    """
    ``full_name needs to check sys.path to actually find it's real path module
    path.
    """
    sys_path = [medi_path]
    project = medi.Project('.', sys_path=sys_path)
    defs = Script('from medi.api import classes; classes',
                  project=project).infer()
    assert [d.full_name for d in defs] == ['medi.api.classes']
    defs = Script('import medi.api; medi.api', project=project).infer()
    assert [d.full_name for d in defs] == ['medi.api']
Пример #4
0
def test_follow_definition_nested_import(Script):
    Script = partial(Script,
                     project=medi.Project(
                         join(test_dir, 'completion', 'import_tree')))
    types = check_follow_definition_types(Script, "import pkg.mod1; pkg")
    assert types == ['module']

    types = check_follow_definition_types(Script, "import pkg.mod1; pkg.mod1")
    assert types == ['module']

    types = check_follow_definition_types(Script,
                                          "import pkg.mod1; pkg.mod1.a")
    assert types == ['instance']
Пример #5
0
def test_completion_docstring(Script, medi_path):
    """
    Medi should follow imports in certain conditions
    """
    def docstr(src, result):
        c = Script(src, project=project).complete()[0]
        assert c.docstring(raw=True, fast=False) == cleandoc(result)

    project = medi.Project('.', sys_path=[medi_path])
    c = Script('import medi\nmed', project=project).complete()[0]
    assert c.docstring(fast=False) == cleandoc(medi_doc)

    docstr('import medi\nmedi.Scr', cleandoc(medi.Script.__doc__))

    docstr('abcd=3;abcd', '')
    docstr('"hello"\nabcd=3\nabcd', '')
    docstr(
        dedent('''
        def x():
            "hello"
            0
        x'''), 'hello')
    docstr(dedent('''
        def x():
            "hello";0
        x'''), 'hello')
    # Shouldn't work with a tuple.
    docstr(dedent('''
        def x():
            "hello",0
        x'''), '')
    # Should also not work if we rename something.
    docstr(
        dedent('''
        def x():
            "hello"
        y = x
        y'''), '')
Пример #6
0
def ScriptWithProject(Script):
    project = medi.Project(test_dir)
    return partial(medi.Script, project=project)