aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/loader/validating_array_loader.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-20 03:14:31 +0900
committernsfisis <nsfisis@gmail.com>2026-07-20 03:14:31 +0900
commit72e3ec4a52e29ae01187445ba923aed3421af345 (patch)
tree46455ecf3963afbfb4c8b50be32ea4b48af0b2c1 /crates/shirabe/src/package/loader/validating_array_loader.rs
parent5fac1bba14ad5b9e4d2abfa3ca299f88cc1e62bf (diff)
downloadphp-shirabe-72e3ec4a52e29ae01187445ba923aed3421af345.tar.gz
php-shirabe-72e3ec4a52e29ae01187445ba923aed3421af345.tar.zst
php-shirabe-72e3ec4a52e29ae01187445ba923aed3421af345.zip
fix(validating-array-loader): un-ignore test_fund_command by fixing empty check
validate_array judged emptiness via as_array(), which only matches PhpMixed::Array, so a non-empty PhpMixed::List (e.g. a funding array) was misjudged as empty and dropped, diverging from PHP's !count() check. Match both Array and List. The stale ignore reason on test_fund_command no longer applies: init_temp_composer injects packagist:false so no network is reached, and the downloader stack is reqwest-based (no curl shim todo!()). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/loader/validating_array_loader.rs')
-rw-r--r--crates/shirabe/src/package/loader/validating_array_loader.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/crates/shirabe/src/package/loader/validating_array_loader.rs b/crates/shirabe/src/package/loader/validating_array_loader.rs
index 28ae7d9b..da022b1b 100644
--- a/crates/shirabe/src/package/loader/validating_array_loader.rs
+++ b/crates/shirabe/src/package/loader/validating_array_loader.rs
@@ -1468,10 +1468,12 @@ impl ValidatingArrayLoader {
}
let is_empty = !self.config.borrow().contains_key(property)
- || self.config.borrow()[property]
- .as_array()
- .map(|m| m.is_empty())
- .unwrap_or(true);
+ || match &self.config.borrow()[property] {
+ PhpMixed::Array(m) => m.is_empty(),
+ PhpMixed::List(l) => l.is_empty(),
+ // is_array() above guarantees the value is Array or List here.
+ _ => unreachable!("validate_array: non-array value survived the is_array check"),
+ };
if is_empty {
if mandatory {
self.errors.borrow_mut().push(format!(