From 8261abde3d9fb9ec1d764b912fa5487e4fcd9339 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 1 May 2026 20:14:53 +0900 Subject: fix(core): default missing composer.json "name" to __root__ Composer's RootPackageLoader assigns the root name "__root__" when composer.json omits the "name" field. Mozart was failing deserialization in that case, blocking any installer fixture with a nameless root manifest. Apply the same serde default and unignore update-to-empty-from-blank as the first green entry on the .test scoreboard. --- crates/mozart-core/src/package.rs | 7 +++++++ crates/mozart/tests/installer.rs | 5 +---- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'crates') diff --git a/crates/mozart-core/src/package.rs b/crates/mozart-core/src/package.rs index ce2ff12..5906c7e 100644 --- a/crates/mozart-core/src/package.rs +++ b/crates/mozart-core/src/package.rs @@ -458,6 +458,7 @@ delegate_complete_package!(RootPackageData => complete); /// and map directly to the JSON keys via serde. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct RawPackageData { + #[serde(default = "default_root_package_name")] pub name: String, #[serde(skip_serializing_if = "Option::is_none")] @@ -531,6 +532,12 @@ pub struct RawRepository { pub url: String, } +/// Default root-package name when `composer.json` omits the `name` field. +/// Mirrors Composer's `RootPackageLoader` fallback. +fn default_root_package_name() -> String { + "__root__".to_string() +} + impl RawPackageData { pub fn new(name: String) -> Self { Self { diff --git a/crates/mozart/tests/installer.rs b/crates/mozart/tests/installer.rs index 5503476..a0e3f25 100644 --- a/crates/mozart/tests/installer.rs +++ b/crates/mozart/tests/installer.rs @@ -765,10 +765,7 @@ installer_fixture!( update_syncs_outdated, ignore = "mozart binary cannot yet run this fixture" ); -installer_fixture!( - update_to_empty_from_blank, - ignore = "mozart binary cannot yet run this fixture" -); +installer_fixture!(update_to_empty_from_blank); installer_fixture!( update_to_empty_from_locked, ignore = "mozart binary cannot yet run this fixture" -- cgit v1.3.1