def test_load_successful_with_invalid_distribution( caplog: LogCaptureFixture, mocker: MockerFixture, env: MockEnv, tmp_dir: str ) -> None: invalid_dist_info = Path(tmp_dir) / "site-packages" / "invalid-0.1.0.dist-info" invalid_dist_info.mkdir(parents=True) mocker.patch( "poetry.utils._compat.metadata.Distribution.discover", return_value=INSTALLED_RESULTS + [metadata.PathDistribution(invalid_dist_info)], ) repository_with_invalid_distribution = InstalledRepository.load(env) assert ( len(repository_with_invalid_distribution.packages) == len(INSTALLED_RESULTS) - 1 ) assert len(caplog.messages) == 1 message = caplog.messages[0] assert message.startswith("Project environment contains an invalid distribution") assert str(invalid_dist_info) in message
from poetry.core.packages.package import Package from poetry.repositories.installed_repository import InstalledRepository from poetry.utils._compat import metadata from poetry.utils.env import MockEnv as BaseMockEnv from tests.compat import zipp FIXTURES_DIR = Path(__file__).parent / "fixtures" ENV_DIR = (FIXTURES_DIR / "installed").resolve() SITE_PURELIB = ENV_DIR / "lib" / "python3.7" / "site-packages" SITE_PLATLIB = ENV_DIR / "lib64" / "python3.7" / "site-packages" SRC = ENV_DIR / "src" VENDOR_DIR = ENV_DIR / "vendor" / "py3.7" INSTALLED_RESULTS = [ metadata.PathDistribution(SITE_PURELIB / "cleo-0.7.6.dist-info"), metadata.PathDistribution(SRC / "pendulum" / "pendulum.egg-info"), metadata.PathDistribution( zipp.Path(str(SITE_PURELIB / "foo-0.1.0-py3.8.egg"), "EGG-INFO") ), metadata.PathDistribution(VENDOR_DIR / "attrs-19.3.0.dist-info"), metadata.PathDistribution(SITE_PURELIB / "standard-1.2.3.dist-info"), metadata.PathDistribution(SITE_PURELIB / "editable-2.3.4.dist-info"), metadata.PathDistribution(SITE_PURELIB / "editable-with-import-2.3.4.dist-info"), metadata.PathDistribution(SITE_PLATLIB / "lib64-2.3.4.dist-info"), metadata.PathDistribution(SITE_PLATLIB / "bender-2.0.5.dist-info"), metadata.PathDistribution(SITE_PLATLIB / "invalid-0.0.1.dist-info"), ] class MockEnv(BaseMockEnv):
from poetry.repositories.installed_repository import InstalledRepository from poetry.utils._compat import Path from poetry.utils._compat import metadata from poetry.utils._compat import zipp from poetry.utils.env import MockEnv as BaseMockEnv FIXTURES_DIR = Path(__file__).parent / "fixtures" ENV_DIR = (FIXTURES_DIR / "installed").resolve() SITE_PACKAGES = ENV_DIR / "lib" / "python3.7" / "site-packages" SRC = ENV_DIR / "src" INSTALLED_RESULTS = [ metadata.PathDistribution(SITE_PACKAGES / "cleo-0.7.6.dist-info"), metadata.PathDistribution(SRC / "pendulum" / "pendulum.egg-info"), metadata.PathDistribution( zipp.Path(str(SITE_PACKAGES / "foo-0.1.0-py3.8.egg"), "EGG-INFO") ), ] class MockEnv(BaseMockEnv): @property def site_packages(self): # type: () -> Path return SITE_PACKAGES def test_load(mocker): mocker.patch( "poetry.utils._compat.metadata.Distribution.discover", return_value=INSTALLED_RESULTS, )
from tests.compat import zipp if TYPE_CHECKING: from _pytest.logging import LogCaptureFixture from poetry.core.packages.package import Package from pytest_mock.plugin import MockerFixture FIXTURES_DIR = Path(__file__).parent / "fixtures" ENV_DIR = (FIXTURES_DIR / "installed").resolve() SITE_PURELIB = ENV_DIR / "lib" / "python3.7" / "site-packages" SITE_PLATLIB = ENV_DIR / "lib64" / "python3.7" / "site-packages" SRC = ENV_DIR / "src" VENDOR_DIR = ENV_DIR / "vendor" / "py3.7" INSTALLED_RESULTS = [ metadata.PathDistribution(SITE_PURELIB / "cleo-0.7.6.dist-info"), metadata.PathDistribution(SRC / "pendulum" / "pendulum.egg-info"), metadata.PathDistribution( zipp.Path(str(SITE_PURELIB / "foo-0.1.0-py3.8.egg"), "EGG-INFO") ), metadata.PathDistribution(VENDOR_DIR / "attrs-19.3.0.dist-info"), metadata.PathDistribution(SITE_PURELIB / "standard-1.2.3.dist-info"), metadata.PathDistribution(SITE_PURELIB / "editable-2.3.4.dist-info"), metadata.PathDistribution(SITE_PURELIB / "editable-with-import-2.3.4.dist-info"), metadata.PathDistribution(SITE_PLATLIB / "lib64-2.3.4.dist-info"), metadata.PathDistribution(SITE_PLATLIB / "bender-2.0.5.dist-info"), metadata.PathDistribution(SITE_PURELIB / "git_pep_610-1.2.3.dist-info"), metadata.PathDistribution( SITE_PURELIB / "git_pep_610_no_requested_version-1.2.3.dist-info" ), metadata.PathDistribution(SITE_PURELIB / "url_pep_610-1.2.3.dist-info"),
from poetry.repositories.installed_repository import InstalledRepository from poetry.utils._compat import PY36 from poetry.utils._compat import Path from poetry.utils._compat import metadata from poetry.utils._compat import zipp from poetry.utils.env import MockEnv as BaseMockEnv from pytest_mock.plugin import MockFixture FIXTURES_DIR = Path(__file__).parent / "fixtures" ENV_DIR = (FIXTURES_DIR / "installed").resolve() SITE_PACKAGES = ENV_DIR / "lib" / "python3.7" / "site-packages" SRC = ENV_DIR / "src" VENDOR_DIR = ENV_DIR / "vendor" / "py3.7" INSTALLED_RESULTS = [ metadata.PathDistribution(SITE_PACKAGES / "cleo-0.7.6.dist-info"), metadata.PathDistribution(SRC / "pendulum" / "pendulum.egg-info"), metadata.PathDistribution( zipp.Path(str(SITE_PACKAGES / "foo-0.1.0-py3.8.egg"), "EGG-INFO")), metadata.PathDistribution(VENDOR_DIR / "attrs-19.3.0.dist-info"), metadata.PathDistribution(SITE_PACKAGES / "editable-2.3.4.dist-info"), metadata.PathDistribution(SITE_PACKAGES / "editable-with-import-2.3.4.dist-info"), ] class MockEnv(BaseMockEnv): @property def site_packages(self): # type: () -> Path return SITE_PACKAGES