Skip to content

Commit abef1a7

Browse files
committed
fail faster without vite node
1 parent fb41f81 commit abef1a7

1 file changed

Lines changed: 27 additions & 7 deletions

File tree

src/eval.rs

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2147,13 +2147,9 @@ fn build_vite_node_fallback_command(runner: &Path, files: &[String]) -> Result<C
21472147
return Ok(command);
21482148
}
21492149

2150-
let mut command = Command::new("npx");
2151-
command
2152-
.arg("--yes")
2153-
.arg("vite-node")
2154-
.arg(runner)
2155-
.args(files);
2156-
Ok(command)
2150+
anyhow::bail!(
2151+
"ESM retry requires vite-node, but no local or PATH vite-node binary was found. Install it in the eval workspace (for example `pnpm add -D vite-node`) or run `bt eval --runner vite-node ...` after installing it."
2152+
)
21572153
}
21582154

21592155
fn build_deno_js_command(
@@ -3542,6 +3538,30 @@ mod tests {
35423538
let _ = std::fs::remove_dir_all(&dir);
35433539
}
35443540

3541+
#[test]
3542+
fn build_vite_node_fallback_command_errors_when_vite_node_is_missing() {
3543+
let _guard = env_test_lock().lock().expect("env test lock");
3544+
let previous_path = clear_env_var("PATH");
3545+
3546+
let dir = make_temp_dir("missing-vite-node");
3547+
let eval_dir = dir.join("evals");
3548+
std::fs::create_dir_all(&eval_dir).expect("eval dir should be created");
3549+
3550+
let file = eval_dir.join("sample.eval.ts");
3551+
std::fs::write(&file, "").expect("eval file should be written");
3552+
3553+
let err = build_vite_node_fallback_command(
3554+
Path::new("runner.ts"),
3555+
&[file.to_string_lossy().to_string()],
3556+
)
3557+
.expect_err("missing vite-node should error");
3558+
3559+
assert!(err.to_string().contains("ESM retry requires vite-node"));
3560+
3561+
restore_env_var("PATH", previous_path);
3562+
let _ = std::fs::remove_dir_all(&dir);
3563+
}
3564+
35453565
#[test]
35463566
fn expand_eval_file_globs_expands_flat_glob() {
35473567
let dir = make_temp_dir("glob-flat");

0 commit comments

Comments
 (0)