summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/integration/npm_tests.rs48
-rw-r--r--cli/tests/integration/run_tests.rs13
-rw-r--r--cli/tests/testdata/jsx/deno.lock7
-rw-r--r--cli/tests/testdata/npm/lock_file/main.out11
-rw-r--r--cli/tests/testdata/run/auto_discover_lockfile/deno.json3
-rw-r--r--cli/tests/testdata/run/auto_discover_lockfile/deno.lock7
-rw-r--r--cli/tests/testdata/run/auto_discover_lockfile/main.out5
-rw-r--r--cli/tests/testdata/run/auto_discover_lockfile/main.ts1
-rw-r--r--cli/tests/testdata/run/config_types/deno.lock6
-rw-r--r--cli/tests/testdata/run/lock_write_requires_lock.out3
10 files changed, 92 insertions, 12 deletions
diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs
index a5b443171..72af72a76 100644
--- a/cli/tests/integration/npm_tests.rs
+++ b/cli/tests/integration/npm_tests.rs
@@ -998,6 +998,54 @@ fn lock_file_missing_top_level_package() {
);
}
+#[test]
+fn auto_discover_lock_file() {
+ let _server = http_server();
+
+ let deno_dir = util::new_deno_dir();
+ let temp_dir = util::TempDir::new();
+
+ // write empty config file
+ temp_dir.write("deno.json", "{}");
+
+ // write a lock file with borked integrity
+ let lock_file_content = r#"{
+ "version": "2",
+ "remote": {},
+ "npm": {
+ "specifiers": { "@denotest/bin": "@denotest/bin@1.0.0" },
+ "packages": {
+ "@denotest/bin@1.0.0": {
+ "integrity": "sha512-foobar",
+ "dependencies": {}
+ }
+ }
+ }
+ }"#;
+ temp_dir.write("deno.lock", lock_file_content);
+
+ let deno = util::deno_cmd_with_deno_dir(&deno_dir)
+ .current_dir(temp_dir.path())
+ .arg("run")
+ .arg("--unstable")
+ .arg("-A")
+ .arg("npm:@denotest/bin/cli-esm")
+ .arg("test")
+ .envs(env_vars())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::piped())
+ .spawn()
+ .unwrap();
+ let output = deno.wait_with_output().unwrap();
+ assert!(!output.status.success());
+ assert_eq!(output.status.code(), Some(10));
+
+ let stderr = String::from_utf8(output.stderr).unwrap();
+ assert!(stderr.contains(
+ "Integrity check failed for npm package: \"@denotest/bin@1.0.0\""
+ ));
+}
+
fn env_vars_no_sync_download() -> Vec<(String, String)> {
vec![
("DENO_NODE_COMPAT_URL".to_string(), util::std_file_url()),
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index 99e122c69..68d15bfd9 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -609,12 +609,6 @@ itest!(private_field_presence_no_check {
output: "run/private_field_presence.ts.out",
});
-itest!(lock_write_requires_lock {
- args: "run --lock-write some_file.ts",
- output: "run/lock_write_requires_lock.out",
- exit_code: 1,
-});
-
// TODO(bartlomieju): remove --unstable once Deno.spawn is stabilized
itest!(lock_write_fetch {
args:
@@ -3634,3 +3628,10 @@ fn websocket_server_idletimeout() {
assert!(child.wait().unwrap().success());
}
+
+itest!(auto_discover_lockfile {
+ args: "run run/auto_discover_lockfile/main.ts",
+ output: "run/auto_discover_lockfile/main.out",
+ http_server: true,
+ exit_code: 10,
+});
diff --git a/cli/tests/testdata/jsx/deno.lock b/cli/tests/testdata/jsx/deno.lock
new file mode 100644
index 000000000..64429f30a
--- /dev/null
+++ b/cli/tests/testdata/jsx/deno.lock
@@ -0,0 +1,7 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime": "7cac3d940791b3c8e671b24f9678ca37d87d40487ed2b3720a2a40891aa6173d",
+ "http://localhost:4545/jsx/jsx-runtime": "7cac3d940791b3c8e671b24f9678ca37d87d40487ed2b3720a2a40891aa6173d"
+ }
+}
diff --git a/cli/tests/testdata/npm/lock_file/main.out b/cli/tests/testdata/npm/lock_file/main.out
index 4c034d03b..b8447bee6 100644
--- a/cli/tests/testdata/npm/lock_file/main.out
+++ b/cli/tests/testdata/npm/lock_file/main.out
@@ -1,4 +1,9 @@
Download [WILDCARD]
-error: Integrity check failed for npm package: "@babel/parser@7.19.0".
- Cache has "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==" and lockfile has "sha512-foobar!".
- Use "--lock-write" flag to update the lockfile.
+error: Integrity check failed for npm package: "@babel/parser@7.19.0". Unable to verify that the package
+is the same as when the lockfile was generated.
+
+This could be caused by:
+ * the lock file may be corrupt
+ * the source itself may be corrupt
+
+Use "--lock-write" flag to regenerate the lockfile at "[WILDCARD]lock.json".
diff --git a/cli/tests/testdata/run/auto_discover_lockfile/deno.json b/cli/tests/testdata/run/auto_discover_lockfile/deno.json
new file mode 100644
index 000000000..90faa728a
--- /dev/null
+++ b/cli/tests/testdata/run/auto_discover_lockfile/deno.json
@@ -0,0 +1,3 @@
+{
+ "tasks": {}
+}
diff --git a/cli/tests/testdata/run/auto_discover_lockfile/deno.lock b/cli/tests/testdata/run/auto_discover_lockfile/deno.lock
new file mode 100644
index 000000000..059f66789
--- /dev/null
+++ b/cli/tests/testdata/run/auto_discover_lockfile/deno.lock
@@ -0,0 +1,7 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/subdir/mod2.ts": "cae1d3e9f3c38cd415ff52dff854be8f3d17d35f8d7b3d285e813fb0f6393a2f",
+ "http://localhost:4545/subdir/print_hello.ts": "foobar"
+ }
+}
diff --git a/cli/tests/testdata/run/auto_discover_lockfile/main.out b/cli/tests/testdata/run/auto_discover_lockfile/main.out
new file mode 100644
index 000000000..28f4724e9
--- /dev/null
+++ b/cli/tests/testdata/run/auto_discover_lockfile/main.out
@@ -0,0 +1,5 @@
+Download http://localhost:4545/subdir/mod2.ts
+Download http://localhost:4545/subdir/print_hello.ts
+error: The source code is invalid, as it does not match the expected hash in the lock file.
+ Specifier: http://localhost:4545/subdir/print_hello.ts
+ Lock file: [WILDCARD]auto_discover_lockfile[WILDCARD]deno.lock
diff --git a/cli/tests/testdata/run/auto_discover_lockfile/main.ts b/cli/tests/testdata/run/auto_discover_lockfile/main.ts
new file mode 100644
index 000000000..baa52775d
--- /dev/null
+++ b/cli/tests/testdata/run/auto_discover_lockfile/main.ts
@@ -0,0 +1 @@
+import "http://localhost:4545/subdir/mod2.ts";
diff --git a/cli/tests/testdata/run/config_types/deno.lock b/cli/tests/testdata/run/config_types/deno.lock
new file mode 100644
index 000000000..157bd98a2
--- /dev/null
+++ b/cli/tests/testdata/run/config_types/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/run/config_types/types.d.ts": "741c39165e37de0c12acc5c081841f4362487e3f17dc4cad7017b70af72c4605"
+ }
+}
diff --git a/cli/tests/testdata/run/lock_write_requires_lock.out b/cli/tests/testdata/run/lock_write_requires_lock.out
deleted file mode 100644
index 7cc5906f6..000000000
--- a/cli/tests/testdata/run/lock_write_requires_lock.out
+++ /dev/null
@@ -1,3 +0,0 @@
-error: The following required arguments were not provided:
- --lock <FILE>
-[WILDCARD] \ No newline at end of file