Commit f6b06805 by Arun Babu Neelicattu

installed repository: refactor test cases

parent cee833ac
import pytest
from poetry.repositories.installed_repository import InstalledRepository from poetry.repositories.installed_repository import InstalledRepository
from poetry.utils._compat import PY36
from poetry.utils._compat import Path from poetry.utils._compat import Path
from poetry.utils._compat import metadata from poetry.utils._compat import metadata
from poetry.utils._compat import zipp from poetry.utils._compat import zipp
from poetry.utils.env import MockEnv as BaseMockEnv from poetry.utils.env import MockEnv as BaseMockEnv
from pytest_mock.plugin import MockFixture
FIXTURES_DIR = Path(__file__).parent / "fixtures" FIXTURES_DIR = Path(__file__).parent / "fixtures"
...@@ -28,7 +32,13 @@ class MockEnv(BaseMockEnv): ...@@ -28,7 +32,13 @@ class MockEnv(BaseMockEnv):
return SITE_PACKAGES return SITE_PACKAGES
def test_load(mocker): @pytest.fixture
def env(): # type: () -> MockEnv
return MockEnv(path=ENV_DIR)
@pytest.fixture
def repository(mocker, env): # type: (MockFixture, MockEnv) -> InstalledRepository
mocker.patch( mocker.patch(
"poetry.utils._compat.metadata.Distribution.discover", "poetry.utils._compat.metadata.Distribution.discover",
return_value=INSTALLED_RESULTS, return_value=INSTALLED_RESULTS,
...@@ -45,10 +55,19 @@ def test_load(mocker): ...@@ -45,10 +55,19 @@ def test_load(mocker):
], ],
) )
mocker.patch("poetry.repositories.installed_repository._VENDORS", str(VENDOR_DIR)) mocker.patch("poetry.repositories.installed_repository._VENDORS", str(VENDOR_DIR))
repository = InstalledRepository.load(MockEnv(path=ENV_DIR)) return InstalledRepository.load(env)
def test_load_successful(repository):
assert len(repository.packages) == 5 assert len(repository.packages) == 5
def test_load_ensure_isolation(repository):
for pkg in repository.packages:
assert pkg.name != "attrs"
def test_load_standard_package(repository):
cleo = repository.packages[0] cleo = repository.packages[0]
assert cleo.name == "cleo" assert cleo.name == "cleo"
assert cleo.version.text == "0.7.6" assert cleo.version.text == "0.7.6"
...@@ -61,6 +80,8 @@ def test_load(mocker): ...@@ -61,6 +80,8 @@ def test_load(mocker):
assert foo.name == "foo" assert foo.name == "foo"
assert foo.version.text == "0.1.0" assert foo.version.text == "0.1.0"
def test_load_git_package(repository):
pendulum = repository.packages[4] pendulum = repository.packages[4]
assert pendulum.name == "pendulum" assert pendulum.name == "pendulum"
assert pendulum.version.text == "2.0.5" assert pendulum.version.text == "2.0.5"
...@@ -69,16 +90,23 @@ def test_load(mocker): ...@@ -69,16 +90,23 @@ def test_load(mocker):
assert pendulum.source_url == "https://github.com/sdispater/pendulum.git" assert pendulum.source_url == "https://github.com/sdispater/pendulum.git"
assert pendulum.source_reference == "bb058f6b78b2d28ef5d9a5e759cfa179a1a713d6" assert pendulum.source_reference == "bb058f6b78b2d28ef5d9a5e759cfa179a1a713d6"
for pkg in repository.packages:
assert pkg.name != "attrs"
@pytest.mark.skipif(
not PY36, reason="pathlib.resolve() does not support strict argument"
)
def test_load_editable_package(repository):
# test editable package with text .pth file # test editable package with text .pth file
editable = repository.packages[1] editable = repository.packages[1]
assert editable.name == "editable" assert editable.name == "editable"
assert editable.version.text == "2.3.4" assert editable.version.text == "2.3.4"
assert editable.source_type == "directory" assert editable.source_type == "directory"
assert editable.source_url == Path("/path/to/editable").as_posix() assert (
editable.source_url
== Path("/path/to/editable").resolve(strict=False).as_posix()
)
def test_load_editable_with_import_package(repository):
# test editable package with executable .pth file # test editable package with executable .pth file
editable = repository.packages[2] editable = repository.packages[2]
assert editable.name == "editable-with-import" assert editable.name == "editable-with-import"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment