From 9a2cee2532e5d28d5cea5726f35ab3c7046e7c0d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 19 Jul 2026 19:41:15 +0900 Subject: fix(root-package-loader): un-ignore 4 tests by fixing stability-flag isset() port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit extract_stability_flags ported PHP's `isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability` as `unwrap_or(i64::MAX) > stability`, so the check always short-circuited to "already more unstable" and no flag (e.g. from an explicit `*@dev` requirement) was ever recorded. Fixed using Option::is_some_and, a direct translation of PHP's isset() && ... check. Also fixes tests/common/test_case.rs's shared installation_manager() helper, which built a real InstallationManager::new instead of the __new_mock constructor (mirroring PHP's FactoryMock::createInstallationManager()), so it always had zero installers registered and wrote install-path: null into fixture installed.json files. Un-ignores test_reinstall_command, test_locally_modified_packages_from_source/ _from_dist, and test_package_still_present_error_when_no_install_flag_used — the first three were already passing (their #[ignore] reasons were stale), the last is fixed by the test_case.rs change above. Updates the #[ignore] reasons on installer_test.rs's three fixture-driven integration tests to reflect their current state: the install pipeline now runs end-to-end, but the ~189-fixture installer/ set still hits several independent, unrelated bugs/gaps that need case-by-case triage rather than a single fix. Co-Authored-By: Claude Sonnet 5 --- crates/shirabe/tests/command/reinstall_command_test.rs | 1 - crates/shirabe/tests/command/remove_command_test.rs | 1 - crates/shirabe/tests/command/status_command_test.rs | 6 ------ 3 files changed, 8 deletions(-) (limited to 'crates/shirabe/tests/command') diff --git a/crates/shirabe/tests/command/reinstall_command_test.rs b/crates/shirabe/tests/command/reinstall_command_test.rs index ba3d39aa..ecd98c37 100644 --- a/crates/shirabe/tests/command/reinstall_command_test.rs +++ b/crates/shirabe/tests/command/reinstall_command_test.rs @@ -62,7 +62,6 @@ fn cases() -> Vec<(&'static str, Vec<(&'static str, PhpMixed)>, &'static str)> { #[test] #[serial] -#[ignore = "ReinstallCommand::execute defers the two InstallationManager::execute(...) calls (Phase-C: needs a &mut InstalledRepositoryInterface view of local_repo, and InstallationManager::execute is itself todo!()), so no Removing/Installing lines are emitted and the output is empty. Only the \"not installed\" case, which aborts with warnings before reaching that code, would pass"] fn test_reinstall_command() { for (label, options, expected) in cases() { let composer_json = serde_json::json!({ diff --git a/crates/shirabe/tests/command/remove_command_test.rs b/crates/shirabe/tests/command/remove_command_test.rs index 64604632..75ef5075 100644 --- a/crates/shirabe/tests/command/remove_command_test.rs +++ b/crates/shirabe/tests/command/remove_command_test.rs @@ -811,7 +811,6 @@ fn test_warning_when_removing_packages_by_vendor_from_wrong_type() { drop(tear_down); } -#[ignore = "installed.json records install-path: null instead of the expected \"../root/req\": the InstallationManager that writes the local repo in the --no-install (update && !install) flow has no installers registered (n_installers=0), so get_install_path()->get_installer() fails and yields null. Separate from the execute_batch fix; needs the default installers wired onto that manager."] #[test] #[serial] fn test_package_still_present_error_when_no_install_flag_used() { diff --git a/crates/shirabe/tests/command/status_command_test.rs b/crates/shirabe/tests/command/status_command_test.rs index 9752fe1a..32b8390a 100644 --- a/crates/shirabe/tests/command/status_command_test.rs +++ b/crates/shirabe/tests/command/status_command_test.rs @@ -115,9 +115,6 @@ fn run_locally_modified_packages_case( #[test] #[serial] -#[ignore = "runs `install` to download the package (git source / dist zip) before `status`, but \ - InstallationManager::execute is still a todo!() stub so install never populates vendor/, \ - and init_temp_composer disables packagist.org — running this needs a real VCS/zip fixture"] fn test_locally_modified_packages_from_source() { run_locally_modified_packages_case( serde_json::json!({ "require": { "composer/class-map-generator": "^1.0" } }), @@ -135,9 +132,6 @@ fn test_locally_modified_packages_from_source() { #[test] #[serial] -#[ignore = "runs `install` to download the package (git source / dist zip) before `status`, but \ - InstallationManager::execute is still a todo!() stub so install never populates vendor/, \ - and init_temp_composer disables packagist.org — running this needs a real VCS/zip fixture"] fn test_locally_modified_packages_from_dist() { run_locally_modified_packages_case( serde_json::json!({ "require": { "smarty/smarty": "^3.1" } }), -- cgit v1.3.1