diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-25 13:43:49 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-25 23:47:47 +0900 |
| commit | 4573629d9fc7321171cd8b134e68869950b02045 (patch) | |
| tree | 1c1786537f71c6c61bca5fb0bba90fe1e722eac0 /crates/shirabe/tests/installed_versions_test.rs | |
| parent | 8d6b521e0034d1bcba594921ebc4f74e87e5ef46 (diff) | |
| download | php-shirabe-4573629d9fc7321171cd8b134e68869950b02045.tar.gz php-shirabe-4573629d9fc7321171cd8b134e68869950b02045.tar.zst php-shirabe-4573629d9fc7321171cd8b134e68869950b02045.zip | |
feat(semver): hand-port constraint AND-split to drop look-around regex
The PCRE delimiter `(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)` used to
split AND-constraints relies on look-around, which the regex crate cannot
compile (parse_constraints panicked). Reproduce its semantics in a hand-written
`split_and_constraints` scanner shared by VersionParser and RootPackageLoader.
Also model `method_exists` for the class-name form (shirabe runs no dumped
Composer ClassLoader) and un-ignore the InstalledVersions tests, serialized via
`#[serial]` since they share global static state.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/installed_versions_test.rs')
| -rw-r--r-- | crates/shirabe/tests/installed_versions_test.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/crates/shirabe/tests/installed_versions_test.rs b/crates/shirabe/tests/installed_versions_test.rs index 20c3a85..4de2730 100644 --- a/crates/shirabe/tests/installed_versions_test.rs +++ b/crates/shirabe/tests/installed_versions_test.rs @@ -7,6 +7,7 @@ // IndexMap<String, PhpMixed> with the tmp root substituted for `$dir`. use indexmap::IndexMap; +use serial_test::serial; use shirabe::installed_versions::InstalledVersions; use shirabe_php_shim::{PhpMixed, realpath}; use shirabe_semver::VersionParser; @@ -163,7 +164,7 @@ fn set_up() -> (TempDir, String) { (root, dir) } -#[ignore] +#[serial] #[test] fn test_get_installed_packages() { let (_root, _dir) = set_up(); @@ -182,7 +183,7 @@ fn test_get_installed_packages() { assert_eq!(names, InstalledVersions::get_installed_packages()); } -#[ignore] +#[serial] #[test] fn test_is_installed() { let (_root, _dir) = set_up(); @@ -206,7 +207,7 @@ fn test_is_installed() { } } -#[ignore] +#[serial] #[test] fn test_satisfies() { let (_root, _dir) = set_up(); @@ -241,7 +242,7 @@ fn test_satisfies() { } } -#[ignore] +#[serial] #[test] fn test_get_version_ranges() { let (_root, _dir) = set_up(); @@ -265,7 +266,7 @@ fn test_get_version_ranges() { } } -#[ignore] +#[serial] #[test] fn test_get_version() { let (_root, _dir) = set_up(); @@ -289,7 +290,7 @@ fn test_get_version() { } } -#[ignore] +#[serial] #[test] fn test_get_pretty_version() { let (_root, _dir) = set_up(); @@ -313,7 +314,7 @@ fn test_get_pretty_version() { } } -#[ignore] +#[serial] #[test] fn test_get_version_out_of_bounds() { let (_root, _dir) = set_up(); @@ -321,7 +322,7 @@ fn test_get_version_out_of_bounds() { assert!(InstalledVersions::get_version("not/installed").is_err()); } -#[ignore] +#[serial] #[test] fn test_get_root_package() { let (_root, dir) = set_up(); @@ -342,7 +343,7 @@ fn test_get_root_package() { assert_eq!(expected, InstalledVersions::get_root_package()); } -#[ignore] +#[serial] #[test] fn test_get_raw_data() { let (_root, dir) = set_up(); @@ -350,7 +351,7 @@ fn test_get_raw_data() { assert_eq!(fixture(&dir), InstalledVersions::get_raw_data()); } -#[ignore] +#[serial] #[test] fn test_get_reference() { let (_root, _dir) = set_up(); @@ -374,7 +375,7 @@ fn test_get_reference() { } } -#[ignore] +#[serial] #[test] fn test_get_installed_packages_by_type() { let (_root, _dir) = set_up(); @@ -393,7 +394,7 @@ fn test_get_installed_packages_by_type() { ); } -#[ignore] +#[serial] #[test] fn test_get_install_path() { let (_root, dir) = set_up(); @@ -416,7 +417,7 @@ fn test_get_install_path() { ); } -#[ignore] +#[serial] #[test] fn test_with_class_loader_loaded() { let (_root, _dir) = set_up(); |
