Commit 435739a4 by Sébastien Eustace Committed by Arun Babu Neelicattu

Fix the lock content hash not being updated with the add/remove commands

parent 6880fd6f
...@@ -5,14 +5,21 @@ from .env_command import EnvCommand ...@@ -5,14 +5,21 @@ from .env_command import EnvCommand
if TYPE_CHECKING: if TYPE_CHECKING:
from poetry.installation.installer import Installer from poetry.installation.installer import Installer
from poetry.installation.installer import Optional
class InstallerCommand(EnvCommand): class InstallerCommand(EnvCommand):
def __init__(self): def __init__(self):
self._installer = None self._installer = None # type: Optional[Installer]
super(InstallerCommand, self).__init__() 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 @property
def installer(self): # type: () -> Installer def installer(self): # type: () -> Installer
return self._installer return self._installer
......
...@@ -60,7 +60,6 @@ list of installed packages ...@@ -60,7 +60,6 @@ list of installed packages
# Update packages # Update packages
self.reset_poetry() self.reset_poetry()
self._installer.set_package(self.poetry.package)
self._installer.use_executor( self._installer.use_executor(
self.poetry.config.get("experimental.new-installer", False) self.poetry.config.get("experimental.new-installer", False)
) )
......
...@@ -79,6 +79,11 @@ class Installer: ...@@ -79,6 +79,11 @@ class Installer:
return self return self
def set_locker(self, locker): # type: (Locker) -> Installer
self._locker = locker
return self
def run(self): def run(self):
# Force update if there is no lock file present # Force update if there is no lock file present
if not self._update and not self._locker.is_locked(): if not self._update and not self._locker.is_locked():
......
...@@ -792,6 +792,7 @@ Package operations: 1 install, 0 updates, 0 removals ...@@ -792,6 +792,7 @@ Package operations: 1 install, 0 updates, 0 removals
def test_add_with_lock(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")) repo.add_package(get_package("cachy", "0.2.0"))
tester.execute("cachy --lock") tester.execute("cachy --lock")
...@@ -806,6 +807,7 @@ Writing lock file ...@@ -806,6 +807,7 @@ Writing lock file
""" """
assert expected == tester.io.fetch_output() 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): def test_add_no_constraint_old_installer(app, repo, installer, old_tester):
......
...@@ -125,7 +125,9 @@ class Application(BaseApplication): ...@@ -125,7 +125,9 @@ class Application(BaseApplication):
self._poetry = Factory().create_poetry(self._poetry.file.path.parent) self._poetry = Factory().create_poetry(self._poetry.file.path.parent)
self._poetry.set_pool(poetry.pool) self._poetry.set_pool(poetry.pool)
self._poetry.set_config(poetry.config) 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): class Locker(BaseLocker):
...@@ -163,7 +165,7 @@ class Locker(BaseLocker): ...@@ -163,7 +165,7 @@ class Locker(BaseLocker):
self._locked = True self._locked = True
return return
self._lock_data = None self._lock_data = data
class Poetry(BasePoetry): class Poetry(BasePoetry):
......
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