diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-04-11 01:12:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-11 01:12:51 +0200 |
commit | 8ae17026cbb30ab23fd79ac5cf5c207af5ad90a3 (patch) | |
tree | d627be6104c0903b36ac38c6b56c2603469bbfec /cli/tests | |
parent | a4eee007ef28f918db9165c52a19bc30bd65bad3 (diff) |
feat: Add "deno check" subcommand for type checking (#14072)
This commit adds new "deno check" subcommand.
Currently it is an alias for "deno cache" with the difference that remote
modules don't emit TS diagnostics by default.
Prints warning for "deno run" subcommand if "--check" flag is not present
and there's no "--no-check" flag. Adds "DENO_FUTURE_CHECK" env
variable that allows to opt into new behavior now.
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/integration/bundle_tests.rs | 13 | ||||
-rw-r--r-- | cli/tests/integration/check_tests.rs | 34 | ||||
-rw-r--r-- | cli/tests/integration/inspector_tests.rs | 15 | ||||
-rw-r--r-- | cli/tests/integration/mod.rs | 20 | ||||
-rw-r--r-- | cli/tests/integration/run_tests.rs | 104 | ||||
-rw-r--r-- | cli/tests/integration/watcher_tests.rs | 5 | ||||
-rw-r--r-- | cli/tests/testdata/check_all.out | 4 | ||||
-rw-r--r-- | cli/tests/testdata/check_all.ts | 3 | ||||
-rw-r--r-- | cli/tests/testdata/future_check.ts | 1 | ||||
-rw-r--r-- | cli/tests/testdata/future_check1.out | 3 | ||||
-rw-r--r-- | cli/tests/testdata/future_check2.out | 1 |
11 files changed, 185 insertions, 18 deletions
diff --git a/cli/tests/integration/bundle_tests.rs b/cli/tests/integration/bundle_tests.rs index bb2489e03..e1a75f18d 100644 --- a/cli/tests/integration/bundle_tests.rs +++ b/cli/tests/integration/bundle_tests.rs @@ -34,6 +34,7 @@ fn bundle_exports() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&test) .output() @@ -56,7 +57,6 @@ fn bundle_exports_no_check() { let mut deno = util::deno_cmd() .current_dir(util::testdata_path()) .arg("bundle") - .arg("--no-check") .arg(mod1) .arg(&bundle) .spawn() @@ -77,6 +77,7 @@ fn bundle_exports_no_check() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&test) .output() @@ -109,6 +110,7 @@ fn bundle_circular() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&bundle) .output() @@ -141,6 +143,7 @@ fn bundle_single_module() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&bundle) .output() @@ -183,6 +186,7 @@ fn bundle_tla() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&test) .output() @@ -215,6 +219,7 @@ fn bundle_js() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&bundle) .output() @@ -289,7 +294,9 @@ fn bundle_import_map() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg(&test) .output() .unwrap(); @@ -311,7 +318,6 @@ fn bundle_import_map_no_check() { let mut deno = util::deno_cmd() .current_dir(util::testdata_path()) .arg("bundle") - .arg("--no-check") .arg("--import-map") .arg(import_map_path) .arg(import) @@ -334,6 +340,7 @@ fn bundle_import_map_no_check() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&test) .output() @@ -366,6 +373,7 @@ fn bundle_json_module() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&bundle) .output() @@ -398,6 +406,7 @@ fn bundle_json_module_escape_sub() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&bundle) .output() diff --git a/cli/tests/integration/check_tests.rs b/cli/tests/integration/check_tests.rs new file mode 100644 index 000000000..f605a733a --- /dev/null +++ b/cli/tests/integration/check_tests.rs @@ -0,0 +1,34 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. + +use crate::itest; + +itest!(_095_check_with_bare_import { + args: "check 095_cache_with_bare_import.ts", + output: "095_cache_with_bare_import.ts.out", + exit_code: 1, +}); + +itest!(check_extensionless { + args: "check --reload http://localhost:4545/subdir/no_js_ext", + output: "cache_extensionless.out", + http_server: true, +}); + +itest!(check_random_extension { + args: "check --reload http://localhost:4545/subdir/no_js_ext@1.0.0", + output: "cache_random_extension.out", + http_server: true, +}); + +itest!(check_all { + args: "check --quiet --remote check_all.ts", + output: "check_all.out", + http_server: true, + exit_code: 1, +}); + +itest!(check_all_local { + args: "check --quiet check_all.ts", + output_str: Some(""), + http_server: true, +}); diff --git a/cli/tests/integration/inspector_tests.rs b/cli/tests/integration/inspector_tests.rs index 71ecaf22e..86a5d4264 100644 --- a/cli/tests/integration/inspector_tests.rs +++ b/cli/tests/integration/inspector_tests.rs @@ -142,6 +142,7 @@ async fn assert_inspector_messages( async fn inspector_connect() { let script = util::testdata_path().join("inspector/inspector1.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect")) .arg(script) @@ -167,6 +168,7 @@ async fn inspector_connect() { async fn inspector_break_on_first_line() { let script = util::testdata_path().join("inspector/inspector2.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect-brk")) .arg(script) @@ -257,6 +259,7 @@ async fn inspector_break_on_first_line() { async fn inspector_pause() { let script = util::testdata_path().join("inspector/inspector1.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect")) .arg(script) @@ -327,6 +330,7 @@ async fn inspector_port_collision() { let inspect_flag = inspect_flag_with_unique_port("--inspect"); let mut child1 = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&inspect_flag) .arg(script.clone()) @@ -341,6 +345,7 @@ async fn inspector_port_collision() { let _ = extract_ws_url_from_stderr(&mut stderr_1_lines); let mut child2 = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(&inspect_flag) .arg(script) @@ -365,6 +370,7 @@ async fn inspector_port_collision() { async fn inspector_does_not_hang() { let script = util::testdata_path().join("inspector/inspector3.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect-brk")) .env("NO_COLOR", "1") @@ -476,6 +482,7 @@ async fn inspector_does_not_hang() { async fn inspector_without_brk_runs_code() { let script = util::testdata_path().join("inspector/inspector4.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect")) .arg(script) @@ -603,6 +610,7 @@ async fn inspector_runtime_evaluate_does_not_crash() { async fn inspector_json() { let script = util::testdata_path().join("inspector/inspector1.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect")) .arg(script) @@ -632,6 +640,7 @@ async fn inspector_json() { async fn inspector_json_list() { let script = util::testdata_path().join("inspector/inspector1.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect")) .arg(script) @@ -663,6 +672,7 @@ async fn inspector_connect_non_ws() { // Verify we don't panic if non-WS connection is being established let script = util::testdata_path().join("inspector/inspector1.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect")) .arg(script) @@ -688,6 +698,7 @@ async fn inspector_connect_non_ws() { async fn inspector_break_on_first_line_in_test() { let script = util::testdata_path().join("inspector/inspector_test.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("test") .arg(inspect_flag_with_unique_port("--inspect-brk")) .arg(script) @@ -782,7 +793,9 @@ async fn inspector_break_on_first_line_in_test() { async fn inspector_with_ts_files() { let script = util::testdata_path().join("inspector/test.ts"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg(inspect_flag_with_unique_port("--inspect-brk")) .arg(script) .stdout(std::process::Stdio::piped()) @@ -907,6 +920,7 @@ async fn inspector_with_ts_files() { async fn inspector_memory() { let script = util::testdata_path().join("inspector/memory.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect-brk")) .arg(script) @@ -1021,6 +1035,7 @@ async fn inspector_memory() { async fn inspector_profile() { let script = util::testdata_path().join("inspector/memory.js"); let mut child = util::deno_cmd() + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg(inspect_flag_with_unique_port("--inspect-brk")) .arg(script) diff --git a/cli/tests/integration/mod.rs b/cli/tests/integration/mod.rs index 86a980f59..2578989c7 100644 --- a/cli/tests/integration/mod.rs +++ b/cli/tests/integration/mod.rs @@ -56,6 +56,8 @@ mod bench; mod bundle; #[path = "cache_tests.rs"] mod cache; +#[path = "check_tests.rs"] +mod check; #[path = "compat_tests.rs"] mod compat; #[path = "compile_tests.rs"] @@ -293,7 +295,9 @@ fn ts_dependency_recompilation() { let output = util::deno_cmd() .current_dir(util::testdata_path()) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg(&ats) .output() .expect("failed to spawn script"); @@ -315,7 +319,9 @@ fn ts_dependency_recompilation() { let output = util::deno_cmd() .current_dir(util::testdata_path()) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg(&ats) .output() .expect("failed to spawn script"); @@ -338,9 +344,11 @@ fn ts_no_recheck_on_redirect() { assert!(redirect_ts.is_file()); let mut cmd = Command::new(e.clone()); cmd.env("DENO_DIR", deno_dir.path()); + cmd.env("DENO_FUTURE_CHECK", "1"); let mut initial = cmd .current_dir(util::testdata_path()) .arg("run") + .arg("--check") .arg(redirect_ts.clone()) .spawn() .expect("failed to span script"); @@ -350,9 +358,11 @@ fn ts_no_recheck_on_redirect() { let mut cmd = Command::new(e); cmd.env("DENO_DIR", deno_dir.path()); + cmd.env("DENO_FUTURE_CHECK", "1"); let output = cmd .current_dir(util::testdata_path()) .arg("run") + .arg("--check") .arg(redirect_ts) .output() .expect("failed to spawn script"); @@ -652,7 +662,9 @@ fn cafile_bundle_remote_exports() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg(&test) .output() .expect("failed to spawn script"); @@ -975,7 +987,9 @@ async fn test_resolve_dns() { let output = util::deno_cmd() .current_dir(util::testdata_path()) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg("--allow-net") .arg("resolve_dns.ts") .stdout(std::process::Stdio::piped()) @@ -1000,7 +1014,9 @@ async fn test_resolve_dns() { let output = util::deno_cmd() .current_dir(util::testdata_path()) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg("--allow-net=127.0.0.1:4553") .arg("resolve_dns.ts") .stdout(std::process::Stdio::piped()) @@ -1025,7 +1041,9 @@ async fn test_resolve_dns() { let output = util::deno_cmd() .current_dir(util::testdata_path()) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg("--allow-net=deno.land") .arg("resolve_dns.ts") .stdout(std::process::Stdio::piped()) @@ -1047,7 +1065,9 @@ async fn test_resolve_dns() { let output = util::deno_cmd() .current_dir(util::testdata_path()) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .arg("run") + .arg("--check") .arg("resolve_dns.ts") .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs index 43a761204..a56e3f0f1 100644 --- a/cli/tests/integration/run_tests.rs +++ b/cli/tests/integration/run_tests.rs @@ -13,6 +13,7 @@ itest!(stdout_write_all { itest!(_001_hello { args: "run --reload 001_hello.js", output: "001_hello.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(_002_hello { @@ -104,8 +105,9 @@ itest!(_021_mjs_modules { }); itest!(_023_no_ext { - args: "run --reload 023_no_ext", + args: "run --reload --check 023_no_ext", output: "023_no_ext.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); // TODO(lucacasonato): remove --unstable when permissions goes stable @@ -155,10 +157,11 @@ itest!(_034_onload { }); itest!(_035_cached_only_flag { - args: "run --reload --cached-only http://127.0.0.1:4545/019_media_types.ts", + args: "run --reload --check --cached-only http://127.0.0.1:4545/019_media_types.ts", output: "035_cached_only_flag.out", exit_code: 1, http_server: true, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(_038_checkjs { @@ -202,10 +205,12 @@ itest!(_048_media_types_jsx { }); itest!(_052_no_remote_flag { - args: "run --reload --no-remote http://127.0.0.1:4545/019_media_types.ts", + args: + "run --reload --check --no-remote http://127.0.0.1:4545/019_media_types.ts", output: "052_no_remote_flag.out", exit_code: 1, http_server: true, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(_056_make_temp_file_write_perm { @@ -552,6 +557,7 @@ itest!(blob_gc_finalization { args: "run blob_gc_finalization.js", output: "blob_gc_finalization.js.out", exit_code: 0, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(fetch_response_finalization { @@ -559,6 +565,7 @@ itest!(fetch_response_finalization { output: "fetch_response_finalization.js.out", http_server: true, exit_code: 0, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(import_type { @@ -664,8 +671,9 @@ itest!(config_types_remote { }); itest!(empty_typescript { - args: "run --reload subdir/empty.ts", + args: "run --reload --check subdir/empty.ts", output_str: Some("Check file:[WILDCARD]/subdir/empty.ts\n"), + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_001 { @@ -739,20 +747,23 @@ itest!(error_011_bad_module_specifier { }); itest!(error_012_bad_dynamic_import_specifier { - args: "run --reload error_012_bad_dynamic_import_specifier.ts", + args: "run --reload --check error_012_bad_dynamic_import_specifier.ts", exit_code: 1, output: "error_012_bad_dynamic_import_specifier.ts.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_013_missing_script { args: "run --reload missing_file_name", exit_code: 1, output: "error_013_missing_script.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_014_catch_dynamic_import_error { args: "run --reload --allow-read error_014_catch_dynamic_import_error.js", output: "error_014_catch_dynamic_import_error.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_015_dynamic_import_permissions { @@ -780,6 +791,7 @@ itest!(error_018_hide_long_source_js { args: "run error_018_hide_long_source_js.js", output: "error_018_hide_long_source_js.js.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_019_stack_function { @@ -853,12 +865,14 @@ itest!(error_syntax { args: "run --reload error_syntax.js", exit_code: 1, output: "error_syntax.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_syntax_empty_trailing_line { args: "run --reload error_syntax_empty_trailing_line.mjs", exit_code: 1, output: "error_syntax_empty_trailing_line.mjs.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(error_type_definitions { @@ -989,8 +1003,8 @@ itest!(lib_runtime_api { itest!(seed_random { args: "run --seed=100 seed_random.js", - output: "seed_random.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(type_definitions { @@ -999,9 +1013,10 @@ itest!(type_definitions { }); itest!(type_definitions_for_export { - args: "run --reload type_definitions_for_export.ts", + args: "run --reload --check type_definitions_for_export.ts", output: "type_definitions_for_export.ts.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(type_directives_01 { @@ -1022,37 +1037,43 @@ itest!(type_directives_js_main { }); itest!(type_directives_redirect { - args: "run --reload type_directives_redirect.ts", + args: "run --reload --check type_directives_redirect.ts", output: "type_directives_redirect.ts.out", http_server: true, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(type_headers_deno_types { - args: "run --reload type_headers_deno_types.ts", + args: "run --reload --check type_headers_deno_types.ts", output: "type_headers_deno_types.ts.out", http_server: true, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(ts_type_imports { - args: "run --reload ts_type_imports.ts", + args: "run --reload --check ts_type_imports.ts", output: "ts_type_imports.ts.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(ts_decorators { - args: "run --reload -c tsconfig.decorators.json ts_decorators.ts", + args: "run --reload -c tsconfig.decorators.json --check ts_decorators.ts", output: "ts_decorators.ts.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(ts_type_only_import { - args: "run --reload ts_type_only_import.ts", + args: "run --reload --check ts_type_only_import.ts", output: "ts_type_only_import.ts.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(swc_syntax_error { - args: "run --reload swc_syntax_error.ts", + args: "run --reload --check swc_syntax_error.ts", output: "swc_syntax_error.ts.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unbuffered_stderr { @@ -1068,6 +1089,7 @@ itest!(unbuffered_stdout { itest!(v8_flags_run { args: "run --v8-flags=--expose-gc v8_flags.js", output: "v8_flags.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(v8_flags_unrecognized { @@ -1100,12 +1122,14 @@ itest!(wasm_shared { itest!(wasm_async { args: "run wasm_async.js", output: "wasm_async.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(wasm_unreachable { args: "run --allow-read wasm_unreachable.js", output: "wasm_unreachable.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(wasm_url { @@ -1123,34 +1147,40 @@ itest!(weakref { itest!(top_level_await_order { args: "run --allow-read top_level_await_order.js", output: "top_level_await_order.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(top_level_await_loop { args: "run --allow-read top_level_await_loop.js", output: "top_level_await_loop.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(top_level_await_circular { args: "run --allow-read top_level_await_circular.js", output: "top_level_await_circular.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); // Regression test for https://github.com/denoland/deno/issues/11238. itest!(top_level_await_nested { args: "run --allow-read top_level_await_nested/main.js", output: "top_level_await_nested.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(top_level_await_unresolved { args: "run top_level_await_unresolved.js", output: "top_level_await_unresolved.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(top_level_await { args: "run --allow-read top_level_await.js", output: "top_level_await.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(top_level_await_ts { @@ -1182,6 +1212,7 @@ itest!(unstable_enabled { itest!(unstable_disabled_js { args: "run --reload unstable.js", output: "unstable_disabled_js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_enabled_js { @@ -1220,13 +1251,15 @@ itest!(dynamic_import_conditional { }); itest!(tsx_imports { - args: "run --reload tsx_imports.ts", + args: "run --reload --check tsx_imports.ts", output: "tsx_imports.ts.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(fix_dynamic_import_errors { args: "run --reload fix_dynamic_import_errors.js", output: "fix_dynamic_import_errors.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(fix_emittable_skipped { @@ -1401,6 +1434,7 @@ itest!(jsx_import_source_import_map_no_check { itest!(proto_exploit { args: "run proto_exploit.js", output: "proto_exploit.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(reference_types { @@ -1497,6 +1531,7 @@ itest!(classic_workers_event_loop { args: "run --enable-testing-features-do-not-use classic_workers_event_loop.js", output: "classic_workers_event_loop.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); // FIXME(bartlomieju): disabled, because this test is very flaky on CI @@ -1548,6 +1583,7 @@ itest!(error_import_map_unable_to_load { args: "run --import-map=import_maps/does_not_exist.json import_maps/test.ts", output: "error_import_map_unable_to_load.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); // Test that setting `self` in the main thread to some other value doesn't break @@ -1555,6 +1591,7 @@ itest!(error_import_map_unable_to_load { itest!(replace_self { args: "run replace_self.js", output: "replace_self.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(worker_event_handler_test { @@ -1589,9 +1626,10 @@ itest!(worker_close_in_wasm_reactions { }); itest!(reference_types_error { - args: "run --config checkjs.tsconfig.json reference_types_error.js", + args: "run --config checkjs.tsconfig.json --check reference_types_error.js", output: "reference_types_error.js.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(reference_types_error_no_check { @@ -1600,9 +1638,10 @@ itest!(reference_types_error_no_check { }); itest!(jsx_import_source_error { - args: "run --config jsx/deno-jsx-error.jsonc jsx_import_source_no_pragma.tsx", + args: "run --config jsx/deno-jsx-error.jsonc --check jsx_import_source_no_pragma.tsx", output: "jsx_import_source_error.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(shebang_tsc { @@ -1631,6 +1670,7 @@ itest!(shebang_with_json_imports_swc { fn no_validate_asm() { let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg("no_validate_asm.js") .stderr(std::process::Stdio::piped()) @@ -1775,6 +1815,7 @@ fn rust_log() { // Without RUST_LOG the stderr is empty. let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg("001_hello.js") .stderr(std::process::Stdio::piped()) @@ -1788,6 +1829,7 @@ fn rust_log() { // With RUST_LOG the stderr is not empty. let output = util::deno_cmd() .current_dir(util::testdata_path()) + .env("DENO_FUTURE_CHECK", "1") .arg("run") .arg("001_hello.js") .env("RUST_LOG", "debug") @@ -2362,6 +2404,7 @@ itest!(eval_context_throw_with_conflicting_source { itest!(eval_context_throw_dom_exception { args: "run eval_context_throw_dom_exception.js", output: "eval_context_throw_dom_exception.js.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); #[test] @@ -2493,11 +2536,13 @@ itest!(import_assertions_type_check { itest!(delete_window { args: "run delete_window.js", output_str: Some("true\n"), + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(colors_without_global_this { args: "run colors_without_globalThis.js", output_str: Some("true\n"), + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(config_auto_discovered_for_local_script { @@ -2515,6 +2560,7 @@ itest!(wasm_streaming_panic_test { args: "run wasm_streaming_panic_test.js", output: "wasm_streaming_panic_test.js.out", exit_code: 1, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); // Regression test for https://github.com/denoland/deno/issues/13897. @@ -2528,88 +2574,114 @@ itest!(unstable_ffi_1 { args: "run unstable_ffi_1.js", output: "unstable_ffi_1.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_2 { args: "run unstable_ffi_2.js", output: "unstable_ffi_2.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_3 { args: "run unstable_ffi_3.js", output: "unstable_ffi_3.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_4 { args: "run unstable_ffi_4.js", output: "unstable_ffi_4.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_5 { args: "run unstable_ffi_5.js", output: "unstable_ffi_5.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_6 { args: "run unstable_ffi_6.js", output: "unstable_ffi_6.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_7 { args: "run unstable_ffi_7.js", output: "unstable_ffi_7.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_8 { args: "run unstable_ffi_8.js", output: "unstable_ffi_8.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_9 { args: "run unstable_ffi_9.js", output: "unstable_ffi_9.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_10 { args: "run unstable_ffi_10.js", output: "unstable_ffi_10.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_11 { args: "run unstable_ffi_11.js", output: "unstable_ffi_11.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_12 { args: "run unstable_ffi_12.js", output: "unstable_ffi_12.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_13 { args: "run unstable_ffi_13.js", output: "unstable_ffi_13.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_14 { args: "run unstable_ffi_14.js", output: "unstable_ffi_14.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); itest!(unstable_ffi_15 { args: "run unstable_ffi_15.js", output: "unstable_ffi_15.js.out", exit_code: 70, + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], +}); + +itest!(future_check1 { + args: "run future_check.ts", + output: "future_check1.out", +}); + +itest!(future_check2 { + args: "run --check future_check.ts", + output: "future_check2.out", + envs: vec![("DENO_FUTURE_CHECK".to_string(), "1".to_string())], }); diff --git a/cli/tests/integration/watcher_tests.rs b/cli/tests/integration/watcher_tests.rs index 2f2bc9851..939a11c0c 100644 --- a/cli/tests/integration/watcher_tests.rs +++ b/cli/tests/integration/watcher_tests.rs @@ -633,6 +633,7 @@ fn run_watch_load_unload_events() { .arg("--unstable") .arg(&file_to_watch) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) .spawn() @@ -688,6 +689,7 @@ fn run_watch_not_exit() { .arg("--unstable") .arg(&file_to_watch) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) .spawn() @@ -748,6 +750,7 @@ fn run_watch_with_import_map_and_relative_paths() { .arg(&import_map_path) .arg(&file_to_watch) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) .spawn() @@ -971,6 +974,7 @@ fn test_watch_module_graph_error_referrer() { .arg("--unstable") .arg(&file_to_watch) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) .spawn() @@ -1004,6 +1008,7 @@ fn watch_with_no_clear_screen_flag() { .arg("--unstable") .arg(&file_to_watch) .env("NO_COLOR", "1") + .env("DENO_FUTURE_CHECK", "1") .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) .spawn() diff --git a/cli/tests/testdata/check_all.out b/cli/tests/testdata/check_all.out new file mode 100644 index 000000000..344264634 --- /dev/null +++ b/cli/tests/testdata/check_all.out @@ -0,0 +1,4 @@ +error: TS2322 [ERROR]: Type '12' is not assignable to type '"a"'. +export const a: "a" = 12; + ^ + at http://localhost:4545/subdir/type_error.ts:1:14 diff --git a/cli/tests/testdata/check_all.ts b/cli/tests/testdata/check_all.ts new file mode 100644 index 000000000..2ae8c2692 --- /dev/null +++ b/cli/tests/testdata/check_all.ts @@ -0,0 +1,3 @@ +import * as a from "http://localhost:4545/subdir/type_error.ts"; + +console.log(a.a); diff --git a/cli/tests/testdata/future_check.ts b/cli/tests/testdata/future_check.ts new file mode 100644 index 000000000..4d41fe06a --- /dev/null +++ b/cli/tests/testdata/future_check.ts @@ -0,0 +1 @@ +Deno.metrics(); diff --git a/cli/tests/testdata/future_check1.out b/cli/tests/testdata/future_check1.out new file mode 100644 index 000000000..9c7592fc5 --- /dev/null +++ b/cli/tests/testdata/future_check1.out @@ -0,0 +1,3 @@ +Warning In future releases `deno run` will not automatically type check without the --check flag. +To opt into this new behavior now, specify DENO_FUTURE_CHECK=1. +Check [WILDCARD]/future_check.ts diff --git a/cli/tests/testdata/future_check2.out b/cli/tests/testdata/future_check2.out new file mode 100644 index 000000000..c626a5485 --- /dev/null +++ b/cli/tests/testdata/future_check2.out @@ -0,0 +1 @@ +Check [WILDCARD]/future_check.ts |