1
+ import pytest
2
+
1
3
from poetry .repositories .installed_repository import InstalledRepository
2
4
from poetry .utils ._compat import Path
3
5
from poetry .utils ._compat import metadata
4
6
from poetry .utils ._compat import zipp
5
7
from poetry .utils .env import MockEnv as BaseMockEnv
8
+ from pytest_mock .plugin import MockFixture
6
9
7
10
8
11
FIXTURES_DIR = Path (__file__ ).parent / "fixtures"
@@ -28,7 +31,13 @@ def site_packages(self): # type: () -> Path
28
31
return SITE_PACKAGES
29
32
30
33
31
- def test_load (mocker ):
34
+ @pytest .fixture
35
+ def env (): # type: () -> MockEnv
36
+ return MockEnv (path = ENV_DIR )
37
+
38
+
39
+ @pytest .fixture
40
+ def repository (mocker , env ): # type: (MockFixture, MockEnv) -> InstalledRepository
32
41
mocker .patch (
33
42
"poetry.utils._compat.metadata.Distribution.discover" ,
34
43
return_value = INSTALLED_RESULTS ,
@@ -45,10 +54,19 @@ def test_load(mocker):
45
54
],
46
55
)
47
56
mocker .patch ("poetry.repositories.installed_repository._VENDORS" , str (VENDOR_DIR ))
48
- repository = InstalledRepository .load (MockEnv (path = ENV_DIR ))
57
+ return InstalledRepository .load (env )
58
+
49
59
60
+ def test_load_successful (repository ):
50
61
assert len (repository .packages ) == 5
51
62
63
+
64
+ def test_load_ensure_isolation (repository ):
65
+ for pkg in repository .packages :
66
+ assert pkg .name != "attrs"
67
+
68
+
69
+ def test_load_standard_package (repository ):
52
70
cleo = repository .packages [0 ]
53
71
assert cleo .name == "cleo"
54
72
assert cleo .version .text == "0.7.6"
@@ -61,6 +79,8 @@ def test_load(mocker):
61
79
assert foo .name == "foo"
62
80
assert foo .version .text == "0.1.0"
63
81
82
+
83
+ def test_load_git_package (repository ):
64
84
pendulum = repository .packages [4 ]
65
85
assert pendulum .name == "pendulum"
66
86
assert pendulum .version .text == "2.0.5"
@@ -69,16 +89,17 @@ def test_load(mocker):
69
89
assert pendulum .source_url == "https://github.com/sdispater/pendulum.git"
70
90
assert pendulum .source_reference == "bb058f6b78b2d28ef5d9a5e759cfa179a1a713d6"
71
91
72
- for pkg in repository .packages :
73
- assert pkg .name != "attrs"
74
92
93
+ def test_load_editable_package (repository ):
75
94
# test editable package with text .pth file
76
95
editable = repository .packages [1 ]
77
96
assert editable .name == "editable"
78
97
assert editable .version .text == "2.3.4"
79
98
assert editable .source_type == "directory"
80
- assert editable .source_url == Path ("/path/to/editable" ).as_posix ()
99
+ assert editable .source_url == Path ("/path/to/editable" ).resolve ().as_posix ()
100
+
81
101
102
+ def test_load_editable_with_import_package (repository ):
82
103
# test editable package with executable .pth file
83
104
editable = repository .packages [2 ]
84
105
assert editable .name == "editable-with-import"
0 commit comments