summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHasanAlrimawi <141642411+HasanAlrimawi@users.noreply.github.com>2024-09-16 20:45:25 +0300
committerGitHub <noreply@github.com>2024-09-16 17:45:25 +0000
commit36a1a79f175b2df31d8ba5d7e121239c3b7e74ea (patch)
treea2d1c96ba22181dc3301e3a20e4c4977f50b5d3d /tests
parentacc32e1cee043ef7233a94bcf5645c4a842ed13a (diff)
chore: deprecate lint itests (#25655)
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/lint_tests.rs267
-rw-r--r--tests/integration/mod.rs2
-rw-r--r--tests/specs/lint/all/__test__.jsonc5
-rw-r--r--tests/specs/lint/all/expected.out (renamed from tests/testdata/lint/expected.out)0
-rw-r--r--tests/specs/lint/all/file1.js (renamed from tests/testdata/lint/without_config/file1.js)0
-rw-r--r--tests/specs/lint/all/file2.ts (renamed from tests/testdata/lint/without_config/file2.ts)0
-rw-r--r--tests/specs/lint/all/ignored_file.ts (renamed from tests/testdata/lint/without_config/ignored_file.ts)0
-rw-r--r--tests/specs/lint/compact/__test__.jsonc5
-rw-r--r--tests/specs/lint/compact/expected_compact.out (renamed from tests/testdata/lint/expected_compact.out)0
-rw-r--r--tests/specs/lint/compact/file1.js2
-rw-r--r--tests/specs/lint/glob/__test__.jsonc5
-rw-r--r--tests/specs/lint/glob/expected_glob.out (renamed from tests/testdata/lint/expected_glob.out)0
-rw-r--r--tests/specs/lint/glob/with_config/a.ts (renamed from tests/testdata/lint/with_config/a.ts)0
-rw-r--r--tests/specs/lint/glob/with_config/b.ts (renamed from tests/testdata/lint/with_config/b.ts)0
-rw-r--r--tests/specs/lint/glob/without_config/file1.js2
-rw-r--r--tests/specs/lint/glob/without_config/file2.ts6
-rw-r--r--tests/specs/lint/glob/without_config/ignored_file.ts3
-rw-r--r--tests/specs/lint/glob/without_config/malformed.js (renamed from tests/testdata/lint/without_config/malformed.js)0
-rw-r--r--tests/specs/lint/ignore/__test__.jsonc5
-rw-r--r--tests/specs/lint/ignore/expected_ignore.out (renamed from tests/testdata/lint/expected_ignore.out)0
-rw-r--r--tests/specs/lint/ignore/without_config/file1.js2
-rw-r--r--tests/specs/lint/ignore/without_config/file2.ts6
-rw-r--r--tests/specs/lint/ignore/without_config/ignored_file.ts3
-rw-r--r--tests/specs/lint/ignore/without_config/malformed.js4
-rw-r--r--tests/specs/lint/ignore_unexplicit_files/__test__.jsonc5
-rw-r--r--tests/specs/lint/ignore_unexplicit_files/lint.out1
-rw-r--r--tests/specs/lint/json/__test__.jsonc5
-rw-r--r--tests/specs/lint/json/expected_json.out (renamed from tests/testdata/lint/expected_json.out)0
-rw-r--r--tests/specs/lint/json/file1.js2
-rw-r--r--tests/specs/lint/json/file2.ts6
-rw-r--r--tests/specs/lint/json/ignored_file.ts3
-rw-r--r--tests/specs/lint/json/malformed.js4
-rw-r--r--tests/specs/lint/jsx/__test__.jsonc16
-rw-r--r--tests/specs/lint/jsx/main.jsx1
-rw-r--r--tests/specs/lint/jsx/main_unix.out12
-rw-r--r--tests/specs/lint/jsx/main_windows.out12
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/__test__.jsonc16
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/actually_excluded.ts1
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/deno.json6
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/excluded.ts1
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main.ts1
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_unix.out24
-rw-r--r--tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_windows.out24
-rw-r--r--tests/specs/lint/quiet/__test__.jsonc5
-rw-r--r--tests/specs/lint/quiet/expected_quiet.out (renamed from tests/testdata/lint/expected_quiet.out)0
-rw-r--r--tests/specs/lint/quiet/file1.js2
-rw-r--r--tests/specs/lint/rules/__test__.jsonc5
-rw-r--r--tests/specs/lint/rules/expected_rules.out (renamed from tests/testdata/lint/expected_rules.out)0
-rw-r--r--tests/specs/lint/rules_quiet/__test__.jsonc5
-rw-r--r--tests/specs/lint/rules_quiet/expected_rules.out2
-rw-r--r--tests/specs/lint/stdin/__test__.jsonc5
-rw-r--r--tests/specs/lint/stdin/expected_from_stdin.out (renamed from tests/testdata/lint/expected_from_stdin.out)2
-rw-r--r--tests/specs/lint/stdin/main.ts1
-rw-r--r--tests/specs/lint/stdin_json/__test__.jsonc5
-rw-r--r--tests/specs/lint/stdin_json/expected_from_stdin_json.out (renamed from tests/testdata/lint/expected_from_stdin_json.out)2
-rw-r--r--tests/specs/lint/stdin_json/main.ts1
-rw-r--r--tests/specs/lint/with_config/Deno.jsonc (renamed from tests/testdata/lint/Deno.jsonc)0
-rw-r--r--tests/specs/lint/with_config/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_config/with_config.out (renamed from tests/testdata/lint/with_config.out)0
-rw-r--r--tests/specs/lint/with_config/with_config/a.ts4
-rw-r--r--tests/specs/lint/with_config/with_config/b.ts4
-rw-r--r--tests/specs/lint/with_config_and_flags/Deno.jsonc10
-rw-r--r--tests/specs/lint/with_config_and_flags/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_config_and_flags/with_config/a.ts4
-rw-r--r--tests/specs/lint/with_config_and_flags/with_config/b.ts4
-rw-r--r--tests/specs/lint/with_config_and_flags/with_config_and_flags.out (renamed from tests/testdata/lint/with_config_and_flags.out)0
-rw-r--r--tests/specs/lint/with_config_without_args/Deno.no_tags.jsonc (renamed from tests/testdata/lint/Deno.no_tags.jsonc)0
-rw-r--r--tests/specs/lint/with_config_without_args/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_config_without_args/with_config/a.ts4
-rw-r--r--tests/specs/lint/with_config_without_args/with_config/b.ts4
-rw-r--r--tests/specs/lint/with_config_without_args/with_config_without_tags.out (renamed from tests/testdata/lint/with_config_without_tags.out)0
-rw-r--r--tests/specs/lint/with_glob_config/__test__.jsonc16
-rw-r--r--tests/specs/lint/with_glob_config/deno.glob.json (renamed from tests/testdata/lint/deno.glob.json)0
-rw-r--r--tests/specs/lint/with_glob_config/glob/data/tes.ts (renamed from tests/testdata/lint/glob/nested/fizz/fizz.ts)0
-rw-r--r--tests/specs/lint/with_glob_config/glob/data/test1.js (renamed from tests/testdata/lint/glob/data/test1.js)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/data/test1.ts (renamed from tests/testdata/lint/glob/data/test1.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/data/test12.ts (renamed from tests/testdata/lint/glob/data/test12.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/fizz/bar.ts (renamed from tests/testdata/lint/glob/nested/fizz/bar.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/fizz/bazz.ts (renamed from tests/testdata/lint/glob/nested/fizz/bazz.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/fizz/fizz.ts (renamed from tests/testdata/lint/glob/nested/foo/fizz.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/fizz/foo.ts (renamed from tests/testdata/lint/glob/nested/fizz/foo.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/foo/bar.ts (renamed from tests/testdata/lint/glob/nested/foo/bar.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/foo/bazz.ts (renamed from tests/testdata/lint/glob/nested/foo/bazz.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/foo/fizz.ts2
-rw-r--r--tests/specs/lint/with_glob_config/glob/nested/foo/foo.ts (renamed from tests/testdata/lint/glob/nested/foo/foo.ts)3
-rw-r--r--tests/specs/lint/with_glob_config/glob/pages/[id].ts (renamed from tests/testdata/lint/glob/pages/[id].ts)3
-rw-r--r--tests/specs/lint/with_glob_config/with_glob_config_unix.out94
-rw-r--r--tests/specs/lint/with_glob_config/with_glob_config_windows.out94
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/__test__.jsonc16
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/deno.glob.json11
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/data/tes.ts (renamed from tests/testdata/lint/glob/data/tes.ts)3
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/data/test1.js2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/data/test1.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/data/test12.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bar.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bazz.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/fizz.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/foo.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bar.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bazz.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/fizz.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/foo.ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/glob/pages/[id].ts2
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_unix.out114
-rw-r--r--tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_windows.out114
-rw-r--r--tests/specs/lint/with_malformed_config/Deno.malformed.jsonc (renamed from tests/testdata/lint/Deno.malformed.jsonc)0
-rw-r--r--tests/specs/lint/with_malformed_config/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_malformed_config/with_malformed_config.out (renamed from tests/testdata/lint/with_malformed_config.out)0
-rw-r--r--tests/specs/lint/with_malformed_config2/Deno.malformed2.jsonc (renamed from tests/testdata/lint/Deno.malformed2.jsonc)0
-rw-r--r--tests/specs/lint/with_malformed_config2/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_malformed_config2/with_malformed_config2.out (renamed from tests/testdata/lint/with_malformed_config2.out)0
-rw-r--r--tests/specs/lint/with_report_config/Deno.compact.format.jsonc (renamed from tests/testdata/lint/Deno.compact.format.jsonc)0
-rw-r--r--tests/specs/lint/with_report_config/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_report_config/with_config/a.ts4
-rw-r--r--tests/specs/lint/with_report_config/with_config/b.ts4
-rw-r--r--tests/specs/lint/with_report_config/with_report_config_compact.out (renamed from tests/testdata/lint/with_report_config_compact.out)0
-rw-r--r--tests/specs/lint/with_report_config_override/Deno.compact.format.jsonc11
-rw-r--r--tests/specs/lint/with_report_config_override/__test__.jsonc5
-rw-r--r--tests/specs/lint/with_report_config_override/with_config/a.ts4
-rw-r--r--tests/specs/lint/with_report_config_override/with_config/b.ts4
-rw-r--r--tests/specs/lint/with_report_config_override/with_report_config_override.out (renamed from tests/testdata/lint/with_report_config_override.out)0
-rw-r--r--tests/testdata/lint/expected_verbose.out3
122 files changed, 814 insertions, 298 deletions
diff --git a/tests/integration/lint_tests.rs b/tests/integration/lint_tests.rs
deleted file mode 100644
index b47a98da4..000000000
--- a/tests/integration/lint_tests.rs
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-use deno_core::serde_json::json;
-use test_util::assert_contains;
-use test_util::assert_not_contains;
-use test_util::itest;
-use test_util::TestContext;
-use test_util::TestContextBuilder;
-
-itest!(ignore_unexplicit_files {
- args: "lint --ignore=./",
- output_str: Some("error: No target files found.\n"),
- exit_code: 1,
-});
-
-itest!(all {
- args: "lint lint/without_config/file1.js lint/without_config/file2.ts lint/without_config/ignored_file.ts",
- output: "lint/expected.out",
- exit_code: 1,
-});
-
-itest!(quiet {
- args: "lint --quiet lint/without_config/file1.js",
- output: "lint/expected_quiet.out",
- exit_code: 1,
-});
-
-itest!(json {
- args:
- "lint --json lint/without_config/file1.js lint/without_config/file2.ts lint/without_config/ignored_file.ts lint/without_config/malformed.js",
- output: "lint/expected_json.out",
- exit_code: 1,
-});
-
-itest!(compact {
- args:
- "lint --compact lint/without_config/file1.js lint/without_config/ignored_file.tss",
- output: "lint/expected_compact.out",
- exit_code: 1,
-});
-
-itest!(ignore {
- args:
- "lint --ignore=lint/without_config/file1.js,lint/without_config/malformed.js,lint/without_config/lint_with_config/ lint/without_config/",
- output: "lint/expected_ignore.out",
- exit_code: 1,
-});
-
-itest!(glob {
- args: "lint --ignore=lint/without_config/malformed.js,lint/with_config/ lint/without_config/",
- output: "lint/expected_glob.out",
- exit_code: 1,
-});
-
-itest!(stdin {
- args: "lint -",
- input: Some("let _a: any;"),
- output: "lint/expected_from_stdin.out",
- exit_code: 1,
-});
-
-itest!(stdin_json {
- args: "lint --json -",
- input: Some("let _a: any;"),
- output: "lint/expected_from_stdin_json.out",
- exit_code: 1,
-});
-
-itest!(rules {
- args: "lint --rules",
- output: "lint/expected_rules.out",
- exit_code: 0,
-});
-
-// Make sure that the rules are printed if quiet option is enabled.
-itest!(rules_quiet {
- args: "lint --rules -q",
- output: "lint/expected_rules.out",
- exit_code: 0,
-});
-
-itest!(lint_with_config {
- args: "lint --config lint/Deno.jsonc lint/with_config/",
- output: "lint/with_config.out",
- exit_code: 1,
-});
-
-itest!(lint_with_report_config {
- args: "lint --config lint/Deno.compact.format.jsonc lint/with_config/",
- output: "lint/with_report_config_compact.out",
- exit_code: 1,
-});
-
-// Check if CLI flags take precedence
-itest!(lint_with_report_config_override {
- args: "lint --config lint/Deno.compact.format.jsonc lint/with_config/ --json",
- output: "lint/with_report_config_override.out",
- exit_code: 1,
-});
-
-itest!(lint_with_config_and_flags {
- args: "lint --config lint/Deno.jsonc --ignore=lint/with_config/a.ts",
- output: "lint/with_config_and_flags.out",
- exit_code: 1,
-});
-
-itest!(lint_with_config_without_tags {
- args: "lint --config lint/Deno.no_tags.jsonc lint/with_config/",
- output: "lint/with_config_without_tags.out",
- exit_code: 1,
-});
-
-itest!(lint_with_malformed_config {
- args: "lint --config lint/Deno.malformed.jsonc",
- output: "lint/with_malformed_config.out",
- exit_code: 1,
-});
-
-itest!(lint_with_malformed_config2 {
- args: "lint --config lint/Deno.malformed2.jsonc",
- output: "lint/with_malformed_config2.out",
- exit_code: 1,
-});
-
-#[test]
-fn lint_with_glob_config() {
- let context = TestContextBuilder::new().cwd("lint").build();
-
- let cmd_output = context
- .new_command()
- .args("lint --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:1:10");
- assert_contains!(output, r"glob\pages\[id].ts:1:10");
- assert_contains!(output, r"glob\nested\fizz\bar.ts:1:10");
- assert_contains!(output, r"glob\nested\foo\foo.ts:1:10");
- assert_contains!(output, r"glob\data\test1.js:1:10");
- assert_contains!(output, r"glob\nested\foo\bar.ts:1:10");
- assert_contains!(output, r"glob\nested\foo\fizz.ts:1:10");
- assert_contains!(output, r"glob\nested\fizz\foo.ts:1:10");
- assert_contains!(output, r"glob\data\test1.ts:1:10");
- } else {
- assert_contains!(output, "glob/nested/fizz/fizz.ts:1:10");
- assert_contains!(output, "glob/pages/[id].ts:1:10");
- assert_contains!(output, "glob/nested/fizz/bar.ts:1:10");
- assert_contains!(output, "glob/nested/foo/foo.ts:1:10");
- assert_contains!(output, "glob/data/test1.js:1:10");
- assert_contains!(output, "glob/nested/foo/bar.ts:1:10");
- assert_contains!(output, "glob/nested/foo/fizz.ts:1:10");
- assert_contains!(output, "glob/nested/fizz/foo.ts:1:10");
- assert_contains!(output, "glob/data/test1.ts:1:10");
- }
- assert_contains!(output, "Found 9 problems");
- assert_contains!(output, "Checked 9 files");
-}
-
-#[test]
-fn lint_with_glob_config_and_flags() {
- let context = TestContextBuilder::new().cwd("lint").build();
-
- let cmd_output = context
- .new_command()
- .args("lint --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:1:10");
- assert_contains!(output, r"glob\pages\[id].ts:1:10");
- assert_contains!(output, r"glob\nested\fizz\bazz.ts:1:10");
- assert_contains!(output, r"glob\nested\foo\foo.ts:1:10");
- assert_contains!(output, r"glob\data\test1.js:1:10");
- assert_contains!(output, r"glob\nested\foo\bazz.ts:1:10");
- assert_contains!(output, r"glob\nested\foo\fizz.ts:1:10");
- assert_contains!(output, r"glob\nested\fizz\foo.ts:1:10");
- assert_contains!(output, r"glob\data\test1.ts:1:10");
- } else {
- assert_contains!(output, "glob/nested/fizz/fizz.ts:1:10");
- assert_contains!(output, "glob/pages/[id].ts:1:10");
- assert_contains!(output, "glob/nested/fizz/bazz.ts:1:10");
- assert_contains!(output, "glob/nested/foo/foo.ts:1:10");
- assert_contains!(output, "glob/data/test1.js:1:10");
- assert_contains!(output, "glob/nested/foo/bazz.ts:1:10");
- assert_contains!(output, "glob/nested/foo/fizz.ts:1:10");
- assert_contains!(output, "glob/nested/fizz/foo.ts:1:10");
- assert_contains!(output, "glob/data/test1.ts:1:10");
- }
- assert_contains!(output, "Found 9 problems");
- assert_contains!(output, "Checked 9 files");
-
- let cmd_output = context
- .new_command()
- .args("lint --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:1:10");
- assert_contains!(output, r"glob\data\test1.ts:1:10");
- } else {
- assert_contains!(output, "glob/data/test1.js:1:10");
- assert_contains!(output, "glob/data/test1.ts:1:10");
- }
- assert_contains!(output, "Found 2 problems");
- assert_contains!(output, "Checked 2 files");
-}
-
-#[test]
-fn opt_out_top_level_exclude_via_lint_unexclude() {
- let context = TestContextBuilder::new().use_temp_cwd().build();
- let temp_dir = context.temp_dir().path();
- temp_dir.join("deno.json").write_json(&json!({
- "lint": {
- "exclude": [ "!excluded.ts" ]
- },
- "exclude": [ "excluded.ts", "actually_excluded.ts" ]
- }));
-
- temp_dir.join("main.ts").write("const a = 1;");
- temp_dir.join("excluded.ts").write("const a = 2;");
- temp_dir.join("actually_excluded.ts").write("const a = 2;");
-
- let output = context.new_command().arg("lint").run();
- output.assert_exit_code(1);
- let output = output.combined_output();
- assert_contains!(output, "main.ts");
- assert_contains!(output, "excluded.ts");
- assert_not_contains!(output, "actually_excluded.ts");
-}
-
-#[test]
-fn lint_stdin_jsx() {
- TestContext::default()
- .new_command()
- .args("lint --ext=jsx -")
- .stdin_text(
- r#"
-const data = <div>hello</div>;
-"#,
- )
- .run()
- .assert_matches_text(
- r#"error[no-unused-vars]: `data` is never used
- --> [WILDLINE]$deno$stdin.jsx:2:7
- |
-2 | const data = <div>hello</div>;
- | ^^^^
- = hint: If this is intentional, prefix it with an underscore like `_data`
-
- docs: https://lint.deno.land/rules/no-unused-vars
-
-
-Found 1 problem
-Checked 1 file
-"#,
- )
- .assert_exit_code(1);
-}
diff --git a/tests/integration/mod.rs b/tests/integration/mod.rs
index 5cbe2a2ff..37c750228 100644
--- a/tests/integration/mod.rs
+++ b/tests/integration/mod.rs
@@ -35,8 +35,6 @@ mod js_unit_tests;
mod jsr;
#[path = "jupyter_tests.rs"]
mod jupyter;
-#[path = "lint_tests.rs"]
-mod lint;
#[path = "lsp_tests.rs"]
mod lsp;
#[path = "node_unit_tests.rs"]
diff --git a/tests/specs/lint/all/__test__.jsonc b/tests/specs/lint/all/__test__.jsonc
new file mode 100644
index 000000000..0583ceca9
--- /dev/null
+++ b/tests/specs/lint/all/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint file1.js file2.ts ignored_file.ts",
+ "output": "expected.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected.out b/tests/specs/lint/all/expected.out
index eb8a2651a..eb8a2651a 100644
--- a/tests/testdata/lint/expected.out
+++ b/tests/specs/lint/all/expected.out
diff --git a/tests/testdata/lint/without_config/file1.js b/tests/specs/lint/all/file1.js
index 737f26818..737f26818 100644
--- a/tests/testdata/lint/without_config/file1.js
+++ b/tests/specs/lint/all/file1.js
diff --git a/tests/testdata/lint/without_config/file2.ts b/tests/specs/lint/all/file2.ts
index 73c612c35..73c612c35 100644
--- a/tests/testdata/lint/without_config/file2.ts
+++ b/tests/specs/lint/all/file2.ts
diff --git a/tests/testdata/lint/without_config/ignored_file.ts b/tests/specs/lint/all/ignored_file.ts
index 97befafa3..97befafa3 100644
--- a/tests/testdata/lint/without_config/ignored_file.ts
+++ b/tests/specs/lint/all/ignored_file.ts
diff --git a/tests/specs/lint/compact/__test__.jsonc b/tests/specs/lint/compact/__test__.jsonc
new file mode 100644
index 000000000..d5e1eef54
--- /dev/null
+++ b/tests/specs/lint/compact/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --compact file1.js ignored_file.tss",
+ "output": "expected_compact.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_compact.out b/tests/specs/lint/compact/expected_compact.out
index d1b2b922b..d1b2b922b 100644
--- a/tests/testdata/lint/expected_compact.out
+++ b/tests/specs/lint/compact/expected_compact.out
diff --git a/tests/specs/lint/compact/file1.js b/tests/specs/lint/compact/file1.js
new file mode 100644
index 000000000..737f26818
--- /dev/null
+++ b/tests/specs/lint/compact/file1.js
@@ -0,0 +1,2 @@
+// deno-lint-ignore
+while (false) {}
diff --git a/tests/specs/lint/glob/__test__.jsonc b/tests/specs/lint/glob/__test__.jsonc
new file mode 100644
index 000000000..454a55804
--- /dev/null
+++ b/tests/specs/lint/glob/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --ignore=without_config/malformed.js,with_config/ without_config/",
+ "output": "expected_glob.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_glob.out b/tests/specs/lint/glob/expected_glob.out
index eb8a2651a..eb8a2651a 100644
--- a/tests/testdata/lint/expected_glob.out
+++ b/tests/specs/lint/glob/expected_glob.out
diff --git a/tests/testdata/lint/with_config/a.ts b/tests/specs/lint/glob/with_config/a.ts
index c378218a3..c378218a3 100644
--- a/tests/testdata/lint/with_config/a.ts
+++ b/tests/specs/lint/glob/with_config/a.ts
diff --git a/tests/testdata/lint/with_config/b.ts b/tests/specs/lint/glob/with_config/b.ts
index d5647067e..d5647067e 100644
--- a/tests/testdata/lint/with_config/b.ts
+++ b/tests/specs/lint/glob/with_config/b.ts
diff --git a/tests/specs/lint/glob/without_config/file1.js b/tests/specs/lint/glob/without_config/file1.js
new file mode 100644
index 000000000..737f26818
--- /dev/null
+++ b/tests/specs/lint/glob/without_config/file1.js
@@ -0,0 +1,2 @@
+// deno-lint-ignore
+while (false) {}
diff --git a/tests/specs/lint/glob/without_config/file2.ts b/tests/specs/lint/glob/without_config/file2.ts
new file mode 100644
index 000000000..73c612c35
--- /dev/null
+++ b/tests/specs/lint/glob/without_config/file2.ts
@@ -0,0 +1,6 @@
+try {
+ await Deno.open("./some/file.txt");
+} catch (_e) {}
+
+// deno-lint-ignore no-explicit-any
+function _foo(): any {}
diff --git a/tests/specs/lint/glob/without_config/ignored_file.ts b/tests/specs/lint/glob/without_config/ignored_file.ts
new file mode 100644
index 000000000..97befafa3
--- /dev/null
+++ b/tests/specs/lint/glob/without_config/ignored_file.ts
@@ -0,0 +1,3 @@
+// deno-lint-ignore-file
+
+function foo(): any {}
diff --git a/tests/testdata/lint/without_config/malformed.js b/tests/specs/lint/glob/without_config/malformed.js
index 9b64da898..9b64da898 100644
--- a/tests/testdata/lint/without_config/malformed.js
+++ b/tests/specs/lint/glob/without_config/malformed.js
diff --git a/tests/specs/lint/ignore/__test__.jsonc b/tests/specs/lint/ignore/__test__.jsonc
new file mode 100644
index 000000000..5bbe237ce
--- /dev/null
+++ b/tests/specs/lint/ignore/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --ignore=without_config/file1.js,without_config/malformed.js,without_config/lint_with_config/ without_config",
+ "output": "expected_ignore.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_ignore.out b/tests/specs/lint/ignore/expected_ignore.out
index b5f78ee04..b5f78ee04 100644
--- a/tests/testdata/lint/expected_ignore.out
+++ b/tests/specs/lint/ignore/expected_ignore.out
diff --git a/tests/specs/lint/ignore/without_config/file1.js b/tests/specs/lint/ignore/without_config/file1.js
new file mode 100644
index 000000000..737f26818
--- /dev/null
+++ b/tests/specs/lint/ignore/without_config/file1.js
@@ -0,0 +1,2 @@
+// deno-lint-ignore
+while (false) {}
diff --git a/tests/specs/lint/ignore/without_config/file2.ts b/tests/specs/lint/ignore/without_config/file2.ts
new file mode 100644
index 000000000..73c612c35
--- /dev/null
+++ b/tests/specs/lint/ignore/without_config/file2.ts
@@ -0,0 +1,6 @@
+try {
+ await Deno.open("./some/file.txt");
+} catch (_e) {}
+
+// deno-lint-ignore no-explicit-any
+function _foo(): any {}
diff --git a/tests/specs/lint/ignore/without_config/ignored_file.ts b/tests/specs/lint/ignore/without_config/ignored_file.ts
new file mode 100644
index 000000000..97befafa3
--- /dev/null
+++ b/tests/specs/lint/ignore/without_config/ignored_file.ts
@@ -0,0 +1,3 @@
+// deno-lint-ignore-file
+
+function foo(): any {}
diff --git a/tests/specs/lint/ignore/without_config/malformed.js b/tests/specs/lint/ignore/without_config/malformed.js
new file mode 100644
index 000000000..9b64da898
--- /dev/null
+++ b/tests/specs/lint/ignore/without_config/malformed.js
@@ -0,0 +1,4 @@
+// deno-fmt-ignore-file
+
+// intentionally malformed file
+export class A B C \ No newline at end of file
diff --git a/tests/specs/lint/ignore_unexplicit_files/__test__.jsonc b/tests/specs/lint/ignore_unexplicit_files/__test__.jsonc
new file mode 100644
index 000000000..7653c4e25
--- /dev/null
+++ b/tests/specs/lint/ignore_unexplicit_files/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --ignore=./",
+ "output": "lint.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/lint/ignore_unexplicit_files/lint.out b/tests/specs/lint/ignore_unexplicit_files/lint.out
new file mode 100644
index 000000000..33f4ddd93
--- /dev/null
+++ b/tests/specs/lint/ignore_unexplicit_files/lint.out
@@ -0,0 +1 @@
+error: No target files found.
diff --git a/tests/specs/lint/json/__test__.jsonc b/tests/specs/lint/json/__test__.jsonc
new file mode 100644
index 000000000..fb577c0dd
--- /dev/null
+++ b/tests/specs/lint/json/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --json file1.js file2.ts ignored_file.ts malformed.js",
+ "output": "expected_json.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_json.out b/tests/specs/lint/json/expected_json.out
index 6712c891a..6712c891a 100644
--- a/tests/testdata/lint/expected_json.out
+++ b/tests/specs/lint/json/expected_json.out
diff --git a/tests/specs/lint/json/file1.js b/tests/specs/lint/json/file1.js
new file mode 100644
index 000000000..737f26818
--- /dev/null
+++ b/tests/specs/lint/json/file1.js
@@ -0,0 +1,2 @@
+// deno-lint-ignore
+while (false) {}
diff --git a/tests/specs/lint/json/file2.ts b/tests/specs/lint/json/file2.ts
new file mode 100644
index 000000000..73c612c35
--- /dev/null
+++ b/tests/specs/lint/json/file2.ts
@@ -0,0 +1,6 @@
+try {
+ await Deno.open("./some/file.txt");
+} catch (_e) {}
+
+// deno-lint-ignore no-explicit-any
+function _foo(): any {}
diff --git a/tests/specs/lint/json/ignored_file.ts b/tests/specs/lint/json/ignored_file.ts
new file mode 100644
index 000000000..97befafa3
--- /dev/null
+++ b/tests/specs/lint/json/ignored_file.ts
@@ -0,0 +1,3 @@
+// deno-lint-ignore-file
+
+function foo(): any {}
diff --git a/tests/specs/lint/json/malformed.js b/tests/specs/lint/json/malformed.js
new file mode 100644
index 000000000..9b64da898
--- /dev/null
+++ b/tests/specs/lint/json/malformed.js
@@ -0,0 +1,4 @@
+// deno-fmt-ignore-file
+
+// intentionally malformed file
+export class A B C \ No newline at end of file
diff --git a/tests/specs/lint/jsx/__test__.jsonc b/tests/specs/lint/jsx/__test__.jsonc
new file mode 100644
index 000000000..42dda30a5
--- /dev/null
+++ b/tests/specs/lint/jsx/__test__.jsonc
@@ -0,0 +1,16 @@
+{
+ "steps": [
+ {
+ "if": "windows",
+ "args": "lint main.jsx",
+ "output": "main_windows.out",
+ "exitCode": 1
+ },
+ {
+ "if": "unix",
+ "args": "lint main.jsx",
+ "output": "main_unix.out",
+ "exitCode": 1
+ }
+ ]
+}
diff --git a/tests/specs/lint/jsx/main.jsx b/tests/specs/lint/jsx/main.jsx
new file mode 100644
index 000000000..625e7d430
--- /dev/null
+++ b/tests/specs/lint/jsx/main.jsx
@@ -0,0 +1 @@
+const data = <div>hello</div>;
diff --git a/tests/specs/lint/jsx/main_unix.out b/tests/specs/lint/jsx/main_unix.out
new file mode 100644
index 000000000..08816e9fe
--- /dev/null
+++ b/tests/specs/lint/jsx/main_unix.out
@@ -0,0 +1,12 @@
+error[no-unused-vars]: `data` is never used
+ --> [WILDCARD]lint/jsx/main.jsx:1:7
+ |
+1 | const data = <div>hello</div>;
+ | ^^^^
+ = hint: If this is intentional, prefix it with an underscore like `_data`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+Found 1 problem
+Checked 1 file
diff --git a/tests/specs/lint/jsx/main_windows.out b/tests/specs/lint/jsx/main_windows.out
new file mode 100644
index 000000000..ec6ebecad
--- /dev/null
+++ b/tests/specs/lint/jsx/main_windows.out
@@ -0,0 +1,12 @@
+error[no-unused-vars]: `data` is never used
+ --> [WILDCARD]lint\jsx\main.jsx:1:7
+ |
+1 | const data = <div>hello</div>;
+ | ^^^^
+ = hint: If this is intentional, prefix it with an underscore like `_data`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+Found 1 problem
+Checked 1 file
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/__test__.jsonc b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/__test__.jsonc
new file mode 100644
index 000000000..ce4db1883
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/__test__.jsonc
@@ -0,0 +1,16 @@
+{
+ "steps": [
+ {
+ "if": "windows",
+ "args": "lint",
+ "output": "main_windows.out",
+ "exitCode": 1
+ },
+ {
+ "if": "unix",
+ "args": "lint",
+ "output": "main_unix.out",
+ "exitCode": 1
+ }
+ ]
+}
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/actually_excluded.ts b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/actually_excluded.ts
new file mode 100644
index 000000000..dd2bcc611
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/actually_excluded.ts
@@ -0,0 +1 @@
+const a = 2;
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/deno.json b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/deno.json
new file mode 100644
index 000000000..a7689f16d
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/deno.json
@@ -0,0 +1,6 @@
+{
+ "lint": {
+ "exclude": ["!excluded.ts"]
+ },
+ "exclude": ["excluded.ts", "actually_excluded.ts"]
+}
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/excluded.ts b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/excluded.ts
new file mode 100644
index 000000000..dd2bcc611
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/excluded.ts
@@ -0,0 +1 @@
+const a = 2;
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main.ts b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main.ts
new file mode 100644
index 000000000..54b82a09a
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main.ts
@@ -0,0 +1 @@
+const a = 1;
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_unix.out b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_unix.out
new file mode 100644
index 000000000..39a3e7746
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_unix.out
@@ -0,0 +1,24 @@
+[UNORDERED_START]
+error[no-unused-vars]: `a` is never used
+ --> [WILDLINE]lint/opt_out_top_level_exclude_via_lint_inexclude/main.ts:1:7
+ |
+1 | const a = 1;
+ | ^
+ = hint: If this is intentional, prefix it with an underscore like `_a`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `a` is never used
+ --> [WILDLINE]lint/opt_out_top_level_exclude_via_lint_inexclude/excluded.ts:1:7
+ |
+1 | const a = 2;
+ | ^
+ = hint: If this is intentional, prefix it with an underscore like `_a`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+[UNORDERED_END]
+
+
+Found 2 problems
+Checked 2 files
diff --git a/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_windows.out b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_windows.out
new file mode 100644
index 000000000..8edf1133e
--- /dev/null
+++ b/tests/specs/lint/opt_out_top_level_exclude_via_lint_inexclude/main_windows.out
@@ -0,0 +1,24 @@
+[UNORDERED_START]
+error[no-unused-vars]: `a` is never used
+ --> [WILDLINE]lint\opt_out_top_level_exclude_via_lint_inexclude\main.ts:1:7
+ |
+1 | const a = 1;
+ | ^
+ = hint: If this is intentional, prefix it with an underscore like `_a`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `a` is never used
+ --> [WILDLINE]lint\opt_out_top_level_exclude_via_lint_inexclude\excluded.ts:1:7
+ |
+1 | const a = 2;
+ | ^
+ = hint: If this is intentional, prefix it with an underscore like `_a`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+[UNORDERED_END]
+
+
+Found 2 problems
+Checked 2 files
diff --git a/tests/specs/lint/quiet/__test__.jsonc b/tests/specs/lint/quiet/__test__.jsonc
new file mode 100644
index 000000000..44434f7a1
--- /dev/null
+++ b/tests/specs/lint/quiet/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --quiet ",
+ "output": "expected_quiet.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_quiet.out b/tests/specs/lint/quiet/expected_quiet.out
index 91c1a29cf..91c1a29cf 100644
--- a/tests/testdata/lint/expected_quiet.out
+++ b/tests/specs/lint/quiet/expected_quiet.out
diff --git a/tests/specs/lint/quiet/file1.js b/tests/specs/lint/quiet/file1.js
new file mode 100644
index 000000000..737f26818
--- /dev/null
+++ b/tests/specs/lint/quiet/file1.js
@@ -0,0 +1,2 @@
+// deno-lint-ignore
+while (false) {}
diff --git a/tests/specs/lint/rules/__test__.jsonc b/tests/specs/lint/rules/__test__.jsonc
new file mode 100644
index 000000000..d1b330b9a
--- /dev/null
+++ b/tests/specs/lint/rules/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --rules",
+ "output": "expected_rules.out",
+ "exitCode": 0
+}
diff --git a/tests/testdata/lint/expected_rules.out b/tests/specs/lint/rules/expected_rules.out
index 4afab7b9b..4afab7b9b 100644
--- a/tests/testdata/lint/expected_rules.out
+++ b/tests/specs/lint/rules/expected_rules.out
diff --git a/tests/specs/lint/rules_quiet/__test__.jsonc b/tests/specs/lint/rules_quiet/__test__.jsonc
new file mode 100644
index 000000000..0e7cc1a13
--- /dev/null
+++ b/tests/specs/lint/rules_quiet/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --rules -q",
+ "output": "expected_rules.out",
+ "exitCode": 0
+}
diff --git a/tests/specs/lint/rules_quiet/expected_rules.out b/tests/specs/lint/rules_quiet/expected_rules.out
new file mode 100644
index 000000000..4afab7b9b
--- /dev/null
+++ b/tests/specs/lint/rules_quiet/expected_rules.out
@@ -0,0 +1,2 @@
+Available rules:
+[WILDCARD]
diff --git a/tests/specs/lint/stdin/__test__.jsonc b/tests/specs/lint/stdin/__test__.jsonc
new file mode 100644
index 000000000..f6c688c16
--- /dev/null
+++ b/tests/specs/lint/stdin/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint main.ts",
+ "output": "expected_from_stdin.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_from_stdin.out b/tests/specs/lint/stdin/expected_from_stdin.out
index 735b271f5..f65331ebd 100644
--- a/tests/testdata/lint/expected_from_stdin.out
+++ b/tests/specs/lint/stdin/expected_from_stdin.out
@@ -1,5 +1,5 @@
error[no-explicit-any]: `any` type is not allowed
- --> [WILDCARD]$deno$stdin.ts:1:9
+ --> [WILDCARD]main.ts:1:9
|
1 | let _a: any;
| ^^^
diff --git a/tests/specs/lint/stdin/main.ts b/tests/specs/lint/stdin/main.ts
new file mode 100644
index 000000000..8abcd79b8
--- /dev/null
+++ b/tests/specs/lint/stdin/main.ts
@@ -0,0 +1 @@
+let _a: any;
diff --git a/tests/specs/lint/stdin_json/__test__.jsonc b/tests/specs/lint/stdin_json/__test__.jsonc
new file mode 100644
index 000000000..a777147f6
--- /dev/null
+++ b/tests/specs/lint/stdin_json/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --json main.ts",
+ "output": "expected_from_stdin_json.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/expected_from_stdin_json.out b/tests/specs/lint/stdin_json/expected_from_stdin_json.out
index 27b215b43..5788248aa 100644
--- a/tests/testdata/lint/expected_from_stdin_json.out
+++ b/tests/specs/lint/stdin_json/expected_from_stdin_json.out
@@ -2,7 +2,7 @@
"version": 1,
"diagnostics": [
{
- "filename": "[WILDCARD]$deno$stdin.ts",
+ "filename": "[WILDCARD]main.ts",
"range": {
"start": {
"line": 1,
diff --git a/tests/specs/lint/stdin_json/main.ts b/tests/specs/lint/stdin_json/main.ts
new file mode 100644
index 000000000..8abcd79b8
--- /dev/null
+++ b/tests/specs/lint/stdin_json/main.ts
@@ -0,0 +1 @@
+let _a: any;
diff --git a/tests/testdata/lint/Deno.jsonc b/tests/specs/lint/with_config/Deno.jsonc
index e9c03cca4..e9c03cca4 100644
--- a/tests/testdata/lint/Deno.jsonc
+++ b/tests/specs/lint/with_config/Deno.jsonc
diff --git a/tests/specs/lint/with_config/__test__.jsonc b/tests/specs/lint/with_config/__test__.jsonc
new file mode 100644
index 000000000..1e9bf9751
--- /dev/null
+++ b/tests/specs/lint/with_config/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.jsonc with_config/",
+ "output": "with_config.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/with_config.out b/tests/specs/lint/with_config/with_config.out
index f527bb712..f527bb712 100644
--- a/tests/testdata/lint/with_config.out
+++ b/tests/specs/lint/with_config/with_config.out
diff --git a/tests/specs/lint/with_config/with_config/a.ts b/tests/specs/lint/with_config/with_config/a.ts
new file mode 100644
index 000000000..c378218a3
--- /dev/null
+++ b/tests/specs/lint/with_config/with_config/a.ts
@@ -0,0 +1,4 @@
+// TODO: foo
+function add(a: number, b: number): number {
+ return a + b;
+}
diff --git a/tests/specs/lint/with_config/with_config/b.ts b/tests/specs/lint/with_config/with_config/b.ts
new file mode 100644
index 000000000..d5647067e
--- /dev/null
+++ b/tests/specs/lint/with_config/with_config/b.ts
@@ -0,0 +1,4 @@
+// TODO: this file should be ignored
+function subtract(a: number, b: number): number {
+ return a - b;
+}
diff --git a/tests/specs/lint/with_config_and_flags/Deno.jsonc b/tests/specs/lint/with_config_and_flags/Deno.jsonc
new file mode 100644
index 000000000..e9c03cca4
--- /dev/null
+++ b/tests/specs/lint/with_config_and_flags/Deno.jsonc
@@ -0,0 +1,10 @@
+{
+ "lint": {
+ "include": ["with_config/"],
+ "exclude": ["with_config/b.ts"],
+ "rules": {
+ "tags": ["recommended"],
+ "include": ["ban-untagged-todo"]
+ }
+ }
+}
diff --git a/tests/specs/lint/with_config_and_flags/__test__.jsonc b/tests/specs/lint/with_config_and_flags/__test__.jsonc
new file mode 100644
index 000000000..926d1983b
--- /dev/null
+++ b/tests/specs/lint/with_config_and_flags/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.jsonc --ignore=with_config/a.ts",
+ "output": "with_config_and_flags.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/lint/with_config_and_flags/with_config/a.ts b/tests/specs/lint/with_config_and_flags/with_config/a.ts
new file mode 100644
index 000000000..c378218a3
--- /dev/null
+++ b/tests/specs/lint/with_config_and_flags/with_config/a.ts
@@ -0,0 +1,4 @@
+// TODO: foo
+function add(a: number, b: number): number {
+ return a + b;
+}
diff --git a/tests/specs/lint/with_config_and_flags/with_config/b.ts b/tests/specs/lint/with_config_and_flags/with_config/b.ts
new file mode 100644
index 000000000..d5647067e
--- /dev/null
+++ b/tests/specs/lint/with_config_and_flags/with_config/b.ts
@@ -0,0 +1,4 @@
+// TODO: this file should be ignored
+function subtract(a: number, b: number): number {
+ return a - b;
+}
diff --git a/tests/testdata/lint/with_config_and_flags.out b/tests/specs/lint/with_config_and_flags/with_config_and_flags.out
index 78e21ef8d..78e21ef8d 100644
--- a/tests/testdata/lint/with_config_and_flags.out
+++ b/tests/specs/lint/with_config_and_flags/with_config_and_flags.out
diff --git a/tests/testdata/lint/Deno.no_tags.jsonc b/tests/specs/lint/with_config_without_args/Deno.no_tags.jsonc
index b63600a90..b63600a90 100644
--- a/tests/testdata/lint/Deno.no_tags.jsonc
+++ b/tests/specs/lint/with_config_without_args/Deno.no_tags.jsonc
diff --git a/tests/specs/lint/with_config_without_args/__test__.jsonc b/tests/specs/lint/with_config_without_args/__test__.jsonc
new file mode 100644
index 000000000..9a1ae7cb4
--- /dev/null
+++ b/tests/specs/lint/with_config_without_args/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.no_tags.jsonc with_config/",
+ "output": "with_config_without_tags.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/lint/with_config_without_args/with_config/a.ts b/tests/specs/lint/with_config_without_args/with_config/a.ts
new file mode 100644
index 000000000..c378218a3
--- /dev/null
+++ b/tests/specs/lint/with_config_without_args/with_config/a.ts
@@ -0,0 +1,4 @@
+// TODO: foo
+function add(a: number, b: number): number {
+ return a + b;
+}
diff --git a/tests/specs/lint/with_config_without_args/with_config/b.ts b/tests/specs/lint/with_config_without_args/with_config/b.ts
new file mode 100644
index 000000000..d5647067e
--- /dev/null
+++ b/tests/specs/lint/with_config_without_args/with_config/b.ts
@@ -0,0 +1,4 @@
+// TODO: this file should be ignored
+function subtract(a: number, b: number): number {
+ return a - b;
+}
diff --git a/tests/testdata/lint/with_config_without_tags.out b/tests/specs/lint/with_config_without_args/with_config_without_tags.out
index f527bb712..f527bb712 100644
--- a/tests/testdata/lint/with_config_without_tags.out
+++ b/tests/specs/lint/with_config_without_args/with_config_without_tags.out
diff --git a/tests/specs/lint/with_glob_config/__test__.jsonc b/tests/specs/lint/with_glob_config/__test__.jsonc
new file mode 100644
index 000000000..578ed2f85
--- /dev/null
+++ b/tests/specs/lint/with_glob_config/__test__.jsonc
@@ -0,0 +1,16 @@
+{
+ "steps": [
+ {
+ "if": "windows",
+ "args": "lint --config deno.glob.json",
+ "output": "with_glob_config_windows.out",
+ "exitCode": 1
+ },
+ {
+ "if": "unix",
+ "args": "lint --config deno.glob.json",
+ "output": "with_glob_config_unix.out",
+ "exitCode": 1
+ }
+ ]
+}
diff --git a/tests/testdata/lint/deno.glob.json b/tests/specs/lint/with_glob_config/deno.glob.json
index f6781b0d8..f6781b0d8 100644
--- a/tests/testdata/lint/deno.glob.json
+++ b/tests/specs/lint/with_glob_config/deno.glob.json
diff --git a/tests/testdata/lint/glob/nested/fizz/fizz.ts b/tests/specs/lint/with_glob_config/glob/data/tes.ts
index 6940729e9..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/fizz/fizz.ts
+++ b/tests/specs/lint/with_glob_config/glob/data/tes.ts
diff --git a/tests/testdata/lint/glob/data/test1.js b/tests/specs/lint/with_glob_config/glob/data/test1.js
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/data/test1.js
+++ b/tests/specs/lint/with_glob_config/glob/data/test1.js
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/data/test1.ts b/tests/specs/lint/with_glob_config/glob/data/test1.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/data/test1.ts
+++ b/tests/specs/lint/with_glob_config/glob/data/test1.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/data/test12.ts b/tests/specs/lint/with_glob_config/glob/data/test12.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/data/test12.ts
+++ b/tests/specs/lint/with_glob_config/glob/data/test12.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/nested/fizz/bar.ts b/tests/specs/lint/with_glob_config/glob/nested/fizz/bar.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/fizz/bar.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/fizz/bar.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/nested/fizz/bazz.ts b/tests/specs/lint/with_glob_config/glob/nested/fizz/bazz.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/fizz/bazz.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/fizz/bazz.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/nested/foo/fizz.ts b/tests/specs/lint/with_glob_config/glob/nested/fizz/fizz.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/foo/fizz.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/fizz/fizz.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/nested/fizz/foo.ts b/tests/specs/lint/with_glob_config/glob/nested/fizz/foo.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/fizz/foo.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/fizz/foo.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/nested/foo/bar.ts b/tests/specs/lint/with_glob_config/glob/nested/foo/bar.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/foo/bar.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/foo/bar.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/nested/foo/bazz.ts b/tests/specs/lint/with_glob_config/glob/nested/foo/bazz.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/foo/bazz.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/foo/bazz.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/specs/lint/with_glob_config/glob/nested/foo/fizz.ts b/tests/specs/lint/with_glob_config/glob/nested/foo/fizz.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config/glob/nested/foo/fizz.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/testdata/lint/glob/nested/foo/foo.ts b/tests/specs/lint/with_glob_config/glob/nested/foo/foo.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/nested/foo/foo.ts
+++ b/tests/specs/lint/with_glob_config/glob/nested/foo/foo.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/testdata/lint/glob/pages/[id].ts b/tests/specs/lint/with_glob_config/glob/pages/[id].ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/pages/[id].ts
+++ b/tests/specs/lint/with_glob_config/glob/pages/[id].ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/specs/lint/with_glob_config/with_glob_config_unix.out b/tests/specs/lint/with_glob_config/with_glob_config_unix.out
new file mode 100644
index 000000000..fad285cbe
--- /dev/null
+++ b/tests/specs/lint/with_glob_config/with_glob_config_unix.out
@@ -0,0 +1,94 @@
+[UNORDERED_START]
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/nested/fizz/bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/nested/foo/foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/nested/fizz/foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/nested/foo/bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/data/test1.js:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/nested/foo/fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/nested/fizz/fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/pages/[id].ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config/glob/data/test1.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+[UNORDERED_END]
+
+
+Found 9 problems
+Checked 9 files
diff --git a/tests/specs/lint/with_glob_config/with_glob_config_windows.out b/tests/specs/lint/with_glob_config/with_glob_config_windows.out
new file mode 100644
index 000000000..2ba078791
--- /dev/null
+++ b/tests/specs/lint/with_glob_config/with_glob_config_windows.out
@@ -0,0 +1,94 @@
+[UNORDERED_START]
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\nested\fizz\bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\nested\foo\foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\nested\fizz\foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\nested\foo\bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\data\test1.js:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\nested\foo\fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\nested\fizz\fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\pages\[id].ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config\glob\data\test1.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+[UNORDERED_END]
+
+
+Found 9 problems
+Checked 9 files
diff --git a/tests/specs/lint/with_glob_config_and_flags/__test__.jsonc b/tests/specs/lint/with_glob_config_and_flags/__test__.jsonc
new file mode 100644
index 000000000..3aed48ee8
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/__test__.jsonc
@@ -0,0 +1,16 @@
+{
+ "steps": [
+ {
+ "if": "windows",
+ "args": "lint --config deno.glob.json --ignore=gleb/nested/**/bar.ts",
+ "output": "with_glob_config_and_flags_windows.out",
+ "exitCode": 1
+ },
+ {
+ "if": "unix",
+ "args": "lint --config deno.glob.json --ignore=gleb/nested/**/bar.ts",
+ "output": "with_glob_config_and_flags_unix.out",
+ "exitCode": 1
+ }
+ ]
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/deno.glob.json b/tests/specs/lint/with_glob_config_and_flags/deno.glob.json
new file mode 100644
index 000000000..f6781b0d8
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/deno.glob.json
@@ -0,0 +1,11 @@
+{
+ "lint": {
+ "include": [
+ "glob/data/test1.?s",
+ "glob/nested/foo/*.ts",
+ "glob/nested/fizz/*.ts",
+ "glob/pages/[id].ts"
+ ],
+ "exclude": ["glob/nested/**/*bazz.ts"]
+ }
+}
diff --git a/tests/testdata/lint/glob/data/tes.ts b/tests/specs/lint/with_glob_config_and_flags/glob/data/tes.ts
index 26f07fba5..6940729e9 100644
--- a/tests/testdata/lint/glob/data/tes.ts
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/data/tes.ts
@@ -1,3 +1,2 @@
function foo() {
-
-} \ No newline at end of file
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/data/test1.js b/tests/specs/lint/with_glob_config_and_flags/glob/data/test1.js
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/data/test1.js
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/data/test1.ts b/tests/specs/lint/with_glob_config_and_flags/glob/data/test1.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/data/test1.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/data/test12.ts b/tests/specs/lint/with_glob_config_and_flags/glob/data/test12.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/data/test12.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bar.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bar.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bar.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bazz.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bazz.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/bazz.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/fizz.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/fizz.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/fizz.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/foo.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/foo.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/fizz/foo.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bar.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bar.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bar.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bazz.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bazz.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/bazz.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/fizz.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/fizz.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/fizz.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/foo.ts b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/foo.ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/nested/foo/foo.ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/glob/pages/[id].ts b/tests/specs/lint/with_glob_config_and_flags/glob/pages/[id].ts
new file mode 100644
index 000000000..6940729e9
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/glob/pages/[id].ts
@@ -0,0 +1,2 @@
+function foo() {
+}
diff --git a/tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_unix.out b/tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_unix.out
new file mode 100644
index 000000000..9afca955b
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_unix.out
@@ -0,0 +1,114 @@
+[UNORDERED_START]
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/fizz/bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/foo/bazz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/foo/foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/data/test1.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/foo/bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/fizz/bazz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/fizz/fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/fizz/foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/data/test1.js:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/nested/foo/fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint/with_glob_config_and_flags/glob/pages/[id].ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+[UNORDERED_END]
+
+
+Found 11 problems
+Checked 11 files
diff --git a/tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_windows.out b/tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_windows.out
new file mode 100644
index 000000000..9446796ab
--- /dev/null
+++ b/tests/specs/lint/with_glob_config_and_flags/with_glob_config_and_flags_windows.out
@@ -0,0 +1,114 @@
+[UNORDERED_START]
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\fizz\bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\foo\bazz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\foo\foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\data\test1.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\foo\bar.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\fizz\bazz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\fizz\fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\fizz\foo.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\data\test1.js:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\nested\foo\fizz.ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+
+
+error[no-unused-vars]: `foo` is never used
+ --> [WILDLINE]lint\with_glob_config_and_flags\glob\pages\[id].ts:1:10
+ |
+1 | function foo() {
+ | ^^^
+ = hint: If this is intentional, prefix it with an underscore like `_foo`
+
+ docs: https://lint.deno.land/rules/no-unused-vars
+[UNORDERED_END]
+
+
+Found 11 problems
+Checked 11 files
diff --git a/tests/testdata/lint/Deno.malformed.jsonc b/tests/specs/lint/with_malformed_config/Deno.malformed.jsonc
index fa71cd851..fa71cd851 100644
--- a/tests/testdata/lint/Deno.malformed.jsonc
+++ b/tests/specs/lint/with_malformed_config/Deno.malformed.jsonc
diff --git a/tests/specs/lint/with_malformed_config/__test__.jsonc b/tests/specs/lint/with_malformed_config/__test__.jsonc
new file mode 100644
index 000000000..86a47eda4
--- /dev/null
+++ b/tests/specs/lint/with_malformed_config/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.malformed.jsonc",
+ "output": "with_malformed_config.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/with_malformed_config.out b/tests/specs/lint/with_malformed_config/with_malformed_config.out
index 1c0f0fff6..1c0f0fff6 100644
--- a/tests/testdata/lint/with_malformed_config.out
+++ b/tests/specs/lint/with_malformed_config/with_malformed_config.out
diff --git a/tests/testdata/lint/Deno.malformed2.jsonc b/tests/specs/lint/with_malformed_config2/Deno.malformed2.jsonc
index fa71cd851..fa71cd851 100644
--- a/tests/testdata/lint/Deno.malformed2.jsonc
+++ b/tests/specs/lint/with_malformed_config2/Deno.malformed2.jsonc
diff --git a/tests/specs/lint/with_malformed_config2/__test__.jsonc b/tests/specs/lint/with_malformed_config2/__test__.jsonc
new file mode 100644
index 000000000..3210f5a59
--- /dev/null
+++ b/tests/specs/lint/with_malformed_config2/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.malformed2.jsonc",
+ "output": "with_malformed_config2.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/lint/with_malformed_config2.out b/tests/specs/lint/with_malformed_config2/with_malformed_config2.out
index 1c0f0fff6..1c0f0fff6 100644
--- a/tests/testdata/lint/with_malformed_config2.out
+++ b/tests/specs/lint/with_malformed_config2/with_malformed_config2.out
diff --git a/tests/testdata/lint/Deno.compact.format.jsonc b/tests/specs/lint/with_report_config/Deno.compact.format.jsonc
index f3487501a..f3487501a 100644
--- a/tests/testdata/lint/Deno.compact.format.jsonc
+++ b/tests/specs/lint/with_report_config/Deno.compact.format.jsonc
diff --git a/tests/specs/lint/with_report_config/__test__.jsonc b/tests/specs/lint/with_report_config/__test__.jsonc
new file mode 100644
index 000000000..2b5c21cce
--- /dev/null
+++ b/tests/specs/lint/with_report_config/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.compact.format.jsonc with_config/",
+ "output": "with_report_config_compact.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/lint/with_report_config/with_config/a.ts b/tests/specs/lint/with_report_config/with_config/a.ts
new file mode 100644
index 000000000..c378218a3
--- /dev/null
+++ b/tests/specs/lint/with_report_config/with_config/a.ts
@@ -0,0 +1,4 @@
+// TODO: foo
+function add(a: number, b: number): number {
+ return a + b;
+}
diff --git a/tests/specs/lint/with_report_config/with_config/b.ts b/tests/specs/lint/with_report_config/with_config/b.ts
new file mode 100644
index 000000000..d5647067e
--- /dev/null
+++ b/tests/specs/lint/with_report_config/with_config/b.ts
@@ -0,0 +1,4 @@
+// TODO: this file should be ignored
+function subtract(a: number, b: number): number {
+ return a - b;
+}
diff --git a/tests/testdata/lint/with_report_config_compact.out b/tests/specs/lint/with_report_config/with_report_config_compact.out
index fe1241264..fe1241264 100644
--- a/tests/testdata/lint/with_report_config_compact.out
+++ b/tests/specs/lint/with_report_config/with_report_config_compact.out
diff --git a/tests/specs/lint/with_report_config_override/Deno.compact.format.jsonc b/tests/specs/lint/with_report_config_override/Deno.compact.format.jsonc
new file mode 100644
index 000000000..f3487501a
--- /dev/null
+++ b/tests/specs/lint/with_report_config_override/Deno.compact.format.jsonc
@@ -0,0 +1,11 @@
+{
+ "lint": {
+ "include": ["with_config/"],
+ "exclude": ["with_config/b.ts"],
+ "rules": {
+ "tags": ["recommended"],
+ "include": ["ban-untagged-todo"]
+ },
+ "report": "compact"
+ }
+}
diff --git a/tests/specs/lint/with_report_config_override/__test__.jsonc b/tests/specs/lint/with_report_config_override/__test__.jsonc
new file mode 100644
index 000000000..5b1739af3
--- /dev/null
+++ b/tests/specs/lint/with_report_config_override/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "lint --config Deno.compact.format.jsonc with_config/ --json",
+ "output": "with_report_config_override.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/lint/with_report_config_override/with_config/a.ts b/tests/specs/lint/with_report_config_override/with_config/a.ts
new file mode 100644
index 000000000..c378218a3
--- /dev/null
+++ b/tests/specs/lint/with_report_config_override/with_config/a.ts
@@ -0,0 +1,4 @@
+// TODO: foo
+function add(a: number, b: number): number {
+ return a + b;
+}
diff --git a/tests/specs/lint/with_report_config_override/with_config/b.ts b/tests/specs/lint/with_report_config_override/with_config/b.ts
new file mode 100644
index 000000000..d5647067e
--- /dev/null
+++ b/tests/specs/lint/with_report_config_override/with_config/b.ts
@@ -0,0 +1,4 @@
+// TODO: this file should be ignored
+function subtract(a: number, b: number): number {
+ return a - b;
+}
diff --git a/tests/testdata/lint/with_report_config_override.out b/tests/specs/lint/with_report_config_override/with_report_config_override.out
index ad32e3123..ad32e3123 100644
--- a/tests/testdata/lint/with_report_config_override.out
+++ b/tests/specs/lint/with_report_config_override/with_report_config_override.out
diff --git a/tests/testdata/lint/expected_verbose.out b/tests/testdata/lint/expected_verbose.out
deleted file mode 100644
index eb8a2651a..000000000
--- a/tests/testdata/lint/expected_verbose.out
+++ /dev/null
@@ -1,3 +0,0 @@
-[WILDCARD]
-Found 3 problems
-Checked 3 files