@@ -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) ) ;
0 commit comments