diff --git a/jedi/api/project.py b/jedi/api/project.py index 1e4bc08c..0e319279 100644 --- a/jedi/api/project.py +++ b/jedi/api/project.py @@ -67,7 +67,7 @@ class Project(object): """ def py2_comp(path, environment=None, sys_path=None, smart_sys_path=True, _django=False): - self._path = path + self._path = os.path.abspath(path) if isinstance(environment, SameEnvironment): self._environment = environment diff --git a/jedi/evaluate/imports.py b/jedi/evaluate/imports.py index e6dbd419..93ae4631 100644 --- a/jedi/evaluate/imports.py +++ b/jedi/evaluate/imports.py @@ -217,7 +217,7 @@ def _level_to_base_import_path(project_path, directory, level): level_import_paths.insert(0, dir_name) d = os.path.dirname(d) else: - return None, d + return None, directory class Importer(object): diff --git a/test/test_evaluate/test_imports.py b/test/test_evaluate/test_imports.py index 44941287..9c2f6f96 100644 --- a/test/test_evaluate/test_imports.py +++ b/test/test_evaluate/test_imports.py @@ -314,17 +314,14 @@ def test_relative_imports_x(Script): @cwd_at('test/examples/issue1209/api/whatever/') def test_relative_imports_without_path(Script): - script = Script("from . ") - name, import_ = script.completions() - assert import_.name == 'import' - assert name.name == 'api_test1' + project = Project('.', sys_path=[], smart_sys_path=False) + script = Script("from . ", _project=project) + assert [c.name for c in script.completions()] == ['api_test1', 'import'] - script = Script("from .. ") - name, import_ = script.completions() - assert import_.name == 'whatever' - assert name.name == 'import' + script = Script("from .. ", _project=project) + assert [c.name for c in script.completions()] == ['import', 'whatever'] - script = Script("from ... ") + script = Script("from ... ", _project=project) assert [c.name for c in script.completions()] == ['api', 'import', 'whatever'] @@ -347,6 +344,9 @@ def test_relative_import_out_of_file_system(Script): (5, '/a/b/c', '/a', (None, None)), (1, '/', '/', ([], '/')), (2, '/', '/', (None, None)), + (1, '/a/b', '/a/b/c', (None, '/a/b')), + (2, '/a/b', '/a/b/c', (None, '/a')), + (3, '/a/b', '/a/b/c', (None, '/')), ] ) def test_level_to_import_path(level, directory, project_path, result):