diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-02 04:38:33 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-02 04:38:33 +0900 |
| commit | a5c6eaee73e4008a51d71c925b4fd410b27578c8 (patch) | |
| tree | a80becf52f7bd95654b6c2b262d3d26374d667ce /crates/shirabe/tests/package/archiver/archive_manager_test.rs | |
| parent | 7be062404175fad6fc08b75c57c9e14be6ae4c24 (diff) | |
| download | php-shirabe-a5c6eaee73e4008a51d71c925b4fd410b27578c8.tar.gz php-shirabe-a5c6eaee73e4008a51d71c925b4fd410b27578c8.tar.zst php-shirabe-a5c6eaee73e4008a51d71c925b4fd410b27578c8.zip | |
fix(symfony-finder): make Glob::to_regex regex-crate compatible
Glob::toRegex emits PCRE-only constructs — the (?=[^\.]) look-ahead for
the strict-leading-dot rule, the possessive [^/]++ in /**/ segments,
and, via BaseExcludeFilter, the (?=$|/) dir-boundary look-ahead — which
the regex crate cannot compile, so `archive` and every
ArchivableFilesFinder path panicked. Rewrite the port to tokenize the
glob (mirroring the PHP loop's dispatch) and resolve every no-dot
constraint by recursive union expansion. The dir boundary must take
part in that expansion (a trailing `*` matching zero characters drops
the constraint onto the boundary itself), so BaseExcludeFilter now uses
the new Glob::to_regex_dir_boundary instead of string surgery.
Equivalence was verified against PHP 8.5.8 (vendored Glob.php +
preg_match) over 66,176 glob x flag x subject combinations with zero
divergence. Un-ignores the five archiver tests blocked on this and
updates GitExcludeFilterTest's expected pattern text, an explicitly
authorized exception to the no-test-modification rule.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/package/archiver/archive_manager_test.rs')
| -rw-r--r-- | crates/shirabe/tests/package/archiver/archive_manager_test.rs | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/crates/shirabe/tests/package/archiver/archive_manager_test.rs b/crates/shirabe/tests/package/archiver/archive_manager_test.rs index 3db1e734..a7235bf9 100644 --- a/crates/shirabe/tests/package/archiver/archive_manager_test.rs +++ b/crates/shirabe/tests/package/archiver/archive_manager_test.rs @@ -167,7 +167,6 @@ fn test_unknown_format() { // ref: ArchiveManagerTest::testArchiveTar / testArchiveCustomFileName. #[test] -#[ignore = "ArchiveManager::archive always passes buildExcludePatterns' glob excludes (e.g. 'name-*.zip'), which BaseExcludeFilter::generate_pattern turns into look-ahead regexes the regex crate cannot compile"] fn test_archive_tar() { if !git_is_executable() { return; @@ -204,7 +203,6 @@ fn test_archive_tar() { } #[test] -#[ignore = "ArchiveManager::archive always passes buildExcludePatterns' glob excludes (e.g. 'name-*.zip'), which BaseExcludeFilter::generate_pattern turns into look-ahead regexes the regex crate cannot compile"] fn test_archive_custom_file_name() { if !git_is_executable() { return; |
