BREAKING(unstable): drop support for Deno.run.{clearEnv,gid,uid} (#25371)

These are unstable options and the APIs is now deprecated. To limit
amount of unstable flags we elected to have these APIs removed.
This commit is contained in:
Bartek Iwańczuk 2024-09-03 10:07:02 +01:00 committed by GitHub
parent bf7571a6f9
commit 71e4ac774b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 2 additions and 123 deletions

View File

@ -133,10 +133,7 @@ class Process {
function run({
cmd,
cwd = undefined,
clearEnv = false,
env = { __proto__: null },
gid = undefined,
uid = undefined,
stdout = "inherit",
stderr = "inherit",
stdin = "inherit",
@ -155,10 +152,7 @@ function run({
const res = opRun({
cmd: ArrayPrototypeMap(cmd, String),
cwd,
clearEnv,
env: ObjectEntries(env),
gid,
uid,
stdin,
stdout,
stderr,

View File

@ -99,10 +99,11 @@ pub static UNSTABLE_GRANULAR_FLAGS: &[UnstableGranularFlag] = &[
show_in_help: true,
id: 7,
},
// TODO(bartlomieju): consider removing it
UnstableGranularFlag {
name: ops::process::UNSTABLE_FEATURE_NAME,
help_text: "Enable unstable process APIs",
show_in_help: true,
show_in_help: false,
id: 8,
},
UnstableGranularFlag {

View File

@ -1,6 +1,5 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
use super::check_unstable;
use deno_core::anyhow::Context;
use deno_core::error::type_error;
use deno_core::error::AnyError;
@ -642,12 +641,7 @@ mod deprecated {
pub struct RunArgs {
cmd: Vec<String>,
cwd: Option<String>,
clear_env: bool,
env: Vec<(String, String)>,
#[cfg(unix)]
gid: Option<u32>,
#[cfg(unix)]
uid: Option<u32>,
stdin: StdioOrRid,
stdout: StdioOrRid,
stderr: StdioOrRid,
@ -700,24 +694,10 @@ mod deprecated {
});
cwd.map(|d| c.current_dir(d));
if run_args.clear_env {
super::check_unstable(state, UNSTABLE_FEATURE_NAME, "Deno.run.clearEnv");
c.env_clear();
}
for (key, value) in &env {
c.env(key, value);
}
#[cfg(unix)]
if let Some(gid) = run_args.gid {
super::check_unstable(state, UNSTABLE_FEATURE_NAME, "Deno.run.gid");
c.gid(gid);
}
#[cfg(unix)]
if let Some(uid) = run_args.uid {
super::check_unstable(state, UNSTABLE_FEATURE_NAME, "Deno.run.uid");
c.uid(uid);
}
#[cfg(unix)]
// TODO(bartlomieju):
#[allow(clippy::undocumented_unsafe_blocks)]

View File

@ -582,102 +582,6 @@ Deno.test({ permissions: { run: true, read: true } }, function killFailed() {
p.close();
});
Deno.test(
{ permissions: { run: true, read: true, env: true } },
async function clearEnv(): Promise<void> {
// deno-lint-ignore no-deprecated-deno-api
const p = Deno.run({
cmd: [
Deno.execPath(),
"eval",
"-p",
"JSON.stringify(Deno.env.toObject())",
],
stdout: "piped",
clearEnv: true,
env: {
FOO: "23147",
},
});
const obj = JSON.parse(new TextDecoder().decode(await p.output()));
// can't check for object equality because the OS may set additional env
// vars for processes, so we check if PATH isn't present as that is a common
// env var across OS's and isn't set for processes.
assertEquals(obj.FOO, "23147");
assert(!("PATH" in obj));
p.close();
},
);
Deno.test(
{
permissions: { run: true, read: true },
ignore: Deno.build.os === "windows",
},
async function uid(): Promise<void> {
// deno-lint-ignore no-deprecated-deno-api
const p = Deno.run({
cmd: [
"id",
"-u",
],
stdout: "piped",
});
const currentUid = new TextDecoder().decode(await p.output());
p.close();
if (currentUid !== "0") {
assertThrows(() => {
// deno-lint-ignore no-deprecated-deno-api
Deno.run({
cmd: [
"echo",
"fhqwhgads",
],
uid: 0,
});
}, Deno.errors.PermissionDenied);
}
},
);
Deno.test(
{
permissions: { run: true, read: true },
ignore: Deno.build.os === "windows",
},
async function gid(): Promise<void> {
// deno-lint-ignore no-deprecated-deno-api
const p = Deno.run({
cmd: [
"id",
"-g",
],
stdout: "piped",
});
const currentGid = new TextDecoder().decode(await p.output());
p.close();
if (currentGid !== "0") {
assertThrows(() => {
// deno-lint-ignore no-deprecated-deno-api
Deno.run({
cmd: [
"echo",
"fhqwhgads",
],
gid: 0,
});
}, Deno.errors.PermissionDenied);
}
},
);
Deno.test(
{
permissions: { run: true, read: true, write: true },