From 7eb34c7a36ac065d169e3645fc8a3da3e71431d7 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 6 Nov 2023 08:35:26 -0500 Subject: [PATCH] fix(byonm): correct resolution for scoped packages (#21083) --- cli/tests/integration/npm_tests.rs | 67 +++++++++++-------- .../testdata/npm/different_nested_dep/main.js | 5 ++ .../npm/different_nested_dep/main.out | 2 + .../npm/different_nested_dep/package.json | 6 ++ .../different-nested-dep-child/1.0.0/index.js | 1 + .../1.0.0/package.json | 5 ++ .../different-nested-dep-child/2.0.0/index.js | 1 + .../2.0.0/package.json | 5 ++ .../different-nested-dep/1.0.0/index.js | 2 + .../different-nested-dep/1.0.0/package.json | 8 +++ test_util/src/builders.rs | 9 +++ 11 files changed, 83 insertions(+), 28 deletions(-) create mode 100644 cli/tests/testdata/npm/different_nested_dep/main.js create mode 100644 cli/tests/testdata/npm/different_nested_dep/main.out create mode 100644 cli/tests/testdata/npm/different_nested_dep/package.json create mode 100644 cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js create mode 100644 cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json create mode 100644 cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js create mode 100644 cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json create mode 100644 cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js create mode 100644 cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs index 927e834751..92af166e0b 100644 --- a/cli/tests/integration/npm_tests.rs +++ b/cli/tests/integration/npm_tests.rs @@ -2227,17 +2227,9 @@ pub fn byonm_cjs_esm_packages() { .use_temp_cwd() .build(); let dir = test_context.temp_dir(); - let run_npm = |args: &str| { - test_context - .new_command() - .name("npm") - .args(args) - .run() - .skip_output_check(); - }; - run_npm("init -y"); - run_npm("install @denotest/esm-basic @denotest/cjs-default-export @denotest/dual-cjs-esm chalk@4 chai@4.3"); + test_context.run_npm("init -y"); + test_context.run_npm("install @denotest/esm-basic @denotest/cjs-default-export @denotest/dual-cjs-esm chalk@4 chai@4.3"); dir.write( "main.ts", @@ -2346,12 +2338,7 @@ pub fn byonm_package_specifier_not_installed_and_invalid_subpath() { "import '@denotest/conditional-exports-strict/test';", ); - test_context - .new_command() - .name("npm") - .args("install") - .run() - .skip_output_check(); + test_context.run_npm("install"); let output = test_context.new_command().args("run main.ts").run(); output.assert_matches_text( @@ -2395,12 +2382,7 @@ pub fn byonm_package_npm_specifier_not_installed_and_invalid_subpath() { "import 'npm:@denotest/conditional-exports-strict/test';", ); - test_context - .new_command() - .name("npm") - .args("install") - .run() - .skip_output_check(); + test_context.run_npm("install"); let output = test_context.new_command().args("run main.ts").run(); output.assert_matches_text( @@ -2487,12 +2469,7 @@ console.log(add(1, 2)); "#, ); - test_context - .new_command() - .name("npm") - .args("install") - .run() - .skip_output_check(); + test_context.run_npm("install"); let output = test_context .new_command() @@ -2530,3 +2507,37 @@ itest!(imports_package_json_sub_path_import_not_defined { exit_code: 1, http_server: true, }); + +itest!(different_nested_dep_node_modules_dir_false { + args: "run --quiet --node-modules-dir=false npm/different_nested_dep/main.js", + output: "npm/different_nested_dep/main.out", + envs: env_vars_for_npm_tests(), + exit_code: 0, + http_server: true, +}); + +itest!(different_nested_dep_node_modules_dir_true { + args: "run --quiet --node-modules-dir=true main.js", + output: "npm/different_nested_dep/main.out", + copy_temp_dir: Some("npm/different_nested_dep/"), + cwd: Some("npm/different_nested_dep/"), + envs: env_vars_for_npm_tests(), + exit_code: 0, + http_server: true, +}); + +#[test] +pub fn different_nested_dep_byonm() { + let test_context = TestContextBuilder::for_npm() + .use_copy_temp_dir("npm/different_nested_dep") + .cwd("npm/different_nested_dep/") + .build(); + + test_context.run_npm("install"); + + let output = test_context + .new_command() + .args("run --unstable-byonm main.js") + .run(); + output.assert_matches_file("npm/different_nested_dep/main.out"); +} diff --git a/cli/tests/testdata/npm/different_nested_dep/main.js b/cli/tests/testdata/npm/different_nested_dep/main.js new file mode 100644 index 0000000000..5677eb094a --- /dev/null +++ b/cli/tests/testdata/npm/different_nested_dep/main.js @@ -0,0 +1,5 @@ +import dep from "@denotest/different-nested-dep"; +import childDep from "@denotest/different-nested-dep-child"; + +console.log(dep); +console.log(childDep); diff --git a/cli/tests/testdata/npm/different_nested_dep/main.out b/cli/tests/testdata/npm/different_nested_dep/main.out new file mode 100644 index 0000000000..1191247b6d --- /dev/null +++ b/cli/tests/testdata/npm/different_nested_dep/main.out @@ -0,0 +1,2 @@ +1 +2 diff --git a/cli/tests/testdata/npm/different_nested_dep/package.json b/cli/tests/testdata/npm/different_nested_dep/package.json new file mode 100644 index 0000000000..c204258514 --- /dev/null +++ b/cli/tests/testdata/npm/different_nested_dep/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "@denotest/different-nested-dep": "1.0.0", + "@denotest/different-nested-dep-child": "2.0.0" + } +} diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js new file mode 100644 index 0000000000..aef22247d7 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js @@ -0,0 +1 @@ +export default 1; diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json new file mode 100644 index 0000000000..ca58520a46 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/different-nested-dep-child", + "type": "module", + "version": "1.0.0" +} diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js new file mode 100644 index 0000000000..842e368a0a --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js @@ -0,0 +1 @@ +export default 2; diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json new file mode 100644 index 0000000000..9d2e56975b --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/different-nested-dep-child", + "type": "module", + "version": "2.0.0" +} diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js new file mode 100644 index 0000000000..dee5330b74 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js @@ -0,0 +1,2 @@ +import version from "@denotest/different-nested-dep-child"; +export default version; diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json new file mode 100644 index 0000000000..879a4e012d --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json @@ -0,0 +1,8 @@ +{ + "name": "@denotest/different-nested-dep", + "version": "1.0.0", + "type": "module", + "dependencies": { + "@denotest/different-nested-dep-child": "1.0.0" + } +} diff --git a/test_util/src/builders.rs b/test_util/src/builders.rs index 39771e0883..36b61ca1b0 100644 --- a/test_util/src/builders.rs +++ b/test_util/src/builders.rs @@ -212,6 +212,15 @@ impl TestContext { builder.deno_exe(&self.deno_exe).set_test_context(self); builder } + + pub fn run_npm(&self, args: impl AsRef) { + self + .new_command() + .name("npm") + .args(args) + .run() + .skip_output_check(); + } } pub struct TestCommandBuilder {