summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-07-26 17:23:07 -0400
committerGitHub <noreply@github.com>2023-07-26 17:23:07 -0400
commitcf16df00d9ba87de643abc6d80c860a2733917cc (patch)
treed8e17df213941675c8eecba89931b8417cd0367f /cli/tests
parent53e077133f9c95e4ed23d838129158b6e4b88d6f (diff)
fix(check): should bust check cache when json module or npm resolution changes (#19941)
A small part of #19928.
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/integration/check_tests.rs77
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts1
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js3
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json6
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts1
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js3
-rw-r--r--cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json6
7 files changed, 97 insertions, 0 deletions
diff --git a/cli/tests/integration/check_tests.rs b/cli/tests/integration/check_tests.rs
index 1b00cadbe..04e5dedba 100644
--- a/cli/tests/integration/check_tests.rs
+++ b/cli/tests/integration/check_tests.rs
@@ -307,3 +307,80 @@ fn check_error_in_dep_then_fix() {
output.assert_matches_text("Check [WILDCARD]main.ts\nerror: TS234[WILDCARD]");
output.assert_exit_code(1);
}
+
+#[test]
+fn json_module_check_then_error() {
+ let test_context = TestContextBuilder::new().use_temp_cwd().build();
+ let temp_dir = test_context.temp_dir();
+ let correct_code = "{ \"foo\": \"bar\" }";
+ let incorrect_code = "{ \"foo2\": \"bar\" }";
+
+ temp_dir.write(
+ "main.ts",
+ "import test from './test.json' assert { type: 'json' }; console.log(test.foo);\n",
+ );
+ temp_dir.write("test.json", correct_code);
+
+ let check_command = test_context.new_command().args_vec(["check", "main.ts"]);
+
+ check_command.run().assert_exit_code(0).skip_output_check();
+
+ temp_dir.write("test.json", incorrect_code);
+ check_command
+ .run()
+ .assert_matches_text("Check [WILDCARD]main.ts\nerror: TS2551[WILDCARD]")
+ .assert_exit_code(1);
+}
+
+#[test]
+fn npm_module_check_then_error() {
+ let test_context = TestContextBuilder::new()
+ .use_temp_cwd()
+ .add_npm_env_vars()
+ .use_http_server()
+ .build();
+ let temp_dir = test_context.temp_dir();
+ temp_dir.write("deno.json", "{}"); // so the lockfile gets loaded
+
+ // get the lockfiles values first (this is necessary because the test
+ // server generates different tarballs based on the operating system)
+ test_context
+ .new_command()
+ .args_vec([
+ "cache",
+ "npm:@denotest/breaking-change-between-versions@1.0.0",
+ "npm:@denotest/breaking-change-between-versions@2.0.0",
+ ])
+ .run()
+ .skip_output_check();
+ let lockfile = temp_dir.path().join("deno.lock");
+ let mut lockfile_content =
+ lockfile.read_json::<deno_lockfile::LockfileContent>();
+
+ // make the specifier resolve to version 1
+ lockfile_content.npm.specifiers.insert(
+ "@denotest/breaking-change-between-versions".to_string(),
+ "@denotest/breaking-change-between-versions@1.0.0".to_string(),
+ );
+ lockfile.write_json(&lockfile_content);
+ temp_dir.write(
+ "main.ts",
+ "import { oldName } from 'npm:@denotest/breaking-change-between-versions'; console.log(oldName());\n",
+ );
+
+ let check_command = test_context.new_command().args_vec(["check", "main.ts"]);
+ check_command.run().assert_exit_code(0).skip_output_check();
+
+ // now update the lockfile to use version 2 instead, which should cause a
+ // type checking error because the oldName no longer exists
+ lockfile_content.npm.specifiers.insert(
+ "@denotest/breaking-change-between-versions".to_string(),
+ "@denotest/breaking-change-between-versions@2.0.0".to_string(),
+ );
+ lockfile.write_json(&lockfile_content);
+
+ check_command
+ .run()
+ .assert_matches_text("Check [WILDCARD]main.ts\nerror: TS2305[WILDCARD]has no exported member 'oldName'[WILDCARD]")
+ .assert_exit_code(1);
+}
diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts
new file mode 100644
index 000000000..06dfef10d
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts
@@ -0,0 +1 @@
+export function oldName(): 1; \ No newline at end of file
diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js
new file mode 100644
index 000000000..1aca4250b
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js
@@ -0,0 +1,3 @@
+export function newName() {
+ return 1;
+}
diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json
new file mode 100644
index 000000000..6eabea3af
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@denotest/breaking-change-between-versions",
+ "version": "1.0.0",
+ "type": "module",
+ "main": "index.js"
+}
diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts
new file mode 100644
index 000000000..9a96451a5
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts
@@ -0,0 +1 @@
+export function newName(): 2; \ No newline at end of file
diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js
new file mode 100644
index 000000000..57626060d
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js
@@ -0,0 +1,3 @@
+export function newName() {
+ return 2;
+}
diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json
new file mode 100644
index 000000000..ecd5970a4
--- /dev/null
+++ b/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@denotest/breaking-change-between-versions",
+ "version": "2.0.0",
+ "type": "module",
+ "main": "index.js"
+}