summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-07-19 11:59:04 -0700
committerGitHub <noreply@github.com>2024-07-19 18:59:04 +0000
commita4c76add565b9674ef6880de88013948c61a1ce5 (patch)
tree6dc75f90b2788b1028453308f3b46708d460936f
parentf6c7c13764a7952b878a2141fdf01ed68d169ea2 (diff)
fix(cli): Respect implied BYONM from DENO_FUTURE in `deno task` (#24652)
Regression from https://github.com/denoland/deno/commit/04f9db5b2217fe06f88e76146aac6362ff0b0b86 Originally I thought to fix the issue in the PR we needed to explicitly pass through the `node-modules-dir` flag, but after applying the correct fix that david pointed out (setting `NPM_PROCESS_STATE`) that wasn't necessary (or correct). We had a test for deno task with BYONM, but it only tested with `"unstable": ["byonm"]` in deno.json, so it didn't catch this.
-rw-r--r--cli/npm/managed/resolvers/local.rs8
-rw-r--r--cli/task_runner.rs8
-rw-r--r--tests/specs/npm/lifecycle_scripts/__test__.jsonc13
-rw-r--r--tests/specs/task/byonm/__test__.jsonc68
4 files changed, 67 insertions, 30 deletions
diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs
index 2240bf0c0..90a17b157 100644
--- a/cli/npm/managed/resolvers/local.rs
+++ b/cli/npm/managed/resolvers/local.rs
@@ -282,12 +282,8 @@ fn resolve_baseline_custom_commands(
custom_commands
.insert("npm".to_string(), Rc::new(crate::task_runner::NpmCommand));
- custom_commands.insert(
- "node".to_string(),
- Rc::new(crate::task_runner::NodeCommand {
- force_node_modules_dir: true,
- }),
- );
+ custom_commands
+ .insert("node".to_string(), Rc::new(crate::task_runner::NodeCommand));
custom_commands.insert(
"node-gyp".to_string(),
diff --git a/cli/task_runner.rs b/cli/task_runner.rs
index 7653594e5..e8937590d 100644
--- a/cli/task_runner.rs
+++ b/cli/task_runner.rs
@@ -164,9 +164,7 @@ impl ShellCommand for NpmCommand {
}
}
-pub struct NodeCommand {
- pub force_node_modules_dir: bool,
-}
+pub struct NodeCommand;
impl ShellCommand for NodeCommand {
fn execute(
@@ -193,9 +191,6 @@ impl ShellCommand for NodeCommand {
.execute(context);
}
args.extend(["run", "-A"].into_iter().map(|s| s.to_string()));
- if self.force_node_modules_dir {
- args.push("--node-modules-dir=true".to_string());
- }
args.extend(context.args.iter().cloned());
let mut state = context.state;
@@ -308,7 +303,6 @@ impl ShellCommand for NodeModulesFileRunCommand {
let mut args = vec![
"run".to_string(),
"--ext=js".to_string(),
- "--node-modules-dir=true".to_string(),
"-A".to_string(),
self.path.to_string_lossy().to_string(),
];
diff --git a/tests/specs/npm/lifecycle_scripts/__test__.jsonc b/tests/specs/npm/lifecycle_scripts/__test__.jsonc
index b862b8126..302b40d1e 100644
--- a/tests/specs/npm/lifecycle_scripts/__test__.jsonc
+++ b/tests/specs/npm/lifecycle_scripts/__test__.jsonc
@@ -132,6 +132,19 @@
"output": "no_deno_json.out"
}
]
+ },
+ "lifecycle_scripts_no_deno_json_conflicting_bin": {
+ "tempDir": true,
+ "steps": [
+ {
+ "args": ["eval", "Deno.removeSync('deno.json')"],
+ "output": ""
+ },
+ {
+ "args": "cache --allow-scripts --node-modules-dir=true conflicting_bin.js",
+ "output": "conflicting_bin.out"
+ }
+ ]
}
}
}
diff --git a/tests/specs/task/byonm/__test__.jsonc b/tests/specs/task/byonm/__test__.jsonc
index 670f6767d..3d62a7887 100644
--- a/tests/specs/task/byonm/__test__.jsonc
+++ b/tests/specs/task/byonm/__test__.jsonc
@@ -1,20 +1,54 @@
{
"tempDir": true,
- "steps": [{
- "commandName": "npm",
- "args": "install",
- "output": "[WILDCARD]"
- }, {
- "args": "task say",
- "output": "package_json_say.out"
- }, {
- "args": "task think",
- "output": "package_json_think.out"
- }, {
- "args": "task deno-say",
- "output": "deno_json_say.out"
- }, {
- "args": "task deno-think",
- "output": "deno_json_think.out"
- }]
+ "tests": {
+ "deno_json": {
+ "steps": [{
+ "commandName": "npm",
+ "args": "install",
+ "output": "[WILDCARD]"
+ }, {
+ "args": "task say",
+ "output": "package_json_say.out"
+ }, {
+ "args": "task think",
+ "output": "package_json_think.out"
+ }, {
+ "args": "task deno-say",
+ "output": "deno_json_say.out"
+ }, {
+ "args": "task deno-think",
+ "output": "deno_json_think.out"
+ }]
+ },
+ "no_deno_json": {
+ "steps": [{
+ "args": [
+ "eval",
+ "Deno.removeSync('deno.json')"
+ ],
+ "output": ""
+ }, {
+ "commandName": "npm",
+ "args": "install",
+ "output": "[WILDCARD]"
+ }, {
+ // implied byonm from DENO_FUTURE
+ "envs": {
+ "DENO_FUTURE": "1"
+ },
+ "args": "task say",
+ "output": "package_json_say.out"
+ }, {
+ // byonm flag
+ "args": "task --unstable-byonm say",
+ "output": "package_json_say.out"
+ }, {
+ "args": [
+ "eval",
+ "try { Deno.statSync('node_modules/.deno'); } catch (e) { if (e instanceof Deno.errors.NotFound) { console.log('good'); } else { throw new Error('bad'); } }"
+ ],
+ "output": "good\n"
+ }]
+ }
+ }
}