diff options
Diffstat (limited to 'crates/mozart')
| -rw-r--r-- | crates/mozart/src/commands/update.rs | 13 | ||||
| -rw-r--r-- | crates/mozart/tests/installer.rs | 2 |
2 files changed, 11 insertions, 4 deletions
diff --git a/crates/mozart/src/commands/update.rs b/crates/mozart/src/commands/update.rs index 43825f2..2853fc8 100644 --- a/crates/mozart/src/commands/update.rs +++ b/crates/mozart/src/commands/update.rs @@ -1102,7 +1102,12 @@ pub async fn run( root_version: composer_json.version.clone(), require, require_dev, - include_dev: dev_mode, + // Mirrors `Composer\Installer::doUpdate` line 498: + // `requirePackagesForUpdate($request, $lockedRepo, true)` — + // require-dev is always part of the first solve, regardless of + // --no-dev. The flag only affects what gets installed and the + // packages-dev split in the lock file. + include_dev: true, minimum_stability, stability_flags: IndexMap::new(), prefer_stable, @@ -1283,12 +1288,14 @@ pub async fn run( resolved = apply_patch_only(resolved, lock); } - // Step 9: Generate new lock file + // Step 9: Generate new lock file. `include_dev: true` matches Composer: + // `update --no-dev` still writes a complete lock file with packages-dev + // populated, so a later `install` (with dev_mode) sees them. let new_lock = lockfile::generate_lock_file(&lockfile::LockFileGenerationRequest { resolved_packages: resolved, composer_json_content: composer_json_content.clone(), composer_json: composer_json.clone(), - include_dev: dev_mode, + include_dev: true, repositories: repositories.clone(), previous_lock: old_lock.clone(), }) diff --git a/crates/mozart/tests/installer.rs b/crates/mozart/tests/installer.rs index 06c7581..fd8ab73 100644 --- a/crates/mozart/tests/installer.rs +++ b/crates/mozart/tests/installer.rs @@ -311,7 +311,7 @@ installer_fixture!(provider_can_coexist_with_other_version_of_provided); installer_fixture!(provider_conflicts); installer_fixture!(provider_conflicts2); installer_fixture!(provider_conflicts3); -installer_fixture!(provider_dev_require_can_satisfy_require, ignore); +installer_fixture!(provider_dev_require_can_satisfy_require); installer_fixture!(provider_gets_picked_together_with_other_version_of_provided); installer_fixture!( provider_gets_picked_together_with_other_version_of_provided_conflict, |
