diff options
45 files changed, 323 insertions, 26 deletions
diff --git a/Cargo.lock b/Cargo.lock index d2202a7e7..debd091e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1360,9 +1360,9 @@ dependencies = [ [[package]] name = "deno_config" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc5aa53d1c3a3d0b9fd218e3f30f1080312f811b60e1866b88ec9f665447c4e" +checksum = "e287a8ab3552cf3ef8fc41b2bd7cc041c5e8e1a76de3aeb26e804b570bab37d7" dependencies = [ "anyhow", "deno_package_json", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index acda2292c..920f0d795 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -65,7 +65,7 @@ winres.workspace = true [dependencies] deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } deno_cache_dir = { workspace = true } -deno_config = { version = "=0.29.0", features = ["workspace", "sync"] } +deno_config = { version = "=0.30.0", features = ["workspace", "sync"] } deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] } deno_doc = { version = "0.146.0", features = ["html", "syntect"] } deno_emit = "=0.44.0" diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 68cf916b2..056dcb2af 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1085,7 +1085,7 @@ impl CliOptions { }; Ok( self - .start_dir + .workspace() .create_resolver( CreateResolverOptions { pkg_json_dep_resolution, diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index 1d6601933..e32303baa 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -1491,7 +1491,7 @@ impl ConfigData { } }; let resolver = deno_core::unsync::spawn({ - let workspace = member_dir.clone(); + let workspace = member_dir.workspace.clone(); let file_fetcher = file_fetcher.cloned(); async move { workspace diff --git a/cli/npm/managed/mod.rs b/cli/npm/managed/mod.rs index 1561d3969..8f82ddea2 100644 --- a/cli/npm/managed/mod.rs +++ b/cli/npm/managed/mod.rs @@ -324,7 +324,7 @@ impl ManagedCliNpmResolver { Ok(path) } - /// Resolves the package nv from the provided specifier. + /// Resolves the package id from the provided specifier. pub fn resolve_pkg_id_from_specifier( &self, specifier: &ModuleSpecifier, diff --git a/cli/resolver.rs b/cli/resolver.rs index b72fcd322..a62828b6e 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -5,6 +5,7 @@ use dashmap::DashMap; use dashmap::DashSet; use deno_ast::MediaType; use deno_config::workspace::MappedResolution; +use deno_config::workspace::MappedResolutionDiagnostic; use deno_config::workspace::MappedResolutionError; use deno_config::workspace::WorkspaceResolver; use deno_core::anyhow::anyhow; @@ -21,6 +22,7 @@ use deno_graph::NpmLoadError; use deno_graph::NpmResolvePkgReqsResult; use deno_npm::resolution::NpmResolutionError; use deno_package_json::PackageJsonDepValue; +use deno_runtime::colors; use deno_runtime::deno_fs; use deno_runtime::deno_fs::FileSystem; use deno_runtime::deno_node::is_builtin_node_module; @@ -434,6 +436,7 @@ pub struct CliGraphResolver { maybe_vendor_specifier: Option<ModuleSpecifier>, found_package_json_dep_flag: AtomicFlag, bare_node_builtins_enabled: bool, + warned_pkgs: DashSet<PackageReq>, } pub struct CliGraphResolverOptions<'a> { @@ -469,6 +472,7 @@ impl CliGraphResolver { .and_then(|v| ModuleSpecifier::from_directory_path(v).ok()), found_package_json_dep_flag: Default::default(), bare_node_builtins_enabled: options.bare_node_builtins_enabled, + warned_pkgs: Default::default(), } } @@ -541,8 +545,23 @@ impl Resolver for CliGraphResolver { }); let result = match result { Ok(resolution) => match resolution { - MappedResolution::Normal(specifier) - | MappedResolution::ImportMap(specifier) => { + MappedResolution::Normal { + specifier, + maybe_diagnostic, + } + | MappedResolution::ImportMap { + specifier, + maybe_diagnostic, + } => { + if let Some(diagnostic) = maybe_diagnostic { + match &*diagnostic { + MappedResolutionDiagnostic::ConstraintNotMatchedLocalVersion { reference, .. } => { + if self.warned_pkgs.insert(reference.req().clone()) { + log::warn!("{} {}\n at {}", colors::yellow("Warning"), diagnostic, referrer_range); + } + } + } + } // do sloppy imports resolution if enabled if let Some(sloppy_imports_resolver) = &self.sloppy_imports_resolver { Ok( diff --git a/cli/schemas/config-file.v1.json b/cli/schemas/config-file.v1.json index e74df9f2f..adfe3b0c2 100644 --- a/cli/schemas/config-file.v1.json +++ b/cli/schemas/config-file.v1.json @@ -608,6 +608,13 @@ } ] }, + "patch": { + "type": "array", + "items": { + "type": "string" + }, + "description": "UNSTABLE: List of relative paths to folders containing JSR packages to use local versions of." + }, "workspace": { "oneOf": [ { diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 020561ece..68e133476 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -227,8 +227,8 @@ impl ModuleLoader for EmbeddedModuleLoader { ) } }, - Ok(MappedResolution::Normal(specifier)) - | Ok(MappedResolution::ImportMap(specifier)) => { + Ok(MappedResolution::Normal { specifier, .. }) + | Ok(MappedResolution::ImportMap { specifier, .. }) => { if let Ok(reference) = NpmPackageReqReference::from_specifier(&specifier) { @@ -622,6 +622,7 @@ pub async fn run( .jsr_pkgs .iter() .map(|pkg| ResolverWorkspaceJsrPackage { + is_patch: false, // only used for enhancing the diagnostic, which isn't shown in deno compile base: root_dir_url.join(&pkg.relative_base).unwrap(), name: pkg.name.clone(), version: pkg.version.clone(), diff --git a/cli/tools/lint/rules/no_sloppy_imports.rs b/cli/tools/lint/rules/no_sloppy_imports.rs index 1ae792e08..4180be5be 100644 --- a/cli/tools/lint/rules/no_sloppy_imports.rs +++ b/cli/tools/lint/rules/no_sloppy_imports.rs @@ -189,20 +189,22 @@ impl<'a> deno_graph::source::Resolver for SloppyImportCaptureResolver<'a> { .map_err(|err| ResolveError::Other(err.into()))?; match resolution { - deno_config::workspace::MappedResolution::Normal(specifier) - | deno_config::workspace::MappedResolution::ImportMap(specifier) => { - match self.sloppy_imports_resolver.resolve(&specifier, mode) { - Some(res) => { - self - .captures - .borrow_mut() - .entry(referrer_range.clone()) - .or_insert_with(|| res.clone()); - Ok(res.into_specifier()) - } - None => Ok(specifier), - } + deno_config::workspace::MappedResolution::Normal { + specifier, .. } + | deno_config::workspace::MappedResolution::ImportMap { + specifier, .. + } => match self.sloppy_imports_resolver.resolve(&specifier, mode) { + Some(res) => { + self + .captures + .borrow_mut() + .entry(referrer_range.clone()) + .or_insert_with(|| res.clone()); + Ok(res.into_specifier()) + } + None => Ok(specifier), + }, deno_config::workspace::MappedResolution::WorkspaceJsrPackage { .. } diff --git a/cli/tools/registry/unfurl.rs b/cli/tools/registry/unfurl.rs index 489c9a1be..2babedb36 100644 --- a/cli/tools/registry/unfurl.rs +++ b/cli/tools/registry/unfurl.rs @@ -73,8 +73,8 @@ impl SpecifierUnfurler { self.workspace_resolver.resolve(specifier, referrer) { match resolved { - MappedResolution::Normal(specifier) - | MappedResolution::ImportMap(specifier) => Some(specifier), + MappedResolution::Normal { specifier, .. } + | MappedResolution::ImportMap { specifier, .. } => Some(specifier), MappedResolution::WorkspaceJsrPackage { pkg_req_ref, .. } => { Some(ModuleSpecifier::parse(&pkg_req_ref.to_string()).unwrap()) } @@ -443,6 +443,7 @@ mod tests { Arc::new(ModuleSpecifier::from_directory_path(&cwd).unwrap()), Some(import_map), vec![ResolverWorkspaceJsrPackage { + is_patch: false, base: ModuleSpecifier::from_directory_path(cwd.join("jsr-package")) .unwrap(), name: "@denotest/example".to_string(), diff --git a/tests/specs/compile/patch/__test__.jsonc b/tests/specs/compile/patch/__test__.jsonc new file mode 100644 index 000000000..87abf82a7 --- /dev/null +++ b/tests/specs/compile/patch/__test__.jsonc @@ -0,0 +1,22 @@ +{ + "tempDir": true, + "steps": [{ + "if": "unix", + "args": "compile --output my-app main/main.ts", + "output": "[WILDCARD]" + }, { + "if": "unix", + "commandName": "./my-app", + "args": [], + "output": "main.out" + }, { + "if": "windows", + "args": "compile --output my-app.exe main/main.ts", + "output": "[WILDCARD]" + }, { + "if": "windows", + "commandName": "./my-app.exe", + "args": [], + "output": "main.out" + }] +} diff --git a/tests/specs/compile/patch/add/deno.json b/tests/specs/compile/patch/add/deno.json new file mode 100644 index 000000000..40e417993 --- /dev/null +++ b/tests/specs/compile/patch/add/deno.json @@ -0,0 +1,4 @@ +{ + "name": "@denotest/add", + "exports": "./mod.ts" +} diff --git a/tests/specs/compile/patch/add/mod.ts b/tests/specs/compile/patch/add/mod.ts new file mode 100644 index 000000000..7e841b3bf --- /dev/null +++ b/tests/specs/compile/patch/add/mod.ts @@ -0,0 +1,3 @@ +export function add(a: number, b: number): number { + return (a + b) * 2; // it adds wrong +} diff --git a/tests/specs/compile/patch/main.out b/tests/specs/compile/patch/main.out new file mode 100644 index 000000000..1e8b31496 --- /dev/null +++ b/tests/specs/compile/patch/main.out @@ -0,0 +1 @@ +6 diff --git a/tests/specs/compile/patch/main/deno.json b/tests/specs/compile/patch/main/deno.json new file mode 100644 index 000000000..5d341f168 --- /dev/null +++ b/tests/specs/compile/patch/main/deno.json @@ -0,0 +1,5 @@ +{ + "patch": [ + "../add" + ] +} diff --git a/tests/specs/compile/patch/main/main.ts b/tests/specs/compile/patch/main/main.ts new file mode 100644 index 000000000..8fb44d2ed --- /dev/null +++ b/tests/specs/compile/patch/main/main.ts @@ -0,0 +1,3 @@ +import { add } from "jsr:@denotest/add"; + +console.log(add(1, 2)); diff --git a/tests/specs/mod.rs b/tests/specs/mod.rs index c46969f4e..7a3572a94 100644 --- a/tests/specs/mod.rs +++ b/tests/specs/mod.rs @@ -53,6 +53,8 @@ struct MultiTestMetaData { #[serde(default)] pub envs: HashMap<String, String>, #[serde(default)] + pub cwd: Option<String>, + #[serde(default)] pub tests: BTreeMap<String, JsonMap>, } @@ -73,6 +75,10 @@ impl MultiTestMetaData { if multi_test_meta_data.temp_dir && !value.contains_key("tempDir") { value.insert("tempDir".to_string(), true.into()); } + if multi_test_meta_data.cwd.is_some() && !value.contains_key("cwd") { + value + .insert("cwd".to_string(), multi_test_meta_data.cwd.clone().into()); + } if !multi_test_meta_data.envs.is_empty() { if !value.contains_key("envs") { value.insert("envs".to_string(), JsonMap::default().into()); @@ -112,6 +118,8 @@ struct MultiStepMetaData { #[serde(default)] pub base: Option<String>, #[serde(default)] + pub cwd: Option<String>, + #[serde(default)] pub envs: HashMap<String, String>, #[serde(default)] pub repeat: Option<usize>, @@ -136,6 +144,7 @@ impl SingleTestMetaData { pub fn into_multi(self) -> MultiStepMetaData { MultiStepMetaData { base: self.base, + cwd: None, temp_dir: self.temp_dir, repeat: self.repeat, envs: Default::default(), @@ -371,7 +380,7 @@ fn run_step( VecOrString::Vec(args) => command.args_vec(args), VecOrString::String(text) => command.args(text), }; - let command = match &step.cwd { + let command = match step.cwd.as_ref().or(metadata.cwd.as_ref()) { Some(cwd) => command.current_dir(cwd), None => command, }; diff --git a/tests/specs/run/patch/__test__.jsonc b/tests/specs/run/patch/__test__.jsonc new file mode 100644 index 000000000..00ae3baac --- /dev/null +++ b/tests/specs/run/patch/__test__.jsonc @@ -0,0 +1,25 @@ +{ + "tempDir": true, + "tests": { + "matching_version": { + "cwd": "./my-pkg", + "steps": [{ + "args": "test", + "output": "test.out" + }, { + "args": "lint", + "output": "Checked 2 files\n" + }] + }, + "not_matching_version": { + "steps": [{ + "args": "run --allow-read=. --allow-write=. modify_version.ts", + "output": "[WILDCARD]" + }, { + "cwd": "./my-pkg", + "args": "test", + "output": "not_matching_version.out" + }] + } + } +} diff --git a/tests/specs/run/patch/add/deno.json b/tests/specs/run/patch/add/deno.json new file mode 100644 index 000000000..05d24d7b5 --- /dev/null +++ b/tests/specs/run/patch/add/deno.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/add", + "version": "1.0.0", + "exports": "./mod.ts" +} diff --git a/tests/specs/run/patch/add/mod.test.ts b/tests/specs/run/patch/add/mod.test.ts new file mode 100644 index 000000000..3d3804e07 --- /dev/null +++ b/tests/specs/run/patch/add/mod.test.ts @@ -0,0 +1,9 @@ +import { add } from "./mod.ts"; + +// this test should not be run or linted +Deno.test("add", () => { + let unusedVar = 5; // purposefully causing a lint error to ensure it's not linted + if (add(1, 2) !== 3) { + throw new Error("fail"); + } +}); diff --git a/tests/specs/run/patch/add/mod.ts b/tests/specs/run/patch/add/mod.ts new file mode 100644 index 000000000..97a779a44 --- /dev/null +++ b/tests/specs/run/patch/add/mod.ts @@ -0,0 +1,4 @@ +export function add(a: number, b: number): number { + console.log("adding", a, "and", b); + return a + b; +} diff --git a/tests/specs/run/patch/modify_version.ts b/tests/specs/run/patch/modify_version.ts new file mode 100644 index 000000000..3d59aa1b9 --- /dev/null +++ b/tests/specs/run/patch/modify_version.ts @@ -0,0 +1,3 @@ +const data = JSON.parse(Deno.readTextFileSync("./add/deno.json")); +data.version = "2.0.0"; +Deno.writeTextFileSync("./add/deno.json", JSON.stringify(data, null, 2)); diff --git a/tests/specs/run/patch/my-pkg/deno.json b/tests/specs/run/patch/my-pkg/deno.json new file mode 100644 index 000000000..0303c9974 --- /dev/null +++ b/tests/specs/run/patch/my-pkg/deno.json @@ -0,0 +1,11 @@ +{ + "name": "@scope/my-pkg", + "version": "1.0.0", + "exports": "./mod.ts", + "imports": { + "@denotest/add": "jsr:@denotest/add@1" + }, + "patch": [ + "../add" + ] +} diff --git a/tests/specs/run/patch/my-pkg/mod.test.ts b/tests/specs/run/patch/my-pkg/mod.test.ts new file mode 100644 index 000000000..1c694298c --- /dev/null +++ b/tests/specs/run/patch/my-pkg/mod.test.ts @@ -0,0 +1,7 @@ +import { add } from "./mod.ts"; + +Deno.test("add", () => { + if (add(1, 2) !== 3) { + throw new Error("fail"); + } +}); diff --git a/tests/specs/run/patch/my-pkg/mod.ts b/tests/specs/run/patch/my-pkg/mod.ts new file mode 100644 index 000000000..41389ed65 --- /dev/null +++ b/tests/specs/run/patch/my-pkg/mod.ts @@ -0,0 +1,2 @@ +export { add } from "@denotest/add"; +import "@denotest/add"; // ensure it only warns once diff --git a/tests/specs/run/patch/not_matching_version.out b/tests/specs/run/patch/not_matching_version.out new file mode 100644 index 000000000..7a9ee6f39 --- /dev/null +++ b/tests/specs/run/patch/not_matching_version.out @@ -0,0 +1,11 @@ +Warning Patch '@denotest/add@2.0.0' was not used because it did not match '@denotest/add@1' + at file:///[WILDLINE]/my-pkg/mod.ts:1:21 +Download http://127.0.0.1:4250/@denotest/add/meta.json +Download http://127.0.0.1:4250/@denotest/add/1.0.0_meta.json +Download http://127.0.0.1:4250/@denotest/add/1.0.0/mod.ts +Check file:///[WILDLINE]/mod.test.ts +running 1 test from ./mod.test.ts +add ... ok ([WILDLINE]) + +ok | 1 passed | 0 failed ([WILDLINE]) + diff --git a/tests/specs/run/patch/test.out b/tests/specs/run/patch/test.out new file mode 100644 index 000000000..4eb9f3383 --- /dev/null +++ b/tests/specs/run/patch/test.out @@ -0,0 +1,10 @@ +Check file:///[WILDLINE]/mod.test.ts +running 1 test from ./mod.test.ts +add ... +------- output ------- +adding 1 and 2 +----- output end ----- +add ... ok ([WILDLINE]) + +ok | 1 passed | 0 failed ([WILDLINE]) + diff --git a/tests/specs/run/workspaces/member_not_match_constraint/__test__.jsonc b/tests/specs/run/workspaces/member_not_match_constraint/__test__.jsonc new file mode 100644 index 000000000..532705939 --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "test", + "output": "test.out" +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/add/deno.json b/tests/specs/run/workspaces/member_not_match_constraint/add/deno.json new file mode 100644 index 000000000..ff1abb9fe --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/add/deno.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/add", + "version": "2.0.0", + "exports": "./mod.ts" +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/add/mod.ts b/tests/specs/run/workspaces/member_not_match_constraint/add/mod.ts new file mode 100644 index 000000000..2c8d7ef7a --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/add/mod.ts @@ -0,0 +1,4 @@ +export function add(a: number, b: number): number { + console.log("local"); + return a + b; +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/deno.json b/tests/specs/run/workspaces/member_not_match_constraint/deno.json new file mode 100644 index 000000000..ec5dc2bdf --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/deno.json @@ -0,0 +1,3 @@ +{ + "workspace": ["./add", "./subtract"] +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/deno.lock b/tests/specs/run/workspaces/member_not_match_constraint/deno.lock new file mode 100644 index 000000000..373359d72 --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/deno.lock @@ -0,0 +1,23 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "jsr:@denotest/add@1": "jsr:@denotest/add@1.0.0" + }, + "jsr": { + "@denotest/add@1.0.0": { + "integrity": "3b2e675c1ad7fba2a45bc251992e01aff08a3c974ac09079b11e6a5b95d4bfcb" + } + } + }, + "remote": {}, + "workspace": { + "members": { + "subtract": { + "dependencies": [ + "jsr:@denotest/add@1" + ] + } + } + } +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/subtract/deno.json b/tests/specs/run/workspaces/member_not_match_constraint/subtract/deno.json new file mode 100644 index 000000000..e585197c0 --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/subtract/deno.json @@ -0,0 +1,8 @@ +{ + "name": "@denotest/subtract", + "version": "1.0.0", + "exports": "./mod.ts", + "imports": { + "@denotest/add": "jsr:@denotest/add@1" + } +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/subtract/mod.test.ts b/tests/specs/run/workspaces/member_not_match_constraint/subtract/mod.test.ts new file mode 100644 index 000000000..7d699d4d7 --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/subtract/mod.test.ts @@ -0,0 +1,7 @@ +import { subtract } from "./mod.ts"; + +Deno.test("subtract", () => { + if (subtract(3, 2) !== 1) { + throw new Error("fail"); + } +}); diff --git a/tests/specs/run/workspaces/member_not_match_constraint/subtract/mod.ts b/tests/specs/run/workspaces/member_not_match_constraint/subtract/mod.ts new file mode 100644 index 000000000..6e301511b --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/subtract/mod.ts @@ -0,0 +1,5 @@ +import { add } from "@denotest/add"; + +export function subtract(a: number, b: number): number { + return add(a, -b); +} diff --git a/tests/specs/run/workspaces/member_not_match_constraint/test.out b/tests/specs/run/workspaces/member_not_match_constraint/test.out new file mode 100644 index 000000000..0e16426c6 --- /dev/null +++ b/tests/specs/run/workspaces/member_not_match_constraint/test.out @@ -0,0 +1,11 @@ +Warning Workspace member '@denotest/add@2.0.0' was not used because it did not match '@denotest/add@1' + at file:///[WILDLINE]/mod.ts:1:21 +Download http://127.0.0.1:4250/@denotest/add/meta.json +Download http://127.0.0.1:4250/@denotest/add/1.0.0_meta.json +Download http://127.0.0.1:4250/@denotest/add/1.0.0/mod.ts +Check file:///[WILDLINE]/mod.test.ts +running 1 test from ./subtract/mod.test.ts +subtract ... ok ([WILDLINE]) + +ok | 1 passed | 0 failed ([WILDLINE]) + diff --git a/tests/specs/workspaces/patch/__test__.jsonc b/tests/specs/workspaces/patch/__test__.jsonc new file mode 100644 index 000000000..90a54086e --- /dev/null +++ b/tests/specs/workspaces/patch/__test__.jsonc @@ -0,0 +1,13 @@ +{ + "cwd": "./workspace", + "tests": { + "lint": { + "args": "lint", + "output": "Checked 2 files\n" + }, + "test": { + "args": "test", + "output": "test.out" + } + } +} diff --git a/tests/specs/workspaces/patch/add/deno.json b/tests/specs/workspaces/patch/add/deno.json new file mode 100644 index 000000000..05d24d7b5 --- /dev/null +++ b/tests/specs/workspaces/patch/add/deno.json @@ -0,0 +1,5 @@ +{ + "name": "@denotest/add", + "version": "1.0.0", + "exports": "./mod.ts" +} diff --git a/tests/specs/workspaces/patch/add/mod.test.ts b/tests/specs/workspaces/patch/add/mod.test.ts new file mode 100644 index 000000000..3d3804e07 --- /dev/null +++ b/tests/specs/workspaces/patch/add/mod.test.ts @@ -0,0 +1,9 @@ +import { add } from "./mod.ts"; + +// this test should not be run or linted +Deno.test("add", () => { + let unusedVar = 5; // purposefully causing a lint error to ensure it's not linted + if (add(1, 2) !== 3) { + throw new Error("fail"); + } +}); diff --git a/tests/specs/workspaces/patch/add/mod.ts b/tests/specs/workspaces/patch/add/mod.ts new file mode 100644 index 000000000..97a779a44 --- /dev/null +++ b/tests/specs/workspaces/patch/add/mod.ts @@ -0,0 +1,4 @@ +export function add(a: number, b: number): number { + console.log("adding", a, "and", b); + return a + b; +} diff --git a/tests/specs/workspaces/patch/test.out b/tests/specs/workspaces/patch/test.out new file mode 100644 index 000000000..c35ac0e45 --- /dev/null +++ b/tests/specs/workspaces/patch/test.out @@ -0,0 +1,10 @@ +Check file:///[WILDLINE]/my-pkg/mod.test.ts +running 1 test from ./my-pkg/mod.test.ts +add ... +------- output ------- +adding 1 and 2 +----- output end ----- +add ... ok ([WILDLINE]) + +ok | 1 passed | 0 failed ([WILDLINE]) + diff --git a/tests/specs/workspaces/patch/workspace/deno.json b/tests/specs/workspaces/patch/workspace/deno.json new file mode 100644 index 000000000..510351c44 --- /dev/null +++ b/tests/specs/workspaces/patch/workspace/deno.json @@ -0,0 +1,6 @@ +{ + "workspace": ["./my-pkg"], + "patch": [ + "../add" + ] +} diff --git a/tests/specs/workspaces/patch/workspace/my-pkg/deno.json b/tests/specs/workspaces/patch/workspace/my-pkg/deno.json new file mode 100644 index 000000000..8b2e887e7 --- /dev/null +++ b/tests/specs/workspaces/patch/workspace/my-pkg/deno.json @@ -0,0 +1,8 @@ +{ + "name": "@scope/my-pkg", + "version": "1.0.0", + "exports": "./mod.ts", + "imports": { + "@denotest/add": "jsr:@denotest/add@1" + } +} diff --git a/tests/specs/workspaces/patch/workspace/my-pkg/mod.test.ts b/tests/specs/workspaces/patch/workspace/my-pkg/mod.test.ts new file mode 100644 index 000000000..1c694298c --- /dev/null +++ b/tests/specs/workspaces/patch/workspace/my-pkg/mod.test.ts @@ -0,0 +1,7 @@ +import { add } from "./mod.ts"; + +Deno.test("add", () => { + if (add(1, 2) !== 3) { + throw new Error("fail"); + } +}); diff --git a/tests/specs/workspaces/patch/workspace/my-pkg/mod.ts b/tests/specs/workspaces/patch/workspace/my-pkg/mod.ts new file mode 100644 index 000000000..11501ab39 --- /dev/null +++ b/tests/specs/workspaces/patch/workspace/my-pkg/mod.ts @@ -0,0 +1 @@ +export { add } from "@denotest/add"; |