aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-22 15:33:18 +0900
committernsfisis <nsfisis@gmail.com>2026-02-22 15:33:18 +0900
commit3bddf91f8fe386cc9d908ed498ea0b3235790904 (patch)
tree85e59f694609a9c36eaed059591a774023b7b49a /crates/mozart/src
parentf7f1ae38b765a10cb37fb2ecc68daea3401954fd (diff)
downloadphp-mozart-3bddf91f8fe386cc9d908ed498ea0b3235790904.tar.gz
php-mozart-3bddf91f8fe386cc9d908ed498ea0b3235790904.tar.zst
php-mozart-3bddf91f8fe386cc9d908ed498ea0b3235790904.zip
fix(platform): detect PHP version from runtime instead of hardcoding 8.1
PlatformConfig::new() was hardcoded to PHP 8.1 with a fixed extension list, causing resolution failures for packages requiring newer PHP (e.g. Laravel 12 requires >=8.2). Now calls detect_platform() to discover the actual PHP version, extensions and capabilities. Also adds a mutex to composer_home_dir tests to prevent env-var races. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src')
-rw-r--r--crates/mozart/src/commands/global.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/crates/mozart/src/commands/global.rs b/crates/mozart/src/commands/global.rs
index a646f7a..97d56d2 100644
--- a/crates/mozart/src/commands/global.rs
+++ b/crates/mozart/src/commands/global.rs
@@ -121,38 +121,43 @@ mod tests {
// ── composer_home_dir tests ───────────────────────────────────────────────
+ /// Guards env-var mutations so the three composer_home_dir tests
+ /// cannot race each other when `cargo test` runs them in parallel.
+ static ENV_MUTEX: std::sync::Mutex<()> = std::sync::Mutex::new(());
+
#[test]
fn test_composer_home_dir_from_env() {
- // SAFETY: test-only; single-threaded env mutation
+ let _lock = ENV_MUTEX.lock().unwrap();
+ // SAFETY: test-only; protected by ENV_MUTEX
unsafe {
std::env::set_var("COMPOSER_HOME", "/tmp/test-composer-home");
}
let result = composer_home_dir().unwrap();
- assert_eq!(result, PathBuf::from("/tmp/test-composer-home"));
- // SAFETY: cleanup
unsafe {
std::env::remove_var("COMPOSER_HOME");
}
+ assert_eq!(result, PathBuf::from("/tmp/test-composer-home"));
}
#[test]
fn test_composer_home_dir_xdg() {
- // SAFETY: test-only; single-threaded env mutation
+ let _lock = ENV_MUTEX.lock().unwrap();
+ // SAFETY: test-only; protected by ENV_MUTEX
unsafe {
std::env::remove_var("COMPOSER_HOME");
std::env::set_var("XDG_CONFIG_HOME", "/tmp/test-xdg-config");
}
let result = composer_home_dir().unwrap();
- assert_eq!(result, PathBuf::from("/tmp/test-xdg-config/composer"));
- // SAFETY: cleanup
unsafe {
std::env::remove_var("XDG_CONFIG_HOME");
}
+ assert_eq!(result, PathBuf::from("/tmp/test-xdg-config/composer"));
}
#[test]
fn test_composer_home_dir_default() {
- // SAFETY: test-only; single-threaded env mutation
+ let _lock = ENV_MUTEX.lock().unwrap();
+ // SAFETY: test-only; protected by ENV_MUTEX
unsafe {
std::env::remove_var("COMPOSER_HOME");
std::env::remove_var("XDG_CONFIG_HOME");