diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-21 12:31:06 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-21 12:31:06 +0900 |
| commit | 18761d9b67a09c0148ae606da10db0d1266932f9 (patch) | |
| tree | c38c1a4f0c2b05abbb50c5a686c5b925c2672b34 /crates/mozart/src/version.rs | |
| parent | a70d703f1dea24a1c2ee189f85ab98ff77f89ff3 (diff) | |
| download | php-mozart-18761d9b67a09c0148ae606da10db0d1266932f9.tar.gz php-mozart-18761d9b67a09c0148ae606da10db0d1266932f9.tar.zst php-mozart-18761d9b67a09c0148ae606da10db0d1266932f9.zip | |
feat(resolver): integrate pubgrub dependency resolver
Add dependency resolution module using pubgrub v0.3.0 to convert
Composer-style constraints into range-based version solving. Includes
ComposerVersion type with stability ordering, MozartProvider
implementing DependencyProvider, platform package handling, stability
filtering, and conflict support via complement ranges.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/version.rs')
| -rw-r--r-- | crates/mozart/src/version.rs | 77 |
1 files changed, 21 insertions, 56 deletions
diff --git a/crates/mozart/src/version.rs b/crates/mozart/src/version.rs index a5eca13..4e2bef7 100644 --- a/crates/mozart/src/version.rs +++ b/crates/mozart/src/version.rs @@ -173,37 +173,26 @@ mod tests { ); } + fn make_pv(version: &str, version_normalized: &str) -> PackagistVersion { + PackagistVersion { + version: version.to_string(), + version_normalized: version_normalized.to_string(), + require: Default::default(), + replace: Default::default(), + provide: Default::default(), + conflict: Default::default(), + dist: None, + source: None, + } + } + #[test] fn test_find_best_candidate_stable() { let versions = vec![ - PackagistVersion { - version: "dev-master".to_string(), - version_normalized: "dev-master".to_string(), - require: Default::default(), - dist: None, - source: None, - }, - PackagistVersion { - version: "2.0.0-beta.1".to_string(), - version_normalized: "2.0.0.0-beta1".to_string(), - require: Default::default(), - dist: None, - source: None, - }, - PackagistVersion { - version: "1.5.0".to_string(), - version_normalized: "1.5.0.0".to_string(), - require: Default::default(), - dist: None, - source: None, - }, - PackagistVersion { - version: "1.4.0".to_string(), - version_normalized: "1.4.0.0".to_string(), - require: Default::default(), - dist: None, - source: None, - }, + make_pv("dev-master", "dev-master"), + make_pv("2.0.0-beta.1", "2.0.0.0-beta1"), + make_pv("1.5.0", "1.5.0.0"), + make_pv("1.4.0", "1.4.0.0"), ]; let best = find_best_candidate(&versions, Stability::Stable).unwrap(); @@ -213,27 +202,9 @@ mod tests { #[test] fn test_find_best_candidate_beta() { let versions = vec![ - PackagistVersion { - version: "dev-master".to_string(), - version_normalized: "dev-master".to_string(), - require: Default::default(), - dist: None, - source: None, - }, - PackagistVersion { - version: "2.0.0-beta.1".to_string(), - version_normalized: "2.0.0.0-beta1".to_string(), - require: Default::default(), - dist: None, - source: None, - }, - PackagistVersion { - version: "1.5.0".to_string(), - version_normalized: "1.5.0.0".to_string(), - require: Default::default(), - dist: None, - source: None, - }, + make_pv("dev-master", "dev-master"), + make_pv("2.0.0-beta.1", "2.0.0.0-beta1"), + make_pv("1.5.0", "1.5.0.0"), ]; let best = find_best_candidate(&versions, Stability::Beta).unwrap(); @@ -242,13 +213,7 @@ mod tests { #[test] fn test_find_best_candidate_no_match() { - let versions = vec![PackagistVersion { - version: "dev-master".to_string(), - version_normalized: "dev-master".to_string(), - require: Default::default(), - dist: None, - source: None, - }]; + let versions = vec![make_pv("dev-master", "dev-master")]; let best = find_best_candidate(&versions, Stability::Stable); assert!(best.is_none()); |
