From 67a895e94fcec59c560641bcb7e6f5df199774c5 Mon Sep 17 00:00:00 2001 From: David Hotham Date: Sat, 1 Oct 2022 14:23:16 +0100 Subject: [PATCH 1/3] removing tomlkit from poetry locker --- tests/conftest.py | 2 +- tests/helpers.py | 15 ++++++--------- tests/test_exporter.py | 5 ++--- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index cf04914..9840896 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -179,7 +179,7 @@ def _factory( poetry = Factory().create_poetry(project_dir) - locker = TestLocker(poetry.locker.lock.path, poetry.locker._local_config) + locker = TestLocker(poetry.locker.lock, poetry.locker._local_config) locker.write() poetry.set_locker(locker) diff --git a/tests/helpers.py b/tests/helpers.py index 4ab87c0..ba099cc 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -3,24 +3,21 @@ import os from contextlib import contextmanager +from pathlib import Path from typing import TYPE_CHECKING from typing import Any from typing import Iterator from poetry.console.application import Application -from poetry.core.toml.file import TOMLFile from poetry.factory import Factory from poetry.installation.executor import Executor from poetry.packages import Locker if TYPE_CHECKING: - from pathlib import Path - from poetry.core.packages.package import Package from poetry.installation.operations.operation import Operation from poetry.poetry import Poetry - from tomlkit.toml_document import TOMLDocument class PoetryTestApplication(Application): @@ -35,15 +32,15 @@ def reset_poetry(self) -> None: self._poetry.set_pool(poetry.pool) self._poetry.set_config(poetry.config) self._poetry.set_locker( - TestLocker(poetry.locker.lock.path, self._poetry.local_config) + TestLocker(poetry.locker.lock, self._poetry.local_config) ) class TestLocker(Locker): def __init__(self, lock: str | Path, local_config: dict[str, Any]) -> None: - self._lock = TOMLFile(lock) + self._lock = lock if isinstance(lock, Path) else Path(lock) self._local_config = local_config - self._lock_data: TOMLDocument | None = None + self._lock_data: dict[str, Any] | None = None self._content_hash = self._get_content_hash() self._locked = False self._write = False @@ -63,12 +60,12 @@ def locked(self, is_locked: bool = True) -> TestLocker: def mock_lock_data(self, data: dict[str, Any]) -> None: self.locked() - self._lock_data = data # type: ignore[assignment] + self._lock_data = data def is_fresh(self) -> bool: return True - def _write_lock_data(self, data: TOMLDocument) -> None: + def _write_lock_data(self, data: dict[str, Any]) -> None: if self._write: super()._write_lock_data(data) self._locked = True diff --git a/tests/test_exporter.py b/tests/test_exporter.py index 9dd4375..9f533aa 100644 --- a/tests/test_exporter.py +++ b/tests/test_exporter.py @@ -9,7 +9,6 @@ from cleo.io.null_io import NullIO from poetry.core.packages.dependency import Dependency from poetry.core.packages.dependency_group import MAIN_GROUP -from poetry.core.toml.file import TOMLFile from poetry.core.version.markers import parse_marker from poetry.factory import Factory from poetry.packages import Locker as BaseLocker @@ -46,7 +45,7 @@ class Locker(BaseLocker): def __init__(self, fixture_root: Path) -> None: - self._lock = TOMLFile(fixture_root / "poetry.lock") + self._lock = fixture_root / "poetry.lock" self._locked = True self._content_hash = self._get_content_hash() @@ -56,7 +55,7 @@ def locked(self, is_locked: bool = True) -> Locker: return self def mock_lock_data(self, data: dict[str, Any]) -> None: - self._lock_data = data # type: ignore[assignment] + self._lock_data = data def is_locked(self) -> bool: return self._locked From 79b3f5e1b27d944247477cd2df08f376584722a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Randy=20D=C3=B6ring?= <30527984+radoering@users.noreply.github.com> Date: Wed, 2 Nov 2022 14:41:53 +0100 Subject: [PATCH 2/3] make tests forward compatible --- tests/conftest.py | 9 ++++++++- tests/helpers.py | 24 ++++++++++++++---------- tests/test_exporter.py | 5 ++--- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 9840896..23c8c10 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,6 +11,7 @@ from poetry.config.config import Config as BaseConfig from poetry.config.dict_config_source import DictConfigSource from poetry.core.packages.package import Package +from poetry.core.toml import TOMLFile from poetry.factory import Factory from poetry.layouts import layout from poetry.repositories import Repository @@ -179,7 +180,13 @@ def _factory( poetry = Factory().create_poetry(project_dir) - locker = TestLocker(poetry.locker.lock, poetry.locker._local_config) + lock = poetry.locker.lock + if isinstance(lock, TOMLFile): + # poetry < 1.3 + lock_path = lock.path + else: + lock_path = lock + locker = TestLocker(lock_path, poetry.locker._local_config) locker.write() poetry.set_locker(locker) diff --git a/tests/helpers.py b/tests/helpers.py index ba099cc..4929f58 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -3,21 +3,24 @@ import os from contextlib import contextmanager -from pathlib import Path from typing import TYPE_CHECKING from typing import Any from typing import Iterator from poetry.console.application import Application +from poetry.core.toml import TOMLFile from poetry.factory import Factory from poetry.installation.executor import Executor from poetry.packages import Locker if TYPE_CHECKING: + from pathlib import Path + from poetry.core.packages.package import Package from poetry.installation.operations.operation import Operation from poetry.poetry import Poetry + from tomlkit.toml_document import TOMLDocument class PoetryTestApplication(Application): @@ -31,17 +34,18 @@ def reset_poetry(self) -> None: self._poetry = Factory().create_poetry(poetry.file.path.parent) self._poetry.set_pool(poetry.pool) self._poetry.set_config(poetry.config) - self._poetry.set_locker( - TestLocker(poetry.locker.lock, self._poetry.local_config) - ) + lock = poetry.locker.lock + if isinstance(lock, TOMLFile): + # poetry < 1.3 + lock_path = lock.path + else: + lock_path = lock + self._poetry.set_locker(TestLocker(lock_path, self._poetry.local_config)) class TestLocker(Locker): def __init__(self, lock: str | Path, local_config: dict[str, Any]) -> None: - self._lock = lock if isinstance(lock, Path) else Path(lock) - self._local_config = local_config - self._lock_data: dict[str, Any] | None = None - self._content_hash = self._get_content_hash() + super().__init__(lock, local_config) self._locked = False self._write = False self._contains_credential = False @@ -60,12 +64,12 @@ def locked(self, is_locked: bool = True) -> TestLocker: def mock_lock_data(self, data: dict[str, Any]) -> None: self.locked() - self._lock_data = data + self._lock_data = data # type: ignore[assignment] def is_fresh(self) -> bool: return True - def _write_lock_data(self, data: dict[str, Any]) -> None: + def _write_lock_data(self, data: TOMLDocument) -> None: if self._write: super()._write_lock_data(data) self._locked = True diff --git a/tests/test_exporter.py b/tests/test_exporter.py index 9f533aa..7acecc4 100644 --- a/tests/test_exporter.py +++ b/tests/test_exporter.py @@ -45,9 +45,8 @@ class Locker(BaseLocker): def __init__(self, fixture_root: Path) -> None: - self._lock = fixture_root / "poetry.lock" + super().__init__(fixture_root / "poetry.lock", {}) self._locked = True - self._content_hash = self._get_content_hash() def locked(self, is_locked: bool = True) -> Locker: self._locked = is_locked @@ -55,7 +54,7 @@ def locked(self, is_locked: bool = True) -> Locker: return self def mock_lock_data(self, data: dict[str, Any]) -> None: - self._lock_data = data + self._lock_data = data # type: ignore[assignment] def is_locked(self) -> bool: return self._locked From fa645d770d288f8a63d4040e7bca3d8a5e184932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Randy=20D=C3=B6ring?= <30527984+radoering@users.noreply.github.com> Date: Thu, 3 Nov 2022 17:49:38 +0100 Subject: [PATCH 3/3] avoid import of TOMLFile from poetry.core.toml because it will be moved from poetry-core to poetry --- tests/conftest.py | 8 ++++---- tests/helpers.py | 11 +++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 23c8c10..6cc23d4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -5,13 +5,13 @@ from pathlib import Path from typing import TYPE_CHECKING from typing import Any +from typing import cast import pytest from poetry.config.config import Config as BaseConfig from poetry.config.dict_config_source import DictConfigSource from poetry.core.packages.package import Package -from poetry.core.toml import TOMLFile from poetry.factory import Factory from poetry.layouts import layout from poetry.repositories import Repository @@ -181,11 +181,11 @@ def _factory( poetry = Factory().create_poetry(project_dir) lock = poetry.locker.lock - if isinstance(lock, TOMLFile): + if isinstance(lock, Path): + lock_path = cast("Path", lock) + else: # poetry < 1.3 lock_path = lock.path - else: - lock_path = lock locker = TestLocker(lock_path, poetry.locker._local_config) locker.write() diff --git a/tests/helpers.py b/tests/helpers.py index 4929f58..b88dd24 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -3,20 +3,19 @@ import os from contextlib import contextmanager +from pathlib import Path from typing import TYPE_CHECKING from typing import Any from typing import Iterator +from typing import cast from poetry.console.application import Application -from poetry.core.toml import TOMLFile from poetry.factory import Factory from poetry.installation.executor import Executor from poetry.packages import Locker if TYPE_CHECKING: - from pathlib import Path - from poetry.core.packages.package import Package from poetry.installation.operations.operation import Operation from poetry.poetry import Poetry @@ -35,11 +34,11 @@ def reset_poetry(self) -> None: self._poetry.set_pool(poetry.pool) self._poetry.set_config(poetry.config) lock = poetry.locker.lock - if isinstance(lock, TOMLFile): + if isinstance(lock, Path): + lock_path = cast("Path", lock) + else: # poetry < 1.3 lock_path = lock.path - else: - lock_path = lock self._poetry.set_locker(TestLocker(lock_path, self._poetry.local_config))