diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2024-03-26 21:40:24 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-26 17:40:24 -0400 |
commit | 6b95c53e48a2622f4f2b6fdfa6c2c26dc30bbba4 (patch) | |
tree | cba79d8f7ec6f6ba89adf73112feb201491622f1 | |
parent | 9841d3fdf1f8eebb318a9e37a10ebc903d104782 (diff) |
feat(add): always produce multiline config file (#23077)
This commit changes `deno add` to always produce a multiline config
file.
In v1.41.3:
```
$ mkdir foo
$ cd foo
$ deno add @std/assert
Created deno.json configuration file.
Add @std/assert - jsr:@std/assert@^0.220.0
$ cat deno.json
{ "imports": { "@std/assert": "jsr:@std/assert@^0.220.0" } }
```
Now:
```
$ mkdir foo
$ cd foo
$ deno add @std/assert
Created deno.json configuration file.
Add @std/assert - jsr:@std/assert@^0.220.0
$ cat deno.json
{
"imports": {
"@std/assert": "jsr:@std/assert@^0.220.0"
}
}
```
-rw-r--r-- | cli/tools/registry/pm.rs | 10 | ||||
-rw-r--r-- | tests/integration/pm_tests.rs | 13 |
2 files changed, 17 insertions, 6 deletions
diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index 8a0a53c9a..a69a474e7 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -268,7 +268,15 @@ fn update_config_file_content( let insert_position = obj.range.end - 1; text_changes.push(TextChange { range: insert_position..insert_position, - new_text: format!("\"imports\": {{ {} }}", generated_imports), + // NOTE(bartlomieju): adding `\n` here to force the formatter to always + // produce a config file that is multline, like so: + // ``` + // { + // "imports": { + // "<package_name>": "<registry>:<package_name>@<semver>" + // } + // } + new_text: format!("\"imports\": {{\n {} }}", generated_imports), }) } // we verified the shape of `imports` above diff --git a/tests/integration/pm_tests.rs b/tests/integration/pm_tests.rs index 668519bdc..a8af67e5b 100644 --- a/tests/integration/pm_tests.rs +++ b/tests/integration/pm_tests.rs @@ -39,11 +39,14 @@ fn add_basic_no_deno_json() { output.assert_exit_code(0); let output = output.combined_output(); assert_contains!(output, "Add @denotest/add"); - temp_dir.join("deno.json").assert_matches_json(json!({ - "imports": { - "@denotest/add": "jsr:@denotest/add@^1.0.0" - } - })); + // Don't use `assert_matches_json` to ensure the file is properly formatted. + let expected = r#"{ + "imports": { + "@denotest/add": "jsr:@denotest/add@^1.0.0" + } +} +"#; + temp_dir.join("deno.json").assert_matches_text(expected); } #[test] |