summaryrefslogtreecommitdiff
path: root/cli/tests/integration/init_tests.rs
diff options
context:
space:
mode:
authorLeigh McCulloch <351529+leighmcculloch@users.noreply.github.com>2023-09-12 03:55:26 -0700
committerGitHub <noreply@github.com>2023-09-12 12:55:26 +0200
commit4a8b873111dbedde34b9bca702fb0b593fbf09a8 (patch)
treea33b88609f749e3dd62af244864d69aec1d2c07b /cli/tests/integration/init_tests.rs
parentf32acb945e4f96b540c61705eb0d786fc4389d60 (diff)
fix(init): skip existing files instead of erroring (#20434)
### What Skip writing files from the template if the files already exist in the project directory. ### Why When I run deno init in a directory that already has a main.ts, or one of the other template files, I usually want to initialize a workspace around a file I've started working in. A hard error in this case seems counter productive. An informational message about what's being skipped seems sufficient. Close #20433
Diffstat (limited to 'cli/tests/integration/init_tests.rs')
-rw-r--r--cli/tests/integration/init_tests.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/cli/tests/integration/init_tests.rs b/cli/tests/integration/init_tests.rs
index be7c26efc..e57366fb4 100644
--- a/cli/tests/integration/init_tests.rs
+++ b/cli/tests/integration/init_tests.rs
@@ -128,3 +128,44 @@ fn init_subcommand_with_quiet_arg() {
assert_contains!(output.stdout(), "1 passed");
output.skip_output_check();
}
+
+#[test]
+fn init_subcommand_with_existing_file() {
+ let context = TestContextBuilder::new().use_temp_cwd().build();
+ let cwd = context.temp_dir().path();
+
+ cwd
+ .join("main.ts")
+ .write("console.log('Log from main.ts that already exists');");
+
+ let output = context.new_command().args("init").split_output().run();
+
+ output.assert_exit_code(0);
+ output.assert_stderr_matches_text(
+ "ℹ️ Skipped creating main.ts as it already exists
+✅ Project initialized
+
+Run these commands to get started
+
+ # Run the program
+ deno run main.ts
+
+ # Run the program and watch for file changes
+ deno task dev
+
+ # Run the tests
+ deno test
+",
+ );
+
+ assert!(cwd.join("deno.json").exists());
+
+ let output = context
+ .new_command()
+ .env("NO_COLOR", "1")
+ .args("run main.ts")
+ .run();
+
+ output.assert_exit_code(0);
+ output.assert_matches_text("Log from main.ts that already exists\n");
+}