summaryrefslogtreecommitdiff
path: root/cli/tests/integration/fmt_tests.rs
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-10 13:22:13 -0700
committerGitHub <noreply@github.com>2024-02-10 20:22:13 +0000
commitf5e46c9bf2f50d66a953fa133161fc829cecff06 (patch)
tree8faf2f5831c1c7b11d842cd9908d141082c869a5 /cli/tests/integration/fmt_tests.rs
parentd2477f780630a812bfd65e3987b70c0d309385bb (diff)
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
Diffstat (limited to 'cli/tests/integration/fmt_tests.rs')
-rw-r--r--cli/tests/integration/fmt_tests.rs352
1 files changed, 0 insertions, 352 deletions
diff --git a/cli/tests/integration/fmt_tests.rs b/cli/tests/integration/fmt_tests.rs
deleted file mode 100644
index 94eca295e..000000000
--- a/cli/tests/integration/fmt_tests.rs
+++ /dev/null
@@ -1,352 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-use test_util as util;
-use util::assert_contains;
-use util::PathRef;
-use util::TestContext;
-use util::TestContextBuilder;
-
-#[test]
-fn fmt_test() {
- let context = TestContext::default();
- let t = context.deno_dir();
- let testdata_fmt_dir = util::testdata_path().join("fmt");
- let fixed_js = testdata_fmt_dir.join("badly_formatted_fixed.js");
- let badly_formatted_original_js =
- testdata_fmt_dir.join("badly_formatted.mjs");
- let badly_formatted_js = t.path().join("badly_formatted.js");
- badly_formatted_original_js.copy(&badly_formatted_js);
-
- let fixed_md = testdata_fmt_dir.join("badly_formatted_fixed.md");
- let badly_formatted_original_md = testdata_fmt_dir.join("badly_formatted.md");
- let badly_formatted_md = t.path().join("badly_formatted.md");
- badly_formatted_original_md.copy(&badly_formatted_md);
-
- let fixed_json = testdata_fmt_dir.join("badly_formatted_fixed.json");
- let badly_formatted_original_json =
- testdata_fmt_dir.join("badly_formatted.json");
- let badly_formatted_json = t.path().join("badly_formatted.json");
- badly_formatted_original_json.copy(&badly_formatted_json);
-
- let fixed_ipynb = testdata_fmt_dir.join("badly_formatted_fixed.ipynb");
- let badly_formatted_original_ipynb =
- testdata_fmt_dir.join("badly_formatted.ipynb");
- let badly_formatted_ipynb = t.path().join("badly_formatted.ipynb");
- badly_formatted_original_ipynb.copy(&badly_formatted_ipynb);
-
- // First, check formatting by ignoring the badly formatted file.
- let output = context
- .new_command()
- .current_dir(&testdata_fmt_dir)
- .args_vec(vec![
- "fmt".to_string(),
- format!(
- "--ignore={badly_formatted_js},{badly_formatted_md},{badly_formatted_json},{badly_formatted_ipynb}",
- ),
- format!(
- "--check {badly_formatted_js} {badly_formatted_md} {badly_formatted_json} {badly_formatted_ipynb}",
- ),
- ])
- .run();
-
- // No target files found
- output.assert_exit_code(1);
- output.skip_output_check();
-
- // Check without ignore.
- let output = context
- .new_command()
- .current_dir(&testdata_fmt_dir)
- .args_vec(vec![
- "fmt".to_string(),
- "--check".to_string(),
- badly_formatted_js.to_string(),
- badly_formatted_md.to_string(),
- badly_formatted_json.to_string(),
- badly_formatted_ipynb.to_string(),
- ])
- .run();
-
- output.assert_exit_code(1);
- output.skip_output_check();
-
- // Format the source file.
- let output = context
- .new_command()
- .current_dir(&testdata_fmt_dir)
- .args_vec(vec![
- "fmt".to_string(),
- badly_formatted_js.to_string(),
- badly_formatted_md.to_string(),
- badly_formatted_json.to_string(),
- badly_formatted_ipynb.to_string(),
- ])
- .run();
-
- output.assert_exit_code(0);
- output.skip_output_check();
-
- let expected_js = fixed_js.read_to_string();
- let expected_md = fixed_md.read_to_string();
- let expected_json = fixed_json.read_to_string();
- let expected_ipynb = fixed_ipynb.read_to_string();
- let actual_js = badly_formatted_js.read_to_string();
- let actual_md = badly_formatted_md.read_to_string();
- let actual_json = badly_formatted_json.read_to_string();
- let actual_ipynb = badly_formatted_ipynb.read_to_string();
- assert_eq!(expected_js, actual_js);
- assert_eq!(expected_md, actual_md);
- assert_eq!(expected_json, actual_json);
- assert_eq!(expected_ipynb, actual_ipynb);
-}
-
-#[test]
-fn fmt_stdin_syntax_error() {
- let output = util::deno_cmd()
- .current_dir(util::testdata_path())
- .arg("fmt")
- .arg("-")
- .stdin_text("import { example }")
- .split_output()
- .run();
- assert!(output.stdout().is_empty());
- assert!(!output.stderr().is_empty());
- output.assert_exit_code(1);
-}
-
-#[test]
-fn fmt_ignore_unexplicit_files() {
- let context = TestContext::default();
- let output = context
- .new_command()
- .env("NO_COLOR", "1")
- .args("fmt --check --ignore=./")
- .run();
-
- output.assert_exit_code(1);
- assert_eq!(output.combined_output(), "error: No target files found.\n");
-}
-
-#[test]
-fn fmt_auto_ignore_git_and_node_modules() {
- fn create_bad_json(t: PathRef) {
- let bad_json_path = t.join("bad.json");
- bad_json_path.write("bad json\n");
- }
-
- let context = TestContext::default();
- let temp_dir = context.temp_dir();
- let t = temp_dir.path().join("target");
- let nest_git = t.join("nest").join(".git");
- let git_dir = t.join(".git");
- let nest_node_modules = t.join("nest").join("node_modules");
- let node_modules_dir = t.join("node_modules");
- nest_git.create_dir_all();
- git_dir.create_dir_all();
- nest_node_modules.create_dir_all();
- node_modules_dir.create_dir_all();
- create_bad_json(nest_git);
- create_bad_json(git_dir);
- create_bad_json(nest_node_modules);
- create_bad_json(node_modules_dir);
-
- let output = context
- .new_command()
- .current_dir(t)
- .env("NO_COLOR", "1")
- .args("fmt")
- .run();
-
- output.assert_exit_code(1);
- assert_eq!(output.combined_output(), "error: No target files found.\n");
-}
-
-itest!(fmt_quiet_check_fmt_dir {
- args: "fmt --check --quiet fmt/regular/",
- output_str: Some(""),
- exit_code: 0,
-});
-
-itest!(fmt_check_formatted_files {
- args: "fmt --check fmt/regular/formatted1.js fmt/regular/formatted2.ts fmt/regular/formatted3.markdown fmt/regular/formatted4.jsonc",
- output: "fmt/expected_fmt_check_formatted_files.out",
- exit_code: 0,
-});
-
-itest!(fmt_check_ignore {
- args: "fmt --check --ignore=fmt/regular/formatted1.js fmt/regular/",
- output: "fmt/expected_fmt_check_ignore.out",
- exit_code: 0,
-});
-
-itest!(fmt_check_parse_error {
- args: "fmt --check fmt/parse_error/parse_error.ts",
- output: "fmt/fmt_check_parse_error.out",
- exit_code: 1,
-});
-
-itest!(fmt_check_invalid_data {
- args: "fmt --check fmt/invalid_data.json",
- output: "fmt/invalid_data.out",
- exit_code: 1,
-});
-
-itest!(fmt_stdin {
- args: "fmt -",
- input: Some("const a = 1\n"),
- output_str: Some("const a = 1;\n"),
-});
-
-itest!(fmt_stdin_markdown {
- args: "fmt --ext=md -",
- input: Some("# Hello Markdown\n```ts\nconsole.log( \"text\")\n```\n\n```cts\nconsole.log( 5 )\n```"),
- output_str: Some("# Hello Markdown\n\n```ts\nconsole.log(\"text\");\n```\n\n```cts\nconsole.log(5);\n```\n"),
-});
-
-itest!(fmt_stdin_json {
- args: "fmt --ext=json -",
- input: Some("{ \"key\": \"value\"}"),
- output_str: Some("{ \"key\": \"value\" }\n"),
-});
-
-itest!(fmt_stdin_ipynb {
- args: "fmt --ext=ipynb -",
- input: Some(include_str!("../testdata/fmt/badly_formatted.ipynb")),
- output_str: Some(include_str!("../testdata/fmt/badly_formatted_fixed.ipynb")),
-});
-
-itest!(fmt_stdin_check_formatted {
- args: "fmt --check -",
- input: Some("const a = 1;\n"),
- output_str: Some(""),
-});
-
-itest!(fmt_stdin_check_not_formatted {
- args: "fmt --check -",
- input: Some("const a = 1\n"),
- output_str: Some("Not formatted stdin\n"),
-});
-
-itest!(fmt_with_config {
- args: "fmt --config fmt/with_config/deno.jsonc fmt/with_config/subdir",
- output: "fmt/fmt_with_config.out",
-});
-
-itest!(fmt_with_deprecated_config {
- args:
- "fmt --config fmt/with_config/deno.deprecated.jsonc fmt/with_config/subdir",
- output: "fmt/fmt_with_deprecated_config.out",
-});
-
-itest!(fmt_with_config_default {
- args: "fmt fmt/with_config/subdir",
- output: "fmt/fmt_with_config.out",
-});
-
-// Check if CLI flags take precedence
-itest!(fmt_with_config_and_flags {
- args: "fmt --config fmt/with_config/deno.jsonc --ignore=fmt/with_config/subdir/a.ts,fmt/with_config/subdir/b.ts",
- output: "fmt/fmt_with_config_and_flags.out",
-});
-
-itest!(fmt_with_malformed_config {
- args: "fmt --config fmt/deno.malformed.jsonc",
- output: "fmt/fmt_with_malformed_config.out",
- exit_code: 1,
-});
-
-itest!(fmt_with_malformed_config2 {
- args: "fmt --config fmt/deno.malformed2.jsonc",
- output: "fmt/fmt_with_malformed_config2.out",
- exit_code: 1,
-});
-
-#[test]
-fn fmt_with_glob_config() {
- let context = TestContextBuilder::new().cwd("fmt").build();
-
- let cmd_output = context
- .new_command()
- .args("fmt --check --config deno.glob.json")
- .run();
-
- cmd_output.assert_exit_code(1);
-
- let output = cmd_output.combined_output();
- if cfg!(windows) {
- assert_contains!(output, r"glob\nested\fizz\fizz.ts");
- assert_contains!(output, r"glob\pages\[id].ts");
- assert_contains!(output, r"glob\nested\fizz\bar.ts");
- assert_contains!(output, r"glob\nested\foo\foo.ts");
- assert_contains!(output, r"glob\data\test1.js");
- assert_contains!(output, r"glob\nested\foo\bar.ts");
- assert_contains!(output, r"glob\nested\foo\fizz.ts");
- assert_contains!(output, r"glob\nested\fizz\foo.ts");
- assert_contains!(output, r"glob\data\test1.ts");
- } else {
- assert_contains!(output, "glob/nested/fizz/fizz.ts");
- assert_contains!(output, "glob/pages/[id].ts");
- assert_contains!(output, "glob/nested/fizz/bar.ts");
- assert_contains!(output, "glob/nested/foo/foo.ts");
- assert_contains!(output, "glob/data/test1.js");
- assert_contains!(output, "glob/nested/foo/bar.ts");
- assert_contains!(output, "glob/nested/foo/fizz.ts");
- assert_contains!(output, "glob/nested/fizz/foo.ts");
- assert_contains!(output, "glob/data/test1.ts");
- }
-
- assert_contains!(output, "Found 9 not formatted files in 9 files");
-}
-
-#[test]
-fn fmt_with_glob_config_and_flags() {
- let context = TestContextBuilder::new().cwd("fmt").build();
-
- let cmd_output = context
- .new_command()
- .args("fmt --check --config deno.glob.json --ignore=glob/nested/**/bar.ts")
- .run();
-
- cmd_output.assert_exit_code(1);
-
- let output = cmd_output.combined_output();
- if cfg!(windows) {
- assert_contains!(output, r"glob\nested\fizz\fizz.ts");
- assert_contains!(output, r"glob\pages\[id].ts");
- assert_contains!(output, r"glob\nested\fizz\bazz.ts");
- assert_contains!(output, r"glob\nested\foo\foo.ts");
- assert_contains!(output, r"glob\data\test1.js");
- assert_contains!(output, r"glob\nested\foo\bazz.ts");
- assert_contains!(output, r"glob\nested\foo\fizz.ts");
- assert_contains!(output, r"glob\nested\fizz\foo.ts");
- assert_contains!(output, r"glob\data\test1.ts");
- } else {
- assert_contains!(output, "glob/nested/fizz/fizz.ts");
- assert_contains!(output, "glob/pages/[id].ts");
- assert_contains!(output, "glob/nested/fizz/bazz.ts");
- assert_contains!(output, "glob/nested/foo/foo.ts");
- assert_contains!(output, "glob/data/test1.js");
- assert_contains!(output, "glob/nested/foo/bazz.ts");
- assert_contains!(output, "glob/nested/foo/fizz.ts");
- assert_contains!(output, "glob/nested/fizz/foo.ts");
- assert_contains!(output, "glob/data/test1.ts");
- }
- assert_contains!(output, "Found 9 not formatted files in 9 files");
- let cmd_output = context
- .new_command()
- .args("fmt --check --config deno.glob.json glob/data/test1.?s")
- .run();
-
- cmd_output.assert_exit_code(1);
-
- let output = cmd_output.combined_output();
- if cfg!(windows) {
- assert_contains!(output, r"glob\data\test1.js");
- assert_contains!(output, r"glob\data\test1.ts");
- } else {
- assert_contains!(output, "glob/data/test1.js");
- assert_contains!(output, "glob/data/test1.ts");
- }
-
- assert_contains!(output, "Found 2 not formatted files in 2 files");
-}