From 0e0a5c24ea8b17d410c30bf3fcb70c749b35f8b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 4 Sep 2024 13:21:02 +0100 Subject: [PATCH] test: run js_unit_tests with `--unstable-*` flags (#25394) --- runtime/js/99_main.js | 35 +++++++++++++++--------------- runtime/lib.rs | 2 +- tests/integration/js_unit_tests.rs | 32 +++++++++++++++++++++------ 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 6dd75b415e..d0171acd27 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -722,26 +722,27 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) { target, ); + // TODO(bartlomieju): this is not ideal, but because we use `ObjectAssign` + // above any properties that are defined elsewhere using `Object.defineProperty` + // are lost. + let jupyterNs = undefined; + ObjectDefineProperty(finalDenoNs, "jupyter", { + get() { + if (jupyterNs) { + return jupyterNs; + } + throw new Error( + "Deno.jupyter is only available in `deno jupyter` subcommand.", + ); + }, + set(val) { + jupyterNs = val; + }, + }); + // TODO(bartlomieju): deprecate --unstable if (unstableFlag) { ObjectAssign(finalDenoNs, denoNsUnstable); - // TODO(bartlomieju): this is not ideal, but because we use `ObjectAssign` - // above any properties that are defined elsewhere using `Object.defineProperty` - // are lost. - let jupyterNs = undefined; - ObjectDefineProperty(finalDenoNs, "jupyter", { - get() { - if (jupyterNs) { - return jupyterNs; - } - throw new Error( - "Deno.jupyter is only available in `deno jupyter` subcommand.", - ); - }, - set(val) { - jupyterNs = val; - }, - }); } else { for (let i = 0; i <= unstableFeatures.length; i++) { const id = unstableFeatures[i]; diff --git a/runtime/lib.rs b/runtime/lib.rs index ed3f9fbc6a..c8ab099f18 100644 --- a/runtime/lib.rs +++ b/runtime/lib.rs @@ -83,7 +83,7 @@ pub static UNSTABLE_GRANULAR_FLAGS: &[UnstableGranularFlag] = &[ UnstableGranularFlag { name: ops::http::UNSTABLE_FEATURE_NAME, help_text: "Enable unstable HTTP APIs", - show_in_help: false, + show_in_help: true, id: 5, }, UnstableGranularFlag { diff --git a/tests/integration/js_unit_tests.rs b/tests/integration/js_unit_tests.rs index 0baa114b44..b6a204157b 100644 --- a/tests/integration/js_unit_tests.rs +++ b/tests/integration/js_unit_tests.rs @@ -116,22 +116,40 @@ util::unit_test_factory!( fn js_unit_test(test: String) { let _g = util::http_server(); - let deno = util::deno_cmd() + let mut deno = util::deno_cmd() .current_dir(util::root_path()) .arg("test") .arg("--config") .arg(util::deno_config_path()) .arg("--no-lock") - .arg("--unstable") + // TODO(bartlomieju): would be better if we could apply this unstable + // flag to particular files, but there's many of them that rely on unstable + // net APIs (`reusePort` in `listen` and `listenTls`; `listenDatagram`, `createHttpClient`) + .arg("--unstable-net") + .arg("--unstable-http") .arg("--location=http://127.0.0.1:4545/") .arg("--no-prompt"); + if test == "broadcast_channel_test" { + deno = deno.arg("--unstable-broadcast-channel"); + } + + if test == "cron_test" { + deno = deno.arg("--unstable-cron"); + } + + if test.contains("kv_") { + deno = deno.arg("--unstable-kv"); + } + + if test == "worker_permissions_test" || test == "worker_test" { + deno = deno.arg("--unstable-worker-options"); + } + // TODO(mmastrac): it would be better to just load a test CA for all tests - let deno = if test == "websocket_test" || test == "tls_sni_test" { - deno.arg("--unsafely-ignore-certificate-errors") - } else { - deno - }; + if test == "websocket_test" || test == "tls_sni_test" { + deno = deno.arg("--unsafely-ignore-certificate-errors"); + } let mut deno = deno .arg("-A")