From 2c72e8d5f45f12948310c1f0e1e2ed4f1d80fb51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 8 Nov 2022 04:08:24 +0100 Subject: [PATCH] fix(lock): only store integrities for http: and https: imports (#16558) --- cli/lockfile.rs | 9 +++------ cli/tests/integration/run_tests.rs | 6 ++++++ cli/tests/testdata/run/lock_only_http_and_https/b.ts | 3 +++ .../testdata/run/lock_only_http_and_https/deno.lock | 7 +++++++ cli/tests/testdata/run/lock_only_http_and_https/main.out | 5 +++++ cli/tests/testdata/run/lock_only_http_and_https/main.ts | 6 ++++++ 6 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 cli/tests/testdata/run/lock_only_http_and_https/b.ts create mode 100644 cli/tests/testdata/run/lock_only_http_and_https/deno.lock create mode 100644 cli/tests/testdata/run/lock_only_http_and_https/main.out create mode 100644 cli/tests/testdata/run/lock_only_http_and_https/main.ts diff --git a/cli/lockfile.rs b/cli/lockfile.rs index cdb40c5307..d9d0c6d857 100644 --- a/cli/lockfile.rs +++ b/cli/lockfile.rs @@ -222,6 +222,9 @@ impl Lockfile { specifier: &str, code: &str, ) -> bool { + if !(specifier.starts_with("http:") || specifier.starts_with("https:")) { + return true; + } if self.overwrite { // In case --lock-write is specified check always passes self.insert(specifier, code); @@ -247,9 +250,6 @@ impl Lockfile { /// Checks the given module is included, if so verify the checksum. If module /// is not included, insert it. fn check_or_insert(&mut self, specifier: &str, code: &str) -> bool { - if specifier.starts_with("file:") { - return true; - } if let Some(lockfile_checksum) = self.content.remote.get(specifier) { let compiled_checksum = crate::checksum::gen(&[code.as_bytes()]); lockfile_checksum == &compiled_checksum @@ -260,9 +260,6 @@ impl Lockfile { } fn insert(&mut self, specifier: &str, code: &str) { - if specifier.starts_with("file:") { - return; - } let checksum = crate::checksum::gen(&[code.as_bytes()]); self.content.remote.insert(specifier.to_string(), checksum); self.has_content_changed = true; diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs index 8265d54ec4..70d4f5d92f 100644 --- a/cli/tests/integration/run_tests.rs +++ b/cli/tests/integration/run_tests.rs @@ -686,6 +686,12 @@ itest!(lock_v2_check_err2 { http_server: true, }); +itest!(lock_only_http_and_https { + args: "run --lock=run/lock_only_http_and_https/deno.lock run/lock_only_http_and_https/main.ts", + output: "run/lock_only_http_and_https/main.out", + http_server: true, +}); + itest!(mts_dmts_mjs { args: "run subdir/import.mts", output: "run/mts_dmts_mjs.out", diff --git a/cli/tests/testdata/run/lock_only_http_and_https/b.ts b/cli/tests/testdata/run/lock_only_http_and_https/b.ts new file mode 100644 index 0000000000..3bf5ac26a6 --- /dev/null +++ b/cli/tests/testdata/run/lock_only_http_and_https/b.ts @@ -0,0 +1,3 @@ +export function b() { + return "b"; +} diff --git a/cli/tests/testdata/run/lock_only_http_and_https/deno.lock b/cli/tests/testdata/run/lock_only_http_and_https/deno.lock new file mode 100644 index 0000000000..695926fd57 --- /dev/null +++ b/cli/tests/testdata/run/lock_only_http_and_https/deno.lock @@ -0,0 +1,7 @@ +{ + "version": "2", + "remote": { + "http://127.0.0.1:4545/run/003_relative_import.ts": "a1572e8fd2c2712b33f04aed2561505b5feb2c8696f1f2cded3de7127931b97e", + "http://127.0.0.1:4545/subdir/print_hello.ts": "fa6692c8f9ff3fb107e773c3ece5274e9d08be282867a1e3ded1d9c00fcaa63c" + } +} diff --git a/cli/tests/testdata/run/lock_only_http_and_https/main.out b/cli/tests/testdata/run/lock_only_http_and_https/main.out new file mode 100644 index 0000000000..cc47b50f31 --- /dev/null +++ b/cli/tests/testdata/run/lock_only_http_and_https/main.out @@ -0,0 +1,5 @@ +Download http://127.0.0.1:4545/run/003_relative_import.ts +Download http://127.0.0.1:4545/subdir/print_hello.ts +Hello +[Function: a] +[Function: b] diff --git a/cli/tests/testdata/run/lock_only_http_and_https/main.ts b/cli/tests/testdata/run/lock_only_http_and_https/main.ts new file mode 100644 index 0000000000..879e825ed5 --- /dev/null +++ b/cli/tests/testdata/run/lock_only_http_and_https/main.ts @@ -0,0 +1,6 @@ +import "http://127.0.0.1:4545/run/003_relative_import.ts"; +import { a } from "data:application/typescript;base64,ZW51bSBBIHsKICBBLAogIEIsCiAgQywKIH0KIAogZXhwb3J0IGZ1bmN0aW9uIGEoKSB7CiAgIHRocm93IG5ldyBFcnJvcihgSGVsbG8gJHtBLkN9YCk7CiB9CiA="; +import { b } from "./b.ts"; + +console.log(a); +console.log(b);