diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-27 21:12:20 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-27 21:12:20 +0900 |
| commit | 0020a39197a53a14c130ee12759e8cb9002636ef (patch) | |
| tree | fc4419caf8c24d8ab22a4999faaf255005515d4a /crates/shirabe/tests/command/remove_command_test.rs | |
| parent | 9759168c0c9b8120980b06734c0c029712bc7861 (diff) | |
| download | php-shirabe-0020a39197a53a14c130ee12759e8cb9002636ef.tar.gz php-shirabe-0020a39197a53a14c130ee12759e8cb9002636ef.tar.zst php-shirabe-0020a39197a53a14c130ee12759e8cb9002636ef.zip | |
feat(installer): register default installers after Composer Rc is built
LibraryInstaller and PluginInstaller upgrade the Composer back-reference
in their constructors, so they could not be built inside Rc::new_cyclic
where the weak handle is not yet upgradeable. Defer create_default_
installers until after the cyclic Rc is established, where the weak
handle resolves, and implement it to register Library -> Plugin ->
Metapackage with a single shared BinaryInstaller.
To share one BinaryInstaller (as Composer does), LibraryInstaller's
binary_installer becomes Rc<RefCell<dyn BinaryInstallerInterface>>
instead of an owned Box; PluginInstaller and the __set_binary_installer
test seam follow.
This clears "Unknown installer type: metapackage". Un-ignores the six
remove tests that now pass; the remaining install/remove tests are
re-labeled for the next blocker (InstallationManager::execute_batch
still leaves the install/cleanup/repo.write promise chain as a todo!()
stub, so package operations do not actually execute).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/command/remove_command_test.rs')
| -rw-r--r-- | crates/shirabe/tests/command/remove_command_test.rs | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/crates/shirabe/tests/command/remove_command_test.rs b/crates/shirabe/tests/command/remove_command_test.rs index a27976a..8d76b64 100644 --- a/crates/shirabe/tests/command/remove_command_test.rs +++ b/crates/shirabe/tests/command/remove_command_test.rs @@ -84,7 +84,6 @@ fn test_exception_when_running_unused_without_lock_file() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] #[test] #[serial] fn test_warning_when_removing_non_existent_package() { @@ -257,7 +256,6 @@ fn test_message_output_when_no_unused_packages_to_remove() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] #[test] #[serial] fn test_remove_unused_package() { @@ -323,7 +321,7 @@ fn test_remove_unused_package() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] +#[ignore = "InstallationManager::execute_batch only awaits prepare(); the install/update/uninstall + cleanup + repo.write promise chain is still a todo!() stub, so package operations do not actually execute"] #[test] #[serial] fn test_remove_package_by_name() { @@ -408,7 +406,6 @@ fn test_remove_package_by_name() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] #[test] #[serial] fn test_remove_package_by_name_with_dry_run() { @@ -495,7 +492,7 @@ fn test_remove_package_by_name_with_dry_run() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] +#[ignore = "InstallationManager::execute_batch only awaits prepare(); the install/update/uninstall + cleanup + repo.write promise chain is still a todo!() stub, so package operations do not actually execute"] #[test] #[serial] fn test_remove_allowed_plugin_package_with_no_other_allowed_plugins() { @@ -553,7 +550,6 @@ fn test_remove_allowed_plugin_package_with_no_other_allowed_plugins() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] #[test] #[serial] fn test_remove_allowed_plugin_package_with_other_allowed_plugins() { @@ -605,7 +601,6 @@ fn test_remove_allowed_plugin_package_with_other_allowed_plugins() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] #[test] #[serial] fn test_remove_packages_by_vendor() { @@ -689,7 +684,6 @@ fn test_remove_packages_by_vendor() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] #[test] #[serial] fn test_remove_packages_by_vendor_with_dry_run() { @@ -811,7 +805,7 @@ fn test_warning_when_removing_packages_by_vendor_from_wrong_type() { drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] +#[ignore = "InstallationManager::execute_batch only awaits prepare(); the install/update/uninstall + cleanup + repo.write promise chain is still a todo!() stub, so package operations do not actually execute"] #[test] #[serial] fn test_package_still_present_error_when_no_install_flag_used() { @@ -968,7 +962,7 @@ fn run_update_inherited_dependencies_flag_case( drop(tear_down); } -#[ignore = "remove runs the post-remove Installer, which fails with 'Unknown installer type: metapackage': Factory::create_default_installers (factory.rs:1234-1256) registers no installers yet, blocked on the composer construction-ordering / shared-ownership rework (installers need the composer weak handle, available only after the Rc is established)"] +#[ignore = "InstallationManager::execute_batch only awaits prepare(); the install/update/uninstall + cleanup + repo.write promise chain is still a todo!() stub, so package operations do not actually execute"] #[test] #[serial] fn test_update_inherited_dependencies_flag_is_passed_to_post_remove_installer() { |
