diff --git a/poetry/console/commands/installer_command.py b/poetry/console/commands/installer_command.py index 57df3c957f0..51647eff471 100644 --- a/poetry/console/commands/installer_command.py +++ b/poetry/console/commands/installer_command.py @@ -5,14 +5,21 @@ if TYPE_CHECKING: from poetry.installation.installer import Installer + from poetry.installation.installer import Optional class InstallerCommand(EnvCommand): def __init__(self): - self._installer = None + self._installer = None # type: Optional[Installer] super(InstallerCommand, self).__init__() + def reset_poetry(self): + super(InstallerCommand, self).reset_poetry() + + self._installer.set_package(self.poetry.package) + self._installer.set_locker(self.poetry.locker) + @property def installer(self): # type: () -> Installer return self._installer diff --git a/poetry/console/commands/remove.py b/poetry/console/commands/remove.py index a85d7ea86c7..a6242a3b603 100644 --- a/poetry/console/commands/remove.py +++ b/poetry/console/commands/remove.py @@ -60,7 +60,6 @@ def handle(self): # Update packages self.reset_poetry() - self._installer.set_package(self.poetry.package) self._installer.use_executor( self.poetry.config.get("experimental.new-installer", False) ) diff --git a/poetry/installation/installer.py b/poetry/installation/installer.py index 49015730615..f0c9a62d65d 100644 --- a/poetry/installation/installer.py +++ b/poetry/installation/installer.py @@ -79,6 +79,11 @@ def set_package(self, package): # type: (ProjectPackage) -> Installer return self + def set_locker(self, locker): # type: (Locker) -> Installer + self._locker = locker + + return self + def run(self): # Force update if there is no lock file present if not self._update and not self._locker.is_locked(): diff --git a/tests/console/commands/test_add.py b/tests/console/commands/test_add.py index 9572427c81b..1f6fb5680a4 100644 --- a/tests/console/commands/test_add.py +++ b/tests/console/commands/test_add.py @@ -792,6 +792,7 @@ def test_add_prefers_stable_releases(app, repo, tester): def test_add_with_lock(app, repo, tester): + content_hash = app.poetry.locker._get_content_hash() repo.add_package(get_package("cachy", "0.2.0")) tester.execute("cachy --lock") @@ -806,6 +807,7 @@ def test_add_with_lock(app, repo, tester): """ assert expected == tester.io.fetch_output() + assert content_hash != app.poetry.locker.lock_data["metadata"]["content-hash"] def test_add_no_constraint_old_installer(app, repo, installer, old_tester): diff --git a/tests/console/conftest.py b/tests/console/conftest.py index 2707dd1f071..034e47207f5 100644 --- a/tests/console/conftest.py +++ b/tests/console/conftest.py @@ -125,7 +125,9 @@ def reset_poetry(self): self._poetry = Factory().create_poetry(self._poetry.file.path.parent) self._poetry.set_pool(poetry.pool) self._poetry.set_config(poetry.config) - self._poetry.set_locker(poetry.locker) + self._poetry.set_locker( + Locker(poetry.locker.lock.path, self._poetry.local_config) + ) class Locker(BaseLocker): @@ -163,7 +165,7 @@ def _write_lock_data(self, data): self._locked = True return - self._lock_data = None + self._lock_data = data class Poetry(BasePoetry):