aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-01 20:14:53 +0900
committernsfisis <nsfisis@gmail.com>2026-05-01 20:14:53 +0900
commit8261abde3d9fb9ec1d764b912fa5487e4fcd9339 (patch)
tree55ebfda66f4394e0185c2de7c4ca9ac973892eb8 /crates
parent1189cecc564c691afeee564203866570fe6928b1 (diff)
downloadphp-mozart-8261abde3d9fb9ec1d764b912fa5487e4fcd9339.tar.gz
php-mozart-8261abde3d9fb9ec1d764b912fa5487e4fcd9339.tar.zst
php-mozart-8261abde3d9fb9ec1d764b912fa5487e4fcd9339.zip
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.
Diffstat (limited to 'crates')
-rw-r--r--crates/mozart-core/src/package.rs7
-rw-r--r--crates/mozart/tests/installer.rs5
2 files changed, 8 insertions, 4 deletions
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"