Skip to content

Commit 417befc

Browse files
committed
fix(composer): strip v-prefix from Packagist versions before comparison
Packagist returns versions like "v1.24.1" while requirements use "^1.24". The v-prefix caused version_satisfies_requirement to fail matching.
1 parent bfd6682 commit 417befc

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

crates/deps-composer/src/formatter.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ impl EcosystemFormatter for ComposerFormatter {
3939
/// - `>=X <Y` — range (space = AND)
4040
/// - `X || Y` — OR combinator
4141
fn version_satisfies_requirement(&self, version: &str, requirement: &str) -> bool {
42+
let version = version.strip_prefix('v').unwrap_or(version);
4243
let requirement = requirement.trim();
4344

4445
if requirement.is_empty() || requirement == "*" {
@@ -320,4 +321,15 @@ mod tests {
320321
assert!(f.version_satisfies_requirement("1.2.3", "1.2"));
321322
assert!(!f.version_satisfies_requirement("2.0.0", "1.2"));
322323
}
324+
325+
#[test]
326+
fn test_v_prefix_stripped() {
327+
let f = ComposerFormatter;
328+
assert!(f.version_satisfies_requirement("v1.24.1", "^1.24"));
329+
assert!(f.version_satisfies_requirement("v1.2.3", "~1.2.3"));
330+
assert!(f.version_satisfies_requirement("v2.0.0", ">=2.0.0"));
331+
assert!(f.version_satisfies_requirement("v1.0.5", "1.0.*"));
332+
assert!(f.version_satisfies_requirement("v1.2.3", "1.2.3"));
333+
assert!(!f.version_satisfies_requirement("v2.0.0", "^1.0"));
334+
}
323335
}

0 commit comments

Comments
 (0)