Skip to content

Commit 44e190b

Browse files
committed
fix: Skip corepack setup for package managers it doesn't support
Corepack only manages yarn and pnpm. Running corepack enable/prepare for bun or npm fails since corepack doesn't support them. Guard both setup_package_manager and prepare_corepack_from_package_json to only invoke corepack for supported PMs. Fixes test_lockfile_aware_caching_bun failure.
1 parent dabe704 commit 44e190b

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

crates/turborepo/tests/common/setup.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,13 @@ pub fn setup_package_manager(
128128
&format!("Updated package manager to {package_manager}"),
129129
)?;
130130

131-
// Enable corepack for this package manager
131+
// Corepack only manages yarn and pnpm. npm ships with node and bun is
132+
// its own runtime — neither needs corepack setup.
132133
let pm_name = package_manager.split('@').next().unwrap_or(package_manager);
134+
if !corepack_supports(pm_name) {
135+
return Ok(());
136+
}
137+
133138
fs::create_dir_all(corepack_dir)?;
134139

135140
let status = cmd("corepack")
@@ -185,9 +190,14 @@ pub fn prepare_corepack_from_package_json(dir: &Path) {
185190

186191
let pm = match pkg.get("packageManager").and_then(|v| v.as_str()) {
187192
Some(pm) => pm.to_string(),
188-
None => return, // No packageManager field, nothing to prepare
193+
None => return,
189194
};
190195

196+
let pm_name = pm.split('@').next().unwrap_or(&pm);
197+
if !corepack_supports(pm_name) {
198+
return;
199+
}
200+
191201
let status = cmd("corepack")
192202
.arg("prepare")
193203
.arg(&pm)
@@ -338,6 +348,10 @@ fn git_commit_if_changed(dir: &Path, message: &str) -> Result<(), anyhow::Error>
338348
Ok(())
339349
}
340350

351+
fn corepack_supports(pm_name: &str) -> bool {
352+
matches!(pm_name, "yarn" | "pnpm" | "berry")
353+
}
354+
341355
fn prepend_to_path(dir: &Path) -> String {
342356
let current = std::env::var("PATH").unwrap_or_default();
343357
let sep = if cfg!(windows) { ";" } else { ":" };

0 commit comments

Comments
 (0)