diff options
author | Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> | 2024-09-06 10:18:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-06 17:18:13 +0000 |
commit | 51f5f5789b3b00b327ee7130dc259d24ee631851 (patch) | |
tree | ab6975ae1a49a3c036e99950947ec987e6d64edd /tests | |
parent | f0a3d206422af3177e0f36ed22802c1ccc6f7654 (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')
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 @@ +{ +} |