diff options
Diffstat (limited to 'crates/shirabe')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/problem.rs | 15 | ||||
| -rw-r--r-- | crates/shirabe/tests/installer_test.rs | 6 |
2 files changed, 13 insertions, 8 deletions
diff --git a/crates/shirabe/src/dependency_resolver/problem.rs b/crates/shirabe/src/dependency_resolver/problem.rs index 5ff949a9..a2072372 100644 --- a/crates/shirabe/src/dependency_resolver/problem.rs +++ b/crates/shirabe/src/dependency_resolver/problem.rs @@ -13,9 +13,9 @@ use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; use shirabe_external_packages::symfony::console::formatter::OutputFormatter; use shirabe_php_shim::{ - LogicException, PhpMixed, defined, extension_loaded, implode, in_array, php_regex, phpversion, - spl_object_hash, sprintf, str_replace, str_starts_with, stripos, strpos, strtolower, substr, - substr_count, version_compare, + LogicException, PhpMixed, defined, extension_loaded, implode, in_array, loosely_compare, + php_regex, phpversion, spl_object_hash, sprintf, str_replace, str_starts_with, stripos, strpos, + strtolower, substr, substr_count, version_compare, }; use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::MultiConstraint; @@ -119,8 +119,13 @@ impl Problem { return rule2_prio.cmp(&rule1_prio); } - self.get_sortable_string(pool, &rule1.borrow()) - .cmp(&self.get_sortable_string(pool, &rule2.borrow())) + // PHP: getSortableString(...) <=> getSortableString(...). RULE_LEARNED keys are + // '-'-joined literal ids (e.g. "-95"), which PHP's <=> compares numerically when both + // sides are numeric strings rather than byte-by-byte. + loosely_compare( + &self.get_sortable_string(pool, &rule1.borrow()), + &self.get_sortable_string(pool, &rule2.borrow()), + ) }); Self::format_deduplicated_rules( diff --git a/crates/shirabe/tests/installer_test.rs b/crates/shirabe/tests/installer_test.rs index 4c9b3d3a..c12d9cfd 100644 --- a/crates/shirabe/tests/installer_test.rs +++ b/crates/shirabe/tests/installer_test.rs @@ -1362,7 +1362,7 @@ macro_rules! raw_pool_test { } slow_test! { - slow_github_issues_7665 => "github-issues-7665.test", ignore = "TODO(phase-d): known-failing fixture under COMPOSER_POOL_OPTIMIZER=0"; + slow_github_issues_7665 => "github-issues-7665.test", ignore = "TODO(phase-d): unknown reason. Needs further investigation."; } pool_optimizer_test! { @@ -1590,7 +1590,7 @@ raw_pool_test! { raw_pool_github_issues_4319 => "github-issues-4319.test"; raw_pool_github_issues_4795_2 => "github-issues-4795-2.test"; raw_pool_github_issues_4795 => "github-issues-4795.test"; - raw_pool_github_issues_7051 => "github-issues-7051.test", ignore = "TODO(phase-d): known-failing fixture under COMPOSER_POOL_OPTIMIZER=0"; + raw_pool_github_issues_7051 => "github-issues-7051.test"; raw_pool_github_issues_8902 => "github-issues-8902.test"; raw_pool_github_issues_8903 => "github-issues-8903.test"; raw_pool_github_issues_9012 => "github-issues-9012.test"; @@ -1645,7 +1645,7 @@ raw_pool_test! { raw_pool_provider_can_coexist_with_other_version_of_provided => "provider-can-coexist-with-other-version-of-provided.test"; raw_pool_provider_conflicts => "provider-conflicts.test"; raw_pool_provider_conflicts2 => "provider-conflicts2.test"; - raw_pool_provider_conflicts3 => "provider-conflicts3.test", ignore = "TODO(phase-d): known-failing fixture under COMPOSER_POOL_OPTIMIZER=0"; + raw_pool_provider_conflicts3 => "provider-conflicts3.test"; raw_pool_provider_dev_require_can_satisfy_require => "provider-dev-require-can-satisfy-require.test"; raw_pool_provider_gets_picked_together_with_other_version_of_provided_conflict => "provider-gets-picked-together-with-other-version-of-provided-conflict.test"; raw_pool_provider_gets_picked_together_with_other_version_of_provided_indirect => "provider-gets-picked-together-with-other-version-of-provided-indirect.test"; |
