summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-09-06 10:18:13 -0700
committerGitHub <noreply@github.com>2024-09-06 17:18:13 +0000
commit51f5f5789b3b00b327ee7130dc259d24ee631851 (patch)
treeab6975ae1a49a3c036e99950947ec987e6d64edd /tests
parentf0a3d206422af3177e0f36ed22802c1ccc6f7654 (diff)
feat(add): Add npm packages to package.json if present (#25477)
Closes https://github.com/denoland/deno/issues/25321 Ended up being a larger refactoring, since we're now juggling (potentially) two config files in the same `add`, instead of choosing one. I don't love the shape of the code, but I think it's good enough Some smaller side improvements: - `deno remove` supports `jsonc` - `deno install --dev` will be a really simple change - if `deno remove` removes the last import/dependency in the `imports`/`dependencies`/`devDependencies` field, it removes the field instead of leaving an empty object
Diffstat (limited to 'tests')
-rw-r--r--tests/specs/add/package_json_and_deno_json/__test__.jsonc46
-rw-r--r--tests/specs/add/package_json_and_deno_json/add.out12
-rw-r--r--tests/specs/add/package_json_and_deno_json/add_esm_basic.out4
-rw-r--r--tests/specs/add/package_json_and_deno_json/deno.json1
-rw-r--r--tests/specs/add/package_json_and_deno_json/npm_prefer_deno.json.out5
-rw-r--r--tests/specs/add/package_json_and_deno_json/npm_prefer_package.json.out6
-rw-r--r--tests/specs/add/package_json_and_deno_json/package.json1
-rw-r--r--tests/specs/remove/basic/__test__.jsonc3
-rw-r--r--tests/specs/remove/package_json/__test__.jsonc27
-rw-r--r--tests/specs/remove/package_json/package.json4
-rw-r--r--tests/specs/remove/package_json/rm_add.out4
-rw-r--r--tests/specs/remove/package_json/rm_add_package.json.out3
-rw-r--r--tests/specs/remove/package_json/rm_esm_basic.out1
-rw-r--r--tests/specs/remove/package_json/rm_esm_basic_package.json.out2
14 files changed, 119 insertions, 0 deletions
diff --git a/tests/specs/add/package_json_and_deno_json/__test__.jsonc b/tests/specs/add/package_json_and_deno_json/__test__.jsonc
new file mode 100644
index 000000000..4d886d98b
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/__test__.jsonc
@@ -0,0 +1,46 @@
+{
+ "tempDir": true,
+ "tests": {
+ "npm_prefers_package_json": {
+ "steps": [
+ {
+ "args": "add npm:@denotest/esm-basic @denotest/add npm:@denotest/say-hello",
+ "output": "add.out"
+ },
+ {
+ "args": [
+ "eval",
+ "console.log(Deno.readTextFileSync('package.json').trim())"
+ ],
+ "output": "npm_prefer_package.json.out"
+ },
+ {
+ "args": [
+ "eval",
+ "console.log(Deno.readTextFileSync('deno.json').trim())"
+ ],
+ "output": "npm_prefer_deno.json.out"
+ }
+ ]
+ },
+ "only_creates_deno_json_if_no_config": {
+ "steps": [
+ {
+ "args": ["eval", "Deno.removeSync('deno.json')"],
+ "output": ""
+ },
+ {
+ "args": "add npm:@denotest/esm-basic",
+ "output": "add_esm_basic.out"
+ },
+ {
+ "args": [
+ "eval",
+ "try { Deno.statSync('deno.json'); console.log('bad'); } catch (e) { if (e instanceof Deno.errors.NotFound) { console.log('good'); } else { console.log('bad error', e); }}"
+ ],
+ "output": "good\n"
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/specs/add/package_json_and_deno_json/add.out b/tests/specs/add/package_json_and_deno_json/add.out
new file mode 100644
index 000000000..5577a55ac
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/add.out
@@ -0,0 +1,12 @@
+[UNORDERED_START]
+Add npm:@denotest/esm-basic@1.0.0
+Add jsr:@denotest/add@1.0.0
+Add npm:@denotest/say-hello@1.0.0
+Download http://localhost:4260/@denotest/esm-basic
+Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz
+Download http://localhost:4260/@denotest/say-hello
+Download http://localhost:4260/@denotest/say-hello/1.0.0.tgz
+Initialize @denotest/esm-basic@1.0.0
+Initialize @denotest/say-hello@1.0.0
+Download http://127.0.0.1:4250/@denotest/add/1.0.0/mod.ts
+[UNORDERED_END]
diff --git a/tests/specs/add/package_json_and_deno_json/add_esm_basic.out b/tests/specs/add/package_json_and_deno_json/add_esm_basic.out
new file mode 100644
index 000000000..42161f3ae
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/add_esm_basic.out
@@ -0,0 +1,4 @@
+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
+Initialize @denotest/esm-basic@1.0.0
diff --git a/tests/specs/add/package_json_and_deno_json/deno.json b/tests/specs/add/package_json_and_deno_json/deno.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/deno.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/specs/add/package_json_and_deno_json/npm_prefer_deno.json.out b/tests/specs/add/package_json_and_deno_json/npm_prefer_deno.json.out
new file mode 100644
index 000000000..38ca2d4b8
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/npm_prefer_deno.json.out
@@ -0,0 +1,5 @@
+{
+ "imports": {
+ "@denotest/add": "jsr:@denotest/add@^1.0.0"
+ }
+}
diff --git a/tests/specs/add/package_json_and_deno_json/npm_prefer_package.json.out b/tests/specs/add/package_json_and_deno_json/npm_prefer_package.json.out
new file mode 100644
index 000000000..b7b19afb3
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/npm_prefer_package.json.out
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "@denotest/esm-basic": "^1.0.0",
+ "@denotest/say-hello": "^1.0.0"
+ }
+}
diff --git a/tests/specs/add/package_json_and_deno_json/package.json b/tests/specs/add/package_json_and_deno_json/package.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/tests/specs/add/package_json_and_deno_json/package.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/specs/remove/basic/__test__.jsonc b/tests/specs/remove/basic/__test__.jsonc
index 2f4d82c88..495496b5c 100644
--- a/tests/specs/remove/basic/__test__.jsonc
+++ b/tests/specs/remove/basic/__test__.jsonc
@@ -12,5 +12,8 @@
}, {
"args": ["eval", "console.log(Deno.readTextFileSync('deno.lock').trim())"],
"output": "remove_lock.out"
+ }, {
+ "args": ["eval", "console.log(Deno.readTextFileSync('deno.json').trim())"],
+ "output": "{\n}\n"
}]
}
diff --git a/tests/specs/remove/package_json/__test__.jsonc b/tests/specs/remove/package_json/__test__.jsonc
new file mode 100644
index 000000000..c51b00d0f
--- /dev/null
+++ b/tests/specs/remove/package_json/__test__.jsonc
@@ -0,0 +1,27 @@
+{
+ "tempDir": true,
+ "steps": [
+ {
+ "args": "remove @denotest/add",
+ "output": "rm_add.out"
+ },
+ {
+ "args": [
+ "eval",
+ "console.log(Deno.readTextFileSync('package.json').trim())"
+ ],
+ "output": "rm_add_package.json.out"
+ },
+ {
+ "args": "remove @denotest/esm-basic",
+ "output": "rm_esm_basic.out"
+ },
+ {
+ "args": [
+ "eval",
+ "console.log(Deno.readTextFileSync('package.json').trim())"
+ ],
+ "output": "rm_esm_basic_package.json.out"
+ }
+ ]
+}
diff --git a/tests/specs/remove/package_json/package.json b/tests/specs/remove/package_json/package.json
new file mode 100644
index 000000000..6de96bc20
--- /dev/null
+++ b/tests/specs/remove/package_json/package.json
@@ -0,0 +1,4 @@
+{
+ "dependencies": { "@denotest/add": "^1.0.0" },
+ "devDependencies": { "@denotest/esm-basic": "^1.0.0" }
+}
diff --git a/tests/specs/remove/package_json/rm_add.out b/tests/specs/remove/package_json/rm_add.out
new file mode 100644
index 000000000..b98c27bae
--- /dev/null
+++ b/tests/specs/remove/package_json/rm_add.out
@@ -0,0 +1,4 @@
+Removed @denotest/add
+Download http://localhost:4260/@denotest/esm-basic
+Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz
+Initialize @denotest/esm-basic@1.0.0
diff --git a/tests/specs/remove/package_json/rm_add_package.json.out b/tests/specs/remove/package_json/rm_add_package.json.out
new file mode 100644
index 000000000..d5ca56e00
--- /dev/null
+++ b/tests/specs/remove/package_json/rm_add_package.json.out
@@ -0,0 +1,3 @@
+{
+ "devDependencies": { "@denotest/esm-basic": "^1.0.0" }
+}
diff --git a/tests/specs/remove/package_json/rm_esm_basic.out b/tests/specs/remove/package_json/rm_esm_basic.out
new file mode 100644
index 000000000..86ad9e28d
--- /dev/null
+++ b/tests/specs/remove/package_json/rm_esm_basic.out
@@ -0,0 +1 @@
+Removed @denotest/esm-basic
diff --git a/tests/specs/remove/package_json/rm_esm_basic_package.json.out b/tests/specs/remove/package_json/rm_esm_basic_package.json.out
new file mode 100644
index 000000000..2c63c0851
--- /dev/null
+++ b/tests/specs/remove/package_json/rm_esm_basic_package.json.out
@@ -0,0 +1,2 @@
+{
+}