diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-21 03:48:35 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-21 03:48:35 +0900 |
| commit | aa4796137fcdca0fee354ac75fad62092503c865 (patch) | |
| tree | 3dc586674fe900da327ae3bcfd87084ac5783e21 /crates | |
| parent | 41c80058ad57143b2ab23d2eb241983627de9da1 (diff) | |
| download | php-shirabe-aa4796137fcdca0fee354ac75fad62092503c865.tar.gz php-shirabe-aa4796137fcdca0fee354ac75fad62092503c865.tar.zst php-shirabe-aa4796137fcdca0fee354ac75fad62092503c865.zip | |
test(filter): port IgnoreListPlatformRequirementFilterTest
Both isIgnored and isUpperBoundIgnored data sets pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/shirabe/tests/filter/platform_requirement_filter/ignore_list_platform_requirement_filter_test.rs | 87 | ||||
| -rw-r--r-- | crates/shirabe/tests/filter/platform_requirement_filter/mod.rs | 1 |
2 files changed, 88 insertions, 0 deletions
diff --git a/crates/shirabe/tests/filter/platform_requirement_filter/ignore_list_platform_requirement_filter_test.rs b/crates/shirabe/tests/filter/platform_requirement_filter/ignore_list_platform_requirement_filter_test.rs index be3ca1a..4987d3f 100644 --- a/crates/shirabe/tests/filter/platform_requirement_filter/ignore_list_platform_requirement_filter_test.rs +++ b/crates/shirabe/tests/filter/platform_requirement_filter/ignore_list_platform_requirement_filter_test.rs @@ -1 +1,88 @@ //! ref: composer/tests/Composer/Test/Filter/PlatformRequirementFilter/IgnoreListPlatformRequirementFilterTest.php + +use shirabe::filter::platform_requirement_filter::{ + IgnoreListPlatformRequirementFilter, PlatformRequirementFilterInterface, +}; + +#[test] +fn test_is_ignored() { + for (req_list, req, expect_ignored) in data_is_ignored() { + let platform_requirement_filter = IgnoreListPlatformRequirementFilter::new( + req_list.iter().map(|s| s.to_string()).collect(), + ) + .unwrap(); + + assert_eq!(expect_ignored, platform_requirement_filter.is_ignored(req)); + } +} + +fn data_is_ignored() -> Vec<(Vec<&'static str>, &'static str, bool)> { + vec![ + // 'ext-json is ignored if listed' + (vec!["ext-json", "monolog/monolog"], "ext-json", true), + // 'php is not ignored if not listed' + (vec!["ext-json", "monolog/monolog"], "php", false), + // 'monolog/monolog is not ignored even if listed' + (vec!["ext-json", "monolog/monolog"], "monolog/monolog", false), + // 'ext-json is ignored if ext-* is listed' + (vec!["ext-*"], "ext-json", true), + // 'php is ignored if php* is listed' + (vec!["ext-*", "php*"], "php", true), + // 'ext-json is ignored if * is listed' + (vec!["foo", "*"], "ext-json", true), + // 'php is ignored if * is listed' + (vec!["*", "foo"], "php", true), + // 'monolog/monolog is not ignored even if * or monolog/* are listed' + (vec!["*", "monolog/*"], "monolog/monolog", false), + // 'empty list entry does not ignore' + (vec![""], "ext-foo", false), + // 'empty array does not ignore' + (vec![], "ext-foo", false), + // 'list entries are not completing each other' + (vec!["ext-", "foo"], "ext-foo", false), + ] +} + +#[test] +fn test_is_upper_bound_ignored() { + for (req_list, req, expect_ignored) in data_is_upper_bound_ignored() { + let platform_requirement_filter = IgnoreListPlatformRequirementFilter::new( + req_list.iter().map(|s| s.to_string()).collect(), + ) + .unwrap(); + + assert_eq!( + expect_ignored, + platform_requirement_filter.is_upper_bound_ignored(req) + ); + } +} + +fn data_is_upper_bound_ignored() -> Vec<(Vec<&'static str>, &'static str, bool)> { + vec![ + // 'ext-json is ignored if listed and fully ignored' + (vec!["ext-json", "monolog/monolog"], "ext-json", true), + // 'ext-json is ignored if listed and upper bound ignored' + (vec!["ext-json+", "monolog/monolog"], "ext-json", true), + // 'php is not ignored if not listed' + (vec!["ext-json+", "monolog/monolog"], "php", false), + // 'monolog/monolog is not ignored even if listed' + (vec!["monolog/monolog"], "monolog/monolog", false), + // 'ext-json is ignored if ext-* is listed' + (vec!["ext-*+"], "ext-json", true), + // 'php is ignored if php* is listed' + (vec!["ext-*+", "php*+"], "php", true), + // 'ext-json is ignored if * is listed' + (vec!["foo", "*+"], "ext-json", true), + // 'php is ignored if * is listed' + (vec!["*+", "foo"], "php", true), + // 'monolog/monolog is not ignored even if * or monolog/* are listed' + (vec!["*+", "monolog/*+"], "monolog/monolog", false), + // 'empty list entry does not ignore' + (vec![""], "ext-foo", false), + // 'empty array does not ignore' + (vec![], "ext-foo", false), + // 'list entries are not completing each other' + (vec!["ext-", "foo"], "ext-foo", false), + ] +} diff --git a/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs b/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs index 0991fef..14d34da 100644 --- a/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs +++ b/crates/shirabe/tests/filter/platform_requirement_filter/mod.rs @@ -1,3 +1,4 @@ mod ignore_all_platform_requirement_filter_test; +mod ignore_list_platform_requirement_filter_test; mod ignore_nothing_platform_requirement_filter_test; mod platform_requirement_filter_factory_test; |
