From 35220f0069931c6c4b9023c2d123f3b37f7e9c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 23 Apr 2024 16:21:06 +0100 Subject: fix(workspace): provide workspace members as 'imports' in import map (#23492) This commit changes the workspace support to provide all workspace members to be available as imports based on their names and versions. Closes https://github.com/denoland/deno/issues/23343 --- cli/args/import_map.rs | 29 ++++++++++++++++++++++ cli/args/mod.rs | 5 ++++ tests/integration/run_tests.rs | 29 ---------------------- tests/specs/run/workspaces/basic/__test__.jsonc | 5 ++++ tests/specs/run/workspaces/basic/bar/deno.json | 8 ++++++ tests/specs/run/workspaces/basic/bar/fizz/buzz.ts | 1 + tests/specs/run/workspaces/basic/bar/mod.ts | 5 ++++ .../run/workspaces/basic/bar/some_mod/hello.ts | 1 + tests/specs/run/workspaces/basic/deno.json | 9 +++++++ tests/specs/run/workspaces/basic/foo/bar/hello.ts | 1 + tests/specs/run/workspaces/basic/foo/deno.json | 8 ++++++ tests/specs/run/workspaces/basic/foo/fizz/buzz.ts | 1 + tests/specs/run/workspaces/basic/foo/mod.ts | 5 ++++ tests/specs/run/workspaces/basic/main.out | 26 +++++++++++++++++++ tests/specs/run/workspaces/basic/main.ts | 5 ++++ .../member_outside_root_dir/__test__.jsonc | 6 +++++ .../workspaces/member_outside_root_dir/deno.json | 9 +++++++ .../member_outside_root_dir/foo/bar/hello.ts | 1 + .../member_outside_root_dir/foo/deno.json | 8 ++++++ .../member_outside_root_dir/foo/fizz/buzz.ts | 1 + .../workspaces/member_outside_root_dir/foo/mod.ts | 5 ++++ .../workspaces/member_outside_root_dir/main.out | 1 + .../run/workspaces/member_outside_root_dir/main.ts | 4 +++ .../workspaces/members_are_imports/__test__.jsonc | 5 ++++ .../workspaces/members_are_imports/bar/deno.jsonc | 7 ++++++ .../run/workspaces/members_are_imports/bar/mod.ts | 1 + .../run/workspaces/members_are_imports/deno.json | 9 +++++++ .../workspaces/members_are_imports/foo/deno.jsonc | 7 ++++++ .../run/workspaces/members_are_imports/foo/mod.ts | 1 + .../run/workspaces/members_are_imports/main.out | 1 + .../run/workspaces/members_are_imports/main.ts | 4 +++ .../run/workspaces/nested_member/__test__.jsonc | 6 +++++ .../run/workspaces/nested_member/bar/deno.json | 8 ++++++ .../run/workspaces/nested_member/bar/fizz/buzz.ts | 1 + .../specs/run/workspaces/nested_member/bar/mod.ts | 5 ++++ .../workspaces/nested_member/bar/some_mod/hello.ts | 1 + tests/specs/run/workspaces/nested_member/deno.json | 6 +++++ .../run/workspaces/nested_member/foo/bar/deno.json | 7 ++++++ .../run/workspaces/nested_member/foo/bar/hello.ts | 3 +++ .../run/workspaces/nested_member/foo/deno.json | 7 ++++++ .../run/workspaces/nested_member/foo/fizz/buzz.ts | 1 + .../specs/run/workspaces/nested_member/foo/mod.ts | 3 +++ tests/specs/run/workspaces/nested_member/main.out | 1 + tests/specs/run/workspaces/nested_member/main.ts | 4 +++ tests/testdata/run/workspaces/basic/bar/deno.json | 8 ------ .../testdata/run/workspaces/basic/bar/fizz/buzz.ts | 1 - tests/testdata/run/workspaces/basic/bar/mod.ts | 5 ---- .../run/workspaces/basic/bar/some_mod/hello.ts | 1 - tests/testdata/run/workspaces/basic/deno.json | 9 ------- .../testdata/run/workspaces/basic/foo/bar/hello.ts | 1 - tests/testdata/run/workspaces/basic/foo/deno.json | 8 ------ .../testdata/run/workspaces/basic/foo/fizz/buzz.ts | 1 - tests/testdata/run/workspaces/basic/foo/mod.ts | 5 ---- tests/testdata/run/workspaces/basic/main.out | 22 ---------------- tests/testdata/run/workspaces/basic/main.ts | 5 ---- .../workspaces/member_outside_root_dir/deno.json | 9 ------- .../member_outside_root_dir/foo/bar/hello.ts | 1 - .../member_outside_root_dir/foo/deno.json | 8 ------ .../member_outside_root_dir/foo/fizz/buzz.ts | 1 - .../workspaces/member_outside_root_dir/foo/mod.ts | 5 ---- .../workspaces/member_outside_root_dir/main.out | 1 - .../run/workspaces/member_outside_root_dir/main.ts | 4 --- .../run/workspaces/nested_member/bar/deno.json | 8 ------ .../run/workspaces/nested_member/bar/fizz/buzz.ts | 1 - .../run/workspaces/nested_member/bar/mod.ts | 5 ---- .../workspaces/nested_member/bar/some_mod/hello.ts | 1 - .../run/workspaces/nested_member/deno.json | 6 ----- .../run/workspaces/nested_member/foo/bar/deno.json | 7 ------ .../run/workspaces/nested_member/foo/bar/hello.ts | 3 --- .../run/workspaces/nested_member/foo/deno.json | 7 ------ .../run/workspaces/nested_member/foo/fizz/buzz.ts | 1 - .../run/workspaces/nested_member/foo/mod.ts | 3 --- .../testdata/run/workspaces/nested_member/main.out | 1 - .../testdata/run/workspaces/nested_member/main.ts | 4 --- tools/lint.js | 2 +- 75 files changed, 233 insertions(+), 172 deletions(-) create mode 100644 tests/specs/run/workspaces/basic/__test__.jsonc create mode 100644 tests/specs/run/workspaces/basic/bar/deno.json create mode 100644 tests/specs/run/workspaces/basic/bar/fizz/buzz.ts create mode 100644 tests/specs/run/workspaces/basic/bar/mod.ts create mode 100644 tests/specs/run/workspaces/basic/bar/some_mod/hello.ts create mode 100644 tests/specs/run/workspaces/basic/deno.json create mode 100644 tests/specs/run/workspaces/basic/foo/bar/hello.ts create mode 100644 tests/specs/run/workspaces/basic/foo/deno.json create mode 100644 tests/specs/run/workspaces/basic/foo/fizz/buzz.ts create mode 100644 tests/specs/run/workspaces/basic/foo/mod.ts create mode 100644 tests/specs/run/workspaces/basic/main.out create mode 100644 tests/specs/run/workspaces/basic/main.ts create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/__test__.jsonc create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/deno.json create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/foo/bar/hello.ts create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/foo/deno.json create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/foo/mod.ts create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/main.out create mode 100644 tests/specs/run/workspaces/member_outside_root_dir/main.ts create mode 100644 tests/specs/run/workspaces/members_are_imports/__test__.jsonc create mode 100644 tests/specs/run/workspaces/members_are_imports/bar/deno.jsonc create mode 100644 tests/specs/run/workspaces/members_are_imports/bar/mod.ts create mode 100644 tests/specs/run/workspaces/members_are_imports/deno.json create mode 100644 tests/specs/run/workspaces/members_are_imports/foo/deno.jsonc create mode 100644 tests/specs/run/workspaces/members_are_imports/foo/mod.ts create mode 100644 tests/specs/run/workspaces/members_are_imports/main.out create mode 100644 tests/specs/run/workspaces/members_are_imports/main.ts create mode 100644 tests/specs/run/workspaces/nested_member/__test__.jsonc create mode 100644 tests/specs/run/workspaces/nested_member/bar/deno.json create mode 100644 tests/specs/run/workspaces/nested_member/bar/fizz/buzz.ts create mode 100644 tests/specs/run/workspaces/nested_member/bar/mod.ts create mode 100644 tests/specs/run/workspaces/nested_member/bar/some_mod/hello.ts create mode 100644 tests/specs/run/workspaces/nested_member/deno.json create mode 100644 tests/specs/run/workspaces/nested_member/foo/bar/deno.json create mode 100644 tests/specs/run/workspaces/nested_member/foo/bar/hello.ts create mode 100644 tests/specs/run/workspaces/nested_member/foo/deno.json create mode 100644 tests/specs/run/workspaces/nested_member/foo/fizz/buzz.ts create mode 100644 tests/specs/run/workspaces/nested_member/foo/mod.ts create mode 100644 tests/specs/run/workspaces/nested_member/main.out create mode 100644 tests/specs/run/workspaces/nested_member/main.ts delete mode 100644 tests/testdata/run/workspaces/basic/bar/deno.json delete mode 100644 tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts delete mode 100644 tests/testdata/run/workspaces/basic/bar/mod.ts delete mode 100644 tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts delete mode 100644 tests/testdata/run/workspaces/basic/deno.json delete mode 100644 tests/testdata/run/workspaces/basic/foo/bar/hello.ts delete mode 100644 tests/testdata/run/workspaces/basic/foo/deno.json delete mode 100644 tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts delete mode 100644 tests/testdata/run/workspaces/basic/foo/mod.ts delete mode 100644 tests/testdata/run/workspaces/basic/main.out delete mode 100644 tests/testdata/run/workspaces/basic/main.ts delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/deno.json delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/main.out delete mode 100644 tests/testdata/run/workspaces/member_outside_root_dir/main.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/bar/deno.json delete mode 100644 tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/bar/mod.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/deno.json delete mode 100644 tests/testdata/run/workspaces/nested_member/foo/bar/deno.json delete mode 100644 tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/foo/deno.json delete mode 100644 tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/foo/mod.ts delete mode 100644 tests/testdata/run/workspaces/nested_member/main.out delete mode 100644 tests/testdata/run/workspaces/nested_member/main.ts diff --git a/cli/args/import_map.rs b/cli/args/import_map.rs index d06c4d385..767d0f770 100644 --- a/cli/args/import_map.rs +++ b/cli/args/import_map.rs @@ -96,3 +96,32 @@ fn print_import_map_diagnostics(diagnostics: &[ImportMapDiagnostic]) { ); } } + +pub fn enhance_import_map_value_with_workspace_members( + mut import_map_value: serde_json::Value, + workspace_members: &[deno_config::WorkspaceMemberConfig], +) -> serde_json::Value { + let mut imports = + if let Some(imports) = import_map_value.get("imports").as_ref() { + imports.as_object().unwrap().clone() + } else { + serde_json::Map::new() + }; + + for workspace_member in workspace_members { + let name = &workspace_member.package_name; + let version = &workspace_member.package_version; + // Don't override existings, explicit imports + if imports.contains_key(name) { + continue; + } + + imports.insert( + name.to_string(), + serde_json::Value::String(format!("jsr:{}@^{}", name, version)), + ); + } + + import_map_value["imports"] = serde_json::Value::Object(imports); + ::import_map::ext::expand_import_map_value(import_map_value) +} diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 60d9710de..6c84abac2 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -67,6 +67,7 @@ use std::path::PathBuf; use std::sync::Arc; use thiserror::Error; +use crate::args::import_map::enhance_import_map_value_with_workspace_members; use crate::file_fetcher::FileFetcher; use crate::util::fs::canonicalize_path_maybe_not_exists; use crate::version; @@ -975,6 +976,10 @@ impl CliOptions { base_import_map_config, children_configs, ); + let import_map = enhance_import_map_value_with_workspace_members( + import_map, + &workspace_config.members, + ); log::debug!( "Workspace config generated this import map {}", serde_json::to_string_pretty(&import_map).unwrap() diff --git a/tests/integration/run_tests.rs b/tests/integration/run_tests.rs index c298e4f5b..6419f6ff0 100644 --- a/tests/integration/run_tests.rs +++ b/tests/integration/run_tests.rs @@ -4918,35 +4918,6 @@ itest!(explicit_resource_management { output: "run/explicit_resource_management/main.out", }); -itest!(workspaces_basic { - args: "run -L debug -A main.ts", - output: "run/workspaces/basic/main.out", - cwd: Some("run/workspaces/basic/"), - copy_temp_dir: Some("run/workspaces/basic/"), - envs: env_vars_for_npm_tests(), - http_server: true, -}); - -itest!(workspaces_member_outside_root_dir { - args: "run -A main.ts", - output: "run/workspaces/member_outside_root_dir/main.out", - cwd: Some("run/workspaces/member_outside_root_dir/"), - copy_temp_dir: Some("run/workspaces/member_outside_root_dir/"), - envs: env_vars_for_npm_tests(), - http_server: true, - exit_code: 1, -}); - -itest!(workspaces_nested_member { - args: "run -A main.ts", - output: "run/workspaces/nested_member/main.out", - cwd: Some("run/workspaces/nested_member/"), - copy_temp_dir: Some("run/workspaces/nested_member/"), - envs: env_vars_for_npm_tests(), - http_server: true, - exit_code: 1, -}); - itest!(unsafe_proto { args: "run -A run/unsafe_proto/main.js", output: "run/unsafe_proto/main.out", diff --git a/tests/specs/run/workspaces/basic/__test__.jsonc b/tests/specs/run/workspaces/basic/__test__.jsonc new file mode 100644 index 000000000..ea467e51b --- /dev/null +++ b/tests/specs/run/workspaces/basic/__test__.jsonc @@ -0,0 +1,5 @@ +{ + "args": "run -L debug -A main.ts", + "output": "main.out", + "tempDir": true +} diff --git a/tests/specs/run/workspaces/basic/bar/deno.json b/tests/specs/run/workspaces/basic/bar/deno.json new file mode 100644 index 000000000..ef3bfc37a --- /dev/null +++ b/tests/specs/run/workspaces/basic/bar/deno.json @@ -0,0 +1,8 @@ +{ + "name": "asdfasdfasdf", + "version": "0.0.0", + "imports": { + "@/": "./", + "secret_mod/": "./some_mod/" + } +} diff --git a/tests/specs/run/workspaces/basic/bar/fizz/buzz.ts b/tests/specs/run/workspaces/basic/bar/fizz/buzz.ts new file mode 100644 index 000000000..f88d62fcc --- /dev/null +++ b/tests/specs/run/workspaces/basic/bar/fizz/buzz.ts @@ -0,0 +1 @@ +export const buzz = "buzz from bar"; diff --git a/tests/specs/run/workspaces/basic/bar/mod.ts b/tests/specs/run/workspaces/basic/bar/mod.ts new file mode 100644 index 000000000..6f898e389 --- /dev/null +++ b/tests/specs/run/workspaces/basic/bar/mod.ts @@ -0,0 +1,5 @@ +import { hello } from "secret_mod/hello.ts"; +import { buzz } from "@/fizz/buzz.ts"; + +console.log(hello); +console.log(buzz); diff --git a/tests/specs/run/workspaces/basic/bar/some_mod/hello.ts b/tests/specs/run/workspaces/basic/bar/some_mod/hello.ts new file mode 100644 index 000000000..1013de8d2 --- /dev/null +++ b/tests/specs/run/workspaces/basic/bar/some_mod/hello.ts @@ -0,0 +1 @@ +export const hello = "hello from bar"; diff --git a/tests/specs/run/workspaces/basic/deno.json b/tests/specs/run/workspaces/basic/deno.json new file mode 100644 index 000000000..b971c4f3d --- /dev/null +++ b/tests/specs/run/workspaces/basic/deno.json @@ -0,0 +1,9 @@ +{ + "workspaces": [ + "foo", + "bar" + ], + "imports": { + "chalk": "npm:chalk" + } +} diff --git a/tests/specs/run/workspaces/basic/foo/bar/hello.ts b/tests/specs/run/workspaces/basic/foo/bar/hello.ts new file mode 100644 index 000000000..c8a7e57c4 --- /dev/null +++ b/tests/specs/run/workspaces/basic/foo/bar/hello.ts @@ -0,0 +1 @@ +export const hello = "hello from foo"; diff --git a/tests/specs/run/workspaces/basic/foo/deno.json b/tests/specs/run/workspaces/basic/foo/deno.json new file mode 100644 index 000000000..46d84f06f --- /dev/null +++ b/tests/specs/run/workspaces/basic/foo/deno.json @@ -0,0 +1,8 @@ +{ + "name": "qwerqwer", + "version": "0.0.0", + "imports": { + "~/": "./", + "foo/": "./bar/" + } +} diff --git a/tests/specs/run/workspaces/basic/foo/fizz/buzz.ts b/tests/specs/run/workspaces/basic/foo/fizz/buzz.ts new file mode 100644 index 000000000..4e03777d1 --- /dev/null +++ b/tests/specs/run/workspaces/basic/foo/fizz/buzz.ts @@ -0,0 +1 @@ +export const buzz = "buzz from foo"; diff --git a/tests/specs/run/workspaces/basic/foo/mod.ts b/tests/specs/run/workspaces/basic/foo/mod.ts new file mode 100644 index 000000000..d7b16dcc0 --- /dev/null +++ b/tests/specs/run/workspaces/basic/foo/mod.ts @@ -0,0 +1,5 @@ +import { hello } from "foo/hello.ts"; +import { buzz } from "~/fizz/buzz.ts"; + +console.log(hello); +console.log(buzz); diff --git a/tests/specs/run/workspaces/basic/main.out b/tests/specs/run/workspaces/basic/main.out new file mode 100644 index 000000000..57d8c9f1e --- /dev/null +++ b/tests/specs/run/workspaces/basic/main.out @@ -0,0 +1,26 @@ +[WILDCARD]Workspace config generated this import map { + "imports": { + "chalk": "npm:chalk", + "chalk/": "npm:/chalk/", + "qwerqwer": "jsr:qwerqwer@^0.0.0", + "qwerqwer/": "jsr:/qwerqwer@^0.0.0/", + "asdfasdfasdf": "jsr:asdfasdfasdf@^0.0.0", + "asdfasdfasdf/": "jsr:/asdfasdfasdf@^0.0.0/" + }, + "scopes": { + "./foo/": { + "~/": "./foo/", + "foo/": "./foo/bar/" + }, + "./bar/": { + "@/": "./bar/", + "secret_mod/": "./bar/some_mod/" + } + } +} +[WILDCARD] +hello from foo +buzz from foo +hello from bar +buzz from bar +[Function: chalk][WILDCARD] \ No newline at end of file diff --git a/tests/specs/run/workspaces/basic/main.ts b/tests/specs/run/workspaces/basic/main.ts new file mode 100644 index 000000000..380c97619 --- /dev/null +++ b/tests/specs/run/workspaces/basic/main.ts @@ -0,0 +1,5 @@ +import chalk from "chalk"; +import "./foo/mod.ts"; +import "./bar/mod.ts"; + +console.log(chalk); diff --git a/tests/specs/run/workspaces/member_outside_root_dir/__test__.jsonc b/tests/specs/run/workspaces/member_outside_root_dir/__test__.jsonc new file mode 100644 index 000000000..a7669c1ec --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/__test__.jsonc @@ -0,0 +1,6 @@ +{ + "args": "run -A main.ts", + "output": "main.out", + "tempDir": true, + "exitCode": 1 +} diff --git a/tests/specs/run/workspaces/member_outside_root_dir/deno.json b/tests/specs/run/workspaces/member_outside_root_dir/deno.json new file mode 100644 index 000000000..25feefad8 --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/deno.json @@ -0,0 +1,9 @@ +{ + "workspaces": [ + "foo", + "../other_folder" + ], + "imports": { + "chalk": "npm:chalk" + } +} diff --git a/tests/specs/run/workspaces/member_outside_root_dir/foo/bar/hello.ts b/tests/specs/run/workspaces/member_outside_root_dir/foo/bar/hello.ts new file mode 100644 index 000000000..c8a7e57c4 --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/foo/bar/hello.ts @@ -0,0 +1 @@ +export const hello = "hello from foo"; diff --git a/tests/specs/run/workspaces/member_outside_root_dir/foo/deno.json b/tests/specs/run/workspaces/member_outside_root_dir/foo/deno.json new file mode 100644 index 000000000..46d84f06f --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/foo/deno.json @@ -0,0 +1,8 @@ +{ + "name": "qwerqwer", + "version": "0.0.0", + "imports": { + "~/": "./", + "foo/": "./bar/" + } +} diff --git a/tests/specs/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts b/tests/specs/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts new file mode 100644 index 000000000..4e03777d1 --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts @@ -0,0 +1 @@ +export const buzz = "buzz from foo"; diff --git a/tests/specs/run/workspaces/member_outside_root_dir/foo/mod.ts b/tests/specs/run/workspaces/member_outside_root_dir/foo/mod.ts new file mode 100644 index 000000000..d7b16dcc0 --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/foo/mod.ts @@ -0,0 +1,5 @@ +import { hello } from "foo/hello.ts"; +import { buzz } from "~/fizz/buzz.ts"; + +console.log(hello); +console.log(buzz); diff --git a/tests/specs/run/workspaces/member_outside_root_dir/main.out b/tests/specs/run/workspaces/member_outside_root_dir/main.out new file mode 100644 index 000000000..205d95aea --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/main.out @@ -0,0 +1 @@ +error: Workspace member '../other_folder' is outside root configuration directory[WILDCARD] \ No newline at end of file diff --git a/tests/specs/run/workspaces/member_outside_root_dir/main.ts b/tests/specs/run/workspaces/member_outside_root_dir/main.ts new file mode 100644 index 000000000..182fd8517 --- /dev/null +++ b/tests/specs/run/workspaces/member_outside_root_dir/main.ts @@ -0,0 +1,4 @@ +import chalk from "chalk"; +import "./foo/mod.ts"; + +console.log(chalk); diff --git a/tests/specs/run/workspaces/members_are_imports/__test__.jsonc b/tests/specs/run/workspaces/members_are_imports/__test__.jsonc new file mode 100644 index 000000000..f9b807142 --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/__test__.jsonc @@ -0,0 +1,5 @@ +{ + "args": "run -A main.ts", + "output": "main.out", + "tempDir": true +} diff --git a/tests/specs/run/workspaces/members_are_imports/bar/deno.jsonc b/tests/specs/run/workspaces/members_are_imports/bar/deno.jsonc new file mode 100644 index 000000000..a6431c8d1 --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/bar/deno.jsonc @@ -0,0 +1,7 @@ +{ + "name": "@deno-test/bar", + "version": "0.0.1", + "exports": { + ".": "./mod.ts" + } +} diff --git a/tests/specs/run/workspaces/members_are_imports/bar/mod.ts b/tests/specs/run/workspaces/members_are_imports/bar/mod.ts new file mode 100644 index 000000000..46d3ca8c6 --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/bar/mod.ts @@ -0,0 +1 @@ +export const value = 42; diff --git a/tests/specs/run/workspaces/members_are_imports/deno.json b/tests/specs/run/workspaces/members_are_imports/deno.json new file mode 100644 index 000000000..56105365a --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/deno.json @@ -0,0 +1,9 @@ +{ + "workspaces": [ + "foo", + "bar" + ], + "tasks": { + "dev": "deno run --watch main.ts" + } +} diff --git a/tests/specs/run/workspaces/members_are_imports/foo/deno.jsonc b/tests/specs/run/workspaces/members_are_imports/foo/deno.jsonc new file mode 100644 index 000000000..355350012 --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/foo/deno.jsonc @@ -0,0 +1,7 @@ +{ + "name": "@deno-test/foo", + "version": "0.0.1", + "exports": { + ".": "./mod.ts" + } +} diff --git a/tests/specs/run/workspaces/members_are_imports/foo/mod.ts b/tests/specs/run/workspaces/members_are_imports/foo/mod.ts new file mode 100644 index 000000000..46d3ca8c6 --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/foo/mod.ts @@ -0,0 +1 @@ +export const value = 42; diff --git a/tests/specs/run/workspaces/members_are_imports/main.out b/tests/specs/run/workspaces/members_are_imports/main.out new file mode 100644 index 000000000..af23dac2e --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/main.out @@ -0,0 +1 @@ +[Module: null prototype] { value: 42 } [Module: null prototype] { value: 42 } diff --git a/tests/specs/run/workspaces/members_are_imports/main.ts b/tests/specs/run/workspaces/members_are_imports/main.ts new file mode 100644 index 000000000..d2c2f2308 --- /dev/null +++ b/tests/specs/run/workspaces/members_are_imports/main.ts @@ -0,0 +1,4 @@ +import * as foo from "@deno-test/foo"; +import * as bar from "@deno-test/bar"; + +console.log(foo, bar); diff --git a/tests/specs/run/workspaces/nested_member/__test__.jsonc b/tests/specs/run/workspaces/nested_member/__test__.jsonc new file mode 100644 index 000000000..a7669c1ec --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/__test__.jsonc @@ -0,0 +1,6 @@ +{ + "args": "run -A main.ts", + "output": "main.out", + "tempDir": true, + "exitCode": 1 +} diff --git a/tests/specs/run/workspaces/nested_member/bar/deno.json b/tests/specs/run/workspaces/nested_member/bar/deno.json new file mode 100644 index 000000000..ef3bfc37a --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/bar/deno.json @@ -0,0 +1,8 @@ +{ + "name": "asdfasdfasdf", + "version": "0.0.0", + "imports": { + "@/": "./", + "secret_mod/": "./some_mod/" + } +} diff --git a/tests/specs/run/workspaces/nested_member/bar/fizz/buzz.ts b/tests/specs/run/workspaces/nested_member/bar/fizz/buzz.ts new file mode 100644 index 000000000..f88d62fcc --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/bar/fizz/buzz.ts @@ -0,0 +1 @@ +export const buzz = "buzz from bar"; diff --git a/tests/specs/run/workspaces/nested_member/bar/mod.ts b/tests/specs/run/workspaces/nested_member/bar/mod.ts new file mode 100644 index 000000000..6f898e389 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/bar/mod.ts @@ -0,0 +1,5 @@ +import { hello } from "secret_mod/hello.ts"; +import { buzz } from "@/fizz/buzz.ts"; + +console.log(hello); +console.log(buzz); diff --git a/tests/specs/run/workspaces/nested_member/bar/some_mod/hello.ts b/tests/specs/run/workspaces/nested_member/bar/some_mod/hello.ts new file mode 100644 index 000000000..1013de8d2 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/bar/some_mod/hello.ts @@ -0,0 +1 @@ +export const hello = "hello from bar"; diff --git a/tests/specs/run/workspaces/nested_member/deno.json b/tests/specs/run/workspaces/nested_member/deno.json new file mode 100644 index 000000000..6d9c09d4d --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/deno.json @@ -0,0 +1,6 @@ +{ + "workspaces": [ + "foo", + "foo/bar" + ] +} diff --git a/tests/specs/run/workspaces/nested_member/foo/bar/deno.json b/tests/specs/run/workspaces/nested_member/foo/bar/deno.json new file mode 100644 index 000000000..d40328b36 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/foo/bar/deno.json @@ -0,0 +1,7 @@ +{ + "name": "bar", + "version": "0.0.0", + "imports": { + "chalk": "npm:chalk" + } +} diff --git a/tests/specs/run/workspaces/nested_member/foo/bar/hello.ts b/tests/specs/run/workspaces/nested_member/foo/bar/hello.ts new file mode 100644 index 000000000..9c1023153 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/foo/bar/hello.ts @@ -0,0 +1,3 @@ +import chalk from "chalk"; + +export default chalk; diff --git a/tests/specs/run/workspaces/nested_member/foo/deno.json b/tests/specs/run/workspaces/nested_member/foo/deno.json new file mode 100644 index 000000000..68e053b02 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/foo/deno.json @@ -0,0 +1,7 @@ +{ + "name": "qwerqwer", + "version": "0.0.0", + "imports": { + "~/": "./" + } +} diff --git a/tests/specs/run/workspaces/nested_member/foo/fizz/buzz.ts b/tests/specs/run/workspaces/nested_member/foo/fizz/buzz.ts new file mode 100644 index 000000000..4e03777d1 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/foo/fizz/buzz.ts @@ -0,0 +1 @@ +export const buzz = "buzz from foo"; diff --git a/tests/specs/run/workspaces/nested_member/foo/mod.ts b/tests/specs/run/workspaces/nested_member/foo/mod.ts new file mode 100644 index 000000000..b9d4d3c04 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/foo/mod.ts @@ -0,0 +1,3 @@ +import { buzz } from "~/fizz/buzz.ts"; + +console.log(buzz); diff --git a/tests/specs/run/workspaces/nested_member/main.out b/tests/specs/run/workspaces/nested_member/main.out new file mode 100644 index 000000000..98598a306 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/main.out @@ -0,0 +1 @@ +error: Workspace member 'foo/bar' is nested within other workspace member 'foo' diff --git a/tests/specs/run/workspaces/nested_member/main.ts b/tests/specs/run/workspaces/nested_member/main.ts new file mode 100644 index 000000000..2bf53f7c2 --- /dev/null +++ b/tests/specs/run/workspaces/nested_member/main.ts @@ -0,0 +1,4 @@ +import "./foo/mod.ts"; +import chalk from "./foo/bar/hello.ts"; + +console.log(chalk); diff --git a/tests/testdata/run/workspaces/basic/bar/deno.json b/tests/testdata/run/workspaces/basic/bar/deno.json deleted file mode 100644 index ef3bfc37a..000000000 --- a/tests/testdata/run/workspaces/basic/bar/deno.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "asdfasdfasdf", - "version": "0.0.0", - "imports": { - "@/": "./", - "secret_mod/": "./some_mod/" - } -} diff --git a/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts b/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts deleted file mode 100644 index f88d62fcc..000000000 --- a/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts +++ /dev/null @@ -1 +0,0 @@ -export const buzz = "buzz from bar"; diff --git a/tests/testdata/run/workspaces/basic/bar/mod.ts b/tests/testdata/run/workspaces/basic/bar/mod.ts deleted file mode 100644 index 6f898e389..000000000 --- a/tests/testdata/run/workspaces/basic/bar/mod.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { hello } from "secret_mod/hello.ts"; -import { buzz } from "@/fizz/buzz.ts"; - -console.log(hello); -console.log(buzz); diff --git a/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts b/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts deleted file mode 100644 index 1013de8d2..000000000 --- a/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts +++ /dev/null @@ -1 +0,0 @@ -export const hello = "hello from bar"; diff --git a/tests/testdata/run/workspaces/basic/deno.json b/tests/testdata/run/workspaces/basic/deno.json deleted file mode 100644 index b971c4f3d..000000000 --- a/tests/testdata/run/workspaces/basic/deno.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "workspaces": [ - "foo", - "bar" - ], - "imports": { - "chalk": "npm:chalk" - } -} diff --git a/tests/testdata/run/workspaces/basic/foo/bar/hello.ts b/tests/testdata/run/workspaces/basic/foo/bar/hello.ts deleted file mode 100644 index c8a7e57c4..000000000 --- a/tests/testdata/run/workspaces/basic/foo/bar/hello.ts +++ /dev/null @@ -1 +0,0 @@ -export const hello = "hello from foo"; diff --git a/tests/testdata/run/workspaces/basic/foo/deno.json b/tests/testdata/run/workspaces/basic/foo/deno.json deleted file mode 100644 index 46d84f06f..000000000 --- a/tests/testdata/run/workspaces/basic/foo/deno.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "qwerqwer", - "version": "0.0.0", - "imports": { - "~/": "./", - "foo/": "./bar/" - } -} diff --git a/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts b/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts deleted file mode 100644 index 4e03777d1..000000000 --- a/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts +++ /dev/null @@ -1 +0,0 @@ -export const buzz = "buzz from foo"; diff --git a/tests/testdata/run/workspaces/basic/foo/mod.ts b/tests/testdata/run/workspaces/basic/foo/mod.ts deleted file mode 100644 index d7b16dcc0..000000000 --- a/tests/testdata/run/workspaces/basic/foo/mod.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { hello } from "foo/hello.ts"; -import { buzz } from "~/fizz/buzz.ts"; - -console.log(hello); -console.log(buzz); diff --git a/tests/testdata/run/workspaces/basic/main.out b/tests/testdata/run/workspaces/basic/main.out deleted file mode 100644 index a955ac54c..000000000 --- a/tests/testdata/run/workspaces/basic/main.out +++ /dev/null @@ -1,22 +0,0 @@ -[WILDCARD]Workspace config generated this import map { - "imports": { - "chalk": "npm:chalk", - "chalk/": "npm:/chalk/" - }, - "scopes": { - "./foo/": { - "~/": "./foo/", - "foo/": "./foo/bar/" - }, - "./bar/": { - "@/": "./bar/", - "secret_mod/": "./bar/some_mod/" - } - } -} -[WILDCARD] -hello from foo -buzz from foo -hello from bar -buzz from bar -[Function: chalk][WILDCARD] \ No newline at end of file diff --git a/tests/testdata/run/workspaces/basic/main.ts b/tests/testdata/run/workspaces/basic/main.ts deleted file mode 100644 index 380c97619..000000000 --- a/tests/testdata/run/workspaces/basic/main.ts +++ /dev/null @@ -1,5 +0,0 @@ -import chalk from "chalk"; -import "./foo/mod.ts"; -import "./bar/mod.ts"; - -console.log(chalk); diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/deno.json b/tests/testdata/run/workspaces/member_outside_root_dir/deno.json deleted file mode 100644 index 25feefad8..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/deno.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "workspaces": [ - "foo", - "../other_folder" - ], - "imports": { - "chalk": "npm:chalk" - } -} diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts b/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts deleted file mode 100644 index c8a7e57c4..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts +++ /dev/null @@ -1 +0,0 @@ -export const hello = "hello from foo"; diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json b/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json deleted file mode 100644 index 46d84f06f..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "qwerqwer", - "version": "0.0.0", - "imports": { - "~/": "./", - "foo/": "./bar/" - } -} diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts b/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts deleted file mode 100644 index 4e03777d1..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts +++ /dev/null @@ -1 +0,0 @@ -export const buzz = "buzz from foo"; diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts b/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts deleted file mode 100644 index d7b16dcc0..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { hello } from "foo/hello.ts"; -import { buzz } from "~/fizz/buzz.ts"; - -console.log(hello); -console.log(buzz); diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/main.out b/tests/testdata/run/workspaces/member_outside_root_dir/main.out deleted file mode 100644 index 205d95aea..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/main.out +++ /dev/null @@ -1 +0,0 @@ -error: Workspace member '../other_folder' is outside root configuration directory[WILDCARD] \ No newline at end of file diff --git a/tests/testdata/run/workspaces/member_outside_root_dir/main.ts b/tests/testdata/run/workspaces/member_outside_root_dir/main.ts deleted file mode 100644 index 182fd8517..000000000 --- a/tests/testdata/run/workspaces/member_outside_root_dir/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import chalk from "chalk"; -import "./foo/mod.ts"; - -console.log(chalk); diff --git a/tests/testdata/run/workspaces/nested_member/bar/deno.json b/tests/testdata/run/workspaces/nested_member/bar/deno.json deleted file mode 100644 index ef3bfc37a..000000000 --- a/tests/testdata/run/workspaces/nested_member/bar/deno.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "asdfasdfasdf", - "version": "0.0.0", - "imports": { - "@/": "./", - "secret_mod/": "./some_mod/" - } -} diff --git a/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts b/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts deleted file mode 100644 index f88d62fcc..000000000 --- a/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts +++ /dev/null @@ -1 +0,0 @@ -export const buzz = "buzz from bar"; diff --git a/tests/testdata/run/workspaces/nested_member/bar/mod.ts b/tests/testdata/run/workspaces/nested_member/bar/mod.ts deleted file mode 100644 index 6f898e389..000000000 --- a/tests/testdata/run/workspaces/nested_member/bar/mod.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { hello } from "secret_mod/hello.ts"; -import { buzz } from "@/fizz/buzz.ts"; - -console.log(hello); -console.log(buzz); diff --git a/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts b/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts deleted file mode 100644 index 1013de8d2..000000000 --- a/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts +++ /dev/null @@ -1 +0,0 @@ -export const hello = "hello from bar"; diff --git a/tests/testdata/run/workspaces/nested_member/deno.json b/tests/testdata/run/workspaces/nested_member/deno.json deleted file mode 100644 index 6d9c09d4d..000000000 --- a/tests/testdata/run/workspaces/nested_member/deno.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "workspaces": [ - "foo", - "foo/bar" - ] -} diff --git a/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json b/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json deleted file mode 100644 index d40328b36..000000000 --- a/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "bar", - "version": "0.0.0", - "imports": { - "chalk": "npm:chalk" - } -} diff --git a/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts b/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts deleted file mode 100644 index 9c1023153..000000000 --- a/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts +++ /dev/null @@ -1,3 +0,0 @@ -import chalk from "chalk"; - -export default chalk; diff --git a/tests/testdata/run/workspaces/nested_member/foo/deno.json b/tests/testdata/run/workspaces/nested_member/foo/deno.json deleted file mode 100644 index 68e053b02..000000000 --- a/tests/testdata/run/workspaces/nested_member/foo/deno.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "qwerqwer", - "version": "0.0.0", - "imports": { - "~/": "./" - } -} diff --git a/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts b/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts deleted file mode 100644 index 4e03777d1..000000000 --- a/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts +++ /dev/null @@ -1 +0,0 @@ -export const buzz = "buzz from foo"; diff --git a/tests/testdata/run/workspaces/nested_member/foo/mod.ts b/tests/testdata/run/workspaces/nested_member/foo/mod.ts deleted file mode 100644 index b9d4d3c04..000000000 --- a/tests/testdata/run/workspaces/nested_member/foo/mod.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { buzz } from "~/fizz/buzz.ts"; - -console.log(buzz); diff --git a/tests/testdata/run/workspaces/nested_member/main.out b/tests/testdata/run/workspaces/nested_member/main.out deleted file mode 100644 index 98598a306..000000000 --- a/tests/testdata/run/workspaces/nested_member/main.out +++ /dev/null @@ -1 +0,0 @@ -error: Workspace member 'foo/bar' is nested within other workspace member 'foo' diff --git a/tests/testdata/run/workspaces/nested_member/main.ts b/tests/testdata/run/workspaces/nested_member/main.ts deleted file mode 100644 index 2bf53f7c2..000000000 --- a/tests/testdata/run/workspaces/nested_member/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import "./foo/mod.ts"; -import chalk from "./foo/bar/hello.ts"; - -console.log(chalk); diff --git a/tools/lint.js b/tools/lint.js index 121812f4a..9a001967e 100755 --- a/tools/lint.js +++ b/tools/lint.js @@ -213,7 +213,7 @@ async function ensureNoNewITests() { "pm_tests.rs": 0, "publish_tests.rs": 28, "repl_tests.rs": 0, - "run_tests.rs": 382, + "run_tests.rs": 379, "shared_library_tests.rs": 0, "task_tests.rs": 30, "test_tests.rs": 80, -- cgit v1.2.3