From e63ccb5cbb479df0f0e5010065ff57bbf4ca238f Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 27 Jun 2026 19:44:01 +0900 Subject: fix(json): encode empty stdClass fields as {} not [] Empty PhpMixed::Array now serializes as [], so the several places that build a PHP `new \stdClass` via an empty Array were emitting [] where Composer writes {}. Use PhpMixed::Object for those empty-object cases: - InitCommand: require / require-dev - Locker::fixupJsonDataType: stability-flags / platform / platform-dev - JsonConfigSource fallback: require/config keys that must stay objects Align the affected test expectations with Composer: JsonFile::read() decodes with assoc=true, collapsing the on-disk {} back to [], so reads expect []. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/shirabe/tests/command/repository_command_test.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/shirabe/tests/command/repository_command_test.rs') diff --git a/crates/shirabe/tests/command/repository_command_test.rs b/crates/shirabe/tests/command/repository_command_test.rs index 1d104e7..901b9f3 100644 --- a/crates/shirabe/tests/command/repository_command_test.rs +++ b/crates/shirabe/tests/command/repository_command_test.rs @@ -34,7 +34,7 @@ fn test_list_with_no_repositories() { app_tester.get_display().trim() ); // composer.json should remain unchanged - assert_eq!(serde_json::json!({}), read_composer_json()); + assert_eq!(serde_json::json!([]), read_composer_json()); drop(tear_down); } @@ -216,7 +216,7 @@ fn test_remove_repository() { if let Some(repositories) = json.get("repositories") { assert_eq!(&serde_json::json!([]), repositories); } else { - assert_eq!(serde_json::json!({}), json); + assert_eq!(serde_json::json!([]), json); } drop(tear_down); @@ -392,7 +392,7 @@ fn test_disable_and_enable_packagist() { ) .unwrap(); assert_eq!(0, status_code); - assert_eq!(serde_json::json!({}), read_composer_json()); + assert_eq!(serde_json::json!([]), read_composer_json()); drop(tear_down); } -- cgit v1.3.1