summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin Hagemeister <marvin@deno.com>2024-10-16 18:34:33 +0200
committerGitHub <noreply@github.com>2024-10-16 18:34:33 +0200
commite515f3dd0ea61bb3001e98ad7733ccb67c341f1e (patch)
treea7bd015cd0247f08677dca4e76268d90d0fe69c6
parent06778e4e9b0a856ac39cc01f0813e6076eb150d6 (diff)
fix(add): exact version should not have range `^` specifier (#26302)
Fixes https://github.com/denoland/deno/issues/26299
-rw-r--r--cli/tools/registry/pm.rs14
-rw-r--r--tests/specs/add/exact_version/__test__.jsonc35
-rw-r--r--tests/specs/add/exact_version/deno.json1
-rw-r--r--tests/specs/add/exact_version/jsr_add.out2
-rw-r--r--tests/specs/add/exact_version/jsr_deno.json.out5
-rw-r--r--tests/specs/add/exact_version/npm_add.out3
-rw-r--r--tests/specs/add/exact_version/npm_deno.json.out5
7 files changed, 61 insertions, 4 deletions
diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs
index f716dd2ca..02731d303 100644
--- a/cli/tools/registry/pm.rs
+++ b/cli/tools/registry/pm.rs
@@ -617,9 +617,11 @@ async fn find_package_and_select_version_for_req(
});
};
let range_symbol = if req.version_req.version_text().starts_with('~') {
- '~'
+ "~"
+ } else if req.version_req.version_text() == nv.version.to_string() {
+ ""
} else {
- '^'
+ "^"
};
Ok(PackageAndVersion::Selected(SelectedPackage {
import_name: add_package_req.alias,
@@ -637,11 +639,15 @@ async fn find_package_and_select_version_for_req(
package_req: req,
});
};
+
let range_symbol = if req.version_req.version_text().starts_with('~') {
- '~'
+ "~"
+ } else if req.version_req.version_text() == nv.version.to_string() {
+ ""
} else {
- '^'
+ "^"
};
+
Ok(PackageAndVersion::Selected(SelectedPackage {
import_name: add_package_req.alias,
package_name: npm_prefixed_name,
diff --git a/tests/specs/add/exact_version/__test__.jsonc b/tests/specs/add/exact_version/__test__.jsonc
new file mode 100644
index 000000000..feb6cc617
--- /dev/null
+++ b/tests/specs/add/exact_version/__test__.jsonc
@@ -0,0 +1,35 @@
+{
+ "tempDir": true,
+ "tests": {
+ "npm": {
+ "steps": [
+ {
+ "args": "add npm:@denotest/esm-basic@1.0.0",
+ "output": "npm_add.out"
+ },
+ {
+ "args": [
+ "eval",
+ "console.log(Deno.readTextFileSync('deno.json').trim())"
+ ],
+ "output": "npm_deno.json.out"
+ }
+ ]
+ },
+ "jsr": {
+ "steps": [
+ {
+ "args": "add jsr:@denotest/add@1.0.0",
+ "output": "jsr_add.out"
+ },
+ {
+ "args": [
+ "eval",
+ "console.log(Deno.readTextFileSync('deno.json').trim())"
+ ],
+ "output": "jsr_deno.json.out"
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/specs/add/exact_version/deno.json b/tests/specs/add/exact_version/deno.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/tests/specs/add/exact_version/deno.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/specs/add/exact_version/jsr_add.out b/tests/specs/add/exact_version/jsr_add.out
new file mode 100644
index 000000000..f2684ef57
--- /dev/null
+++ b/tests/specs/add/exact_version/jsr_add.out
@@ -0,0 +1,2 @@
+Add jsr:@denotest/add@1.0.0
+Download http://127.0.0.1:4250/@denotest/add/1.0.0/mod.ts
diff --git a/tests/specs/add/exact_version/jsr_deno.json.out b/tests/specs/add/exact_version/jsr_deno.json.out
new file mode 100644
index 000000000..7f1715bd7
--- /dev/null
+++ b/tests/specs/add/exact_version/jsr_deno.json.out
@@ -0,0 +1,5 @@
+{
+ "imports": {
+ "@denotest/add": "jsr:@denotest/add@1.0.0"
+ }
+}
diff --git a/tests/specs/add/exact_version/npm_add.out b/tests/specs/add/exact_version/npm_add.out
new file mode 100644
index 000000000..93894a020
--- /dev/null
+++ b/tests/specs/add/exact_version/npm_add.out
@@ -0,0 +1,3 @@
+Add npm:@denotest/esm-basic@1.0.0
+Download http://localhost:4260/@denotest/esm-basic
+Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz
diff --git a/tests/specs/add/exact_version/npm_deno.json.out b/tests/specs/add/exact_version/npm_deno.json.out
new file mode 100644
index 000000000..ff4afa772
--- /dev/null
+++ b/tests/specs/add/exact_version/npm_deno.json.out
@@ -0,0 +1,5 @@
+{
+ "imports": {
+ "@denotest/esm-basic": "npm:@denotest/esm-basic@1.0.0"
+ }
+}