aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-24 20:23:24 +0900
committernsfisis <nsfisis@gmail.com>2026-07-24 20:23:24 +0900
commit7392662eed92f00b41e173809fb51f6a21572003 (patch)
tree8593c85b071fe49d3b1793d12330a540da83ccc2 /crates/shirabe
parent70198f0c1e67594549193413fb8e86b1879dc41d (diff)
downloadphp-shirabe-7392662eed92f00b41e173809fb51f6a21572003.tar.gz
php-shirabe-7392662eed92f00b41e173809fb51f6a21572003.tar.zst
php-shirabe-7392662eed92f00b41e173809fb51f6a21572003.zip
fix(solver-problems): preserve first-occurrence order in extension hint
create_extension_hint's --ignore-platform-req suggestion list sorted missing extensions alphabetically before deduping. PHP's array_unique removes duplicates while preserving first-occurrence order instead, which for this call site matches the order problems were reported in (root-require-not-found problems before SAT-conflict problems). Replaced the sort+dedup with the existing order-preserving shirabe_php_shim::array_unique, which was already ported for exactly this PHP semantic but wasn't used here.
Diffstat (limited to 'crates/shirabe')
-rw-r--r--crates/shirabe/src/dependency_resolver/solver_problems_exception.rs4
-rw-r--r--crates/shirabe/tests/installer_test.rs4
2 files changed, 3 insertions, 5 deletions
diff --git a/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs b/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs
index 48fe76b3..39f2b2c1 100644
--- a/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs
+++ b/crates/shirabe/src/dependency_resolver/solver_problems_exception.rs
@@ -134,9 +134,7 @@ impl SolverProblemsException {
paths.remove(0);
}
- let mut unique_extensions: Vec<String> = missing_extensions.to_vec();
- unique_extensions.sort();
- unique_extensions.dedup();
+ let unique_extensions = shirabe_php_shim::array_unique(missing_extensions);
let ignore_extensions_arguments: String = unique_extensions
.iter()
.map(|ext| format!("--ignore-platform-req={}", ext))
diff --git a/crates/shirabe/tests/installer_test.rs b/crates/shirabe/tests/installer_test.rs
index e4fe681c..4c9b3d3a 100644
--- a/crates/shirabe/tests/installer_test.rs
+++ b/crates/shirabe/tests/installer_test.rs
@@ -1522,7 +1522,7 @@ pool_optimizer_test! {
pool_optimizer_update_dev_packages_updates_repo_url => "update-dev-packages-updates-repo-url.test";
pool_optimizer_update_dev_to_new_ref_picks_up_changes => "update-dev-to-new-ref-picks-up-changes.test";
pool_optimizer_update_downgrades_unstable_packages => "update-downgrades-unstable-packages.test";
- pool_optimizer_update_ignore_platform_package_requirement_list_upper_bounds => "update-ignore-platform-package-requirement-list-upper-bounds.test", ignore = "TODO(phase-d): known-failing fixture under COMPOSER_POOL_OPTIMIZER=1";
+ pool_optimizer_update_ignore_platform_package_requirement_list_upper_bounds => "update-ignore-platform-package-requirement-list-upper-bounds.test";
pool_optimizer_update_ignore_platform_package_requirement_list => "update-ignore-platform-package-requirement-list.test";
pool_optimizer_update_ignore_platform_package_requirement_wildcard => "update-ignore-platform-package-requirement-wildcard.test";
pool_optimizer_update_ignore_platform_package_requirements => "update-ignore-platform-package-requirements.test";
@@ -1712,7 +1712,7 @@ raw_pool_test! {
raw_pool_update_dev_packages_updates_repo_url => "update-dev-packages-updates-repo-url.test";
raw_pool_update_dev_to_new_ref_picks_up_changes => "update-dev-to-new-ref-picks-up-changes.test";
raw_pool_update_downgrades_unstable_packages => "update-downgrades-unstable-packages.test";
- raw_pool_update_ignore_platform_package_requirement_list_upper_bounds => "update-ignore-platform-package-requirement-list-upper-bounds.test", ignore = "TODO(phase-d): known-failing fixture under COMPOSER_POOL_OPTIMIZER=0";
+ raw_pool_update_ignore_platform_package_requirement_list_upper_bounds => "update-ignore-platform-package-requirement-list-upper-bounds.test";
raw_pool_update_ignore_platform_package_requirement_list => "update-ignore-platform-package-requirement-list.test";
raw_pool_update_ignore_platform_package_requirement_wildcard => "update-ignore-platform-package-requirement-wildcard.test";
raw_pool_update_ignore_platform_package_requirements => "update-ignore-platform-package-requirements.test";