summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-03-26 21:40:24 +0000
committerGitHub <noreply@github.com>2024-03-26 17:40:24 -0400
commit6b95c53e48a2622f4f2b6fdfa6c2c26dc30bbba4 (patch)
treecba79d8f7ec6f6ba89adf73112feb201491622f1
parent9841d3fdf1f8eebb318a9e37a10ebc903d104782 (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.rs10
-rw-r--r--tests/integration/pm_tests.rs13
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]