diff options
author | Matt Mastracci <matthew@mastracci.com> | 2024-02-10 13:22:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-10 20:22:13 +0000 |
commit | f5e46c9bf2f50d66a953fa133161fc829cecff06 (patch) | |
tree | 8faf2f5831c1c7b11d842cd9908d141082c869a5 /cli/tests/integration/check_tests.rs | |
parent | d2477f780630a812bfd65e3987b70c0d309385bb (diff) |
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests ->
tests, and updates of relative paths for files.
This is the first step towards aggregate all of the integration test
files under tests/, which will lead to a set of integration tests that
can run without the CLI binary being built.
While we could leave these tests under `cli`, it would require us to
keep a more complex directory structure for the various test runners. In
addition, we have a lot of complexity to ignore various test files in
the `cli` project itself (cargo publish exclusion rules, autotests =
false, etc).
And finally, the `tests/` folder will eventually house the `test_ffi`,
`test_napi` and other testing code, reducing the size of the root repo
directory.
For easier review, the extremely large and noisy "move" is in the first
commit (with no changes -- just a move), while the remainder of the
changes to actual files is in the second commit.
Diffstat (limited to 'cli/tests/integration/check_tests.rs')
-rw-r--r-- | cli/tests/integration/check_tests.rs | 419 |
1 files changed, 0 insertions, 419 deletions
diff --git a/cli/tests/integration/check_tests.rs b/cli/tests/integration/check_tests.rs deleted file mode 100644 index f836957ce..000000000 --- a/cli/tests/integration/check_tests.rs +++ /dev/null @@ -1,419 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -use test_util as util; -use util::env_vars_for_npm_tests; -use util::TestContext; -use util::TestContextBuilder; - -itest!(_095_check_with_bare_import { - args: "check cache/095_cache_with_bare_import.ts", - output: "cache/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/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/cache_random_extension.out", - http_server: true, -}); - -itest!(check_all { - args: "check --quiet --all check/all/check_all.ts", - output: "check/all/check_all.out", - http_server: true, - exit_code: 1, -}); - -itest!(check_all_local { - args: "check --quiet check/all/check_all.ts", - output_str: Some(""), - http_server: true, -}); - -itest!(module_detection_force { - args: "check --quiet check/module_detection_force/main.ts", - output_str: Some(""), -}); - -// Regression test for https://github.com/denoland/deno/issues/14937. -itest!(declaration_header_file_with_no_exports { - args: "check --quiet check/declaration_header_file_with_no_exports.ts", - output_str: Some(""), -}); - -itest!(check_jsximportsource_importmap_config { - args: "check --quiet --config check/jsximportsource_importmap_config/deno.json check/jsximportsource_importmap_config/main.tsx", - output_str: Some(""), -}); - -itest!(bundle_jsximportsource_importmap_config { - args: "bundle --quiet --config check/jsximportsource_importmap_config/deno.json check/jsximportsource_importmap_config/main.tsx", - output: "check/jsximportsource_importmap_config/main.bundle.js", -}); - -itest!(jsx_not_checked { - args: "check check/jsx_not_checked/main.jsx", - output: "check/jsx_not_checked/main.out", - envs: env_vars_for_npm_tests(), - http_server: true, - exit_code: 1, -}); - -itest!(check_npm_install_diagnostics { - args: "check --quiet check/npm_install_diagnostics/main.ts", - output: "check/npm_install_diagnostics/main.out", - envs: vec![("NO_COLOR".to_string(), "1".to_string())], - exit_code: 1, -}); - -itest!(check_export_equals_declaration_file { - args: "check --quiet check/export_equals_declaration_file/main.ts", - exit_code: 0, -}); - -itest!(check_static_response_json { - args: "check --quiet check/response_json.ts", - exit_code: 0, -}); - -itest!(check_node_builtin_modules_ts { - args: "check --quiet check/node_builtin_modules/mod.ts", - output: "check/node_builtin_modules/mod.ts.out", - envs: env_vars_for_npm_tests(), - exit_code: 1, - http_server: true, -}); - -itest!(check_node_builtin_modules_js { - args: "check --quiet check/node_builtin_modules/mod.js", - output: "check/node_builtin_modules/mod.js.out", - envs: env_vars_for_npm_tests(), - exit_code: 1, - http_server: true, -}); - -itest!(check_no_error_truncation { - args: "check --quiet check/no_error_truncation/main.ts --config check/no_error_truncation/deno.json", - output: "check/no_error_truncation/main.out", - envs: vec![("NO_COLOR".to_string(), "1".to_string())], - exit_code: 1, -}); - -itest!(check_broadcast_channel { - args: "check --quiet check/broadcast_channel.ts", - exit_code: 0, -}); - -itest!(check_deno_not_found { - args: "check --quiet check/deno_not_found/main.ts", - output: "check/deno_not_found/main.out", - exit_code: 1, -}); - -itest!(check_with_exclude_option_by_dir { - args: - "check --quiet --config check/exclude_option/deno.exclude_dir.json check/exclude_option/ignored/index.ts", - output_str: Some(""), - exit_code: 0, -}); - -itest!(check_with_exclude_option_by_glob { - args: - "check --quiet --config check/exclude_option/deno.exclude_glob.json check/exclude_option/ignored/index.ts", - output_str: Some(""), - exit_code: 0, -}); - -itest!(check_without_exclude_option { - args: - "check --quiet --config check/exclude_option/deno.json check/exclude_option/ignored/index.ts", - output: "check/exclude_option/exclude_option.ts.error.out", - exit_code: 1, -}); - -itest!(check_imported_files_listed_in_exclude_option { - args: - "check --quiet --config check/exclude_option/deno.exclude_dir.json check/exclude_option/index.ts", - output: "check/exclude_option/exclude_option.ts.error.out", - exit_code: 1, -}); - -itest!(check_with_excluded_file_specified { - args: "check lib/types.d.ts", - cwd: Some("check/excluded_file_specified/"), - output: "check/excluded_file_specified/check.out", -}); - -#[test] -fn cache_switching_config_then_no_config() { - let context = TestContext::default(); - - assert!(does_type_checking(&context, true)); - assert!(does_type_checking(&context, false)); - - // should now not do type checking even when it changes - // configs because it previously did - assert!(!does_type_checking(&context, true)); - assert!(!does_type_checking(&context, false)); - - fn does_type_checking(context: &TestContext, with_config: bool) -> bool { - let mut args = vec![ - "check".to_string(), - "check/cache_config_on_off/main.ts".to_string(), - ]; - if with_config { - let mut slice = vec![ - "--config".to_string(), - "check/cache_config_on_off/deno.json".to_string(), - ]; - args.append(&mut slice); - } - - let output = context.new_command().args_vec(args).split_output().run(); - - output.assert_exit_code(0); - - let stderr = output.stderr(); - stderr.contains("Check") - } -} - -#[test] -fn reload_flag() { - // should do type checking whenever someone specifies --reload - let context = TestContext::default(); - - assert!(does_type_checking(&context, false)); - assert!(!does_type_checking(&context, false)); - assert!(does_type_checking(&context, true)); - assert!(does_type_checking(&context, true)); - assert!(!does_type_checking(&context, false)); - - fn does_type_checking(context: &TestContext, reload: bool) -> bool { - let mut args = vec![ - "check".to_string(), - "check/cache_config_on_off/main.ts".to_string(), - ]; - if reload { - let mut slice = vec!["--reload".to_string()]; - args.append(&mut slice); - } - let output = context.new_command().args_vec(args).split_output().run(); - output.assert_exit_code(0); - - let stderr = output.stderr(); - stderr.contains("Check") - } -} - -#[test] -fn typecheck_declarations_ns() { - let context = TestContext::default(); - let args = vec![ - "test".to_string(), - "--doc".to_string(), - util::root_path() - .join("cli/tsc/dts/lib.deno.ns.d.ts") - .to_string_lossy() - .into_owned(), - ]; - let output = context.new_command().args_vec(args).split_output().run(); - - println!("stdout: {}", output.stdout()); - println!("stderr: {}", output.stderr()); - output.assert_exit_code(0); -} - -#[test] -fn typecheck_declarations_unstable() { - let context = TestContext::default(); - let args = vec![ - "test".to_string(), - "--doc".to_string(), - "--unstable".to_string(), - util::root_path() - .join("cli/tsc/dts/lib.deno.unstable.d.ts") - .to_string_lossy() - .into_owned(), - ]; - let output = context.new_command().args_vec(args).split_output().run(); - - println!("stdout: {}", output.stdout()); - println!("stderr: {}", output.stderr()); - output.assert_exit_code(0); -} - -#[test] -fn ts_no_recheck_on_redirect() { - let test_context = TestContext::default(); - let check_command = test_context.new_command().args_vec([ - "run", - "--check", - "run/017_import_redirect.ts", - ]); - - // run once - let output = check_command.run(); - output.assert_matches_text("[WILDCARD]Check file://[WILDCARD]"); - - // run again - let output = check_command.run(); - output.assert_matches_text("Hello\n"); -} - -itest!(check_dts { - args: "check --quiet check/dts/check_dts.d.ts", - output: "check/dts/check_dts.out", - exit_code: 1, -}); - -itest!(check_types_dts { - args: "check main.ts", - cwd: Some("check/types_dts/"), - output: "check/types_dts/main.out", - exit_code: 0, -}); - -itest!(package_json_basic { - args: "check main.ts", - output: "package_json/basic/main.check.out", - envs: env_vars_for_npm_tests(), - http_server: true, - cwd: Some("package_json/basic"), - copy_temp_dir: Some("package_json/basic"), - exit_code: 0, -}); - -itest!(package_json_fail_check { - args: "check --quiet fail_check.ts", - output: "package_json/basic/fail_check.check.out", - envs: env_vars_for_npm_tests(), - http_server: true, - cwd: Some("package_json/basic"), - copy_temp_dir: Some("package_json/basic"), - exit_code: 1, -}); - -itest!(package_json_with_deno_json { - args: "check --quiet main.ts", - output: "package_json/deno_json/main.check.out", - cwd: Some("package_json/deno_json/"), - copy_temp_dir: Some("package_json/deno_json/"), - envs: env_vars_for_npm_tests(), - http_server: true, - exit_code: 1, -}); - -#[test] -fn check_error_in_dep_then_fix() { - let test_context = TestContextBuilder::new().use_temp_cwd().build(); - let temp_dir = test_context.temp_dir(); - let correct_code = - "export function greet(name: string) {\n return `Hello ${name}`;\n}\n"; - let incorrect_code = - "export function greet(name: number) {\n return `Hello ${name}`;\n}\n"; - - temp_dir.write( - "main.ts", - "import { greet } from './greet.ts';\n\nconsole.log(greet('world'));\n", - ); - temp_dir.write("greet.ts", incorrect_code); - - let check_command = test_context.new_command().args_vec(["check", "main.ts"]); - - let output = check_command.run(); - output.assert_matches_text("Check [WILDCARD]main.ts\nerror: TS234[WILDCARD]"); - output.assert_exit_code(1); - - temp_dir.write("greet.ts", correct_code); - let output = check_command.run(); - output.assert_matches_text("Check [WILDCARD]main.ts\n"); - - temp_dir.write("greet.ts", incorrect_code); - let output = check_command.run(); - output.assert_matches_text("Check [WILDCARD]main.ts\nerror: TS234[WILDCARD]"); - output.assert_exit_code(1); -} - -#[test] -fn json_module_check_then_error() { - let test_context = TestContextBuilder::new().use_temp_cwd().build(); - let temp_dir = test_context.temp_dir(); - let correct_code = "{ \"foo\": \"bar\" }"; - let incorrect_code = "{ \"foo2\": \"bar\" }"; - - temp_dir.write( - "main.ts", - "import test from './test.json' assert { type: 'json' }; console.log(test.foo);\n", - ); - temp_dir.write("test.json", correct_code); - - let check_command = test_context.new_command().args_vec(["check", "main.ts"]); - - check_command.run().assert_exit_code(0).skip_output_check(); - - temp_dir.write("test.json", incorrect_code); - check_command - .run() - .assert_matches_text("Check [WILDCARD]main.ts\nerror: TS2551[WILDCARD]") - .assert_exit_code(1); -} - -#[test] -fn npm_module_check_then_error() { - let test_context = TestContextBuilder::new() - .use_temp_cwd() - .add_npm_env_vars() - .use_http_server() - .build(); - let temp_dir = test_context.temp_dir(); - temp_dir.write("deno.json", "{}"); // so the lockfile gets loaded - - // get the lockfiles values first (this is necessary because the test - // server generates different tarballs based on the operating system) - test_context - .new_command() - .args_vec([ - "cache", - "npm:@denotest/breaking-change-between-versions@1.0.0", - "npm:@denotest/breaking-change-between-versions@2.0.0", - ]) - .run() - .skip_output_check(); - let lockfile = temp_dir.path().join("deno.lock"); - let mut lockfile_content = - lockfile.read_json::<deno_lockfile::LockfileContent>(); - - // make the specifier resolve to version 1 - lockfile_content.packages.specifiers.insert( - "npm:@denotest/breaking-change-between-versions".to_string(), - "npm:@denotest/breaking-change-between-versions@1.0.0".to_string(), - ); - lockfile.write_json(&lockfile_content); - temp_dir.write( - "main.ts", - "import { oldName } from 'npm:@denotest/breaking-change-between-versions'; console.log(oldName());\n", - ); - - let check_command = test_context.new_command().args_vec(["check", "main.ts"]); - check_command.run().assert_exit_code(0).skip_output_check(); - - // now update the lockfile to use version 2 instead, which should cause a - // type checking error because the oldName no longer exists - lockfile_content.packages.specifiers.insert( - "npm:@denotest/breaking-change-between-versions".to_string(), - "npm:@denotest/breaking-change-between-versions@2.0.0".to_string(), - ); - lockfile.write_json(&lockfile_content); - - check_command - .run() - .assert_matches_text("Check [WILDCARD]main.ts\nerror: TS2305[WILDCARD]has no exported member 'oldName'[WILDCARD]") - .assert_exit_code(1); -} |