summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-08-08 18:45:41 +0200
committerGitHub <noreply@github.com>2024-08-08 16:45:41 +0000
commit3f692bed0a62de79895ea3373b9004fd6a542035 (patch)
tree4c100b1f3a273e1b297e4f826613249502d20425
parente36b1a3aa88b31435b18a33448fc75eeb6dc8017 (diff)
fix(add): Support dist tags in deno add (#24960)
Fixes #24956.
-rw-r--r--cli/npm/mod.rs4
-rw-r--r--tests/specs/add/dist_tag/__test__.jsonc9
-rw-r--r--tests/specs/add/dist_tag/deno.json0
-rw-r--r--tests/specs/install/future_install_add_dist_tag/__test__.jsonc12
-rw-r--r--tests/specs/install/future_install_add_dist_tag/deno.json0
-rw-r--r--tests/specs/install/future_install_add_dist_tag/install.out15
6 files changed, 40 insertions, 0 deletions
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index f883883aa..c8f87e6af 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -124,6 +124,10 @@ impl NpmFetchResolver {
let maybe_get_nv = || async {
let name = req.name.clone();
let package_info = self.package_info(&name).await?;
+ if let Some(dist_tag) = req.version_req.tag() {
+ let version = package_info.dist_tags.get(dist_tag)?.clone();
+ return Some(PackageNv { name, version });
+ }
// Find the first matching version of the package.
let mut versions = package_info.versions.keys().collect::<Vec<_>>();
versions.sort();
diff --git a/tests/specs/add/dist_tag/__test__.jsonc b/tests/specs/add/dist_tag/__test__.jsonc
new file mode 100644
index 000000000..ac8a65654
--- /dev/null
+++ b/tests/specs/add/dist_tag/__test__.jsonc
@@ -0,0 +1,9 @@
+{
+ "tempDir": true,
+ "steps": [
+ {
+ "args": "add npm:ajv@latest",
+ "output": "Add npm:ajv@8.11.0\n"
+ }
+ ]
+}
diff --git a/tests/specs/add/dist_tag/deno.json b/tests/specs/add/dist_tag/deno.json
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/specs/add/dist_tag/deno.json
diff --git a/tests/specs/install/future_install_add_dist_tag/__test__.jsonc b/tests/specs/install/future_install_add_dist_tag/__test__.jsonc
new file mode 100644
index 000000000..a3247d160
--- /dev/null
+++ b/tests/specs/install/future_install_add_dist_tag/__test__.jsonc
@@ -0,0 +1,12 @@
+{
+ "tempDir": true,
+ "steps": [
+ {
+ "envs": {
+ "DENO_FUTURE": "1"
+ },
+ "args": "install npm:ajv@latest",
+ "output": "install.out"
+ }
+ ]
+}
diff --git a/tests/specs/install/future_install_add_dist_tag/deno.json b/tests/specs/install/future_install_add_dist_tag/deno.json
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/specs/install/future_install_add_dist_tag/deno.json
diff --git a/tests/specs/install/future_install_add_dist_tag/install.out b/tests/specs/install/future_install_add_dist_tag/install.out
new file mode 100644
index 000000000..643a5cb06
--- /dev/null
+++ b/tests/specs/install/future_install_add_dist_tag/install.out
@@ -0,0 +1,15 @@
+Add npm:ajv@8.11.0
+[UNORDERED_START]
+Download http://localhost:4260/ajv
+Download http://localhost:4260/fast-deep-equal
+Download http://localhost:4260/json-schema-traverse
+Download http://localhost:4260/require-from-string
+Download http://localhost:4260/uri-js
+Download http://localhost:4260/punycode
+Download http://localhost:4260/ajv/ajv-8.11.0.tgz
+Download http://localhost:4260/fast-deep-equal/fast-deep-equal-3.1.3.tgz
+Download http://localhost:4260/uri-js/uri-js-4.4.1.tgz
+Download http://localhost:4260/json-schema-traverse/json-schema-traverse-1.0.0.tgz
+Download http://localhost:4260/require-from-string/require-from-string-2.0.2.tgz
+Download http://localhost:4260/punycode/punycode-2.1.1.tgz
+[UNORDERED_END]