aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands/check_platform_reqs.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-01 21:49:37 +0900
committernsfisis <nsfisis@gmail.com>2026-05-01 21:49:37 +0900
commit740eb5b55804134c1977dd39cd8170e2fa615d35 (patch)
tree99bb3bf28a60ffac1db8fa6e523eb1828d40007b /crates/mozart/src/commands/check_platform_reqs.rs
parent2f857cc1ddfde54553829ea5b3a3ac8b59f7f63a (diff)
downloadphp-mozart-740eb5b55804134c1977dd39cd8170e2fa615d35.tar.gz
php-mozart-740eb5b55804134c1977dd39cd8170e2fa615d35.tar.zst
php-mozart-740eb5b55804134c1977dd39cd8170e2fa615d35.zip
feat(core): reject root composer.json that requires its own name
Mirrors Composer\Package\Loader\RootPackageLoader::load(): if the root package's "name" appears as a key in its own "require" or "require-dev" map, fail loudly before reaching the resolver. Without this, Mozart would silently let the request hit Packagist (which has no entry for the root's vendor/name) and report a misleading "could not be found" error. Wired into install::execute (when a lock file is present) and update::execute (the no-lock fallback path). Carries the same wording as Composer's RuntimeException so a future EXPECT-OUTPUT comparison will match. Also extends the installer test harness: when a fixture sets EXPECT-EXCEPTION but no EXPECT-EXIT-CODE, assert that Mozart exits non-zero. Full exception-class matching remains a follow-up (see .ken/test_design.md ยง7.2). Closes the gap exercised by the install-self-from-root installer fixture. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/commands/check_platform_reqs.rs')
0 files changed, 0 insertions, 0 deletions