Fix some Windows related issues with absolute paths

This commit is contained in:
Dave Halter
2020-07-12 10:56:04 +02:00
parent a49c062b35
commit a16f52b9fb
3 changed files with 11 additions and 11 deletions

View File

@@ -1,6 +1,6 @@
import os
import re
from pathlib import Path, PurePath
from pathlib import Path
from importlib.machinery import all_suffixes
from jedi.inference.cache import inference_state_method_cache
@@ -15,7 +15,7 @@ _BUILDOUT_PATH_INSERTION_LIMIT = 10
def _abs_path(module_context, path: str):
path = PurePath(path)
path = Path(path)
if path.is_absolute():
return path
@@ -219,7 +219,7 @@ def transform_path_to_dotted(sys_path, module_path):
"""
Returns the dotted path inside a sys.path as a list of names. e.g.
>>> transform_path_to_dotted(["/foo"], Path('/foo/bar/baz.py'))
>>> transform_path_to_dotted([str(Path("/foo").absolute())], Path('/foo/bar/baz.py').absolute())
(('bar', 'baz'), False)
Returns (None, False) if the path doesn't really resolve to anything.

View File

@@ -58,17 +58,17 @@ def test_sys_path_with_modifications(Script):
""")
paths = Script(code, path=path)._inference_state.get_sys_path()
assert '/tmp/.buildout/eggs/important_package.egg' in paths
assert os.path.abspath('/tmp/.buildout/eggs/important_package.egg') in paths
def test_path_from_sys_path_assignment(Script):
code = dedent("""
code = dedent(f"""
#!/usr/bin/python
import sys
sys.path[0:0] = [
'/usr/lib/python3.8/site-packages',
'/home/test/.buildout/eggs/important_package.egg'
{os.path.abspath('/usr/lib/python3.8/site-packages')!r},
{os.path.abspath('/home/test/.buildout/eggs/important_package.egg')!r},
]
path[0:0] = [1]

View File

@@ -2,7 +2,7 @@ import os
from glob import glob
import sys
import shutil
from pathlib import Path, PurePath
from pathlib import Path
import pytest
@@ -18,9 +18,9 @@ def test_paths_from_assignment(Script):
return set(sys_path._paths_from_assignment(script._get_module_context(), expr_stmt))
# Normalize paths for Windows.
path_a = PurePath('/foo/a')
path_b = PurePath('/foo/b')
path_c = PurePath('/foo/c')
path_a = Path('/foo/a').absolute()
path_b = Path('/foo/b').absolute()
path_c = Path('/foo/c').absolute()
assert paths('sys.path[0:0] = ["a"]') == {path_a}
assert paths('sys.path = ["b", 1, x + 3, y, "c"]') == {path_b, path_c}