From 2af684c6397001944c9d9aac20ca59677d6a9650 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 3 May 2026 12:32:10 +0900 Subject: fix(install): emit MarkAliasUninstalled and fix dev-branch upgrade direction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two pieces of Composer's update-trace machinery were missing: 1. VersionParser::isUpgrade in Composer\Package\Version (which overrides the upstream Semver one) substitutes dev-master / dev-trunk / dev-default with the 9999999-dev default-branch alias, then returns true whenever either side starts with `dev-`. Mozart's is_upgrade compared via the generic version order, so dev-master → dev-foo came out as Downgrading. Port the override. 2. Transaction::calculateOperations seeds removeAliasMap from the currently-installed AliasPackages and emits MarkAliasUninstalled for every entry not covered by the new lock. Mozart never emitted those, so updating away from a branch-aliased package produced no trace line for the alias retirement. Walk installed.json's `extra.branch-alias` map, compare against the new lock's aliases[] block, and emit a MarkAliasUninstalled PackageOperation (a new variant on the executor surface — no filesystem effects, only the trace recorder cares). Unblocks update_alias, update_alias_lock2, and update_no_dev_still_resolves_dev installer fixtures. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/mozart/tests/installer.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/mozart/tests') diff --git a/crates/mozart/tests/installer.rs b/crates/mozart/tests/installer.rs index 07e69d2..0cf7e84 100644 --- a/crates/mozart/tests/installer.rs +++ b/crates/mozart/tests/installer.rs @@ -366,9 +366,9 @@ installer_fixture!( update_abandoned_package_required_but_blocked_via_audit_config, ignore ); -installer_fixture!(update_alias, ignore); +installer_fixture!(update_alias); installer_fixture!(update_alias_lock, ignore); -installer_fixture!(update_alias_lock2, ignore); +installer_fixture!(update_alias_lock2); installer_fixture!(update_all); installer_fixture!(update_all_dry_run); installer_fixture!(update_allow_list); @@ -408,7 +408,7 @@ installer_fixture!(update_installed_reference); installer_fixture!(update_installed_reference_dry_run); installer_fixture!(update_mirrors_changes_url, ignore); installer_fixture!(update_mirrors_fails_with_new_req, ignore); -installer_fixture!(update_no_dev_still_resolves_dev, ignore); +installer_fixture!(update_no_dev_still_resolves_dev); installer_fixture!(update_no_install); installer_fixture!(update_package_present_in_lock_but_not_at_all_in_remote); installer_fixture!(update_package_present_in_lock_but_not_in_remote); -- cgit v1.3.1