Skip to content

Commit ccb3b44

Browse files
committed
fix(cli): merge upstream bootstrap and parser updates
1 parent 785ad0d commit ccb3b44

5 files changed

Lines changed: 36 additions & 11 deletions

File tree

crates/vite_global_cli/src/main.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,17 @@ mod tests {
441441
v.iter().map(|s| s.to_string()).collect()
442442
}
443443

444+
fn try_parse_args_from_test(args: Vec<String>) -> Result<crate::cli::Args, clap::Error> {
445+
let handle = std::thread::Builder::new()
446+
.stack_size(32 * 1024 * 1024)
447+
.spawn(move || try_parse_args_from(args))
448+
.expect("Expected parser test thread to spawn");
449+
match handle.join() {
450+
Ok(result) => result,
451+
Err(payload) => std::panic::resume_unwind(payload),
452+
}
453+
}
454+
444455
#[test]
445456
fn normalize_args_rewrites_vp_node_to_env_exec_node() {
446457
let input = s(&["vp", "node", "script.js", "foo", "--flag"]);
@@ -485,7 +496,7 @@ mod tests {
485496

486497
#[test]
487498
fn unknown_argument_detected_without_pass_as_value_hint() {
488-
let error = try_parse_args_from(["vp".to_string(), "--cache".to_string()])
499+
let error = try_parse_args_from_test(s(&["vp", "--cache"]))
489500
.expect_err("Expected parse error");
490501
assert_eq!(error.kind(), ErrorKind::UnknownArgument);
491502
assert_eq!(extract_unknown_argument(&error).as_deref(), Some("--cache"));
@@ -494,13 +505,8 @@ mod tests {
494505

495506
#[test]
496507
fn unknown_argument_detected_with_pass_as_value_hint() {
497-
let error = try_parse_args_from([
498-
"vp".to_string(),
499-
"remove".to_string(),
500-
"--stream".to_string(),
501-
"foo".to_string(),
502-
])
503-
.expect_err("Expected parse error");
508+
let error = try_parse_args_from_test(s(&["vp", "remove", "--stream", "foo"]))
509+
.expect_err("Expected parse error");
504510
assert_eq!(error.kind(), ErrorKind::UnknownArgument);
505511
assert_eq!(extract_unknown_argument(&error).as_deref(), Some("--stream"));
506512
assert!(has_pass_as_value_suggestion(&error));

crates/vite_global_cli/src/tips/mod.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,17 @@ pub fn tip_context_from_command(command: &str) -> TipContext {
108108
// Split simulates what the OS does with command line args
109109
let args: Vec<String> = command.split_whitespace().map(String::from).collect();
110110

111-
let (exit_code, clap_error) = match crate::try_parse_args_from(args.iter().cloned()) {
111+
let parse_args = args.clone();
112+
let handle = std::thread::Builder::new()
113+
.stack_size(32 * 1024 * 1024)
114+
.spawn(move || crate::try_parse_args_from(parse_args))
115+
.expect("Expected parser test thread to spawn");
116+
let parse_result = match handle.join() {
117+
Ok(result) => result,
118+
Err(payload) => std::panic::resume_unwind(payload),
119+
};
120+
121+
let (exit_code, clap_error) = match parse_result {
112122
Ok(_) => (0, None),
113123
Err(e) => (e.exit_code(), Some(e)),
114124
};

crates/vite_global_cli/src/upgrade_check.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,14 @@ mod tests {
354354
fn parse_args(args: &[&str]) -> crate::cli::Args {
355355
let full: Vec<String> =
356356
std::iter::once("vp").chain(args.iter().copied()).map(String::from).collect();
357-
crate::try_parse_args_from(full).unwrap()
357+
let handle = std::thread::Builder::new()
358+
.stack_size(32 * 1024 * 1024)
359+
.spawn(move || crate::try_parse_args_from(full))
360+
.expect("Expected parser test thread to spawn");
361+
match handle.join() {
362+
Ok(result) => result.unwrap(),
363+
Err(payload) => std::panic::resume_unwind(payload),
364+
}
358365
}
359366

360367
#[test]

packages/test/build.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ const vendorDir = resolve(distDir, 'vendor');
6767
const CORE_PACKAGE_NAME = '@voidzero-dev/vite-plus-core';
6868
const TEST_PACKAGE_NAME = '@voidzero-dev/vite-plus-test';
6969

70+
await rm(distDir, { recursive: true, force: true });
71+
7072
// @vitest/* packages to copy (not bundle) to preserve browser/Node.js separation
7173
// These are copied from node_modules to dist/@vitest/ to avoid shared chunks
7274
// that mix Node.js-only code with browser code

scripts/setup-local-dev.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ function main() {
306306
: null;
307307
log('Installing workspace dependencies...');
308308
try {
309-
run(pnpmBin, ['install']);
309+
run(pnpmBin, ['install', '--config.allow-unused-patches=true']);
310310
} finally {
311311
if (originalLockfile !== null) {
312312
writeFileSync(pnpmLockfilePath, originalLockfile, 'utf-8');

0 commit comments

Comments
 (0)