diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-03 22:11:09 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-03 22:11:09 +0900 |
| commit | 6d036ca5b0e6cb21e5b12a02d544a27e33a97a14 (patch) | |
| tree | 7bb13b6db63a6c1ef75b1bb90345b30a52758ca8 /crates/mozart/tests | |
| parent | 38706a6f0ceb773d473c4f5ddebf49e8e5ae46dc (diff) | |
| download | php-mozart-6d036ca5b0e6cb21e5b12a02d544a27e33a97a14.tar.gz php-mozart-6d036ca5b0e6cb21e5b12a02d544a27e33a97a14.tar.zst php-mozart-6d036ca5b0e6cb21e5b12a02d544a27e33a97a14.zip | |
fix(update): unlock replacer when --with-deps walks a replaced require
`expand_with_(direct|all)_dependencies` only looked up dependencies by
their literal name in the lock. When a transitive require pointed at a
virtual / replaced name (e.g. `replaced/pkg1`) and the lock owned it
through another package's `replace` map (e.g. `dep/pkg1` replaces
`replaced/pkg1`), the replacer never entered the unlock set. The
partial-update resolver then left it pinned at its lock version and
silently kept the user on the old release. Mirror Composer's replace
branch in `PoolBuilder::loadPackage`: build a `replaced → replacers`
index over the lock and route every dep walked during expansion
through it before recursing.
Diffstat (limited to 'crates/mozart/tests')
| -rw-r--r-- | crates/mozart/tests/installer.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crates/mozart/tests/installer.rs b/crates/mozart/tests/installer.rs index e9f2749..c3e1f7d 100644 --- a/crates/mozart/tests/installer.rs +++ b/crates/mozart/tests/installer.rs @@ -299,7 +299,7 @@ installer_fixture!( ignore ); installer_fixture!(partial_update_with_dependencies_provide); -installer_fixture!(partial_update_with_dependencies_replace, ignore); +installer_fixture!(partial_update_with_dependencies_replace); installer_fixture!(partial_update_with_deps_warns_root); installer_fixture!(partial_update_with_symlinked_path_repos); installer_fixture!(partial_update_without_lock); |
