diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs index f854eafe42..a48599adab 100644 --- a/cli/tools/installer.rs +++ b/cli/tools/installer.rs @@ -382,6 +382,10 @@ async fn resolve_shim_data( executable_args.push("--unstable".to_string()); } + for feature in &flags.unstable_config.features { + executable_args.push(format!("--unstable-{}", feature)); + } + if flags.no_remote { executable_args.push("--no-remote".to_string()); } @@ -706,6 +710,73 @@ mod tests { ); } + #[tokio::test] + async fn install_unstable_legacy() { + let shim_data = resolve_shim_data( + &Flags { + unstable_config: UnstableConfig { + legacy_flag_enabled: true, + ..Default::default() + }, + ..Default::default() + }, + &InstallFlags { + module_url: "http://localhost:4545/echo_server.ts".to_string(), + args: vec![], + name: None, + root: Some(env::temp_dir().to_string_lossy().to_string()), + force: false, + }, + ) + .await + .unwrap(); + + assert_eq!(shim_data.name, "echo_server"); + assert_eq!( + shim_data.args, + vec![ + "run", + "--unstable", + "--no-config", + "http://localhost:4545/echo_server.ts", + ] + ); + } + + #[tokio::test] + async fn install_unstable_features() { + let shim_data = resolve_shim_data( + &Flags { + unstable_config: UnstableConfig { + features: vec!["kv".to_string(), "cron".to_string()], + ..Default::default() + }, + ..Default::default() + }, + &InstallFlags { + module_url: "http://localhost:4545/echo_server.ts".to_string(), + args: vec![], + name: None, + root: Some(env::temp_dir().to_string_lossy().to_string()), + force: false, + }, + ) + .await + .unwrap(); + + assert_eq!(shim_data.name, "echo_server"); + assert_eq!( + shim_data.args, + vec![ + "run", + "--unstable-kv", + "--unstable-cron", + "--no-config", + "http://localhost:4545/echo_server.ts", + ] + ); + } + #[tokio::test] async fn install_inferred_name_from_parent() { let shim_data = resolve_shim_data(