summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sulaiman <mohammad.sulaiman@exalt.ps>2024-11-05 08:39:05 +0200
committerGitHub <noreply@github.com>2024-11-05 06:39:05 +0000
commit89f0b796bd442ff352c3f93f69156ca6d85bfd5e (patch)
tree3ac2a58c6d85f6af57eb2c6b07b1f2d0e8687b3a
parentf9a05068d6de247574fb764044a446d1d7ed2e9b (diff)
chore: deprecate run itests (#26444)
-rw-r--r--.dprint.json6
-rw-r--r--tests/integration/run_tests.rs1801
-rw-r--r--tests/specs/run/_001_hello/001_hello.js1
-rw-r--r--tests/specs/run/_001_hello/001_hello.js.out (renamed from tests/testdata/run/001_hello.js.out)0
-rw-r--r--tests/specs/run/_001_hello/__test__.jsonc4
-rw-r--r--tests/specs/run/_002_hello/002_hello.ts1
-rw-r--r--tests/specs/run/_002_hello/002_hello.ts.out (renamed from tests/testdata/run/002_hello.ts.out)0
-rw-r--r--tests/specs/run/_002_hello/__test__.jsonc4
-rw-r--r--tests/specs/run/_003_relative_import/003_relative_import.ts3
-rw-r--r--tests/specs/run/_003_relative_import/003_relative_import.ts.out (renamed from tests/testdata/run/003_relative_import.ts.out)0
-rw-r--r--tests/specs/run/_003_relative_import/__test__.jsonc4
-rw-r--r--tests/specs/run/_003_relative_import/print_hello.ts3
-rw-r--r--tests/specs/run/_004_set_timeout/004_set_timeout.ts (renamed from tests/testdata/run/004_set_timeout.ts)0
-rw-r--r--tests/specs/run/_004_set_timeout/004_set_timeout.ts.out (renamed from tests/testdata/run/004_set_timeout.ts.out)0
-rw-r--r--tests/specs/run/_004_set_timeout/__test__.jsonc4
-rw-r--r--tests/specs/run/_005_more_imports/005_more_imports.ts11
-rw-r--r--tests/specs/run/_005_more_imports/005_more_imports.ts.out (renamed from tests/testdata/run/005_more_imports.ts.out)0
-rw-r--r--tests/specs/run/_005_more_imports/__test__.jsonc4
-rw-r--r--tests/specs/run/_005_more_imports/mod1.ts17
-rw-r--r--tests/specs/run/_005_more_imports/print_hello.ts3
-rw-r--r--tests/specs/run/_005_more_imports/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/_006_url_imports/006_url_imports.ts3
-rw-r--r--tests/specs/run/_006_url_imports/006_url_imports.ts.out2
-rw-r--r--tests/specs/run/_006_url_imports/__test__.jsonc4
-rw-r--r--tests/specs/run/_006_url_imports/print_hello.ts3
-rw-r--r--tests/specs/run/_006_url_imports/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/_012_async/012_async.ts (renamed from tests/testdata/run/012_async.ts)0
-rw-r--r--tests/specs/run/_012_async/012_async.ts.out (renamed from tests/testdata/run/012_async.ts.out)0
-rw-r--r--tests/specs/run/_012_async/__test__.jsonc4
-rw-r--r--tests/specs/run/_013_dynamic_import/013_dynamic_import.ts15
-rw-r--r--tests/specs/run/_013_dynamic_import/013_dynamic_import.ts.out (renamed from tests/testdata/run/013_dynamic_import.ts.out)0
-rw-r--r--tests/specs/run/_013_dynamic_import/__test__.jsonc4
-rw-r--r--tests/specs/run/_013_dynamic_import/mod1.ts17
-rw-r--r--tests/specs/run/_013_dynamic_import/print_hello.ts3
-rw-r--r--tests/specs/run/_013_dynamic_import/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/_014_duplicate_import/014_duplicate_import.ts9
-rw-r--r--tests/specs/run/_014_duplicate_import/014_duplicate_import.ts.out (renamed from tests/testdata/run/014_duplicate_import.ts.out)0
-rw-r--r--tests/specs/run/_014_duplicate_import/__test__.jsonc4
-rw-r--r--tests/specs/run/_014_duplicate_import/auto_print_hello.ts2
-rw-r--r--tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js20
-rw-r--r--tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js.out (renamed from tests/testdata/run/015_duplicate_parallel_import.js.out)0
-rw-r--r--tests/specs/run/_015_duplicate_parallel_import/__test__.jsonc4
-rw-r--r--tests/specs/run/_015_duplicate_parallel_import/mod1.ts17
-rw-r--r--tests/specs/run/_015_duplicate_parallel_import/print_hello.ts3
-rw-r--r--tests/specs/run/_015_duplicate_parallel_import/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/_016_double_await/016_double_await.ts (renamed from tests/testdata/run/016_double_await.ts)0
-rw-r--r--tests/specs/run/_016_double_await/016_double_await.ts.out (renamed from tests/testdata/run/016_double_await.ts.out)0
-rw-r--r--tests/specs/run/_016_double_await/__test__.jsonc4
-rw-r--r--tests/specs/run/_017_import_redirect/017_import_redirect.ts4
-rw-r--r--tests/specs/run/_017_import_redirect/017_import_redirect.ts.out (renamed from tests/testdata/run/017_import_redirect.ts.out)0
-rw-r--r--tests/specs/run/_017_import_redirect/__test__.jsonc4
-rw-r--r--tests/specs/run/_017_import_redirect_check/017_import_redirect.ts4
-rw-r--r--tests/specs/run/_017_import_redirect_check/017_import_redirect.ts.out (renamed from tests/testdata/run/https_import.ts.out)0
-rw-r--r--tests/specs/run/_017_import_redirect_check/__test__.jsonc4
-rw-r--r--tests/specs/run/_017_import_redirect_info/017_import_redirect.ts4
-rw-r--r--tests/specs/run/_017_import_redirect_info/017_import_redirect_info.out (renamed from tests/testdata/run/017_import_redirect_info.out)0
-rw-r--r--tests/specs/run/_017_import_redirect_info/__test__.jsonc4
-rw-r--r--tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts4
-rw-r--r--tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts.out (renamed from tests/testdata/run/import_blob_url_imports.ts.out)0
-rw-r--r--tests/specs/run/_017_import_redirect_vendor_dir/__test__.jsonc4
-rw-r--r--tests/specs/run/_018_async_catch/018_async_catch.ts (renamed from tests/testdata/run/018_async_catch.ts)0
-rw-r--r--tests/specs/run/_018_async_catch/018_async_catch.ts.out (renamed from tests/testdata/run/018_async_catch.ts.out)0
-rw-r--r--tests/specs/run/_018_async_catch/__test__.jsonc4
-rw-r--r--tests/specs/run/_019_media_types/019_media_types.ts24
-rw-r--r--tests/specs/run/_019_media_types/019_media_types.ts.out (renamed from tests/testdata/run/019_media_types.ts.out)0
-rw-r--r--tests/specs/run/_019_media_types/__test__.jsonc4
-rw-r--r--tests/specs/run/_020_json_modules/020_json_modules.ts2
-rw-r--r--tests/specs/run/_020_json_modules/020_json_modules.ts.out3
-rw-r--r--tests/specs/run/_020_json_modules/__test__.jsonc5
-rw-r--r--tests/specs/run/_020_json_modules/config.json6
-rw-r--r--tests/specs/run/_021_mjs_modules/021_mjs_modules.ts2
-rw-r--r--tests/specs/run/_021_mjs_modules/021_mjs_modules.ts.out (renamed from tests/testdata/run/021_mjs_modules.ts.out)0
-rw-r--r--tests/specs/run/_021_mjs_modules/__test__.jsonc4
-rw-r--r--tests/specs/run/_021_mjs_modules/mod5.mjs1
-rw-r--r--tests/specs/run/_025_reload_js_type_error/025_reload_js_type_error.js (renamed from tests/testdata/run/025_reload_js_type_error.js)0
-rw-r--r--tests/specs/run/_025_reload_js_type_error/025_reload_js_type_error.js.out (renamed from tests/testdata/run/025_reload_js_type_error.js.out)0
-rw-r--r--tests/specs/run/_025_reload_js_type_error/__test__.jsonc4
-rw-r--r--tests/specs/run/_027_redirect_typescript/027_redirect_typescript.ts (renamed from tests/testdata/run/027_redirect_typescript.ts)0
-rw-r--r--tests/specs/run/_027_redirect_typescript/027_redirect_typescript.ts.out (renamed from tests/testdata/run/027_redirect_typescript.ts.out)0
-rw-r--r--tests/specs/run/_027_redirect_typescript/__test__.jsonc4
-rw-r--r--tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts2
-rw-r--r--tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts.out1
-rw-r--r--tests/specs/run/_027_redirect_typescript_vendor_dir/__test__.jsonc4
-rw-r--r--tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect1.ts1
-rw-r--r--tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect4.ts2
-rw-r--r--tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/manifest.json9
-rw-r--r--tests/specs/run/_028_args/028_args.ts (renamed from tests/testdata/run/028_args.ts)0
-rw-r--r--tests/specs/run/_028_args/028_args.ts.out (renamed from tests/testdata/run/028_args.ts.out)0
-rw-r--r--tests/specs/run/_028_args/__test__.jsonc4
-rw-r--r--tests/specs/run/_033_import_map_data_uri/__test__.jsonc4
-rw-r--r--tests/specs/run/_033_import_map_data_uri/lodash/lodash.ts1
-rw-r--r--tests/specs/run/_033_import_map_data_uri/lodash/other_file.ts1
-rw-r--r--tests/specs/run/_033_import_map_data_uri/test_data.ts (renamed from tests/testdata/run/import_maps/test_data.ts)0
-rw-r--r--tests/specs/run/_033_import_map_data_uri/test_data.ts.out (renamed from tests/testdata/run/import_maps/test_data.ts.out)0
-rw-r--r--tests/specs/run/_033_import_map_remote/033_import_map_remote.out (renamed from tests/testdata/run/033_import_map_remote.out)0
-rw-r--r--tests/specs/run/_033_import_map_remote/__test__.jsonc4
-rw-r--r--tests/specs/run/_033_import_map_remote/import_map_remote.json10
-rw-r--r--tests/specs/run/_033_import_map_remote/lodash/lodash.ts1
-rw-r--r--tests/specs/run/_033_import_map_remote/lodash/other_file.ts1
-rw-r--r--tests/specs/run/_033_import_map_remote/moment/moment.ts1
-rw-r--r--tests/specs/run/_033_import_map_remote/moment/other_file.ts1
-rw-r--r--tests/specs/run/_033_import_map_remote/print_hello.ts3
-rw-r--r--tests/specs/run/_033_import_map_remote/test_remote.ts5
-rw-r--r--tests/specs/run/_033_import_map_remote/vue.ts1
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/033_import_map_remote.out5
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/__test__.jsonc4
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/import_map_remote.json10
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/lodash/lodash.ts1
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/lodash/other_file.ts1
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/moment/moment.ts1
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/moment/other_file.ts1
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/print_hello.ts3
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/test_remote.ts5
-rw-r--r--tests/specs/run/_033_import_map_vendor_dir_remote/vue.ts1
-rw-r--r--tests/specs/run/_035_cached_only_flag/019_media_types.ts24
-rw-r--r--tests/specs/run/_035_cached_only_flag/035_cached_only_flag.out1
-rw-r--r--tests/specs/run/_035_cached_only_flag/__test__.jsonc5
-rw-r--r--tests/specs/run/_038_checkjs/038_checkjs.js (renamed from tests/testdata/run/038_checkjs.js)0
-rw-r--r--tests/specs/run/_038_checkjs/038_checkjs.js.out (renamed from tests/testdata/run/038_checkjs.js.out)0
-rw-r--r--tests/specs/run/_038_checkjs/__test__.jsonc6
-rw-r--r--tests/specs/run/_038_checkjs/checkjs.tsconfig.json5
-rw-r--r--tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts5
-rw-r--r--tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts.out (renamed from tests/testdata/run/042_dyn_import_evalcontext.ts.out)0
-rw-r--r--tests/specs/run/_042_dyn_import_evalcontext/__test__.jsonc4
-rw-r--r--tests/specs/run/_042_dyn_import_evalcontext/mod4.js1
-rw-r--r--tests/specs/run/_044_bad_resource/044_bad_resource.ts3
-rw-r--r--tests/specs/run/_044_bad_resource/044_bad_resource.ts.out (renamed from tests/testdata/run/044_bad_resource.ts.out)0
-rw-r--r--tests/specs/run/_044_bad_resource/__test__.jsonc5
-rw-r--r--tests/specs/run/_046_tsx/046_jsx_test.tsx (renamed from tests/testdata/run/046_jsx_test.tsx)0
-rw-r--r--tests/specs/run/_046_tsx/046_jsx_test.tsx.out (renamed from tests/testdata/run/046_jsx_test.tsx.out)0
-rw-r--r--tests/specs/run/_046_tsx/__test__.jsonc4
-rw-r--r--tests/specs/run/_047_jsx/047_jsx_test.jsx (renamed from tests/testdata/run/047_jsx_test.jsx)0
-rw-r--r--tests/specs/run/_047_jsx/047_jsx_test.jsx.out (renamed from tests/testdata/run/047_jsx_test.jsx.out)0
-rw-r--r--tests/specs/run/_047_jsx/__test__.jsonc4
-rw-r--r--tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts32
-rw-r--r--tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts.out (renamed from tests/testdata/run/048_media_types_jsx.ts.out)0
-rw-r--r--tests/specs/run/_048_media_types_jsx/__test__.jsonc4
-rw-r--r--tests/specs/run/_052_no_remote_flag/019_media_types.ts24
-rw-r--r--tests/specs/run/_052_no_remote_flag/052_no_remote_flag.out1
-rw-r--r--tests/specs/run/_052_no_remote_flag/__test__.jsonc5
-rw-r--r--tests/specs/run/_058_tasks_microtasks_close/058_tasks_microtasks_close.ts (renamed from tests/testdata/run/058_tasks_microtasks_close.ts)0
-rw-r--r--tests/specs/run/_058_tasks_microtasks_close/058_tasks_microtasks_close.ts.out (renamed from tests/testdata/run/058_tasks_microtasks_close.ts.out)0
-rw-r--r--tests/specs/run/_058_tasks_microtasks_close/__test__.jsonc4
-rw-r--r--tests/specs/run/_059_fs_relative_path_perm/059_fs_relative_path_perm.ts (renamed from tests/testdata/run/059_fs_relative_path_perm.ts)0
-rw-r--r--tests/specs/run/_059_fs_relative_path_perm/059_fs_relative_path_perm.ts.out (renamed from tests/testdata/run/059_fs_relative_path_perm.ts.out)0
-rw-r--r--tests/specs/run/_059_fs_relative_path_perm/__test__.jsonc5
-rw-r--r--tests/specs/run/_063_permissions_revoke/063_permissions_revoke.ts (renamed from tests/testdata/run/063_permissions_revoke.ts)0
-rw-r--r--tests/specs/run/_063_permissions_revoke/063_permissions_revoke.ts.out (renamed from tests/testdata/run/063_permissions_revoke.ts.out)0
-rw-r--r--tests/specs/run/_063_permissions_revoke/__test__.jsonc4
-rw-r--r--tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke.ts.out3
-rw-r--r--tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke_sync.ts (renamed from tests/testdata/run/063_permissions_revoke_sync.ts)0
-rw-r--r--tests/specs/run/_063_permissions_revoke_sync/__test__.jsonc4
-rw-r--r--tests/specs/run/_064_permissions_revoke_global/064_permissions_revoke_global.ts (renamed from tests/testdata/run/064_permissions_revoke_global.ts)0
-rw-r--r--tests/specs/run/_064_permissions_revoke_global/064_permissions_revoke_global.ts.out (renamed from tests/testdata/run/064_permissions_revoke_global.ts.out)0
-rw-r--r--tests/specs/run/_064_permissions_revoke_global/__test__.jsonc4
-rw-r--r--tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global.ts.out3
-rw-r--r--tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global_sync.ts (renamed from tests/testdata/run/064_permissions_revoke_global_sync.ts)0
-rw-r--r--tests/specs/run/_064_permissions_revoke_global_sync/__test__.jsonc4
-rw-r--r--tests/specs/run/_065_permissions_revoke_net/065_permissions_revoke_net.ts (renamed from tests/testdata/run/065_permissions_revoke_net.ts)0
-rw-r--r--tests/specs/run/_065_permissions_revoke_net/065_permissions_revoke_net.ts.out (renamed from tests/testdata/run/065_permissions_revoke_net.ts.out)0
-rw-r--r--tests/specs/run/_065_permissions_revoke_net/__test__.jsonc4
-rw-r--r--tests/specs/run/_070_location/070_location.ts (renamed from tests/testdata/run/070_location.ts)0
-rw-r--r--tests/specs/run/_070_location/070_location.ts.out (renamed from tests/testdata/run/070_location.ts.out)0
-rw-r--r--tests/specs/run/_070_location/__test__.jsonc4
-rw-r--r--tests/specs/run/_071_location_unset/071_location_unset.ts (renamed from tests/testdata/run/071_location_unset.ts)0
-rw-r--r--tests/specs/run/_071_location_unset/071_location_unset.ts.out (renamed from tests/testdata/run/071_location_unset.ts.out)0
-rw-r--r--tests/specs/run/_071_location_unset/__test__.jsonc4
-rw-r--r--tests/specs/run/_072_location_relative_fetch/072_location_relative_fetch.ts (renamed from tests/testdata/run/072_location_relative_fetch.ts)0
-rw-r--r--tests/specs/run/_072_location_relative_fetch/072_location_relative_fetch.ts.out (renamed from tests/testdata/run/072_location_relative_fetch.ts.out)0
-rw-r--r--tests/specs/run/_072_location_relative_fetch/__test__.jsonc4
-rw-r--r--tests/specs/run/_072_location_relative_fetch/fetch/hello.txt1
-rw-r--r--tests/specs/run/_075_import_local_query_hash/001_hello.js1
-rw-r--r--tests/specs/run/_075_import_local_query_hash/002_hello.ts1
-rw-r--r--tests/specs/run/_075_import_local_query_hash/075_import_local_query_hash.ts (renamed from tests/testdata/run/075_import_local_query_hash.ts)0
-rw-r--r--tests/specs/run/_075_import_local_query_hash/075_import_local_query_hash.ts.out (renamed from tests/testdata/run/075_import_local_query_hash.ts.out)0
-rw-r--r--tests/specs/run/_075_import_local_query_hash/__test__.jsonc4
-rw-r--r--tests/specs/run/_077_fetch_empty/077_fetch_empty.ts (renamed from tests/testdata/run/077_fetch_empty.ts)0
-rw-r--r--tests/specs/run/_077_fetch_empty/077_fetch_empty.ts.out (renamed from tests/testdata/run/077_fetch_empty.ts.out)0
-rw-r--r--tests/specs/run/_077_fetch_empty/__test__.jsonc5
-rw-r--r--tests/specs/run/_078_unload_on_exit/078_unload_on_exit.ts (renamed from tests/testdata/run/078_unload_on_exit.ts)0
-rw-r--r--tests/specs/run/_078_unload_on_exit/078_unload_on_exit.ts.out (renamed from tests/testdata/run/078_unload_on_exit.ts.out)0
-rw-r--r--tests/specs/run/_078_unload_on_exit/__test__.jsonc5
-rw-r--r--tests/specs/run/_079_location_authentication/079_location_authentication.ts (renamed from tests/testdata/run/079_location_authentication.ts)0
-rw-r--r--tests/specs/run/_079_location_authentication/079_location_authentication.ts.out (renamed from tests/testdata/run/079_location_authentication.ts.out)0
-rw-r--r--tests/specs/run/_079_location_authentication/__test__.jsonc4
-rw-r--r--tests/specs/run/_081_location_relative_fetch_redirect/081_location_relative_fetch_redirect.ts (renamed from tests/testdata/run/081_location_relative_fetch_redirect.ts)0
-rw-r--r--tests/specs/run/_081_location_relative_fetch_redirect/081_location_relative_fetch_redirect.ts.out (renamed from tests/testdata/run/081_location_relative_fetch_redirect.ts.out)0
-rw-r--r--tests/specs/run/_081_location_relative_fetch_redirect/__test__.jsonc4
-rw-r--r--tests/specs/run/_082_prepare_stack_trace_throw/082_prepare_stack_trace_throw.js (renamed from tests/testdata/run/082_prepare_stack_trace_throw.js)0
-rw-r--r--tests/specs/run/_082_prepare_stack_trace_throw/082_prepare_stack_trace_throw.js.out (renamed from tests/testdata/run/082_prepare_stack_trace_throw.js.out)0
-rw-r--r--tests/specs/run/_082_prepare_stack_trace_throw/__test__.jsonc5
-rw-r--r--tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_already_evaluating.ts (renamed from tests/testdata/run/088_dynamic_import_already_evaluating.ts)0
-rw-r--r--tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_already_evaluating.ts.out (renamed from tests/testdata/run/088_dynamic_import_already_evaluating.ts.out)0
-rw-r--r--tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_target.ts3
-rw-r--r--tests/specs/run/_088_dynamic_import_already_evaluating/__test__.jsonc4
-rw-r--r--tests/specs/run/_091_use_define_for_class_fields/091_use_define_for_class_fields.ts (renamed from tests/testdata/run/091_use_define_for_class_fields.ts)0
-rw-r--r--tests/specs/run/_091_use_define_for_class_fields/091_use_define_for_class_fields.ts.out (renamed from tests/testdata/run/091_use_define_for_class_fields.ts.out)0
-rw-r--r--tests/specs/run/_091_use_define_for_class_fields/__test__.jsonc5
-rw-r--r--tests/specs/run/aggregate_error/__test__.jsonc5
-rw-r--r--tests/specs/run/aggregate_error/aggregate_error.out (renamed from tests/testdata/run/aggregate_error.out)0
-rw-r--r--tests/specs/run/aggregate_error/aggregate_error.ts (renamed from tests/testdata/run/aggregate_error.ts)0
-rw-r--r--tests/specs/run/async_error/__test__.jsonc5
-rw-r--r--tests/specs/run/async_error/async_error.ts (renamed from tests/testdata/run/async_error.ts)0
-rw-r--r--tests/specs/run/async_error/async_error.ts.out (renamed from tests/testdata/run/async_error.ts.out)0
-rw-r--r--tests/specs/run/beforeunload_event/__test__.jsonc4
-rw-r--r--tests/specs/run/beforeunload_event/before_unload.js (renamed from tests/testdata/run/before_unload.js)0
-rw-r--r--tests/specs/run/beforeunload_event/before_unload.js.out (renamed from tests/testdata/run/before_unload.js.out)0
-rw-r--r--tests/specs/run/blob_gc_finalization/__test__.jsonc5
-rw-r--r--tests/specs/run/blob_gc_finalization/blob_gc_finalization.js (renamed from tests/testdata/run/blob_gc_finalization.js)0
-rw-r--r--tests/specs/run/blob_gc_finalization/blob_gc_finalization.js.out (renamed from tests/testdata/run/blob_gc_finalization.js.out)0
-rw-r--r--tests/specs/run/byte_order_mark/001_hello.js1
-rw-r--r--tests/specs/run/byte_order_mark/__test__.jsonc4
-rw-r--r--tests/specs/run/byte_order_mark/byte_order_mark.out (renamed from tests/testdata/run/byte_order_mark.out)0
-rw-r--r--tests/specs/run/byte_order_mark/byte_order_mark.ts4
-rw-r--r--tests/specs/run/check_js_points_to_ts/__test__.jsonc5
-rw-r--r--tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/bar.ts (renamed from tests/testdata/run/check_js_points_to_ts/bar.ts)0
-rw-r--r--tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/foo.d.ts (renamed from tests/testdata/run/check_js_points_to_ts/foo.d.ts)0
-rw-r--r--tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/foo.js (renamed from tests/testdata/run/check_js_points_to_ts/foo.js)0
-rw-r--r--tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/test.js (renamed from tests/testdata/run/check_js_points_to_ts/test.js)0
-rw-r--r--tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/test.js.out (renamed from tests/testdata/run/check_js_points_to_ts/test.js.out)0
-rw-r--r--tests/specs/run/check_js_points_to_ts/checkjs.tsconfig.json5
-rw-r--r--tests/specs/run/check_remote/__test__.jsonc5
-rw-r--r--tests/specs/run/check_remote/no_check_remote.ts3
-rw-r--r--tests/specs/run/check_remote/no_check_remote.ts.disabled.out4
-rw-r--r--tests/specs/run/check_remote/type_error.ts1
-rw-r--r--tests/specs/run/classic_workers_event_loop/__test__.jsonc4
-rw-r--r--tests/specs/run/classic_workers_event_loop/classic_workers_event_loop.js (renamed from tests/testdata/run/classic_workers_event_loop.js)0
-rw-r--r--tests/specs/run/classic_workers_event_loop/classic_workers_event_loop.js.out (renamed from tests/testdata/run/classic_workers_event_loop.js.out)0
-rw-r--r--tests/specs/run/colors_without_global_this/__test__.jsonc4
-rw-r--r--tests/specs/run/colors_without_global_this/colors_without_globalThis.js (renamed from tests/testdata/run/colors_without_globalThis.js)0
-rw-r--r--tests/specs/run/complex_error/__test__.jsonc5
-rw-r--r--tests/specs/run/complex_error/complex_error.ts (renamed from tests/testdata/run/complex_error.ts)0
-rw-r--r--tests/specs/run/complex_error/complex_error.ts.out (renamed from tests/testdata/run/complex_error.ts.out)0
-rw-r--r--tests/specs/run/config/__test__.jsonc4
-rw-r--r--tests/specs/run/config/config/main.out (renamed from tests/testdata/run/config/main.out)0
-rw-r--r--tests/specs/run/config/config/main.ts (renamed from tests/testdata/run/config/main.ts)0
-rw-r--r--tests/specs/run/config/config/tsconfig.json (renamed from tests/testdata/run/config/tsconfig.json)0
-rw-r--r--tests/specs/run/config_auto_discovered_for_local_script/__test__.jsonc4
-rw-r--r--tests/specs/run/config_auto_discovered_for_local_script/frontend_work.ts (renamed from tests/testdata/run/with_config/frontend_work.ts)0
-rw-r--r--tests/specs/run/config_auto_discovered_for_local_script_log/__test__.jsonc4
-rw-r--r--tests/specs/run/config_auto_discovered_for_local_script_log/auto_discovery_log.out (renamed from tests/testdata/run/with_config/auto_discovery_log.out)0
-rw-r--r--tests/specs/run/config_auto_discovered_for_local_script_log/deno.jsonc (renamed from tests/testdata/run/with_config/deno.jsonc)0
-rw-r--r--tests/specs/run/config_auto_discovered_for_local_script_log/frontend_work.ts4
-rw-r--r--tests/specs/run/config_json_import/__test__.jsonc4
-rw-r--r--tests/specs/run/config_json_import/config_json_import.ts2
-rw-r--r--tests/specs/run/config_json_import/config_json_import.ts.out (renamed from tests/testdata/run/config_json_import.ts.out)0
-rw-r--r--tests/specs/run/config_json_import/deno-jsx.json6
-rw-r--r--tests/specs/run/config_not_auto_discovered_for_remote_script/__test__.jsonc4
-rw-r--r--tests/specs/run/config_not_auto_discovered_for_remote_script/server_side_work.ts (renamed from tests/testdata/run/with_config/server_side_work.ts)0
-rw-r--r--tests/specs/run/config_types/__test__.jsonc4
-rw-r--r--tests/specs/run/config_types/config_types/deno.lock6
-rw-r--r--tests/specs/run/config_types/config_types/main.out (renamed from tests/testdata/run/config_types/main.out)0
-rw-r--r--tests/specs/run/config_types/config_types/main.ts (renamed from tests/testdata/run/config_types/main.ts)0
-rw-r--r--tests/specs/run/config_types/config_types/remote.tsconfig.json (renamed from tests/testdata/run/config_types/remote.tsconfig.json)0
-rw-r--r--tests/specs/run/config_types/config_types/tsconfig.json (renamed from tests/testdata/run/config_types/tsconfig.json)0
-rw-r--r--tests/specs/run/config_types/config_types/types.d.ts2
-rw-r--r--tests/specs/run/config_types_remote/__test__.jsonc4
-rw-r--r--tests/specs/run/config_types_remote/config_types/deno.lock6
-rw-r--r--tests/specs/run/config_types_remote/config_types/main.out (renamed from tests/testdata/run/reference_types.ts.out)0
-rw-r--r--tests/specs/run/config_types_remote/config_types/main.ts1
-rw-r--r--tests/specs/run/config_types_remote/config_types/remote.tsconfig.json7
-rw-r--r--tests/specs/run/config_types_remote/config_types/tsconfig.json7
-rw-r--r--tests/specs/run/config_types_remote/config_types/types.d.ts2
-rw-r--r--tests/specs/run/custom_inspect_url/__test__.jsonc4
-rw-r--r--tests/specs/run/custom_inspect_url/custom_inspect_url.js (renamed from tests/testdata/run/custom_inspect_url.js)0
-rw-r--r--tests/specs/run/custom_inspect_url/custom_inspect_url.js.out (renamed from tests/testdata/run/custom_inspect_url.js.out)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/__test__.jsonc4
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/deno.json (renamed from tests/testdata/run/decorators/experimental/deno.json)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/no_check/main.out (renamed from tests/testdata/run/decorators/experimental/no_check/main.out)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/no_check/main.ts (renamed from tests/testdata/run/decorators/experimental/no_check/main.ts)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/runtime/main.out (renamed from tests/testdata/run/decorators/experimental/runtime/main.out)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/runtime/main.ts (renamed from tests/testdata/run/decorators/experimental/runtime/main.ts)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/ts/main.out (renamed from tests/testdata/run/decorators/experimental/ts/main.out)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/experimental/ts/main.ts (renamed from tests/testdata/run/decorators/experimental/ts/main.ts)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/tc39_proposal/main.out (renamed from tests/testdata/run/decorators/tc39_proposal/main.out)0
-rw-r--r--tests/specs/run/decorators_tc39_proposal/decorators/tc39_proposal/main.ts (renamed from tests/testdata/run/decorators/tc39_proposal/main.ts)0
-rw-r--r--tests/specs/run/deno_exit_tampering/__test__.jsonc5
-rw-r--r--tests/specs/run/deno_exit_tampering/deno_exit_tampering.ts (renamed from tests/testdata/run/deno_exit_tampering.ts)0
-rw-r--r--tests/specs/run/deny_all_permission_args/__test__.jsonc4
-rw-r--r--tests/specs/run/deny_all_permission_args/deny_all_permission_args.js (renamed from tests/testdata/run/deny_all_permission_args.js)0
-rw-r--r--tests/specs/run/deny_all_permission_args/deny_all_permission_args.out (renamed from tests/testdata/run/deny_all_permission_args.out)0
-rw-r--r--tests/specs/run/deny_some_permission_args/__test__.jsonc4
-rw-r--r--tests/specs/run/deny_some_permission_args/deny_some_permission_args.js (renamed from tests/testdata/run/deny_some_permission_args.js)0
-rw-r--r--tests/specs/run/deny_some_permission_args/deny_some_permission_args.out (renamed from tests/testdata/run/deny_some_permission_args.out)0
-rw-r--r--tests/specs/run/dom_exception_formatting/__test__.jsonc5
-rw-r--r--tests/specs/run/dom_exception_formatting/dom_exception_formatting.ts (renamed from tests/testdata/run/dom_exception_formatting.ts)0
-rw-r--r--tests/specs/run/dom_exception_formatting/dom_exception_formatting.ts.out (renamed from tests/testdata/run/dom_exception_formatting.ts.out)0
-rw-r--r--tests/specs/run/dynamic_import_already_rejected/__test__.jsonc4
-rw-r--r--tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/error_001.ts (renamed from tests/testdata/run/dynamic_import_already_rejected/error_001.ts)0
-rw-r--r--tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/main.out (renamed from tests/testdata/run/dynamic_import_already_rejected/main.out)0
-rw-r--r--tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/main.ts (renamed from tests/testdata/run/dynamic_import_already_rejected/main.ts)0
-rw-r--r--tests/specs/run/dynamic_import_async_error/__test__.jsonc4
-rw-r--r--tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/delayed_error.ts (renamed from tests/testdata/run/dynamic_import_async_error/delayed_error.ts)0
-rw-r--r--tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/main.out (renamed from tests/testdata/run/dynamic_import_async_error/main.out)0
-rw-r--r--tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/main.ts (renamed from tests/testdata/run/dynamic_import_async_error/main.ts)0
-rw-r--r--tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/__test__.jsonc4
-rw-r--r--tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/main.out (renamed from tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out)0
-rw-r--r--tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/main.ts (renamed from tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts)0
-rw-r--r--tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/mod.ts (renamed from tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts)0
-rw-r--r--tests/specs/run/dynamic_import_conditional/__test__.jsonc4
-rw-r--r--tests/specs/run/dynamic_import_conditional/dynamic_import_conditional.js (renamed from tests/testdata/run/dynamic_import_conditional.js)0
-rw-r--r--tests/specs/run/dynamic_import_conditional/dynamic_import_conditional.js.out (renamed from tests/testdata/run/dynamic_import_conditional.js.out)0
-rw-r--r--tests/specs/run/dynamic_import_permissions_blob_local/__test__.jsonc5
-rw-r--r--tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts6
-rw-r--r--tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts.out5
-rw-r--r--tests/specs/run/dynamic_import_permissions_blob_remote/__test__.jsonc5
-rw-r--r--tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts3
-rw-r--r--tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts.out5
-rw-r--r--tests/specs/run/dynamic_import_permissions_data_local/__test__.jsonc5
-rw-r--r--tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts5
-rw-r--r--tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts.out5
-rw-r--r--tests/specs/run/dynamic_import_permissions_data_remote/__test__.jsonc5
-rw-r--r--tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts3
-rw-r--r--tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts.out5
-rw-r--r--tests/specs/run/dynamic_import_permissions_remote_remote/__test__.jsonc5
-rw-r--r--tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts3
-rw-r--r--tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts.out5
-rw-r--r--tests/specs/run/dynamic_import_permissions_remote_remote/static_remote.ts2
-rw-r--r--tests/specs/run/dynamic_import_static_analysis_no_permissions/__test__.jsonc4
-rw-r--r--tests/specs/run/dynamic_import_static_analysis_no_permissions/empty_1.ts (renamed from tests/testdata/run/empty.ts)0
-rw-r--r--tests/specs/run/dynamic_import_static_analysis_no_permissions/empty_2.ts (renamed from tests/testdata/run/wasm_shared.out)0
-rw-r--r--tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts13
-rw-r--r--tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts.out2
-rw-r--r--tests/specs/run/dynamic_import_syntax_error/__test__.jsonc5
-rw-r--r--tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error.js (renamed from tests/testdata/run/dynamic_import_syntax_error.js)0
-rw-r--r--tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error.js.out (renamed from tests/testdata/run/dynamic_import_syntax_error.js.out)0
-rw-r--r--tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error_import.js5
-rw-r--r--tests/specs/run/empty_typescript/__test__.jsonc4
-rw-r--r--tests/specs/run/empty_typescript/empty.ts (renamed from tests/testdata/run/worker_close_race.js.out)0
-rw-r--r--tests/specs/run/error_001/__test__.jsonc5
-rw-r--r--tests/specs/run/error_001/error_001.ts9
-rw-r--r--tests/specs/run/error_001/error_001.ts.out (renamed from tests/testdata/run/error_001.ts.out)0
-rw-r--r--tests/specs/run/error_002/__test__.jsonc5
-rw-r--r--tests/specs/run/error_002/error_002.ts7
-rw-r--r--tests/specs/run/error_002/error_002.ts.out6
-rw-r--r--tests/specs/run/error_002/mod1.ts17
-rw-r--r--tests/specs/run/error_002/print_hello.ts3
-rw-r--r--tests/specs/run/error_002/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/error_003_typescript/__test__.jsonc5
-rw-r--r--tests/specs/run/error_003_typescript/error_003_typescript.ts (renamed from tests/testdata/run/error_003_typescript.ts)0
-rw-r--r--tests/specs/run/error_003_typescript/error_003_typescript.ts.out (renamed from tests/testdata/run/error_003_typescript.ts.out)0
-rw-r--r--tests/specs/run/error_003_typescript2/__test__.jsonc5
-rw-r--r--tests/specs/run/error_003_typescript2/error_003_typescript.ts20
-rw-r--r--tests/specs/run/error_003_typescript2/error_003_typescript.ts.out7
-rw-r--r--tests/specs/run/error_004_missing_module/__test__.jsonc5
-rw-r--r--tests/specs/run/error_004_missing_module/error_004_missing_module.ts (renamed from tests/testdata/run/error_004_missing_module.ts)0
-rw-r--r--tests/specs/run/error_004_missing_module/error_004_missing_module.ts.out (renamed from tests/testdata/run/error_004_missing_module.ts.out)0
-rw-r--r--tests/specs/run/error_005_missing_dynamic_import/__test__.jsonc5
-rw-r--r--tests/specs/run/error_005_missing_dynamic_import/error_005_missing_dynamic_import.ts (renamed from tests/testdata/run/error_005_missing_dynamic_import.ts)0
-rw-r--r--tests/specs/run/error_005_missing_dynamic_import/error_005_missing_dynamic_import.ts.out (renamed from tests/testdata/run/error_005_missing_dynamic_import.ts.out)0
-rw-r--r--tests/specs/run/error_006_import_ext_failure/__test__.jsonc5
-rw-r--r--tests/specs/run/error_006_import_ext_failure/error_006_import_ext_failure.ts (renamed from tests/testdata/run/error_006_import_ext_failure.ts)0
-rw-r--r--tests/specs/run/error_006_import_ext_failure/error_006_import_ext_failure.ts.out (renamed from tests/testdata/run/error_006_import_ext_failure.ts.out)0
-rw-r--r--tests/specs/run/error_007_any/__test__.jsonc5
-rw-r--r--tests/specs/run/error_007_any/error_007_any.ts (renamed from tests/testdata/run/error_007_any.ts)0
-rw-r--r--tests/specs/run/error_007_any/error_007_any.ts.out (renamed from tests/testdata/run/error_007_any.ts.out)0
-rw-r--r--tests/specs/run/error_008_checkjs/__test__.jsonc5
-rw-r--r--tests/specs/run/error_008_checkjs/error_008_checkjs.js (renamed from tests/testdata/run/error_008_checkjs.js)0
-rw-r--r--tests/specs/run/error_008_checkjs/error_008_checkjs.js.out (renamed from tests/testdata/run/error_008_checkjs.js.out)0
-rw-r--r--tests/specs/run/error_009_extensions_error/__test__.jsonc5
-rw-r--r--tests/specs/run/error_009_extensions_error/error_009_extensions_error.js (renamed from tests/testdata/run/error_009_extensions_error.js)0
-rw-r--r--tests/specs/run/error_009_extensions_error/error_009_extensions_error.js.out (renamed from tests/testdata/run/error_009_extensions_error.js.out)0
-rw-r--r--tests/specs/run/error_011_bad_module_specifier/__test__.jsonc5
-rw-r--r--tests/specs/run/error_011_bad_module_specifier/error_011_bad_module_specifier.ts (renamed from tests/testdata/run/error_011_bad_module_specifier.ts)0
-rw-r--r--tests/specs/run/error_011_bad_module_specifier/error_011_bad_module_specifier.ts.out (renamed from tests/testdata/run/error_011_bad_module_specifier.ts.out)0
-rw-r--r--tests/specs/run/error_012_bad_dynamic_import_specifier/__test__.jsonc5
-rw-r--r--tests/specs/run/error_012_bad_dynamic_import_specifier/error_012_bad_dynamic_import_specifier.ts (renamed from tests/testdata/run/error_012_bad_dynamic_import_specifier.ts)0
-rw-r--r--tests/specs/run/error_012_bad_dynamic_import_specifier/error_012_bad_dynamic_import_specifier.ts.out (renamed from tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out)0
-rw-r--r--tests/specs/run/error_014_catch_dynamic_import_error/__test__.jsonc4
-rw-r--r--tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js31
-rw-r--r--tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js.out19
-rw-r--r--tests/specs/run/error_014_catch_dynamic_import_error/indirect_import_error.js1
-rw-r--r--tests/specs/run/error_014_catch_dynamic_import_error/indirect_throws.js1
-rw-r--r--tests/specs/run/error_014_catch_dynamic_import_error/throws.js6
-rw-r--r--tests/specs/run/error_015_dynamic_import_permissions/__test__.jsonc5
-rw-r--r--tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.js3
-rw-r--r--tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.out4
-rw-r--r--tests/specs/run/error_015_dynamic_import_permissions/mod4.js1
-rw-r--r--tests/specs/run/error_017_hide_long_source_ts/__test__.jsonc5
-rw-r--r--tests/specs/run/error_017_hide_long_source_ts/error_017_hide_long_source_ts.ts (renamed from tests/testdata/run/error_017_hide_long_source_ts.ts)0
-rw-r--r--tests/specs/run/error_017_hide_long_source_ts/error_017_hide_long_source_ts.ts.out (renamed from tests/testdata/run/error_017_hide_long_source_ts.ts.out)0
-rw-r--r--tests/specs/run/error_018_hide_long_source_js/__test__.jsonc5
-rw-r--r--tests/specs/run/error_018_hide_long_source_js/error_018_hide_long_source_js.js (renamed from tests/testdata/run/error_018_hide_long_source_js.js)0
-rw-r--r--tests/specs/run/error_018_hide_long_source_js/error_018_hide_long_source_js.js.out (renamed from tests/testdata/run/error_018_hide_long_source_js.js.out)0
-rw-r--r--tests/specs/run/error_019_stack_function/__test__.jsonc5
-rw-r--r--tests/specs/run/error_019_stack_function/error_019_stack_function.ts (renamed from tests/testdata/run/error_019_stack_function.ts)0
-rw-r--r--tests/specs/run/error_019_stack_function/error_019_stack_function.ts.out (renamed from tests/testdata/run/error_019_stack_function.ts.out)0
-rw-r--r--tests/specs/run/error_020_stack_constructor/__test__.jsonc5
-rw-r--r--tests/specs/run/error_020_stack_constructor/error_020_stack_constructor.ts (renamed from tests/testdata/run/error_020_stack_constructor.ts)0
-rw-r--r--tests/specs/run/error_020_stack_constructor/error_020_stack_constructor.ts.out (renamed from tests/testdata/run/error_020_stack_constructor.ts.out)0
-rw-r--r--tests/specs/run/error_021_stack_method/__test__.jsonc5
-rw-r--r--tests/specs/run/error_021_stack_method/error_021_stack_method.ts (renamed from tests/testdata/run/error_021_stack_method.ts)0
-rw-r--r--tests/specs/run/error_021_stack_method/error_021_stack_method.ts.out (renamed from tests/testdata/run/error_021_stack_method.ts.out)0
-rw-r--r--tests/specs/run/error_022_stack_custom_error/__test__.jsonc5
-rw-r--r--tests/specs/run/error_022_stack_custom_error/error_022_stack_custom_error.ts (renamed from tests/testdata/run/error_022_stack_custom_error.ts)0
-rw-r--r--tests/specs/run/error_022_stack_custom_error/error_022_stack_custom_error.ts.out (renamed from tests/testdata/run/error_022_stack_custom_error.ts.out)0
-rw-r--r--tests/specs/run/error_023_stack_async/__test__.jsonc5
-rw-r--r--tests/specs/run/error_023_stack_async/error_023_stack_async.ts (renamed from tests/testdata/run/error_023_stack_async.ts)0
-rw-r--r--tests/specs/run/error_023_stack_async/error_023_stack_async.ts.out (renamed from tests/testdata/run/error_023_stack_async.ts.out)0
-rw-r--r--tests/specs/run/error_024_stack_promise_all/__test__.jsonc5
-rw-r--r--tests/specs/run/error_024_stack_promise_all/error_024_stack_promise_all.ts (renamed from tests/testdata/run/error_024_stack_promise_all.ts)0
-rw-r--r--tests/specs/run/error_024_stack_promise_all/error_024_stack_promise_all.ts.out (renamed from tests/testdata/run/error_024_stack_promise_all.ts.out)0
-rw-r--r--tests/specs/run/error_025_tab_indent/__test__.jsonc5
-rw-r--r--tests/specs/run/error_025_tab_indent/error_025_tab_indent (renamed from tests/testdata/run/error_025_tab_indent)0
-rw-r--r--tests/specs/run/error_025_tab_indent/error_025_tab_indent.out (renamed from tests/testdata/run/error_025_tab_indent.out)0
-rw-r--r--tests/specs/run/error_cause/__test__.jsonc5
-rw-r--r--tests/specs/run/error_cause/error_cause.ts (renamed from tests/testdata/run/error_cause.ts)0
-rw-r--r--tests/specs/run/error_cause/error_cause.ts.out (renamed from tests/testdata/run/error_cause.ts.out)0
-rw-r--r--tests/specs/run/error_cause_recursive/__test__.jsonc5
-rw-r--r--tests/specs/run/error_cause_recursive/error_cause_recursive.ts (renamed from tests/testdata/run/error_cause_recursive.ts)0
-rw-r--r--tests/specs/run/error_cause_recursive/error_cause_recursive.ts.out (renamed from tests/testdata/run/error_cause_recursive.ts.out)0
-rw-r--r--tests/specs/run/error_cause_recursive_aggregate/__test__.jsonc5
-rw-r--r--tests/specs/run/error_cause_recursive_aggregate/error_cause_recursive_aggregate.ts (renamed from tests/testdata/error_cause_recursive_aggregate.ts)0
-rw-r--r--tests/specs/run/error_cause_recursive_aggregate/error_cause_recursive_aggregate.ts.out (renamed from tests/testdata/error_cause_recursive_aggregate.ts.out)0
-rw-r--r--tests/specs/run/error_cause_recursive_tail/__test__.jsonc5
-rw-r--r--tests/specs/run/error_cause_recursive_tail/error_cause_recursive_tail.ts (renamed from tests/testdata/error_cause_recursive_tail.ts)0
-rw-r--r--tests/specs/run/error_cause_recursive_tail/error_cause_recursive_tail.ts.out (renamed from tests/testdata/error_cause_recursive_tail.ts.out)0
-rw-r--r--tests/specs/run/error_for_await/__test__.jsonc5
-rw-r--r--tests/specs/run/error_for_await/error_for_await.ts (renamed from tests/testdata/run/error_for_await.ts)0
-rw-r--r--tests/specs/run/error_for_await/error_for_await.ts.out (renamed from tests/testdata/run/error_for_await.ts.out)0
-rw-r--r--tests/specs/run/error_import_map_unable_to_load/__test__.jsonc5
-rw-r--r--tests/specs/run/error_import_map_unable_to_load/error_import_map_unable_to_load.out (renamed from tests/testdata/run/error_import_map_unable_to_load.out)0
-rw-r--r--tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts1
-rw-r--r--tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts.out1
-rw-r--r--tests/specs/run/error_missing_module_named_import/__test__.jsonc5
-rw-r--r--tests/specs/run/error_missing_module_named_import/error_missing_module_named_import.ts (renamed from tests/testdata/run/error_missing_module_named_import.ts)0
-rw-r--r--tests/specs/run/error_missing_module_named_import/error_missing_module_named_import.ts.out (renamed from tests/testdata/run/error_missing_module_named_import.ts.out)0
-rw-r--r--tests/specs/run/error_name_non_string/__test__.jsonc5
-rw-r--r--tests/specs/run/error_name_non_string/error_name_non_string.js (renamed from tests/testdata/run/error_name_non_string.js)0
-rw-r--r--tests/specs/run/error_name_non_string/error_name_non_string.js.out (renamed from tests/testdata/run/error_name_non_string.js.out)0
-rw-r--r--tests/specs/run/error_no_check/__test__.jsonc5
-rw-r--r--tests/specs/run/error_no_check/error_no_check.ts1
-rw-r--r--tests/specs/run/error_no_check/error_no_check.ts.out2
-rw-r--r--tests/specs/run/error_no_check/type_and_code.ts7
-rw-r--r--tests/specs/run/error_syntax/__test__.jsonc5
-rw-r--r--tests/specs/run/error_syntax/error_syntax.js (renamed from tests/testdata/run/error_syntax.js)0
-rw-r--r--tests/specs/run/error_syntax/error_syntax.js.out (renamed from tests/testdata/run/error_syntax.js.out)0
-rw-r--r--tests/specs/run/error_syntax_empty_trailing_line/__test__.jsonc5
-rw-r--r--tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs (renamed from tests/testdata/run/error_syntax_empty_trailing_line.mjs)0
-rw-r--r--tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs.out (renamed from tests/testdata/run/error_syntax_empty_trailing_line.mjs.out)0
-rw-r--r--tests/specs/run/error_type_definitions/__test__.jsonc5
-rw-r--r--tests/specs/run/error_type_definitions/error_type_definitions.ts5
-rw-r--r--tests/specs/run/error_type_definitions/error_type_definitions.ts.out (renamed from tests/testdata/run/error_type_definitions.ts.out)0
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/bar.d.ts7
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/bar.js5
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/fizz.d.ts2
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/fizz.js1
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/foo.d.ts2
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/foo.js1
-rw-r--r--tests/specs/run/error_type_definitions/type_definitions/qat.ts1
-rw-r--r--tests/specs/run/error_with_errors_prop/__test__.jsonc5
-rw-r--r--tests/specs/run/error_with_errors_prop/error_with_errors_prop.js (renamed from tests/testdata/run/error_with_errors_prop.js)0
-rw-r--r--tests/specs/run/error_with_errors_prop/error_with_errors_prop.js.out (renamed from tests/testdata/run/error_with_errors_prop.js.out)0
-rw-r--r--tests/specs/run/es_private_fields/__test__.jsonc4
-rw-r--r--tests/specs/run/es_private_fields/es_private_fields.js (renamed from tests/testdata/run/es_private_fields.js)0
-rw-r--r--tests/specs/run/es_private_fields/es_private_fields.js.out (renamed from tests/testdata/run/es_private_fields.js.out)0
-rw-r--r--tests/specs/run/eval_context_throw_dom_exception/__test__.jsonc4
-rw-r--r--tests/specs/run/eval_context_throw_dom_exception/eval_context_throw_dom_exception.js (renamed from tests/testdata/run/eval_context_throw_dom_exception.js)0
-rw-r--r--tests/specs/run/eval_context_throw_dom_exception/eval_context_throw_dom_exception.js.out (renamed from tests/testdata/run/eval_context_throw_dom_exception.js.out)0
-rw-r--r--tests/specs/run/event_listener_error/__test__.jsonc5
-rw-r--r--tests/specs/run/event_listener_error/event_listener_error.ts (renamed from tests/testdata/run/event_listener_error.ts)0
-rw-r--r--tests/specs/run/event_listener_error/event_listener_error.ts.out (renamed from tests/testdata/run/event_listener_error.ts.out)0
-rw-r--r--tests/specs/run/event_listener_error_handled/__test__.jsonc4
-rw-r--r--tests/specs/run/event_listener_error_handled/event_listener_error_handled.ts (renamed from tests/testdata/run/event_listener_error_handled.ts)0
-rw-r--r--tests/specs/run/event_listener_error_handled/event_listener_error_handled.ts.out (renamed from tests/testdata/run/event_listener_error_handled.ts.out)0
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit/__test__.jsonc5
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit/event_listener_error_immediate_exit.ts (renamed from tests/testdata/run/event_listener_error_immediate_exit.ts)0
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit/event_listener_error_immediate_exit.ts.out (renamed from tests/testdata/run/event_listener_error_immediate_exit.ts.out)0
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit_worker/__test__.jsonc5
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit.ts12
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit_worker.ts (renamed from tests/testdata/run/event_listener_error_immediate_exit_worker.ts)0
-rw-r--r--tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit_worker.ts.out (renamed from tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out)0
-rw-r--r--tests/specs/run/exit_error42/__test__.jsonc5
-rw-r--r--tests/specs/run/exit_error42/exit_error42.ts (renamed from tests/testdata/run/exit_error42.ts)0
-rw-r--r--tests/specs/run/exit_error42/exit_error42.ts.out (renamed from tests/testdata/run/exit_error42.ts.out)0
-rw-r--r--tests/specs/run/explicit_resource_management/__test__.jsonc4
-rw-r--r--tests/specs/run/explicit_resource_management/explicit_resource_management/main.out (renamed from tests/testdata/run/explicit_resource_management/main.out)0
-rw-r--r--tests/specs/run/explicit_resource_management/explicit_resource_management/main.ts (renamed from tests/testdata/run/explicit_resource_management/main.ts)0
-rw-r--r--tests/specs/run/ext_flag_takes_precedence_over_extension/__test__.jsonc5
-rw-r--r--tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.js5
-rw-r--r--tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.out2
-rw-r--r--tests/specs/run/fetch_async_error_stack/__test__.jsonc5
-rw-r--r--tests/specs/run/fetch_async_error_stack/fetch_async_error_stack.ts (renamed from tests/testdata/run/fetch_async_error_stack.ts)0
-rw-r--r--tests/specs/run/fetch_async_error_stack/fetch_async_error_stack.ts.out (renamed from tests/testdata/run/fetch_async_error_stack.ts.out)0
-rw-r--r--tests/specs/run/fetch_response_finalization/__test__.jsonc5
-rw-r--r--tests/specs/run/fetch_response_finalization/fetch_response_finalization.js (renamed from tests/testdata/run/fetch_response_finalization.js)0
-rw-r--r--tests/specs/run/fetch_response_finalization/fetch_response_finalization.js.out (renamed from tests/testdata/run/fetch_response_finalization.js.out)0
-rw-r--r--tests/specs/run/finalization_registry/__test__.jsonc4
-rw-r--r--tests/specs/run/finalization_registry/finalization_registry.js (renamed from tests/testdata/run/finalization_registry.js)0
-rw-r--r--tests/specs/run/finalization_registry/finalization_registry.js.out (renamed from tests/testdata/run/finalization_registry.js.out)0
-rw-r--r--tests/specs/run/fix_dynamic_import_errors/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_dynamic_import_errors/b.js2
-rw-r--r--tests/specs/run/fix_dynamic_import_errors/c.js2
-rw-r--r--tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js7
-rw-r--r--tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js.out (renamed from tests/testdata/run/fix_dynamic_import_errors.js.out)0
-rw-r--r--tests/specs/run/fix_emittable_skipped/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_emittable_skipped/emittable.d.ts1
-rw-r--r--tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.js7
-rw-r--r--tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.ts.out (renamed from tests/testdata/run/fix_emittable_skipped.ts.out)0
-rw-r--r--tests/specs/run/fix_emittable_skipped/polyfill.ts8
-rw-r--r--tests/specs/run/fix_js_import_js/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_js_import_js/fix_js_import_js.ts3
-rw-r--r--tests/specs/run/fix_js_import_js/fix_js_import_js.ts.out (renamed from tests/testdata/run/fix_js_import_js.ts.out)0
-rw-r--r--tests/specs/run/fix_js_import_js/mod4.js1
-rw-r--r--tests/specs/run/fix_js_import_js/mod6.js1
-rw-r--r--tests/specs/run/fix_js_imports/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_js_imports/amd_like.js3
-rw-r--r--tests/specs/run/fix_js_imports/fix_js_imports.ts3
-rw-r--r--tests/specs/run/fix_js_imports/fix_js_imports.ts.out (renamed from tests/testdata/run/fix_js_imports.ts.out)0
-rw-r--r--tests/specs/run/fix_tsc_file_exists/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_tsc_file_exists/fix_tsc_file_exists.out (renamed from tests/testdata/run/fix_tsc_file_exists.out)0
-rw-r--r--tests/specs/run/fix_tsc_file_exists/tsc/a.js2
-rw-r--r--tests/specs/run/fix_tsc_file_exists/tsc/d.ts3
-rw-r--r--tests/specs/run/fix_tsc_file_exists/tsc/node_modules/b.js2
-rw-r--r--tests/specs/run/fix_tsc_file_exists/tsc/node_modules/c.js1
-rw-r--r--tests/specs/run/fix_tsc_file_exists/tsc/test.js4
-rw-r--r--tests/specs/run/fix_worker_dispatchevent/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts (renamed from tests/testdata/run/fix_worker_dispatchevent.ts)0
-rw-r--r--tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out (renamed from tests/testdata/run/fix_worker_dispatchevent.ts.out)0
-rw-r--r--tests/specs/run/followup_dyn_import_resolved/__test__.jsonc4
-rw-r--r--tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/main.ts (renamed from tests/testdata/run/followup_dyn_import_resolves/main.ts)0
-rw-r--r--tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/main.ts.out (renamed from tests/testdata/run/followup_dyn_import_resolves/main.ts.out)0
-rw-r--r--tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub1.ts2
-rw-r--r--tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub2.ts1
-rw-r--r--tests/specs/run/heapstats/__test__.jsonc4
-rw-r--r--tests/specs/run/heapstats/heapstats.js (renamed from tests/testdata/run/heapstats.js)0
-rw-r--r--tests/specs/run/heapstats/heapstats.js.out (renamed from tests/testdata/run/heapstats.js.out)0
-rw-r--r--tests/specs/run/https_import/RootCA.pem19
-rw-r--r--tests/specs/run/https_import/__test__.jsonc4
-rw-r--r--tests/specs/run/https_import/https_import.ts3
-rw-r--r--tests/specs/run/https_import/https_import.ts.out (renamed from tests/testdata/run/import_data_url_imports.ts.out)0
-rw-r--r--tests/specs/run/https_import/print_hello.ts3
-rw-r--r--tests/specs/run/if_main/__test__.jsonc4
-rw-r--r--tests/specs/run/if_main/if_main.ts (renamed from tests/testdata/run/if_main.ts)0
-rw-r--r--tests/specs/run/if_main/if_main.ts.out1
-rw-r--r--tests/specs/run/import_attributes_dynamic_error/__test__.jsonc5
-rw-r--r--tests/specs/run/import_attributes_dynamic_error/data.json6
-rw-r--r--tests/specs/run/import_attributes_dynamic_error/dynamic_error.out4
-rw-r--r--tests/specs/run/import_attributes_dynamic_error/dynamic_error.ts3
-rw-r--r--tests/specs/run/import_attributes_dynamic_import/__test__.jsonc4
-rw-r--r--tests/specs/run/import_attributes_dynamic_import/data.json6
-rw-r--r--tests/specs/run/import_attributes_dynamic_import/dynamic_import.out2
-rw-r--r--tests/specs/run/import_attributes_dynamic_import/dynamic_import.ts3
-rw-r--r--tests/specs/run/import_attributes_static_error/__test__.jsonc5
-rw-r--r--tests/specs/run/import_attributes_static_error/data.json6
-rw-r--r--tests/specs/run/import_attributes_static_error/static_error.out3
-rw-r--r--tests/specs/run/import_attributes_static_error/static_error.ts3
-rw-r--r--tests/specs/run/import_attributes_static_export/__test__.jsonc4
-rw-r--r--tests/specs/run/import_attributes_static_export/data.json6
-rw-r--r--tests/specs/run/import_attributes_static_export/static_export.out1
-rw-r--r--tests/specs/run/import_attributes_static_export/static_export.ts3
-rw-r--r--tests/specs/run/import_attributes_static_export/static_reexport.ts1
-rw-r--r--tests/specs/run/import_attributes_static_import/__test__.jsonc4
-rw-r--r--tests/specs/run/import_attributes_static_import/data.json6
-rw-r--r--tests/specs/run/import_attributes_static_import/static_import.out2
-rw-r--r--tests/specs/run/import_attributes_static_import/static_import.ts5
-rw-r--r--tests/specs/run/import_attributes_type_check/__test__.jsonc5
-rw-r--r--tests/specs/run/import_attributes_type_check/data.json6
-rw-r--r--tests/specs/run/import_attributes_type_check/type_check.out12
-rw-r--r--tests/specs/run/import_attributes_type_check/type_check.ts6
-rw-r--r--tests/specs/run/import_blob_url/__test__.jsonc4
-rw-r--r--tests/specs/run/import_blob_url/import_blob_url.ts (renamed from tests/testdata/run/import_blob_url.ts)0
-rw-r--r--tests/specs/run/import_blob_url/import_blob_url.ts.out (renamed from tests/testdata/run/import_blob_url.ts.out)0
-rw-r--r--tests/specs/run/import_blob_url_error_stack/__test__.jsonc5
-rw-r--r--tests/specs/run/import_blob_url_error_stack/import_blob_url_error_stack.ts (renamed from tests/testdata/run/import_blob_url_error_stack.ts)0
-rw-r--r--tests/specs/run/import_blob_url_error_stack/import_blob_url_error_stack.ts.out (renamed from tests/testdata/run/import_blob_url_error_stack.ts.out)0
-rw-r--r--tests/specs/run/import_blob_url_import_relative/__test__.jsonc5
-rw-r--r--tests/specs/run/import_blob_url_import_relative/import_blob_url_import_relative.ts (renamed from tests/testdata/run/import_blob_url_import_relative.ts)0
-rw-r--r--tests/specs/run/import_blob_url_import_relative/import_blob_url_import_relative.ts.out (renamed from tests/testdata/run/import_blob_url_import_relative.ts.out)0
-rw-r--r--tests/specs/run/import_blob_url_imports/__test__.jsonc4
-rw-r--r--tests/specs/run/import_blob_url_imports/import_blob_url_imports.ts (renamed from tests/testdata/run/import_blob_url_imports.ts)0
-rw-r--r--tests/specs/run/import_blob_url_imports/import_blob_url_imports.ts.out (renamed from tests/testdata/run/import_extensionless.ts.out)0
-rw-r--r--tests/specs/run/import_blob_url_jsx/__test__.jsonc4
-rw-r--r--tests/specs/run/import_blob_url_jsx/import_blob_url_jsx.ts (renamed from tests/testdata/run/import_blob_url_jsx.ts)0
-rw-r--r--tests/specs/run/import_blob_url_jsx/import_blob_url_jsx.ts.out (renamed from tests/testdata/run/import_blob_url_jsx.ts.out)0
-rw-r--r--tests/specs/run/import_compression/__test__.jsonc4
-rw-r--r--tests/specs/run/import_compression/import_compression/brotli2
-rw-r--r--tests/specs/run/import_compression/import_compression/gzipedbin0 -> 39 bytes
-rw-r--r--tests/specs/run/import_compression/import_compression/main.out (renamed from tests/testdata/run/import_compression/main.out)0
-rw-r--r--tests/specs/run/import_compression/import_compression/main.ts (renamed from tests/testdata/run/import_compression/main.ts)0
-rw-r--r--tests/specs/run/import_data_url/__test__.jsonc4
-rw-r--r--tests/specs/run/import_data_url/import_data_url.ts (renamed from tests/testdata/run/import_data_url.ts)0
-rw-r--r--tests/specs/run/import_data_url/import_data_url.ts.out (renamed from tests/testdata/run/import_data_url.ts.out)0
-rw-r--r--tests/specs/run/import_data_url_error_stack/__test__.jsonc5
-rw-r--r--tests/specs/run/import_data_url_error_stack/import_data_url_error_stack.ts (renamed from tests/testdata/run/import_data_url_error_stack.ts)0
-rw-r--r--tests/specs/run/import_data_url_error_stack/import_data_url_error_stack.ts.out (renamed from tests/testdata/run/import_data_url_error_stack.ts.out)0
-rw-r--r--tests/specs/run/import_data_url_import_relative/__test__.jsonc5
-rw-r--r--tests/specs/run/import_data_url_import_relative/import_data_url_import_relative.ts (renamed from tests/testdata/run/import_data_url_import_relative.ts)0
-rw-r--r--tests/specs/run/import_data_url_import_relative/import_data_url_import_relative.ts.out (renamed from tests/testdata/run/import_data_url_import_relative.ts.out)0
-rw-r--r--tests/specs/run/import_data_url_imports/__test__.jsonc4
-rw-r--r--tests/specs/run/import_data_url_imports/import_data_url_imports.ts (renamed from tests/testdata/run/import_data_url_imports.ts)0
-rw-r--r--tests/specs/run/import_data_url_imports/import_data_url_imports.ts.out (renamed from tests/testdata/run/issue13562.ts.out)0
-rw-r--r--tests/specs/run/import_data_url_jsx/__test__.jsonc4
-rw-r--r--tests/specs/run/import_data_url_jsx/import_data_url_jsx.ts (renamed from tests/testdata/run/import_data_url_jsx.ts)0
-rw-r--r--tests/specs/run/import_data_url_jsx/import_data_url_jsx.ts.out (renamed from tests/testdata/run/import_data_url_jsx.ts.out)0
-rw-r--r--tests/specs/run/import_dynamic_data_url/__test__.jsonc4
-rw-r--r--tests/specs/run/import_dynamic_data_url/import_dynamic_data_url.ts (renamed from tests/testdata/run/import_dynamic_data_url.ts)0
-rw-r--r--tests/specs/run/import_dynamic_data_url/import_dynamic_data_url.ts.out (renamed from tests/testdata/run/import_dynamic_data_url.ts.out)0
-rw-r--r--tests/specs/run/import_extensionless/__test__.jsonc4
-rw-r--r--tests/specs/run/import_extensionless/import_extensionless.ts (renamed from tests/testdata/run/import_extensionless.ts)0
-rw-r--r--tests/specs/run/import_extensionless/import_extensionless.ts.out1
-rw-r--r--tests/specs/run/import_file_with_colon/__test__.jsonc4
-rw-r--r--tests/specs/run/import_file_with_colon/import_file_with_colon.ts (renamed from tests/testdata/run/import_file_with_colon.ts)0
-rw-r--r--tests/specs/run/import_file_with_colon/import_file_with_colon.ts.out (renamed from tests/testdata/run/import_file_with_colon.ts.out)0
-rw-r--r--tests/specs/run/import_type/__test__.jsonc4
-rw-r--r--tests/specs/run/import_type/export_types.ts11
-rw-r--r--tests/specs/run/import_type/import_type.ts5
-rw-r--r--tests/specs/run/import_type/import_type.ts.out (renamed from tests/testdata/run/import_type.ts.out)0
-rw-r--r--tests/specs/run/import_type_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/import_type_no_check/export_types.ts11
-rw-r--r--tests/specs/run/import_type_no_check/import_type.ts5
-rw-r--r--tests/specs/run/import_type_no_check/import_type.ts.out1
-rw-r--r--tests/specs/run/inline_js_source_map_2/__test__.jsonc5
-rw-r--r--tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js4
-rw-r--r--tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js.out (renamed from tests/testdata/run/inline_js_source_map_2.js.out)0
-rw-r--r--tests/specs/run/inline_js_source_map_2_with_inline_contents/__test__.jsonc5
-rw-r--r--tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js4
-rw-r--r--tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js.out (renamed from tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out)0
-rw-r--r--tests/specs/run/inline_js_source_map_with_contents_from_graph/__test__.jsonc5
-rw-r--r--tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js4
-rw-r--r--tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js.out (renamed from tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out)0
-rw-r--r--tests/specs/run/issue_13562/__test__.jsonc4
-rw-r--r--tests/specs/run/issue_13562/issue13562.ts3
-rw-r--r--tests/specs/run/issue_13562/issue13562.ts.out1
-rw-r--r--tests/specs/run/issue_13562/mod1.ts17
-rw-r--r--tests/specs/run/issue_13562/print_hello.ts3
-rw-r--r--tests/specs/run/issue_13562/subdir2/dynamic_import.ts4
-rw-r--r--tests/specs/run/issue_13562/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/js_import_detect/__test__.jsonc5
-rw-r--r--tests/specs/run/js_import_detect/js_import_detect.ts (renamed from tests/testdata/run/js_import_detect.ts)0
-rw-r--r--tests/specs/run/js_import_detect/js_import_detect.ts.out (renamed from tests/testdata/run/js_import_detect.ts.out)0
-rw-r--r--tests/specs/run/js_root_with_ts_check/__test__.jsonc5
-rw-r--r--tests/specs/run/js_root_with_ts_check/js_root_with_ts_check.js (renamed from tests/testdata/run/js_root_with_ts_check.js)0
-rw-r--r--tests/specs/run/js_root_with_ts_check/js_root_with_ts_check.js.out (renamed from tests/testdata/run/js_root_with_ts_check.js.out)0
-rw-r--r--tests/specs/run/js_without_extension/__test__.jsonc5
-rw-r--r--tests/specs/run/js_without_extension/js_without_extension3
-rw-r--r--tests/specs/run/js_without_extension/js_without_extension.out1
-rw-r--r--tests/specs/run/jsx_import_from_ts/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.App.jsx11
-rw-r--r--tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.ts (renamed from tests/testdata/run/jsx_import_from_ts.ts)0
-rw-r--r--tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.ts.out (renamed from tests/testdata/run/jsx_import_from_ts.ts.out)0
-rw-r--r--tests/specs/run/jsx_import_source_error/__test__.jsonc5
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx_import_source_error.out (renamed from tests/testdata/run/jsx_import_source_error.out)0
-rw-r--r--tests/specs/run/jsx_import_source_error/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_import_map/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx_import_source_import_map.out2
-rw-r--r--tests/specs/run/jsx_import_source_import_map/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_import_map_dev.out2
-rw-r--r--tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_import_map.out2
-rw-r--r--tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx_import_source.out (renamed from tests/testdata/run/jsx_import_source.out)0
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_dev.out (renamed from tests/testdata/run/jsx_import_source_dev.out)0
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source.out2
-rw-r--r--tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source_no_pragma.tsx7
-rw-r--r--tests/specs/run/jsx_import_source_pragma/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx_import_source.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma/jsx_import_source_pragma.tsx (renamed from tests/testdata/run/jsx_import_source_pragma.tsx)0
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_import_map.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_pragma_import_map.tsx (renamed from tests/testdata/run/jsx_import_source_pragma_import_map.tsx)0
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_import_map_dev.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_pragma_import_map.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_import_map.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_pragma_import_map.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source_pragma.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source_pragma.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source_pragma.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/http_localhost_4545/jsx/#jsx-runtime_62ac8.js11
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/manifest.json9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source_pragma.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_dev.out2
-rw-r--r--tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_pragma.tsx9
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.out3
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.tsx (renamed from tests/testdata/run/jsx_precompile/no_pragma.tsx)0
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/skip.out (renamed from tests/testdata/run/jsx_precompile/skip.out)0
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/skip.tsx (renamed from tests/testdata/run/jsx_precompile/skip.tsx)0
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/__test__.jsonc4
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-error.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile-skip.jsonc7
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.json6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev-import-map.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev.jsonc6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno.lock6
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map-scoped.json8
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map.json7
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-dev-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-precompile/index.ts23
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-runtime/index.ts12
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.out3
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.tsx3
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.out3
-rw-r--r--tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.tsx9
-rw-r--r--tests/specs/run/lock_check_ok/003_relative_import.ts3
-rw-r--r--tests/specs/run/lock_check_ok/003_relative_import.ts.out1
-rw-r--r--tests/specs/run/lock_check_ok/__test__.jsonc4
-rw-r--r--tests/specs/run/lock_check_ok/lock_check_ok.json4
-rw-r--r--tests/specs/run/lock_check_ok/print_hello.ts3
-rw-r--r--tests/specs/run/lock_check_ok2/019_media_types.ts24
-rw-r--r--tests/specs/run/lock_check_ok2/019_media_types.ts.out1
-rw-r--r--tests/specs/run/lock_check_ok2/__test__.jsonc4
-rw-r--r--tests/specs/run/lock_check_ok2/lock_check_ok2.json (renamed from tests/testdata/run/lock_check_ok2.json)0
-rw-r--r--tests/specs/run/lock_v2_check_ok/003_relative_import.ts3
-rw-r--r--tests/specs/run/lock_v2_check_ok/003_relative_import.ts.out1
-rw-r--r--tests/specs/run/lock_v2_check_ok/__test__.jsonc4
-rw-r--r--tests/specs/run/lock_v2_check_ok/lock_v2_check_ok.json7
-rw-r--r--tests/specs/run/lock_v2_check_ok/print_hello.ts3
-rw-r--r--tests/specs/run/lock_v2_check_ok2/019_media_types.ts24
-rw-r--r--tests/specs/run/lock_v2_check_ok2/019_media_types.ts.out1
-rw-r--r--tests/specs/run/lock_v2_check_ok2/__test__.jsonc4
-rw-r--r--tests/specs/run/lock_v2_check_ok2/lock_v2_check_ok2.json (renamed from tests/testdata/run/lock_v2_check_ok2.json)0
-rw-r--r--tests/specs/run/long_data_url_formatting/__test__.jsonc5
-rw-r--r--tests/specs/run/long_data_url_formatting/long_data_url_formatting.ts (renamed from tests/testdata/run/long_data_url_formatting.ts)0
-rw-r--r--tests/specs/run/long_data_url_formatting/long_data_url_formatting.ts.out (renamed from tests/testdata/run/long_data_url_formatting.ts.out)0
-rw-r--r--tests/specs/run/main_module/__test__.jsonc4
-rw-r--r--tests/specs/run/main_module/main_module/main.out (renamed from tests/testdata/run/main_module/main.out)0
-rw-r--r--tests/specs/run/main_module/main_module/main.ts (renamed from tests/testdata/run/main_module/main.ts)0
-rw-r--r--tests/specs/run/main_module/main_module/other.ts (renamed from tests/testdata/run/main_module/other.ts)0
-rw-r--r--tests/specs/run/mts_dmts_mjs/__test__.jsonc4
-rw-r--r--tests/specs/run/mts_dmts_mjs/import.mts4
-rw-r--r--tests/specs/run/mts_dmts_mjs/mod.mjs1
-rw-r--r--tests/specs/run/mts_dmts_mjs/mts_dmts_mjs.out (renamed from tests/testdata/run/mts_dmts_mjs.out)0
-rw-r--r--tests/specs/run/mts_dmts_mjs/types.d.mts1
-rw-r--r--tests/specs/run/mts_dmts_mjs_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/mts_dmts_mjs_no_check/import.mts4
-rw-r--r--tests/specs/run/mts_dmts_mjs_no_check/mod.mjs1
-rw-r--r--tests/specs/run/mts_dmts_mjs_no_check/mts_dmts_mjs.out1
-rw-r--r--tests/specs/run/mts_dmts_mjs_no_check/types.d.mts1
-rw-r--r--tests/specs/run/nested_error/__test__.jsonc5
-rw-r--r--tests/specs/run/nested_error/nested_error/main.ts (renamed from tests/testdata/run/nested_error/main.ts)0
-rw-r--r--tests/specs/run/nested_error/nested_error/main.ts.out (renamed from tests/testdata/run/nested_error/main.ts.out)0
-rw-r--r--tests/specs/run/no_check/006_url_imports.ts3
-rw-r--r--tests/specs/run/no_check/006_url_imports.ts.out2
-rw-r--r--tests/specs/run/no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/no_check/mod2.ts1
-rw-r--r--tests/specs/run/no_check/print_hello.ts3
-rw-r--r--tests/specs/run/no_check_decorators/__test__.jsonc4
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/deno.json5
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.out3
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.ts21
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.out7
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.ts42
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/ts/main.out3
-rw-r--r--tests/specs/run/no_check_decorators/decorators/experimental/ts/main.ts14
-rw-r--r--tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.out3
-rw-r--r--tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.ts21
-rw-r--r--tests/specs/run/no_config_auto_discovery_for_local_script/__test__.jsonc5
-rw-r--r--tests/specs/run/no_config_auto_discovery_for_local_script/frontend_work.ts4
-rw-r--r--tests/specs/run/no_config_auto_discovery_for_local_script/no_auto_discovery.out4
-rw-r--r--tests/specs/run/no_lock_flag/__test__.jsonc5
-rw-r--r--tests/specs/run/no_lock_flag/no_lock_flag/deno.json (renamed from tests/testdata/run/no_lock_flag/deno.json)0
-rw-r--r--tests/specs/run/no_lock_flag/no_lock_flag/deno.lock (renamed from tests/testdata/run/no_lock_flag/deno.lock)0
-rw-r--r--tests/specs/run/no_lock_flag/no_lock_flag/main.out (renamed from tests/testdata/run/no_lock_flag/main.out)0
-rw-r--r--tests/specs/run/no_lock_flag/no_lock_flag/main.ts (renamed from tests/testdata/run/no_lock_flag/main.ts)0
-rw-r--r--tests/specs/run/no_prompt_flag/__test__.jsonc4
-rw-r--r--tests/specs/run/no_prompt_flag/no_prompt.ts10
-rw-r--r--tests/specs/run/node_env_var_allowlist/__test__.jsonc5
-rw-r--r--tests/specs/run/node_env_var_allowlist/node_env_var_allowlist.ts (renamed from tests/testdata/run/node_env_var_allowlist.ts)0
-rw-r--r--tests/specs/run/node_env_var_allowlist/node_env_var_allowlist.ts.out (renamed from tests/testdata/run/node_env_var_allowlist.ts.out)0
-rw-r--r--tests/specs/run/onload/__test__.jsonc4
-rw-r--r--tests/specs/run/onload/deno.json4
-rw-r--r--tests/specs/run/onload/onload/imported.ts (renamed from tests/testdata/run/onload/imported.ts)0
-rw-r--r--tests/specs/run/onload/onload/main.out (renamed from tests/testdata/run/onload/main.out)0
-rw-r--r--tests/specs/run/onload/onload/main.ts (renamed from tests/testdata/run/onload/main.ts)0
-rw-r--r--tests/specs/run/onload/onload/nest_imported.ts (renamed from tests/testdata/run/onload/nest_imported.ts)0
-rw-r--r--tests/specs/run/op_exit_op_set_exit_code_in_worker/__test__.jsonc5
-rw-r--r--tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_in_worker.ts (renamed from tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts)0
-rw-r--r--tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_worker.js4
-rw-r--r--tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/__test__.jsonc5
-rw-r--r--tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/deno.json5
-rw-r--r--tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.out5
-rw-r--r--tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.ts6
-rw-r--r--tests/specs/run/permission_args/001_hello.js1
-rw-r--r--tests/specs/run/permission_args/__test__.jsonc4
-rw-r--r--tests/specs/run/permission_args/permission_args.out (renamed from tests/testdata/run/permission_args.out)0
-rw-r--r--tests/specs/run/permission_args_quiet/001_hello.js1
-rw-r--r--tests/specs/run/permission_args_quiet/001_hello.js.out1
-rw-r--r--tests/specs/run/permission_args_quiet/__test__.jsonc4
-rw-r--r--tests/specs/run/private_field_presence/__test__.jsonc4
-rw-r--r--tests/specs/run/private_field_presence/private_field_presence.ts (renamed from tests/testdata/run/private_field_presence.ts)0
-rw-r--r--tests/specs/run/private_field_presence/private_field_presence.ts.out (renamed from tests/testdata/run/private_field_presence.ts.out)0
-rw-r--r--tests/specs/run/private_field_presence_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/private_field_presence_no_check/private_field_presence.ts20
-rw-r--r--tests/specs/run/private_field_presence_no_check/private_field_presence.ts.out2
-rw-r--r--tests/specs/run/proto_exploit/__test__.jsonc4
-rw-r--r--tests/specs/run/proto_exploit/proto_exploit.js (renamed from tests/testdata/run/proto_exploit.js)0
-rw-r--r--tests/specs/run/proto_exploit/proto_exploit.js.out (renamed from tests/testdata/run/proto_exploit.js.out)0
-rw-r--r--tests/specs/run/queue_microtask_error/__test__.jsonc5
-rw-r--r--tests/specs/run/queue_microtask_error/queue_microtask_error.ts (renamed from tests/testdata/run/queue_microtask_error.ts)0
-rw-r--r--tests/specs/run/queue_microtask_error/queue_microtask_error.ts.out (renamed from tests/testdata/run/queue_microtask_error.ts.out)0
-rw-r--r--tests/specs/run/queue_microtask_error_handled/__test__.jsonc4
-rw-r--r--tests/specs/run/queue_microtask_error_handled/queue_microtask_error_handled.ts (renamed from tests/testdata/run/queue_microtask_error_handled.ts)0
-rw-r--r--tests/specs/run/queue_microtask_error_handled/queue_microtask_error_handled.ts.out (renamed from tests/testdata/run/queue_microtask_error_handled.ts.out)0
-rw-r--r--tests/specs/run/reference_types/__test__.jsonc4
-rw-r--r--tests/specs/run/reference_types/reference_types.ts (renamed from tests/testdata/run/reference_types.ts)0
-rw-r--r--tests/specs/run/reference_types/reference_types.ts.out (renamed from tests/testdata/run/reference_types_remote.ts.out)0
-rw-r--r--tests/specs/run/reference_types_error/__test__.jsonc5
-rw-r--r--tests/specs/run/reference_types_error/checkjs.tsconfig.json5
-rw-r--r--tests/specs/run/reference_types_error/reference_types_error.js (renamed from tests/testdata/run/reference_types_error.js)0
-rw-r--r--tests/specs/run/reference_types_error/reference_types_error.js.out (renamed from tests/testdata/run/reference_types_error.js.out)0
-rw-r--r--tests/specs/run/reference_types_error_no_check/__test__.jsonc4
-rw-r--r--tests/specs/run/reference_types_error_no_check/reference_types_error.js2
-rw-r--r--tests/specs/run/reference_types_error_vendor_dir/__test__.jsonc5
-rw-r--r--tests/specs/run/reference_types_error_vendor_dir/checkjs.tsconfig.json5
-rw-r--r--tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js2
-rw-r--r--tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js.out2
-rw-r--r--tests/specs/run/references_types_remote/__test__.jsonc4
-rw-r--r--tests/specs/run/references_types_remote/reference_types_remote.ts (renamed from tests/testdata/run/reference_types_remote.ts)0
-rw-r--r--tests/specs/run/references_types_remote/reference_types_remote.ts.out1
-rw-r--r--tests/specs/run/rejection_handled/__test__.jsonc4
-rw-r--r--tests/specs/run/rejection_handled/rejection_handled.out (renamed from tests/testdata/run/rejection_handled.out)0
-rw-r--r--tests/specs/run/rejection_handled/rejection_handled.ts (renamed from tests/testdata/run/rejection_handled.ts)0
-rw-r--r--tests/specs/run/replace_self/__test__.jsonc4
-rw-r--r--tests/specs/run/replace_self/replace_self.js (renamed from tests/testdata/run/replace_self.js)0
-rw-r--r--tests/specs/run/replace_self/replace_self.js.out (renamed from tests/testdata/run/replace_self.js.out)0
-rw-r--r--tests/specs/run/report_error/__test__.jsonc5
-rw-r--r--tests/specs/run/report_error/report_error.ts (renamed from tests/testdata/run/report_error.ts)0
-rw-r--r--tests/specs/run/report_error/report_error.ts.out (renamed from tests/testdata/run/report_error.ts.out)0
-rw-r--r--tests/specs/run/report_error_end_of_program/__test__.jsonc5
-rw-r--r--tests/specs/run/report_error_end_of_program/report_error_end_of_program.ts (renamed from tests/testdata/run/report_error_end_of_program.ts)0
-rw-r--r--tests/specs/run/report_error_end_of_program/report_error_end_of_program.ts.out (renamed from tests/testdata/run/report_error_end_of_program.ts.out)0
-rw-r--r--tests/specs/run/report_error_handled/__test__.jsonc4
-rw-r--r--tests/specs/run/report_error_handled/report_error_handled.ts (renamed from tests/testdata/run/report_error_handled.ts)0
-rw-r--r--tests/specs/run/report_error_handled/report_error_handled.ts.out (renamed from tests/testdata/run/report_error_handled.ts.out)0
-rw-r--r--tests/specs/run/runtime_decorators/__test__.jsonc4
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/deno.json5
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.out3
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.ts21
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.out7
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.ts42
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/ts/main.out3
-rw-r--r--tests/specs/run/runtime_decorators/decorators/experimental/ts/main.ts14
-rw-r--r--tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.out3
-rw-r--r--tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.ts21
-rw-r--r--tests/specs/run/seed_random/__test__.jsonc4
-rw-r--r--tests/specs/run/seed_random/seed_random.js (renamed from tests/testdata/run/seed_random.js)0
-rw-r--r--tests/specs/run/seed_random/seed_random.js.out (renamed from tests/testdata/run/seed_random.js.out)0
-rw-r--r--tests/specs/run/set_exit_code_0/__test__.jsonc5
-rw-r--r--tests/specs/run/set_exit_code_0/set_exit_code_0.ts (renamed from tests/testdata/run/set_exit_code_0.ts)0
-rw-r--r--tests/specs/run/set_exit_code_1/__test__.jsonc5
-rw-r--r--tests/specs/run/set_exit_code_1/set_exit_code_1.ts (renamed from tests/testdata/run/set_exit_code_1.ts)0
-rw-r--r--tests/specs/run/set_exit_code_2/__test__.jsonc5
-rw-r--r--tests/specs/run/set_exit_code_2/set_exit_code_2.ts (renamed from tests/testdata/run/set_exit_code_2.ts)0
-rw-r--r--tests/specs/run/set_timeout_error/__test__.jsonc5
-rw-r--r--tests/specs/run/set_timeout_error/set_timeout_error.ts (renamed from tests/testdata/run/set_timeout_error.ts)0
-rw-r--r--tests/specs/run/set_timeout_error/set_timeout_error.ts.out (renamed from tests/testdata/run/set_timeout_error.ts.out)0
-rw-r--r--tests/specs/run/set_timeout_error_handled/__test__.jsonc4
-rw-r--r--tests/specs/run/set_timeout_error_handled/set_timeout_error_handled.ts (renamed from tests/testdata/run/set_timeout_error_handled.ts)0
-rw-r--r--tests/specs/run/set_timeout_error_handled/set_timeout_error_handled.ts.out (renamed from tests/testdata/run/set_timeout_error_handled.ts.out)0
-rw-r--r--tests/specs/run/shebang_swc/__test__.jsonc4
-rw-r--r--tests/specs/run/shebang_swc/shebang.ts (renamed from tests/testdata/run/shebang.ts)0
-rw-r--r--tests/specs/run/shebang_swc/shebang.ts.out (renamed from tests/testdata/run/shebang.ts.out)0
-rw-r--r--tests/specs/run/shebang_swc/shebang2.ts3
-rw-r--r--tests/specs/run/shebang_tsc/__test__.jsonc4
-rw-r--r--tests/specs/run/shebang_tsc/shebang.ts5
-rw-r--r--tests/specs/run/shebang_tsc/shebang.ts.out (renamed from tests/testdata/run/wasm.ts.out)0
-rw-r--r--tests/specs/run/shebang_tsc/shebang2.ts3
-rw-r--r--tests/specs/run/shebang_with_json_imports_swc/__test__.jsonc5
-rw-r--r--tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.json4
-rw-r--r--tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts3
-rw-r--r--tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts.out1
-rw-r--r--tests/specs/run/shebang_with_json_imports_tsc/__test__.jsonc5
-rw-r--r--tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.json4
-rw-r--r--tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts3
-rw-r--r--tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts.out1
-rw-r--r--tests/specs/run/single_compile_with_reload/__test__.jsonc4
-rw-r--r--tests/specs/run/single_compile_with_reload/mod1.ts17
-rw-r--r--tests/specs/run/single_compile_with_reload/print_hello.ts3
-rw-r--r--tests/specs/run/single_compile_with_reload/single_compile_with_reload.ts (renamed from tests/testdata/run/single_compile_with_reload.ts)0
-rw-r--r--tests/specs/run/single_compile_with_reload/single_compile_with_reload.ts.out (renamed from tests/testdata/run/single_compile_with_reload.ts.out)0
-rw-r--r--tests/specs/run/single_compile_with_reload/single_compile_with_reload_dyn.ts11
-rw-r--r--tests/specs/run/single_compile_with_reload/single_compile_with_reload_worker.ts3
-rw-r--r--tests/specs/run/single_compile_with_reload/subdir2/dynamic_import.ts4
-rw-r--r--tests/specs/run/single_compile_with_reload/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/spawn_stdout_inherit/__test__.jsonc4
-rw-r--r--tests/specs/run/spawn_stdout_inherit/spawn_stdout_inherit.ts (renamed from tests/testdata/run/spawn_stdout_inherit.ts)0
-rw-r--r--tests/specs/run/spawn_stdout_inherit/spawn_stdout_inherit.ts.out (renamed from tests/testdata/run/spawn_stdout_inherit.ts.out)0
-rw-r--r--tests/specs/run/stdin_read_all/__test__.jsonc5
-rw-r--r--tests/specs/run/stdin_read_all/stdin_read_all.out (renamed from tests/testdata/run/stdin_read_all.out)0
-rw-r--r--tests/specs/run/stdin_read_all/stdin_read_all.ts (renamed from tests/testdata/run/stdin_read_all.ts)0
-rw-r--r--tests/specs/run/stdout_write_all/__test__.jsonc4
-rw-r--r--tests/specs/run/stdout_write_all/stdout_write_all.out (renamed from tests/testdata/run/stdout_write_all.out)0
-rw-r--r--tests/specs/run/stdout_write_all/stdout_write_all.ts (renamed from tests/testdata/run/stdout_write_all.ts)0
-rw-r--r--tests/specs/run/stdout_write_sync_async/__test__.jsonc4
-rw-r--r--tests/specs/run/stdout_write_sync_async/stdout_write_sync_async.out (renamed from tests/testdata/run/stdout_write_sync_async.out)0
-rw-r--r--tests/specs/run/stdout_write_sync_async/stdout_write_sync_async.ts (renamed from tests/testdata/run/stdout_write_sync_async.ts)0
-rw-r--r--tests/specs/run/swc_syntax_error/__test__.jsonc5
-rw-r--r--tests/specs/run/swc_syntax_error/swc_syntax_error.ts (renamed from tests/testdata/run/swc_syntax_error.ts)0
-rw-r--r--tests/specs/run/swc_syntax_error/swc_syntax_error.ts.out (renamed from tests/testdata/run/swc_syntax_error.ts.out)0
-rw-r--r--tests/specs/run/test_and_bench_are_noops_in_run/__test__.jsonc4
-rw-r--r--tests/specs/run/test_and_bench_are_noops_in_run/test_and_bench_in_run.js (renamed from tests/testdata/run/test_and_bench_in_run.js)0
-rw-r--r--tests/specs/run/tls_connecttls/RootCA.pem19
-rw-r--r--tests/specs/run/tls_connecttls/__test__.jsonc4
-rw-r--r--tests/specs/run/tls_connecttls/deno.json4
-rw-r--r--tests/specs/run/tls_connecttls/localhost.crt21
-rw-r--r--tests/specs/run/tls_connecttls/localhost.key28
-rw-r--r--tests/specs/run/tls_connecttls/textproto.ts170
-rw-r--r--tests/specs/run/tls_connecttls/tls.out (renamed from tests/testdata/run/tls.out)0
-rw-r--r--tests/specs/run/tls_connecttls/tls_connecttls.js65
-rw-r--r--tests/specs/run/tls_starttls/RootCA.pem19
-rw-r--r--tests/specs/run/tls_starttls/__test__.jsonc4
-rw-r--r--tests/specs/run/tls_starttls/deno.json4
-rw-r--r--tests/specs/run/tls_starttls/localhost.crt21
-rw-r--r--tests/specs/run/tls_starttls/localhost.key28
-rw-r--r--tests/specs/run/tls_starttls/textproto.ts170
-rw-r--r--tests/specs/run/tls_starttls/tls.out1
-rw-r--r--tests/specs/run/tls_starttls/tls_starttls.js64
-rw-r--r--tests/specs/run/top_level_await/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_await/hello.txt1
-rw-r--r--tests/specs/run/top_level_await/top_level_await/circular.js (renamed from tests/testdata/run/top_level_await/circular.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/circular.out (renamed from tests/testdata/run/top_level_await/circular.out)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_await/top_level_await/loop.out (renamed from tests/testdata/run/top_level_await/loop.out)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/nested.out (renamed from tests/testdata/run/top_level_await/nested.out)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/nested/a.js (renamed from tests/testdata/run/top_level_await/nested/a.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/nested/b.js (renamed from tests/testdata/run/top_level_await/nested/b.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/nested/main.js (renamed from tests/testdata/run/top_level_await/nested/main.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/order.js (renamed from tests/testdata/run/top_level_await/order.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/order.out (renamed from tests/testdata/run/top_level_await/order.out)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_await/top_level_await/top_level_await.out (renamed from tests/testdata/run/top_level_await/top_level_await.out)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/top_level_await.ts (renamed from tests/testdata/run/top_level_await/top_level_await.ts)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/top_level_for_await.js (renamed from tests/testdata/run/top_level_await/top_level_for_await.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/top_level_for_await.out (renamed from tests/testdata/run/top_level_await/top_level_for_await.out)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/top_level_for_await.ts (renamed from tests/testdata/run/top_level_await/top_level_for_await.ts)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/unresolved.js (renamed from tests/testdata/run/top_level_await/unresolved.js)0
-rw-r--r--tests/specs/run/top_level_await/top_level_await/unresolved.out (renamed from tests/testdata/run/top_level_await/unresolved.out)0
-rw-r--r--tests/specs/run/top_level_await_circular/__test__.jsonc5
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/top_level_await.js (renamed from tests/testdata/run/top_level_await/top_level_await.js)0
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_await_circular/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_await_loop/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_await_loop/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_await_nested/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/loop.js (renamed from tests/testdata/run/top_level_await/loop.js)0
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_await_nested/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_await_order/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_await_order/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_await_ts/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_await_ts/hello.txt1
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_await_ts/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_await_unresolved/__test__.jsonc5
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_for_await/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_for_await/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/top_level_for_await_ts/__test__.jsonc4
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/circular.js8
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/circular.out10
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/loop.js20
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/loop.out5
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/nested.out5
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/nested/a.js3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/nested/b.js1
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/nested/main.js3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/order.js21
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/order.out2
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla/a.js3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla/b.js7
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla/c.js3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla/d.js8
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla/order.js1
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla/parent.js9
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla2/a.js5
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla2/b.js5
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla3/b.js7
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/tla3/timeout_loop.js23
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.js3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.out3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.ts3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.js10
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.out3
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.ts10
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.js1
-rw-r--r--tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.out4
-rw-r--r--tests/specs/run/ts_decorators/__test__.jsonc4
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/deno.json5
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/no_check/main.out3
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/no_check/main.ts21
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/runtime/main.out7
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/runtime/main.ts42
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/ts/main.out3
-rw-r--r--tests/specs/run/ts_decorators/decorators/experimental/ts/main.ts14
-rw-r--r--tests/specs/run/ts_decorators/decorators/tc39_proposal/main.out3
-rw-r--r--tests/specs/run/ts_decorators/decorators/tc39_proposal/main.ts21
-rw-r--r--tests/specs/run/ts_import_from_js/005_more_imports.ts11
-rw-r--r--tests/specs/run/ts_import_from_js/__test__.jsonc4
-rw-r--r--tests/specs/run/ts_import_from_js/mod1.ts17
-rw-r--r--tests/specs/run/ts_import_from_js/mod2.ts1
-rw-r--r--tests/specs/run/ts_import_from_js/print_hello.ts3
-rw-r--r--tests/specs/run/ts_import_from_js/subdir2/dynamic_import.ts4
-rw-r--r--tests/specs/run/ts_import_from_js/subdir2/mod2.ts9
-rw-r--r--tests/specs/run/ts_import_from_js/ts_import_from_js/deps.js (renamed from tests/testdata/run/ts_import_from_js/deps.js)0
-rw-r--r--tests/specs/run/ts_import_from_js/ts_import_from_js/main.js (renamed from tests/testdata/run/ts_import_from_js/main.js)0
-rw-r--r--tests/specs/run/ts_import_from_js/ts_import_from_js/main.out (renamed from tests/testdata/run/ts_import_from_js/main.out)0
-rw-r--r--tests/specs/run/ts_type_imports/__test__.jsonc5
-rw-r--r--tests/specs/run/ts_type_imports/ts_type_imports.ts (renamed from tests/testdata/run/ts_type_imports.ts)0
-rw-r--r--tests/specs/run/ts_type_imports/ts_type_imports.ts.out (renamed from tests/testdata/run/ts_type_imports.ts.out)0
-rw-r--r--tests/specs/run/ts_type_imports/ts_type_imports_foo.ts1
-rw-r--r--tests/specs/run/ts_type_only_import/__test__.jsonc4
-rw-r--r--tests/specs/run/ts_type_only_import/ts_type_only_import.d.ts3
-rw-r--r--tests/specs/run/ts_type_only_import/ts_type_only_import.ts (renamed from tests/testdata/run/ts_type_only_import.ts)0
-rw-r--r--tests/specs/run/ts_type_only_import/ts_type_only_import.ts.out (renamed from tests/testdata/run/ts_type_only_import.ts.out)0
-rw-r--r--tests/specs/run/ts_without_extension/__test__.jsonc5
-rw-r--r--tests/specs/run/ts_without_extension/ts_without_extension3
-rw-r--r--tests/specs/run/ts_without_extension/ts_without_extension.out2
-rw-r--r--tests/specs/run/tsx_imports/046_jsx_test.tsx14
-rw-r--r--tests/specs/run/tsx_imports/__test__.jsonc4
-rw-r--r--tests/specs/run/tsx_imports/tsx_imports/Component.tsx (renamed from tests/testdata/run/tsx_imports/Component.tsx)0
-rw-r--r--tests/specs/run/tsx_imports/tsx_imports/tsx_imports.ts (renamed from tests/testdata/run/tsx_imports/tsx_imports.ts)0
-rw-r--r--tests/specs/run/tsx_imports/tsx_imports/tsx_imports.ts.out (renamed from tests/testdata/run/tsx_imports/tsx_imports.ts.out)0
-rw-r--r--tests/specs/run/type_definitions/__test__.jsonc4
-rw-r--r--tests/specs/run/type_definitions/type_definitions.ts12
-rw-r--r--tests/specs/run/type_definitions/type_definitions.ts.out (renamed from tests/testdata/run/type_definitions.ts.out)0
-rw-r--r--tests/specs/run/type_definitions/type_definitions/bar.d.ts7
-rw-r--r--tests/specs/run/type_definitions/type_definitions/bar.js5
-rw-r--r--tests/specs/run/type_definitions/type_definitions/fizz.d.ts2
-rw-r--r--tests/specs/run/type_definitions/type_definitions/fizz.js1
-rw-r--r--tests/specs/run/type_definitions/type_definitions/foo.d.ts2
-rw-r--r--tests/specs/run/type_definitions/type_definitions/foo.js1
-rw-r--r--tests/specs/run/type_definitions/type_definitions/qat.ts1
-rw-r--r--tests/specs/run/type_definitions_for_export/__test__.jsonc5
-rw-r--r--tests/specs/run/type_definitions_for_export/export_type_def.ts2
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/bar.d.ts7
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/bar.js5
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/fizz.d.ts2
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/fizz.js1
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/foo.d.ts2
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/foo.js1
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions/qat.ts1
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions_for_export.ts (renamed from tests/testdata/run/type_definitions_for_export.ts)0
-rw-r--r--tests/specs/run/type_definitions_for_export/type_definitions_for_export.ts.out (renamed from tests/testdata/run/type_definitions_for_export.ts.out)0
-rw-r--r--tests/specs/run/type_directives_01/__test__.jsonc4
-rw-r--r--tests/specs/run/type_directives_01/type_directives_01.ts (renamed from tests/testdata/run/type_directives_01.ts)0
-rw-r--r--tests/specs/run/type_directives_01/type_directives_01.ts.out (renamed from tests/testdata/run/type_directives_01.ts.out)0
-rw-r--r--tests/specs/run/type_directives_02/__test__.jsonc4
-rw-r--r--tests/specs/run/type_directives_02/type_directives_02.ts3
-rw-r--r--tests/specs/run/type_directives_02/type_directives_02.ts.out3
-rw-r--r--tests/specs/run/type_directives_02/type_reference.d.ts1
-rw-r--r--tests/specs/run/type_directives_02/type_reference.js3
-rw-r--r--tests/specs/run/type_headers_deno_types/__test__.jsonc4
-rw-r--r--tests/specs/run/type_headers_deno_types/type_headers_deno_types.ts (renamed from tests/testdata/run/type_headers_deno_types.ts)0
-rw-r--r--tests/specs/run/type_headers_deno_types/type_headers_deno_types.ts.out (renamed from tests/testdata/run/type_headers_deno_types.ts.out)0
-rw-r--r--tests/specs/run/unbuffered_stderr/__test__.jsonc4
-rw-r--r--tests/specs/run/unbuffered_stderr/unbuffered_stderr.ts (renamed from tests/testdata/run/unbuffered_stderr.ts)0
-rw-r--r--tests/specs/run/unbuffered_stderr/unbuffered_stderr.ts.out (renamed from tests/testdata/run/unbuffered_stderr.ts.out)0
-rw-r--r--tests/specs/run/unbuffered_stdout/__test__.jsonc4
-rw-r--r--tests/specs/run/unbuffered_stdout/unbuffered_stdout.ts (renamed from tests/testdata/run/unbuffered_stdout.ts)0
-rw-r--r--tests/specs/run/unbuffered_stdout/unbuffered_stdout.ts.out (renamed from tests/testdata/run/unbuffered_stdout.ts.out)0
-rw-r--r--tests/specs/run/unhandled_rejection/__test__.jsonc4
-rw-r--r--tests/specs/run/unhandled_rejection/unhandled_rejection.ts (renamed from tests/testdata/run/unhandled_rejection.ts)0
-rw-r--r--tests/specs/run/unhandled_rejection/unhandled_rejection.ts.out9
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import/__test__.jsonc5
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/import.ts (renamed from tests/testdata/run/unhandled_rejection_dynamic_import/import.ts)0
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/main.ts (renamed from tests/testdata/run/unhandled_rejection_dynamic_import/main.ts)0
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/main.ts.out (renamed from tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out)0
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import2/__test__.jsonc4
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/import.ts (renamed from tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts)0
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/main.ts (renamed from tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts)0
-rw-r--r--tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/main.ts.out (renamed from tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out)0
-rw-r--r--tests/specs/run/unhandled_rejection_sync_error/__test__.jsonc4
-rw-r--r--tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts (renamed from tests/testdata/run/unhandled_rejection_sync_error.ts)0
-rw-r--r--tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts.out6
-rw-r--r--tests/specs/run/unsafe_proto/__test__.jsonc5
-rw-r--r--tests/specs/run/unsafe_proto/unsafe_proto/main.js (renamed from tests/testdata/run/unsafe_proto/main.js)0
-rw-r--r--tests/specs/run/unsafe_proto/unsafe_proto/main.out (renamed from tests/testdata/run/unsafe_proto/main.out)0
-rw-r--r--tests/specs/run/unsafe_proto/unsafe_proto/main_with_unsafe_proto_flag.out (renamed from tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out)0
-rw-r--r--tests/specs/run/unsafe_proto/unsafe_proto/worker.js (renamed from tests/testdata/run/unsafe_proto/worker.js)0
-rw-r--r--tests/specs/run/unsafe_proto_flag/__test__.jsonc5
-rw-r--r--tests/specs/run/unsafe_proto_flag/unsafe_proto/main.js5
-rw-r--r--tests/specs/run/unsafe_proto_flag/unsafe_proto/main.out2
-rw-r--r--tests/specs/run/unsafe_proto_flag/unsafe_proto/main_with_unsafe_proto_flag.out2
-rw-r--r--tests/specs/run/unsafe_proto_flag/unsafe_proto/worker.js2
-rw-r--r--tests/specs/run/unstable_broadcast_channel_disabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_broadcast_channel_disabled/unstable_broadcast_channel.disabled.out (renamed from tests/testdata/run/unstable_broadcast_channel.disabled.out)0
-rw-r--r--tests/specs/run/unstable_broadcast_channel_disabled/unstable_broadcast_channel.js (renamed from tests/testdata/run/unstable_broadcast_channel.js)0
-rw-r--r--tests/specs/run/unstable_broadcast_channel_enabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.enabled.out (renamed from tests/testdata/run/unstable_broadcast_channel.enabled.out)0
-rw-r--r--tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.js10
-rw-r--r--tests/specs/run/unstable_cron_disabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_cron_disabled/unstable_cron.disabled.out (renamed from tests/testdata/run/unstable_cron.disabled.out)0
-rw-r--r--tests/specs/run/unstable_cron_disabled/unstable_cron.js (renamed from tests/testdata/run/unstable_cron.js)0
-rw-r--r--tests/specs/run/unstable_cron_enabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_cron_enabled/unstable_cron.enabled.out (renamed from tests/testdata/run/unstable_cron.enabled.out)0
-rw-r--r--tests/specs/run/unstable_cron_enabled/unstable_cron.js10
-rw-r--r--tests/specs/run/unstable_kv_disabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_kv_disabled/unstable_kv.disabled.out (renamed from tests/testdata/run/unstable_kv.disabled.out)0
-rw-r--r--tests/specs/run/unstable_kv_disabled/unstable_kv.js (renamed from tests/testdata/run/unstable_kv.js)0
-rw-r--r--tests/specs/run/unstable_kv_enabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_kv_enabled/unstable_kv.enabled.out (renamed from tests/testdata/run/unstable_kv.enabled.out)0
-rw-r--r--tests/specs/run/unstable_kv_enabled/unstable_kv.js14
-rw-r--r--tests/specs/run/unstable_net_disabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_net_disabled/unstable_net.disabled.out (renamed from tests/testdata/run/unstable_net.disabled.out)0
-rw-r--r--tests/specs/run/unstable_net_disabled/unstable_net.js (renamed from tests/testdata/run/unstable_net.js)0
-rw-r--r--tests/specs/run/unstable_net_enabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_net_enabled/unstable_net.enabled.out (renamed from tests/testdata/run/unstable_net.enabled.out)0
-rw-r--r--tests/specs/run/unstable_net_enabled/unstable_net.js11
-rw-r--r--tests/specs/run/unstable_worker/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_worker/unstable_worker.ts6
-rw-r--r--tests/specs/run/unstable_worker/unstable_worker.ts.out (renamed from tests/testdata/run/unstable_worker.ts.out)0
-rw-r--r--tests/specs/run/unstable_worker/worker_unstable.ts5
-rw-r--r--tests/specs/run/unstable_worker_options_disabled/__test__.jsonc5
-rw-r--r--tests/specs/run/unstable_worker_options_disabled/unstable_worker_options.disabled.out (renamed from tests/testdata/run/unstable_worker_options.disabled.out)0
-rw-r--r--tests/specs/run/unstable_worker_options_disabled/unstable_worker_options.js (renamed from tests/testdata/run/unstable_worker_options.js)0
-rw-r--r--tests/specs/run/unstable_worker_options_enabled/__test__.jsonc4
-rw-r--r--tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.enabled.out (renamed from tests/testdata/run/unstable_worker_options.enabled.out)0
-rw-r--r--tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.js19
-rw-r--r--tests/specs/run/unsupported_dynamic_import_scheme/__test__.jsonc5
-rw-r--r--tests/specs/run/unsupported_dynamic_import_scheme/unsupported_dynamic_import_scheme.out (renamed from tests/testdata/run/unsupported_dynamic_import_scheme.out)0
-rw-r--r--tests/specs/run/v8_flags_env_run/__test__.jsonc7
-rw-r--r--tests/specs/run/v8_flags_env_run/v8_flags.js (renamed from tests/testdata/run/v8_flags.js)0
-rw-r--r--tests/specs/run/v8_flags_env_run/v8_flags.js.out (renamed from tests/testdata/run/v8_flags.js.out)0
-rw-r--r--tests/specs/run/v8_flags_run/__test__.jsonc4
-rw-r--r--tests/specs/run/v8_flags_run/v8_flags.js1
-rw-r--r--tests/specs/run/v8_flags_run/v8_flags.js.out1
-rw-r--r--tests/specs/run/v8_flags_unrecognized/__test__.jsonc5
-rw-r--r--tests/specs/run/v8_flags_unrecognized/v8_flags_unrecognized.out (renamed from tests/testdata/run/v8_flags_unrecognized.out)0
-rw-r--r--tests/specs/run/v8_help/__test__.jsonc4
-rw-r--r--tests/specs/run/v8_help/v8_help.out (renamed from tests/testdata/run/v8_help.out)0
-rw-r--r--tests/specs/run/wasm/__test__.jsonc4
-rw-r--r--tests/specs/run/wasm/wasm.ts (renamed from tests/testdata/run/wasm.ts)0
-rw-r--r--tests/specs/run/wasm/wasm.ts.out1
-rw-r--r--tests/specs/run/wasm_async/__test__.jsonc4
-rw-r--r--tests/specs/run/wasm_async/wasm_async.js (renamed from tests/testdata/run/wasm_async.js)0
-rw-r--r--tests/specs/run/wasm_async/wasm_async.out (renamed from tests/testdata/run/wasm_async.out)0
-rw-r--r--tests/specs/run/wasm_shared/__test__.jsonc4
-rw-r--r--tests/specs/run/wasm_shared/wasm_shared.out0
-rw-r--r--tests/specs/run/wasm_shared/wasm_shared.ts (renamed from tests/testdata/run/wasm_shared.ts)0
-rw-r--r--tests/specs/run/wasm_streaming_panic_test/__test__.jsonc5
-rw-r--r--tests/specs/run/wasm_streaming_panic_test/wasm_streaming_panic_test.js (renamed from tests/testdata/run/wasm_streaming_panic_test.js)0
-rw-r--r--tests/specs/run/wasm_streaming_panic_test/wasm_streaming_panic_test.js.out (renamed from tests/testdata/run/wasm_streaming_panic_test.js.out)0
-rw-r--r--tests/specs/run/wasm_unreachable/__test__.jsonc5
-rw-r--r--tests/specs/run/wasm_unreachable/unreachable.wasmbin0 -> 42 bytes
-rw-r--r--tests/specs/run/wasm_unreachable/wasm_unreachable.js9
-rw-r--r--tests/specs/run/wasm_unreachable/wasm_unreachable.out (renamed from tests/testdata/run/wasm_unreachable.out)0
-rw-r--r--tests/specs/run/wasm_url/__test__.jsonc5
-rw-r--r--tests/specs/run/wasm_url/wasm_url.js (renamed from tests/testdata/run/wasm_url.js)0
-rw-r--r--tests/specs/run/wasm_url/wasm_url.out (renamed from tests/testdata/run/wasm_url.out)0
-rw-r--r--tests/specs/run/weakref/__test__.jsonc4
-rw-r--r--tests/specs/run/weakref/weakref.ts (renamed from tests/testdata/run/weakref.ts)0
-rw-r--r--tests/specs/run/weakref/weakref.ts.out (renamed from tests/testdata/run/weakref.ts.out)0
-rw-r--r--tests/specs/run/webstorage_serialization/__test__.jsonc4
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/config_a.jsonc3
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/config_b.jsonc3
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/fixture.ts2
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/logger.ts1
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/serialization.ts (renamed from tests/testdata/run/webstorage/serialization.ts)0
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/serialization.ts.out (renamed from tests/testdata/run/webstorage/serialization.ts.out)0
-rw-r--r--tests/specs/run/webstorage_serialization/webstorage/setter.ts1
-rw-r--r--tests/specs/run/worker_close_in_wasm_reactions/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_close_in_wasm_reactions/close_in_wasm_reactions.js21
-rw-r--r--tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js10
-rw-r--r--tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js.out (renamed from tests/testdata/run/worker_close_in_wasm_reactions.js.out)0
-rw-r--r--tests/specs/run/worker_close_nested/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_close_nested/close_nested_child.js8
-rw-r--r--tests/specs/run/worker_close_nested/close_nested_parent.js13
-rw-r--r--tests/specs/run/worker_close_nested/worker_close_nested.js20
-rw-r--r--tests/specs/run/worker_close_nested/worker_close_nested.js.out (renamed from tests/testdata/run/worker_close_nested.js.out)0
-rw-r--r--tests/specs/run/worker_close_race/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_close_race/close_race_worker.js6
-rw-r--r--tests/specs/run/worker_close_race/worker_close_race.js14
-rw-r--r--tests/specs/run/worker_close_race/worker_close_race.js.out0
-rw-r--r--tests/specs/run/worker_drop_handle_race/__test__.jsonc5
-rw-r--r--tests/specs/run/worker_drop_handle_race/drop_handle_race.js3
-rw-r--r--tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js12
-rw-r--r--tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js.out7
-rw-r--r--tests/specs/run/worker_drop_handle_race_terminate/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_drop_handle_race_terminate/worker_drop_handle_race_terminate.js (renamed from tests/testdata/run/worker_drop_handle_race_terminate.js)0
-rw-r--r--tests/specs/run/worker_drop_handle_race_terminate/worker_drop_handle_race_terminate.js.out (renamed from tests/testdata/run/worker_drop_handle_race_terminate.js.out)0
-rw-r--r--tests/specs/run/worker_event_handler_test/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_event_handler_test/worker_event_handler_test.js5
-rw-r--r--tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out (renamed from tests/testdata/run/worker_event_handler_test.js.out)0
-rw-r--r--tests/specs/run/worker_event_handler_test/worker_event_handlers.js26
-rw-r--r--tests/specs/run/worker_message_before_close/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_message_before_close/message_before_close.js4
-rw-r--r--tests/specs/run/worker_message_before_close/worker_message_before_close.js26
-rw-r--r--tests/specs/run/worker_message_before_close/worker_message_before_close.js.out (renamed from tests/testdata/run/worker_message_before_close.js.out)0
-rw-r--r--tests/testdata/run/005_more_imports.ts11
-rw-r--r--tests/testdata/run/014_duplicate_import.ts9
-rw-r--r--tests/testdata/run/015_duplicate_parallel_import.js20
-rw-r--r--tests/testdata/run/020_json_modules.ts2
-rw-r--r--tests/testdata/run/020_json_modules.ts.out3
-rw-r--r--tests/testdata/run/021_mjs_modules.ts2
-rw-r--r--tests/testdata/run/035_cached_only_flag.out1
-rw-r--r--tests/testdata/run/042_dyn_import_evalcontext.ts5
-rw-r--r--tests/testdata/run/044_bad_resource.ts3
-rw-r--r--tests/testdata/run/052_no_remote_flag.out1
-rw-r--r--tests/testdata/run/byte_order_mark.ts4
-rw-r--r--tests/testdata/run/config_json_import.ts2
-rw-r--r--tests/testdata/run/error_002.ts7
-rw-r--r--tests/testdata/run/error_002.ts.out6
-rw-r--r--tests/testdata/run/error_014_catch_dynamic_import_error.js31
-rw-r--r--tests/testdata/run/error_014_catch_dynamic_import_error.js.out19
-rw-r--r--tests/testdata/run/error_015_dynamic_import_permissions.js3
-rw-r--r--tests/testdata/run/error_015_dynamic_import_permissions.out4
-rw-r--r--tests/testdata/run/error_no_check.ts1
-rw-r--r--tests/testdata/run/error_no_check.ts.out2
-rw-r--r--tests/testdata/run/error_type_definitions.ts5
-rw-r--r--tests/testdata/run/fix_dynamic_import_errors.js7
-rw-r--r--tests/testdata/run/fix_emittable_skipped.js7
-rw-r--r--tests/testdata/run/fix_js_import_js.ts3
-rw-r--r--tests/testdata/run/fix_js_imports.ts3
-rw-r--r--tests/testdata/run/import_type.ts5
-rw-r--r--tests/testdata/run/inline_js_source_map_2.js4
-rw-r--r--tests/testdata/run/inline_js_source_map_2_with_inline_contents.js4
-rw-r--r--tests/testdata/run/inline_js_source_map_with_contents_from_graph.js4
-rw-r--r--tests/testdata/run/issue13562.ts3
-rw-r--r--tests/testdata/run/jsx_precompile/no_pragma.out3
-rw-r--r--tests/testdata/run/lock_check_ok.json4
-rw-r--r--tests/testdata/run/lock_v2_check_ok.json7
-rw-r--r--tests/testdata/run/no_check_remote.ts.disabled.out4
-rw-r--r--tests/testdata/run/tls_connecttls.js65
-rw-r--r--tests/testdata/run/tls_starttls.js64
-rw-r--r--tests/testdata/run/type_definitions.ts12
-rw-r--r--tests/testdata/run/type_directives_02.ts3
-rw-r--r--tests/testdata/run/type_directives_02.ts.out3
-rw-r--r--tests/testdata/run/unhandled_rejection.ts.out9
-rw-r--r--tests/testdata/run/unhandled_rejection_sync_error.ts.out6
-rw-r--r--tests/testdata/run/unstable_worker.ts6
-rw-r--r--tests/testdata/run/wasm_unreachable.js9
-rw-r--r--tests/testdata/run/with_config/no_auto_discovery.out4
-rw-r--r--tests/testdata/run/with_package_json/with_stop/main.out5
-rw-r--r--tests/testdata/run/worker_close_in_wasm_reactions.js10
-rw-r--r--tests/testdata/run/worker_close_nested.js20
-rw-r--r--tests/testdata/run/worker_close_race.js14
-rw-r--r--tests/testdata/run/worker_drop_handle_race.js12
-rw-r--r--tests/testdata/run/worker_drop_handle_race.js.out7
-rw-r--r--tests/testdata/run/worker_event_handler_test.js5
-rw-r--r--tests/testdata/run/worker_message_before_close.js26
-rwxr-xr-xtools/lint.js2
1685 files changed, 7842 insertions, 2282 deletions
diff --git a/.dprint.json b/.dprint.json
index 489a61e57..3b2376f78 100644
--- a/.dprint.json
+++ b/.dprint.json
@@ -65,7 +65,11 @@
"tests/wpt/runner/expectation.json",
"tests/wpt/runner/manifest.json",
"tests/wpt/suite",
- "third_party"
+ "third_party",
+ "tests/specs/run/shebang_with_json_imports_tsc",
+ "tests/specs/run/shebang_with_json_imports_swc",
+ "tests/specs/run/ext_flag_takes_precedence_over_extension",
+ "tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs"
],
"plugins": [
"https://plugins.dprint.dev/typescript-0.93.2.wasm",
diff --git a/tests/integration/run_tests.rs b/tests/integration/run_tests.rs
index a07dd56c8..686fbabcf 100644
--- a/tests/integration/run_tests.rs
+++ b/tests/integration/run_tests.rs
@@ -24,272 +24,12 @@ use trust_dns_client::serialize::txt::Lexer;
use trust_dns_client::serialize::txt::Parser;
use util::assert_contains;
use util::assert_not_contains;
-use util::env_vars_for_npm_tests;
use util::PathRef;
use util::TestContext;
use util::TestContextBuilder;
const CODE_CACHE_DB_FILE_NAME: &str = "v8_code_cache_v2";
-itest!(stdout_write_all {
- args: "run --quiet run/stdout_write_all.ts",
- output: "run/stdout_write_all.out",
-});
-
-itest!(stdin_read_all {
- args: "run --quiet run/stdin_read_all.ts",
- output: "run/stdin_read_all.out",
- input: Some("01234567890123456789012345678901234567890123456789"),
-});
-
-itest!(stdout_write_sync_async {
- args: "run --quiet run/stdout_write_sync_async.ts",
- output: "run/stdout_write_sync_async.out",
-});
-
-itest!(_001_hello {
- args: "run --reload run/001_hello.js",
- output: "run/001_hello.js.out",
-});
-
-itest!(_002_hello {
- args: "run --quiet --reload run/002_hello.ts",
- output: "run/002_hello.ts.out",
-});
-
-itest!(_003_relative_import {
- args: "run --quiet --reload run/003_relative_import.ts",
- output: "run/003_relative_import.ts.out",
-});
-
-itest!(_004_set_timeout {
- args: "run --quiet --reload run/004_set_timeout.ts",
- output: "run/004_set_timeout.ts.out",
-});
-
-itest!(_005_more_imports {
- args: "run --quiet --reload run/005_more_imports.ts",
- output: "run/005_more_imports.ts.out",
-});
-
-itest!(_006_url_imports {
- args: "run --quiet --reload --allow-import run/006_url_imports.ts",
- output: "run/006_url_imports.ts.out",
- http_server: true,
-});
-
-itest!(_012_async {
- args: "run --quiet --reload run/012_async.ts",
- output: "run/012_async.ts.out",
-});
-
-itest!(_013_dynamic_import {
- args: "run --quiet --reload --allow-read run/013_dynamic_import.ts",
- output: "run/013_dynamic_import.ts.out",
-});
-
-itest!(_014_duplicate_import {
- args: "run --quiet --reload --allow-read run/014_duplicate_import.ts ",
- output: "run/014_duplicate_import.ts.out",
-});
-
-itest!(_015_duplicate_parallel_import {
- args:
- "run --quiet --reload --allow-read run/015_duplicate_parallel_import.js",
- output: "run/015_duplicate_parallel_import.js.out",
-});
-
-itest!(_016_double_await {
- args: "run --quiet --allow-read --reload run/016_double_await.ts",
- output: "run/016_double_await.ts.out",
-});
-
-itest!(_017_import_redirect {
- args: "run --quiet --allow-import --reload run/017_import_redirect.ts",
- output: "run/017_import_redirect.ts.out",
-});
-
-itest!(_017_import_redirect_check {
- args:
- "run --quiet --allow-import --reload --check run/017_import_redirect.ts",
- output: "run/017_import_redirect.ts.out",
-});
-
-itest!(_017_import_redirect_vendor_dir {
- args:
- "run --quiet --allow-import --reload --vendor --check $TESTDATA/run/017_import_redirect.ts",
- output: "run/017_import_redirect.ts.out",
- temp_cwd: true,
-});
-
-itest!(_017_import_redirect_info {
- args: "info --quiet --allow-import --reload run/017_import_redirect.ts",
- output: "run/017_import_redirect_info.out",
-});
-
-itest!(_018_async_catch {
- args: "run --quiet --reload run/018_async_catch.ts",
- output: "run/018_async_catch.ts.out",
-});
-
-itest!(_019_media_types {
- args: "run --reload --allow-import run/019_media_types.ts",
- output: "run/019_media_types.ts.out",
- http_server: true,
-});
-
-itest!(_020_json_modules {
- args: "run --reload run/020_json_modules.ts",
- output: "run/020_json_modules.ts.out",
- exit_code: 1,
-});
-
-itest!(_021_mjs_modules {
- args: "run --quiet --reload run/021_mjs_modules.ts",
- output: "run/021_mjs_modules.ts.out",
-});
-
-itest!(_025_reload_js_type_error {
- args: "run --quiet --reload run/025_reload_js_type_error.js",
- output: "run/025_reload_js_type_error.js.out",
-});
-
-itest!(_027_redirect_typescript {
- args: "run --quiet --reload --allow-import run/027_redirect_typescript.ts",
- output: "run/027_redirect_typescript.ts.out",
- http_server: true,
-});
-
-itest!(_027_redirect_typescript_vendor_dir {
- args:
- "run --quiet --reload --vendor --allow-import $TESTDATA/run/027_redirect_typescript.ts",
- output: "run/027_redirect_typescript.ts.out",
- http_server: true,
- temp_cwd: true,
-});
-
-itest!(_028_args {
- args:
- "run --quiet --reload run/028_args.ts --arg1 val1 --arg2=val2 -- arg3 arg4",
- output: "run/028_args.ts.out",
-});
-
-itest!(_033_import_map_remote {
- args:
- "run --quiet --reload --allow-import --import-map=http://127.0.0.1:4545/import_maps/import_map_remote.json import_maps/test_remote.ts",
- output: "run/033_import_map_remote.out",
- http_server: true,
-});
-
-itest!(_033_import_map_vendor_dir_remote {
- args:
- "run --quiet --reload --allow-import --import-map=http://127.0.0.1:4545/import_maps/import_map_remote.json --vendor $TESTDATA/import_maps/test_remote.ts",
- output: "run/033_import_map_remote.out",
- http_server: true,
- temp_cwd: true,
-});
-
-itest!(_033_import_map_data_uri {
- args:
- "run --quiet --reload --allow-import --import-map=data:application/json;charset=utf-8;base64,ewogICJpbXBvcnRzIjogewogICAgInRlc3Rfc2VydmVyLyI6ICJodHRwOi8vbG9jYWxob3N0OjQ1NDUvIgogIH0KfQ== run/import_maps/test_data.ts",
- output: "run/import_maps/test_data.ts.out",
- http_server: true,
-});
-
-itest!(onload {
- args: "run --quiet --reload --config ../config/deno.json run/onload/main.ts",
- output: "run/onload/main.out",
-});
-
-itest!(_035_cached_only_flag {
- args: "run --reload --check --allow-import --cached-only http://127.0.0.1:4545/run/019_media_types.ts",
- output: "run/035_cached_only_flag.out",
- exit_code: 1,
- http_server: true,
-});
-
-itest!(_038_checkjs {
- // checking if JS file is run through TS compiler
- args:
- "run --reload --config run/checkjs.tsconfig.json --check run/038_checkjs.js",
- exit_code: 1,
- output: "run/038_checkjs.js.out",
-});
-
-itest!(_042_dyn_import_evalcontext {
- args: "run --quiet --allow-read --reload run/042_dyn_import_evalcontext.ts",
- output: "run/042_dyn_import_evalcontext.ts.out",
-});
-
-itest!(_044_bad_resource {
- args: "run --quiet --reload --allow-read run/044_bad_resource.ts",
- output: "run/044_bad_resource.ts.out",
- exit_code: 1,
-});
-
-itest!(_046_tsx {
- args: "run --quiet --reload run/046_jsx_test.tsx",
- output: "run/046_jsx_test.tsx.out",
-});
-
-itest!(_047_jsx {
- args: "run --quiet --reload run/047_jsx_test.jsx",
- output: "run/047_jsx_test.jsx.out",
-});
-
-itest!(_048_media_types_jsx {
- args: "run --reload --allow-import run/048_media_types_jsx.ts",
- output: "run/048_media_types_jsx.ts.out",
- http_server: true,
-});
-
-itest!(_052_no_remote_flag {
- args:
- "run --reload --check --allow-import --no-remote http://127.0.0.1:4545/run/019_media_types.ts",
- output: "run/052_no_remote_flag.out",
- exit_code: 1,
- http_server: true,
-});
-
-itest!(_058_tasks_microtasks_close {
- args: "run --quiet run/058_tasks_microtasks_close.ts",
- output: "run/058_tasks_microtasks_close.ts.out",
-});
-
-itest!(_059_fs_relative_path_perm {
- args: "run run/059_fs_relative_path_perm.ts",
- output: "run/059_fs_relative_path_perm.ts.out",
- exit_code: 1,
-});
-
-itest!(_070_location {
- args: "run --location https://foo/bar?baz#bat run/070_location.ts",
- output: "run/070_location.ts.out",
-});
-
-itest!(_071_location_unset {
- args: "run run/071_location_unset.ts",
- output: "run/071_location_unset.ts.out",
-});
-
-itest!(_072_location_relative_fetch {
- args: "run --location http://127.0.0.1:4545/ --allow-net run/072_location_relative_fetch.ts",
- output: "run/072_location_relative_fetch.ts.out",
- http_server: true,
-});
-
-// tests the beforeunload event
-itest!(beforeunload_event {
- args: "run run/before_unload.js",
- output: "run/before_unload.js.out",
-});
-
-// tests the serialization of webstorage (both localStorage and sessionStorage)
-itest!(webstorage_serialization {
- args: "run run/webstorage/serialization.ts",
- output: "run/webstorage/serialization.ts.out",
-});
-
// tests to ensure that when `--location` is set, all code shares the same
// localStorage cache based on the origin of the location URL.
#[test]
@@ -394,41 +134,6 @@ fn webstorage_main_module() {
.assert_matches_text("Storage { hello: \"deno\", length: 1 }\n");
}
-itest!(_075_import_local_query_hash {
- args: "run run/075_import_local_query_hash.ts",
- output: "run/075_import_local_query_hash.ts.out",
-});
-
-itest!(_077_fetch_empty {
- args: "run -A run/077_fetch_empty.ts",
- output: "run/077_fetch_empty.ts.out",
- exit_code: 1,
-});
-
-itest!(_078_unload_on_exit {
- args: "run run/078_unload_on_exit.ts",
- output: "run/078_unload_on_exit.ts.out",
- exit_code: 1,
-});
-
-itest!(_079_location_authentication {
- args:
- "run --location https://foo:bar@baz/qux run/079_location_authentication.ts",
- output: "run/079_location_authentication.ts.out",
-});
-
-itest!(_081_location_relative_fetch_redirect {
- args: "run --location http://127.0.0.1:4546/ --allow-net run/081_location_relative_fetch_redirect.ts",
- output: "run/081_location_relative_fetch_redirect.ts.out",
- http_server: true,
- });
-
-itest!(_082_prepare_stack_trace_throw {
- args: "run run/082_prepare_stack_trace_throw.js",
- output: "run/082_prepare_stack_trace_throw.js.out",
- exit_code: 1,
-});
-
#[test]
fn _083_legacy_external_source_map() {
let _g = util::http_server();
@@ -457,27 +162,6 @@ fn _083_legacy_external_source_map() {
assert_eq!(out, "");
}
-itest!(dynamic_import_async_error {
- args: "run --allow-read run/dynamic_import_async_error/main.ts",
- output: "run/dynamic_import_async_error/main.out",
-});
-
-itest!(dynamic_import_already_rejected {
- args: "run --allow-read run/dynamic_import_already_rejected/main.ts",
- output: "run/dynamic_import_already_rejected/main.out",
-});
-
-itest!(dynamic_import_concurrent_non_statically_analyzable {
- args: "run --allow-import --allow-read --allow-net --quiet run/dynamic_import_concurrent_non_statically_analyzable/main.ts",
- output: "run/dynamic_import_concurrent_non_statically_analyzable/main.out",
- http_server: true,
-});
-
-itest!(_088_dynamic_import_already_evaluating {
- args: "run --allow-read run/088_dynamic_import_already_evaluating.ts",
- output: "run/088_dynamic_import_already_evaluating.ts.out",
-});
-
itest!(_089_run_allow_list {
args: "run --allow-run=curl run/089_run_allow_list.ts",
envs: vec![
@@ -713,16 +397,6 @@ fn permission_request_long() {
});
}
-itest!(deny_all_permission_args {
- args: "run --deny-env --deny-read --deny-write --deny-ffi --deny-run --deny-sys --deny-net run/deny_all_permission_args.js",
- output: "run/deny_all_permission_args.out",
-});
-
-itest!(deny_some_permission_args {
- args: "run --allow-env --deny-env=FOO --allow-read --deny-read=/foo --allow-write --deny-write=/foo --allow-ffi --deny-ffi=/foo --allow-run --deny-run=foo --allow-sys --deny-sys=hostname --allow-net --deny-net=127.0.0.1 run/deny_some_permission_args.js",
- output: "run/deny_some_permission_args.out",
-});
-
#[test]
fn permissions_cache() {
TestContext::default()
@@ -755,52 +429,6 @@ itest!(env_file_missing {
output: "run/env_file_missing.out",
});
-itest!(_091_use_define_for_class_fields {
- args: "run --check run/091_use_define_for_class_fields.ts",
- output: "run/091_use_define_for_class_fields.ts.out",
- exit_code: 1,
-});
-
-itest!(js_import_detect {
- args: "run --quiet --reload run/js_import_detect.ts",
- output: "run/js_import_detect.ts.out",
- exit_code: 0,
-});
-
-itest!(blob_gc_finalization {
- args: "run run/blob_gc_finalization.js",
- output: "run/blob_gc_finalization.js.out",
- exit_code: 0,
-});
-
-itest!(fetch_response_finalization {
- args:
- "run --v8-flags=--expose-gc --allow-net run/fetch_response_finalization.js",
- output: "run/fetch_response_finalization.js.out",
- http_server: true,
- exit_code: 0,
-});
-
-itest!(import_type {
- args: "run --reload run/import_type.ts",
- output: "run/import_type.ts.out",
-});
-
-itest!(import_type_no_check {
- args: "run --reload --no-check run/import_type.ts",
- output: "run/import_type.ts.out",
-});
-
-itest!(private_field_presence {
- args: "run --reload run/private_field_presence.ts",
- output: "run/private_field_presence.ts.out",
-});
-
-itest!(private_field_presence_no_check {
- args: "run --reload --no-check run/private_field_presence.ts",
- output: "run/private_field_presence.ts.out",
-});
-
itest!(lock_write_fetch {
args:
"run --quiet --allow-import --allow-read --allow-write --allow-env --allow-run run/lock_write_fetch/main.ts",
@@ -809,33 +437,6 @@ itest!(lock_write_fetch {
exit_code: 0,
});
-itest!(lock_check_ok {
- args:
- "run --quiet --allow-import --lock=run/lock_check_ok.json http://127.0.0.1:4545/run/003_relative_import.ts",
- output: "run/003_relative_import.ts.out",
- http_server: true,
-});
-
-itest!(lock_check_ok2 {
- args:
- "run --allow-import --lock=run/lock_check_ok2.json run/019_media_types.ts",
- output: "run/019_media_types.ts.out",
- http_server: true,
-});
-
-itest!(lock_v2_check_ok {
- args:
- "run --allow-import --quiet --lock=run/lock_v2_check_ok.json http://127.0.0.1:4545/run/003_relative_import.ts",
- output: "run/003_relative_import.ts.out",
- http_server: true,
-});
-
-itest!(lock_v2_check_ok2 {
- args: "run --allow-import --lock=run/lock_v2_check_ok2.json run/019_media_types.ts",
- output: "run/019_media_types.ts.out",
- http_server: true,
-});
-
#[test]
fn lock_redirects() {
let context = TestContextBuilder::new()
@@ -1234,141 +835,12 @@ fn get_lockfile_npm_package_integrity(
.to_string()
}
-itest!(mts_dmts_mjs {
- args: "run subdir/import.mts",
- output: "run/mts_dmts_mjs.out",
-});
-
-itest!(mts_dmts_mjs_no_check {
- args: "run --no-check subdir/import.mts",
- output: "run/mts_dmts_mjs.out",
-});
-
-itest!(async_error {
- exit_code: 1,
- args: "run --reload run/async_error.ts",
- output: "run/async_error.ts.out",
-});
-
-itest!(config {
- args:
- "run --reload --config run/config/tsconfig.json --check run/config/main.ts",
- output: "run/config/main.out",
-});
-
-itest!(config_types {
- args:
- "run --reload --quiet --check=all --config run/config_types/tsconfig.json run/config_types/main.ts",
- output: "run/config_types/main.out",
-});
-
-itest!(config_types_remote {
- http_server: true,
- args: "run --allow-import --reload --quiet --check=all --config run/config_types/remote.tsconfig.json run/config_types/main.ts",
- output: "run/config_types/main.out",
-});
-
-itest!(empty_typescript {
- args: "run --reload --check run/empty.ts",
- output_str: Some("Check file:[WILDCARD]/run/empty.ts\n"),
-});
-
-itest!(error_001 {
- args: "run --reload run/error_001.ts",
- exit_code: 1,
- output: "run/error_001.ts.out",
-});
-
-itest!(error_002 {
- args: "run --reload run/error_002.ts",
- exit_code: 1,
- output: "run/error_002.ts.out",
-});
-
-itest!(error_003_typescript {
- args: "run --reload --check run/error_003_typescript.ts",
- exit_code: 1,
- output: "run/error_003_typescript.ts.out",
-});
-
-// Supposing that we've already attempted to run error_003_typescript.ts
-// we want to make sure that JS wasn't emitted. Running again without reload flag
-// should result in the same output.
-// https://github.com/denoland/deno/issues/2436
-itest!(error_003_typescript2 {
- args: "run --check run/error_003_typescript.ts",
- exit_code: 1,
- output: "run/error_003_typescript.ts.out",
-});
-
-itest!(error_004_missing_module {
- args: "run --reload run/error_004_missing_module.ts",
- exit_code: 1,
- output: "run/error_004_missing_module.ts.out",
-});
-
-itest!(error_005_missing_dynamic_import {
- args:
- "run --reload --allow-read --quiet run/error_005_missing_dynamic_import.ts",
- exit_code: 1,
- output: "run/error_005_missing_dynamic_import.ts.out",
-});
-
-itest!(error_006_import_ext_failure {
- args: "run --reload run/error_006_import_ext_failure.ts",
- exit_code: 1,
- output: "run/error_006_import_ext_failure.ts.out",
-});
-
-itest!(error_007_any {
- args: "run --reload run/error_007_any.ts",
- exit_code: 1,
- output: "run/error_007_any.ts.out",
-});
-
-itest!(error_008_checkjs {
- args: "run --reload run/error_008_checkjs.js",
- exit_code: 1,
- output: "run/error_008_checkjs.js.out",
-});
-
-itest!(error_009_extensions_error {
- args: "run run/error_009_extensions_error.js",
- output: "run/error_009_extensions_error.js.out",
- exit_code: 1,
-});
-
-itest!(error_011_bad_module_specifier {
- args: "run --reload run/error_011_bad_module_specifier.ts",
- exit_code: 1,
- output: "run/error_011_bad_module_specifier.ts.out",
-});
-
-itest!(error_012_bad_dynamic_import_specifier {
- args: "run --reload --check run/error_012_bad_dynamic_import_specifier.ts",
- exit_code: 1,
- output: "run/error_012_bad_dynamic_import_specifier.ts.out",
-});
-
itest!(error_013_missing_script {
args: "run --reload missing_file_name",
exit_code: 1,
output: "run/error_013_missing_script.out",
});
-itest!(error_014_catch_dynamic_import_error {
- args:
- "run --reload --allow-read run/error_014_catch_dynamic_import_error.js",
- output: "run/error_014_catch_dynamic_import_error.js.out",
-});
-
-itest!(error_015_dynamic_import_permissions {
- args: "run --reload --quiet run/error_015_dynamic_import_permissions.js",
- output: "run/error_015_dynamic_import_permissions.out",
- exit_code: 1,
- http_server: true,
-});
-
// We have an allow-import flag but not allow-read, it should still result in error.
itest!(error_016_dynamic_import_permissions2 {
args:
@@ -1378,60 +850,6 @@ itest!(error_016_dynamic_import_permissions2 {
http_server: true,
});
-itest!(error_017_hide_long_source_ts {
- args: "run --reload --check run/error_017_hide_long_source_ts.ts",
- output: "run/error_017_hide_long_source_ts.ts.out",
- exit_code: 1,
-});
-
-itest!(error_018_hide_long_source_js {
- args: "run run/error_018_hide_long_source_js.js",
- output: "run/error_018_hide_long_source_js.js.out",
- exit_code: 1,
-});
-
-itest!(error_019_stack_function {
- args: "run run/error_019_stack_function.ts",
- output: "run/error_019_stack_function.ts.out",
- exit_code: 1,
-});
-
-itest!(error_020_stack_constructor {
- args: "run run/error_020_stack_constructor.ts",
- output: "run/error_020_stack_constructor.ts.out",
- exit_code: 1,
-});
-
-itest!(error_021_stack_method {
- args: "run run/error_021_stack_method.ts",
- output: "run/error_021_stack_method.ts.out",
- exit_code: 1,
-});
-
-itest!(error_022_stack_custom_error {
- args: "run run/error_022_stack_custom_error.ts",
- output: "run/error_022_stack_custom_error.ts.out",
- exit_code: 1,
-});
-
-itest!(error_023_stack_async {
- args: "run run/error_023_stack_async.ts",
- output: "run/error_023_stack_async.ts.out",
- exit_code: 1,
-});
-
-itest!(error_024_stack_promise_all {
- args: "run run/error_024_stack_promise_all.ts",
- output: "run/error_024_stack_promise_all.ts.out",
- exit_code: 1,
-});
-
-itest!(error_025_tab_indent {
- args: "run run/error_025_tab_indent",
- output: "run/error_025_tab_indent.out",
- exit_code: 1,
-});
-
itest!(error_026_remote_import_error {
args: "run --allow-import run/error_026_remote_import_error.ts",
output: "run/error_026_remote_import_error.ts.out",
@@ -1439,42 +857,6 @@ itest!(error_026_remote_import_error {
http_server: true,
});
-itest!(error_for_await {
- args: "run --reload --check run/error_for_await.ts",
- output: "run/error_for_await.ts.out",
- exit_code: 1,
-});
-
-itest!(error_missing_module_named_import {
- args: "run --reload run/error_missing_module_named_import.ts",
- output: "run/error_missing_module_named_import.ts.out",
- exit_code: 1,
-});
-
-itest!(error_no_check {
- args: "run --reload --no-check run/error_no_check.ts",
- output: "run/error_no_check.ts.out",
- exit_code: 1,
-});
-
-itest!(error_syntax {
- args: "run --reload run/error_syntax.js",
- exit_code: 1,
- output: "run/error_syntax.js.out",
-});
-
-itest!(error_syntax_empty_trailing_line {
- args: "run --reload run/error_syntax_empty_trailing_line.mjs",
- exit_code: 1,
- output: "run/error_syntax_empty_trailing_line.mjs.out",
-});
-
-itest!(error_type_definitions {
- args: "run --reload --check run/error_type_definitions.ts",
- exit_code: 1,
- output: "run/error_type_definitions.ts.out",
-});
-
itest!(error_local_static_import_from_remote_ts {
args: "run --allow-import --reload http://localhost:4545/run/error_local_static_import_from_remote.ts",
exit_code: 1,
@@ -1489,138 +871,18 @@ itest!(error_local_static_import_from_remote_js {
output: "run/error_local_static_import_from_remote.js.out",
});
-itest!(exit_error42 {
- exit_code: 42,
- args: "run --quiet --reload run/exit_error42.ts",
- output: "run/exit_error42.ts.out",
-});
-
-itest!(set_exit_code_0 {
- args: "run --no-check run/set_exit_code_0.ts",
- output_str: Some(""),
- exit_code: 0,
-});
-
-itest!(set_exit_code_1 {
- args: "run --no-check run/set_exit_code_1.ts",
- output_str: Some(""),
- exit_code: 42,
-});
-
-itest!(set_exit_code_2 {
- args: "run --no-check run/set_exit_code_2.ts",
- output_str: Some(""),
- exit_code: 42,
-});
-
-itest!(op_exit_op_set_exit_code_in_worker {
- args: "run --no-check --allow-read run/op_exit_op_set_exit_code_in_worker.ts",
- exit_code: 21,
- output_str: Some(""),
-});
-
-itest!(deno_exit_tampering {
- args: "run --no-check run/deno_exit_tampering.ts",
- output_str: Some(""),
- exit_code: 42,
-});
-
-itest!(heapstats {
- args: "run --quiet --v8-flags=--expose-gc run/heapstats.js",
- output: "run/heapstats.js.out",
-});
-
-itest!(finalization_registry {
- args: "run --quiet --v8-flags=--expose-gc run/finalization_registry.js",
- output: "run/finalization_registry.js.out",
-});
-
-itest!(https_import {
- args: "run --allow-import --quiet --reload --cert tls/RootCA.pem run/https_import.ts",
- output: "run/https_import.ts.out",
- http_server: true,
-});
-
-itest!(if_main {
- args: "run --quiet --reload run/if_main.ts",
- output: "run/if_main.ts.out",
-});
-
itest!(import_meta {
args: "run --allow-import --quiet --reload --import-map=run/import_meta/importmap.json run/import_meta/main.ts",
output: "run/import_meta/main.out",
http_server: true,
});
-itest!(main_module {
- args: "run --quiet --reload run/main_module/main.ts",
- output: "run/main_module/main.out",
-});
-
-itest!(no_check {
- args: "run --allow-import --quiet --reload --no-check run/006_url_imports.ts",
- output: "run/006_url_imports.ts.out",
- http_server: true,
-});
-
-itest!(no_check_decorators {
- args: "run --quiet --reload --no-check run/decorators/experimental/no_check/main.ts",
- output: "run/decorators/experimental/no_check/main.out",
-});
-
-itest!(decorators_tc39_proposal {
- args: "run --quiet --reload --check run/decorators/tc39_proposal/main.ts",
- output: "run/decorators/tc39_proposal/main.out",
-});
-
-itest!(check_remote {
- args:
- "run --quiet --allow-import --reload --check=all run/no_check_remote.ts",
- output: "run/no_check_remote.ts.disabled.out",
- exit_code: 1,
- http_server: true,
-});
-
itest!(no_check_remote {
args: "run --allow-import --quiet --reload --no-check=remote run/no_check_remote.ts",
output: "run/no_check_remote.ts.enabled.out",
http_server: true,
});
-itest!(runtime_decorators {
- args: "run --quiet --reload --no-check run/decorators/experimental/runtime/main.ts",
- output: "run/decorators/experimental/runtime/main.out",
-});
-
-itest!(seed_random {
- args: "run --seed=100 run/seed_random.js",
- output: "run/seed_random.js.out",
-});
-
-itest!(type_definitions {
- args: "run --reload run/type_definitions.ts",
- output: "run/type_definitions.ts.out",
-});
-
-itest!(type_definitions_for_export {
- args: "run --reload --check run/type_definitions_for_export.ts",
- output: "run/type_definitions_for_export.ts.out",
- exit_code: 1,
-});
-
-itest!(type_directives_01 {
- args:
- "run --allow-import --reload --check=all -L debug run/type_directives_01.ts",
- output: "run/type_directives_01.ts.out",
- http_server: true,
-});
-
-itest!(type_directives_02 {
- args:
- "run --allow-import --reload --check=all -L debug run/type_directives_02.ts",
- output: "run/type_directives_02.ts.out",
-});
-
#[test]
fn type_directives_js_main() {
let context = TestContext::default();
@@ -1642,216 +904,6 @@ itest!(type_directives_redirect {
http_server: true,
});
-itest!(type_headers_deno_types {
- args: "run --allow-import --reload --check run/type_headers_deno_types.ts",
- output: "run/type_headers_deno_types.ts.out",
- http_server: true,
-});
-
-itest!(ts_type_imports {
- args: "run --reload --check run/ts_type_imports.ts",
- output: "run/ts_type_imports.ts.out",
- exit_code: 1,
-});
-
-itest!(ts_decorators {
- args: "run --reload --check run/decorators/experimental/ts/main.ts",
- output: "run/decorators/experimental/ts/main.out",
-});
-
-itest!(ts_type_only_import {
- args: "run --reload --check run/ts_type_only_import.ts",
- output: "run/ts_type_only_import.ts.out",
-});
-
-itest!(swc_syntax_error {
- args: "run --reload --check run/swc_syntax_error.ts",
- output: "run/swc_syntax_error.ts.out",
- exit_code: 1,
-});
-
-itest!(unbuffered_stderr {
- args: "run --reload run/unbuffered_stderr.ts",
- output: "run/unbuffered_stderr.ts.out",
-});
-
-itest!(unbuffered_stdout {
- args: "run --quiet --reload run/unbuffered_stdout.ts",
- output: "run/unbuffered_stdout.ts.out",
-});
-
-itest!(v8_flags_run {
- args: "run --v8-flags=--expose-gc run/v8_flags.js",
- output: "run/v8_flags.js.out",
-});
-
-itest!(v8_flags_env_run {
- envs: vec![("DENO_V8_FLAGS".to_string(), "--expose-gc".to_string())],
- args: "run run/v8_flags.js",
- output: "run/v8_flags.js.out",
-});
-
-itest!(v8_flags_unrecognized {
- args: "repl --v8-flags=--foo,bar,--trace-gc,-baz",
- output: "run/v8_flags_unrecognized.out",
- exit_code: 1,
-});
-
-itest!(v8_help {
- args: "repl --v8-flags=--help",
- output: "run/v8_help.out",
-});
-
-itest!(unsupported_dynamic_import_scheme {
- args: "eval import('xxx:')",
- output: "run/unsupported_dynamic_import_scheme.out",
- exit_code: 1,
-});
-
-itest!(wasm {
- args: "run --quiet run/wasm.ts",
- output: "run/wasm.ts.out",
-});
-
-itest!(wasm_shared {
- args: "run --quiet run/wasm_shared.ts",
- output: "run/wasm_shared.out",
-});
-
-itest!(wasm_async {
- args: "run run/wasm_async.js",
- output: "run/wasm_async.out",
-});
-
-itest!(wasm_unreachable {
- args: "run --allow-read run/wasm_unreachable.js",
- output: "run/wasm_unreachable.out",
- exit_code: 1,
-});
-
-itest!(wasm_url {
- args: "run --quiet --allow-net=localhost:4545 run/wasm_url.js",
- output: "run/wasm_url.out",
- exit_code: 1,
- http_server: true,
-});
-
-itest!(weakref {
- args: "run --quiet --reload run/weakref.ts",
- output: "run/weakref.ts.out",
-});
-
-itest!(top_level_await_order {
- args: "run --allow-read run/top_level_await/order.js",
- output: "run/top_level_await/order.out",
-});
-
-itest!(top_level_await_loop {
- args: "run --allow-read run/top_level_await/loop.js",
- output: "run/top_level_await/loop.out",
-});
-
-itest!(top_level_await_circular {
- args: "run --allow-read run/top_level_await/circular.js",
- output: "run/top_level_await/circular.out",
- exit_code: 1,
-});
-
-// Regression test for https://github.com/denoland/deno/issues/11238.
-itest!(top_level_await_nested {
- args: "run --allow-read run/top_level_await/nested/main.js",
- output: "run/top_level_await/nested.out",
-});
-
-itest!(top_level_await_unresolved {
- args: "run run/top_level_await/unresolved.js",
- output: "run/top_level_await/unresolved.out",
- exit_code: 1,
-});
-
-itest!(top_level_await {
- args: "run --allow-read run/top_level_await/top_level_await.js",
- output: "run/top_level_await/top_level_await.out",
-});
-
-itest!(top_level_await_ts {
- args: "run --quiet --allow-read run/top_level_await/top_level_await.ts",
- output: "run/top_level_await/top_level_await.out",
-});
-
-itest!(top_level_for_await {
- args: "run --quiet run/top_level_await/top_level_for_await.js",
- output: "run/top_level_await/top_level_for_await.out",
-});
-
-itest!(top_level_for_await_ts {
- args: "run --quiet run/top_level_await/top_level_for_await.ts",
- output: "run/top_level_await/top_level_for_await.out",
-});
-
-itest!(unstable_worker {
- args: "run --reload --quiet --allow-read run/unstable_worker.ts",
- output: "run/unstable_worker.ts.out",
-});
-
-itest!(unstable_worker_options_disabled {
- args: "run --quiet --reload --allow-read run/unstable_worker_options.js",
- output: "run/unstable_worker_options.disabled.out",
- exit_code: 70,
-});
-
-itest!(unstable_worker_options_enabled {
- args: "run --quiet --reload --allow-read --unstable-worker-options run/unstable_worker_options.js",
- output: "run/unstable_worker_options.enabled.out",
-});
-
-itest!(unstable_broadcast_channel_disabled {
- args: "run --quiet --reload --allow-read run/unstable_broadcast_channel.js",
- output: "run/unstable_broadcast_channel.disabled.out",
-});
-
-itest!(unstable_broadcast_channel_enabled {
- args: "run --quiet --reload --allow-read --unstable-broadcast-channel run/unstable_broadcast_channel.js",
- output: "run/unstable_broadcast_channel.enabled.out",
-});
-
-itest!(unstable_cron_disabled {
- args: "run --quiet --reload --allow-read run/unstable_cron.js",
- output: "run/unstable_cron.disabled.out",
-});
-
-itest!(unstable_cron_enabled {
- args:
- "run --quiet --reload --allow-read --unstable-cron run/unstable_cron.js",
- output: "run/unstable_cron.enabled.out",
-});
-
-itest!(unstable_net_disabled {
- args: "run --quiet --reload --allow-read run/unstable_net.js",
- output: "run/unstable_net.disabled.out",
-});
-
-itest!(unstable_net_enabled {
- args: "run --quiet --reload --allow-read --unstable-net run/unstable_net.js",
- output: "run/unstable_net.enabled.out",
-});
-
-itest!(unstable_kv_disabled {
- args: "run --quiet --reload --allow-read run/unstable_kv.js",
- output: "run/unstable_kv.disabled.out",
-});
-
-itest!(unstable_kv_enabled {
- args: "run --quiet --reload --allow-read --unstable-kv run/unstable_kv.js",
- output: "run/unstable_kv.enabled.out",
-});
-
-itest!(import_compression {
- args: "run --allow-import --quiet --reload --allow-net run/import_compression/main.ts",
- output: "run/import_compression/main.out",
- http_server: true,
-});
-
itest!(disallow_http_from_https_js {
args: "run --allow-import --quiet --reload --cert tls/RootCA.pem https://localhost:5545/run/disallow_http_from_https.js",
output: "run/disallow_http_from_https_js.out",
@@ -1866,131 +918,6 @@ itest!(disallow_http_from_https_ts {
exit_code: 1,
});
-itest!(dynamic_import_conditional {
- args: "run --quiet --reload run/dynamic_import_conditional.js",
- output: "run/dynamic_import_conditional.js.out",
-});
-
-itest!(tsx_imports {
- args: "run --reload --check run/tsx_imports/tsx_imports.ts",
- output: "run/tsx_imports/tsx_imports.ts.out",
-});
-
-itest!(fix_dynamic_import_errors {
- args: "run --reload run/fix_dynamic_import_errors.js",
- output: "run/fix_dynamic_import_errors.js.out",
-});
-
-itest!(fix_emittable_skipped {
- args: "run --reload run/fix_emittable_skipped.js",
- output: "run/fix_emittable_skipped.ts.out",
-});
-
-itest!(fix_js_import_js {
- args: "run --quiet --reload run/fix_js_import_js.ts",
- output: "run/fix_js_import_js.ts.out",
-});
-
-itest!(fix_js_imports {
- args: "run --quiet --reload run/fix_js_imports.ts",
- output: "run/fix_js_imports.ts.out",
-});
-
-itest!(fix_tsc_file_exists {
- args: "run --quiet --reload tsc/test.js",
- output: "run/fix_tsc_file_exists.out",
-});
-
-itest!(fix_worker_dispatchevent {
- args: "run --quiet --reload run/fix_worker_dispatchevent.ts",
- output: "run/fix_worker_dispatchevent.ts.out",
-});
-
-itest!(es_private_fields {
- args: "run --quiet --reload run/es_private_fields.js",
- output: "run/es_private_fields.js.out",
-});
-
-itest!(ts_import_from_js {
- args: "run --allow-import --quiet --reload run/ts_import_from_js/main.js",
- output: "run/ts_import_from_js/main.out",
- http_server: true,
-});
-
-itest!(jsx_import_from_ts {
- args: "run --quiet --reload run/jsx_import_from_ts.ts",
- output: "run/jsx_import_from_ts.ts.out",
-});
-
-itest!(jsx_import_source_pragma {
- args: "run --reload --allow-import run/jsx_import_source_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_with_config {
- args:
- "run --reload --allow-import --config jsx/deno-jsx.jsonc --no-lock run/jsx_import_source_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_with_dev_config {
- args:
- "run --reload --allow-import --config jsx/deno-jsxdev.jsonc --no-lock run/jsx_import_source_pragma.tsx",
- output: "run/jsx_import_source_dev.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_no_pragma {
- args:
- "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_no_pragma_dev {
- args: "run --allow-import --reload --config jsx/deno-jsxdev.jsonc --no-lock run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source_dev.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_import_map {
- args: "run --allow-import --reload --import-map jsx/import-map.json run/jsx_import_source_pragma_import_map.tsx",
- output: "run/jsx_import_source_import_map.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_import_map_dev {
- args: "run --allow-import --reload --import-map jsx/import-map.json --config jsx/deno-jsxdev-import-map.jsonc run/jsx_import_source_pragma_import_map.tsx",
- output: "run/jsx_import_source_import_map_dev.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_precompile_import_map {
- args: "run --allow-import --reload --check --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-precompile.jsonc run/jsx_precompile/no_pragma.tsx",
- output: "run/jsx_precompile/no_pragma.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_precompile_import_map_skip_element {
- args: "run --allow-import --reload --check --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-precompile-skip.jsonc run/jsx_precompile/skip.tsx",
- output: "run/jsx_precompile/skip.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_import_map {
- args: "run --allow-import --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-import-map.jsonc run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source_import_map.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_import_map_dev {
- args: "run --allow-import --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsxdev-import-map.jsonc run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source_import_map_dev.out",
- http_server: true,
-});
-
itest!(jsx_import_source_import_map_scoped {
args: "run --allow-import --reload --import-map jsx/import-map-scoped.json --no-lock --config jsx/deno-jsx-import-map.jsonc subdir/jsx_import_source_no_pragma.tsx",
output: "run/jsx_import_source_import_map.out",
@@ -2003,289 +930,12 @@ itest!(jsx_import_source_import_map_scoped_dev {
http_server: true,
});
-itest!(jsx_import_source_pragma_no_check {
- args:
- "run --allow-import --reload --no-check run/jsx_import_source_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_with_config_no_check {
- args: "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock --no-check run/jsx_import_source_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_with_config_vendor_dir {
- args: "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock --vendor $TESTDATA/run/jsx_import_source_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
- temp_cwd: true,
- copy_temp_dir: Some("jsx/"),
-});
-
-itest!(jsx_import_source_no_pragma_no_check {
- args:
- "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock --no-check run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_pragma_import_map_no_check {
- args: "run --allow-import --reload --import-map jsx/import-map.json --no-check run/jsx_import_source_pragma_import_map.tsx",
- output: "run/jsx_import_source_import_map.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_import_map_no_check {
- args: "run --allow-import --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-import-map.jsonc --no-check run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source_import_map.out",
- http_server: true,
-});
-
-itest!(jsx_import_source_error {
- args: "run --config jsx/deno-jsx-error.jsonc --check run/jsx_import_source_no_pragma.tsx",
- output: "run/jsx_import_source_error.out",
- exit_code: 1,
-});
-
-itest!(single_compile_with_reload {
- args: "run --reload --allow-read run/single_compile_with_reload.ts",
- output: "run/single_compile_with_reload.ts.out",
-});
-
-itest!(proto_exploit {
- args: "run run/proto_exploit.js",
- output: "run/proto_exploit.js.out",
-});
-
-itest!(reference_types {
- args: "run --reload --quiet run/reference_types.ts",
- output: "run/reference_types.ts.out",
-});
-
-itest!(references_types_remote {
- http_server: true,
- args: "run --reload --quiet run/reference_types_remote.ts",
- output: "run/reference_types_remote.ts.out",
-});
-
-itest!(reference_types_error {
- args:
- "run --config run/checkjs.tsconfig.json --check run/reference_types_error.js",
- output: "run/reference_types_error.js.out",
- exit_code: 1,
-});
-
-itest!(reference_types_error_vendor_dir {
- args:
- "run --config run/checkjs.tsconfig.json --check --vendor $TESTDATA/run/reference_types_error.js",
- output: "run/reference_types_error.js.out",
- exit_code: 1,
-});
-
-itest!(reference_types_error_no_check {
- args: "run --no-check run/reference_types_error.js",
- output_str: Some(""),
-});
-
-itest!(import_data_url_error_stack {
- args: "run --quiet --reload run/import_data_url_error_stack.ts",
- output: "run/import_data_url_error_stack.ts.out",
- exit_code: 1,
-});
-
-itest!(import_data_url_import_relative {
- args: "run --quiet --reload run/import_data_url_import_relative.ts",
- output: "run/import_data_url_import_relative.ts.out",
- exit_code: 1,
-});
-
-itest!(import_data_url_imports {
- args: "run --allow-import --quiet --reload run/import_data_url_imports.ts",
- output: "run/import_data_url_imports.ts.out",
- http_server: true,
-});
-
-itest!(import_data_url_jsx {
- args: "run --quiet --reload run/import_data_url_jsx.ts",
- output: "run/import_data_url_jsx.ts.out",
-});
-
-itest!(import_data_url {
- args: "run --quiet --reload run/import_data_url.ts",
- output: "run/import_data_url.ts.out",
-});
-
-itest!(import_dynamic_data_url {
- args: "run --quiet --reload run/import_dynamic_data_url.ts",
- output: "run/import_dynamic_data_url.ts.out",
-});
-
-itest!(import_blob_url_error_stack {
- args: "run --quiet --reload run/import_blob_url_error_stack.ts",
- output: "run/import_blob_url_error_stack.ts.out",
- exit_code: 1,
-});
-
-itest!(import_blob_url_import_relative {
- args: "run --quiet --reload run/import_blob_url_import_relative.ts",
- output: "run/import_blob_url_import_relative.ts.out",
- exit_code: 1,
-});
-
-itest!(import_blob_url_imports {
- args:
- "run --allow-import --quiet --reload --allow-net=localhost:4545 run/import_blob_url_imports.ts",
- output: "run/import_blob_url_imports.ts.out",
- http_server: true,
-});
-
-itest!(import_blob_url_jsx {
- args: "run --quiet --reload run/import_blob_url_jsx.ts",
- output: "run/import_blob_url_jsx.ts.out",
-});
-
-itest!(import_blob_url {
- args: "run --quiet --reload run/import_blob_url.ts",
- output: "run/import_blob_url.ts.out",
-});
-
-itest!(import_file_with_colon {
- args: "run --allow-import --quiet --reload run/import_file_with_colon.ts",
- output: "run/import_file_with_colon.ts.out",
- http_server: true,
-});
-
-itest!(import_extensionless {
- args: "run --allow-import --quiet --reload run/import_extensionless.ts",
- output: "run/import_extensionless.ts.out",
- http_server: true,
-});
-
-itest!(classic_workers_event_loop {
- args:
- "run --enable-testing-features-do-not-use run/classic_workers_event_loop.js",
- output: "run/classic_workers_event_loop.js.out",
-});
-
// FIXME(bartlomieju): disabled, because this test is very flaky on CI
// itest!(local_sources_not_cached_in_memory {
// args: "run --allow-read --allow-write run/no_mem_cache.js",
// output: "run/no_mem_cache.js.out",
// });
-// This test checks that inline source map data is used. It uses a hand crafted
-// source map that maps to a file that exists, but is not loaded into the module
-// graph (inline_js_source_map_2.ts) (because there are no direct dependencies).
-// Source line is not remapped because no inline source contents are included in
-// the sourcemap and the file is not present in the dependency graph.
-itest!(inline_js_source_map_2 {
- args: "run --quiet run/inline_js_source_map_2.js",
- output: "run/inline_js_source_map_2.js.out",
- exit_code: 1,
-});
-
-// This test checks that inline source map data is used. It uses a hand crafted
-// source map that maps to a file that exists, but is not loaded into the module
-// graph (inline_js_source_map_2.ts) (because there are no direct dependencies).
-// Source line remapped using th inline source contents that are included in the
-// inline source map.
-itest!(inline_js_source_map_2_with_inline_contents {
- args: "run --quiet run/inline_js_source_map_2_with_inline_contents.js",
- output: "run/inline_js_source_map_2_with_inline_contents.js.out",
- exit_code: 1,
-});
-
-// This test checks that inline source map data is used. It uses a hand crafted
-// source map that maps to a file that exists, and is loaded into the module
-// graph because of a direct import statement (inline_js_source_map.ts). The
-// source map was generated from an earlier version of this file, where the throw
-// was not commented out. The source line is remapped using source contents that
-// from the module graph.
-itest!(inline_js_source_map_with_contents_from_graph {
- args: "run --allow-import --quiet run/inline_js_source_map_with_contents_from_graph.js",
- output: "run/inline_js_source_map_with_contents_from_graph.js.out",
- exit_code: 1,
- http_server: true,
-});
-
-// This test ensures that a descriptive error is shown when we're unable to load
-// the import map. Even though this tests only the `run` subcommand, we can be sure
-// that the error message is similar for other subcommands as they all use
-// `program_state.maybe_import_map` to access the import map underneath.
-itest!(error_import_map_unable_to_load {
- args: "run --import-map=import_maps/does_not_exist.json import_maps/test.ts",
- output: "run/error_import_map_unable_to_load.out",
- exit_code: 1,
-});
-
-// Test that setting `self` in the main thread to some other value doesn't break
-// the world.
-itest!(replace_self {
- args: "run run/replace_self.js",
- output: "run/replace_self.js.out",
-});
-
-itest!(worker_event_handler_test {
- args: "run --quiet --reload --allow-read run/worker_event_handler_test.js",
- output: "run/worker_event_handler_test.js.out",
-});
-
-itest!(worker_close_race {
- args: "run --quiet --reload --allow-read run/worker_close_race.js",
- output: "run/worker_close_race.js.out",
-});
-
-itest!(worker_drop_handle_race {
- args: "run --quiet --reload --allow-read run/worker_drop_handle_race.js",
- output: "run/worker_drop_handle_race.js.out",
- exit_code: 1,
-});
-
-itest!(worker_drop_handle_race_terminate {
- args: "run run/worker_drop_handle_race_terminate.js",
- output: "run/worker_drop_handle_race_terminate.js.out",
-});
-
-itest!(worker_close_nested {
- args: "run --quiet --reload --allow-read run/worker_close_nested.js",
- output: "run/worker_close_nested.js.out",
-});
-
-itest!(worker_message_before_close {
- args: "run --quiet --reload --allow-read run/worker_message_before_close.js",
- output: "run/worker_message_before_close.js.out",
-});
-
-itest!(worker_close_in_wasm_reactions {
- args:
- "run --quiet --reload --allow-read run/worker_close_in_wasm_reactions.js",
- output: "run/worker_close_in_wasm_reactions.js.out",
-});
-
-itest!(shebang_tsc {
- args: "run --quiet --check run/shebang.ts",
- output: "run/shebang.ts.out",
-});
-
-itest!(shebang_swc {
- args: "run --quiet run/shebang.ts",
- output: "run/shebang.ts.out",
-});
-
-itest!(shebang_with_json_imports_tsc {
- args: "run --quiet import_attributes/json_with_shebang.ts",
- output: "import_attributes/json_with_shebang.ts.out",
- exit_code: 1,
-});
-
-itest!(shebang_with_json_imports_swc {
- args: "run --quiet --no-check import_attributes/json_with_shebang.ts",
- output: "import_attributes/json_with_shebang.ts.out",
- exit_code: 1,
-});
-
#[test]
fn no_validate_asm() {
let output = util::deno_cmd()
@@ -2523,7 +1173,6 @@ fn dont_cache_on_check_fail() {
mod permissions {
use test_util as util;
- use test_util::itest;
use util::TestContext;
#[test]
@@ -2973,31 +1622,6 @@ mod permissions {
});
}
- itest!(_063_permissions_revoke {
- args: "run --allow-read=foo,bar run/063_permissions_revoke.ts",
- output: "run/063_permissions_revoke.ts.out",
- });
-
- itest!(_063_permissions_revoke_sync {
- args: "run --allow-read=foo,bar run/063_permissions_revoke_sync.ts",
- output: "run/063_permissions_revoke.ts.out",
- });
-
- itest!(_064_permissions_revoke_global {
- args: "run --allow-read=foo,bar run/064_permissions_revoke_global.ts",
- output: "run/064_permissions_revoke_global.ts.out",
- });
-
- itest!(_064_permissions_revoke_global_sync {
- args: "run --allow-read=foo,bar run/064_permissions_revoke_global_sync.ts",
- output: "run/064_permissions_revoke_global.ts.out",
- });
-
- itest!(_065_permissions_revoke_net {
- args: "run --allow-net run/065_permissions_revoke_net.ts",
- output: "run/065_permissions_revoke_net.ts.out",
- });
-
#[test]
fn _066_prompt() {
TestContext::default()
@@ -3033,63 +1657,8 @@ mod permissions {
console.expect("The end of test");
});
}
-
- itest!(dynamic_import_static_analysis_no_permissions {
- args: "run --quiet --reload --no-prompt dynamic_import/static_analysis_no_permissions.ts",
- output: "dynamic_import/static_analysis_no_permissions.ts.out",
- });
-
- itest!(dynamic_import_permissions_remote_remote {
- args: "run --quiet --reload --allow-import=localhost:4545 dynamic_import/permissions_remote_remote.ts",
- output: "dynamic_import/permissions_remote_remote.ts.out",
- http_server: true,
- exit_code: 1,
- });
-
- itest!(dynamic_import_permissions_data_remote {
- args: "run --quiet --reload --allow-import=localhost:4545 dynamic_import/permissions_data_remote.ts",
- output: "dynamic_import/permissions_data_remote.ts.out",
- http_server: true,
- exit_code: 1,
- });
-
- itest!(dynamic_import_permissions_blob_remote {
- args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_blob_remote.ts",
- output: "dynamic_import/permissions_blob_remote.ts.out",
- http_server: true,
- exit_code: 1,
- });
-
- itest!(dynamic_import_permissions_data_local {
- args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_data_local.ts",
- output: "dynamic_import/permissions_data_local.ts.out",
- http_server: true,
- exit_code: 1,
- });
-
- itest!(dynamic_import_permissions_blob_local {
- args: "run --quiet --reload --allow-net=localhost:4545 dynamic_import/permissions_blob_local.ts",
- output: "dynamic_import/permissions_blob_local.ts.out",
- http_server: true,
- exit_code: 1,
- });
}
-itest!(tls_starttls {
- args: "run --quiet --reload --allow-net --allow-read --cert tls/RootCA.pem --config ../config/deno.json run/tls_starttls.js",
- output: "run/tls.out",
-});
-
-itest!(tls_connecttls {
- args: "run --quiet --reload --allow-net --allow-read --cert tls/RootCA.pem --config ../config/deno.json run/tls_connecttls.js",
- output: "run/tls.out",
-});
-
-itest!(byte_order_mark {
- args: "run --no-check run/byte_order_mark.ts",
- output: "run/byte_order_mark.out",
-});
-
#[test]
#[cfg(windows)]
fn process_stdin_read_unblock() {
@@ -3137,24 +1706,6 @@ fn issue9750() {
});
}
-// Regression test for https://github.com/denoland/deno/issues/11451.
-itest!(dom_exception_formatting {
- args: "run run/dom_exception_formatting.ts",
- output: "run/dom_exception_formatting.ts.out",
- exit_code: 1,
-});
-
-itest!(long_data_url_formatting {
- args: "run run/long_data_url_formatting.ts",
- output: "run/long_data_url_formatting.ts.out",
- exit_code: 1,
-});
-
-itest!(eval_context_throw_dom_exception {
- args: "run run/eval_context_throw_dom_exception.js",
- output: "run/eval_context_throw_dom_exception.js.out",
-});
-
#[test]
#[cfg(unix)]
fn navigator_language_unix() {
@@ -3278,85 +1829,6 @@ fn issue12807() {
assert!(status.success());
}
-itest!(issue_13562 {
- args: "run run/issue13562.ts",
- output: "run/issue13562.ts.out",
-});
-
-itest!(import_attributes_static_import {
- args: "run --allow-read import_attributes/static_import.ts",
- output: "import_attributes/static_import.out",
-});
-
-itest!(import_attributes_static_export {
- args: "run --allow-read import_attributes/static_export.ts",
- output: "import_attributes/static_export.out",
-});
-
-itest!(import_attributes_static_error {
- args: "run --allow-read import_attributes/static_error.ts",
- output: "import_attributes/static_error.out",
- exit_code: 1,
-});
-
-itest!(import_attributes_dynamic_import {
- args: "run --allow-read --check import_attributes/dynamic_import.ts",
- output: "import_attributes/dynamic_import.out",
-});
-
-itest!(import_attributes_dynamic_error {
- args: "run --allow-read import_attributes/dynamic_error.ts",
- output: "import_attributes/dynamic_error.out",
- exit_code: 1,
-});
-
-itest!(import_attributes_type_check {
- args: "run --allow-read --check import_attributes/type_check.ts",
- output: "import_attributes/type_check.out",
- exit_code: 1,
-});
-
-itest!(colors_without_global_this {
- args: "run run/colors_without_globalThis.js",
- output_str: Some("true\n"),
-});
-
-itest!(config_auto_discovered_for_local_script {
- args: "run --quiet run/with_config/frontend_work.ts",
- output_str: Some("ok\n"),
-});
-
-itest!(config_auto_discovered_for_local_script_log {
- args: "run -L debug run/with_config/frontend_work.ts",
- output: "run/with_config/auto_discovery_log.out",
-});
-
-itest!(no_config_auto_discovery_for_local_script {
- args: "run --quiet --no-config --check run/with_config/frontend_work.ts",
- output: "run/with_config/no_auto_discovery.out",
- exit_code: 1,
-});
-
-itest!(config_not_auto_discovered_for_remote_script {
- args: "run --allow-import --quiet http://127.0.0.1:4545/run/with_config/server_side_work.ts",
- output_str: Some("ok\n"),
- http_server: true,
-});
-
-// In this case we shouldn't discover `package.json` file, because it's in a
-// directory that is above the directory containing `deno.json` file.
-itest!(
- package_json_auto_discovered_for_local_script_arg_with_stop {
- args: "run -L debug with_stop/some/nested/dir/main.ts",
- output: "run/with_package_json/with_stop/main.out",
- cwd: Some("run/with_package_json/"),
- copy_temp_dir: Some("run/with_package_json/"),
- envs: env_vars_for_npm_tests(),
- http_server: true,
- exit_code: 1,
- }
-);
-
#[test]
fn package_json_no_node_modules_dir_created() {
// it should not create a node_modules directory
@@ -3395,81 +1867,6 @@ fn node_modules_dir_no_npm_specifiers_no_dir_created() {
assert!(!temp_dir.path().join("node_modules").exists());
}
-itest!(wasm_streaming_panic_test {
- args: "run run/wasm_streaming_panic_test.js",
- output: "run/wasm_streaming_panic_test.js.out",
- exit_code: 1,
-});
-
-// Regression test for https://github.com/denoland/deno/issues/13897.
-itest!(fetch_async_error_stack {
- args: "run --quiet -A run/fetch_async_error_stack.ts",
- output: "run/fetch_async_error_stack.ts.out",
- exit_code: 1,
-});
-
-itest!(event_listener_error {
- args: "run --quiet run/event_listener_error.ts",
- output: "run/event_listener_error.ts.out",
- exit_code: 1,
-});
-
-itest!(event_listener_error_handled {
- args: "run --quiet run/event_listener_error_handled.ts",
- output: "run/event_listener_error_handled.ts.out",
-});
-
-// https://github.com/denoland/deno/pull/14159#issuecomment-1092285446
-itest!(event_listener_error_immediate_exit {
- args: "run --quiet run/event_listener_error_immediate_exit.ts",
- output: "run/event_listener_error_immediate_exit.ts.out",
- exit_code: 1,
-});
-
-// https://github.com/denoland/deno/pull/14159#issuecomment-1092285446
-itest!(event_listener_error_immediate_exit_worker {
- args: "run --quiet -A run/event_listener_error_immediate_exit_worker.ts",
- output: "run/event_listener_error_immediate_exit_worker.ts.out",
- exit_code: 1,
-});
-
-itest!(set_timeout_error {
- args: "run --quiet run/set_timeout_error.ts",
- output: "run/set_timeout_error.ts.out",
- exit_code: 1,
-});
-
-itest!(set_timeout_error_handled {
- args: "run --quiet run/set_timeout_error_handled.ts",
- output: "run/set_timeout_error_handled.ts.out",
-});
-
-itest!(aggregate_error {
- args: "run --quiet run/aggregate_error.ts",
- output: "run/aggregate_error.out",
- exit_code: 1,
-});
-
-itest!(complex_error {
- args: "run --quiet run/complex_error.ts",
- output: "run/complex_error.ts.out",
- exit_code: 1,
-});
-
-// Regression test for https://github.com/denoland/deno/issues/16340.
-itest!(error_with_errors_prop {
- args: "run --quiet run/error_with_errors_prop.js",
- output: "run/error_with_errors_prop.js.out",
- exit_code: 1,
-});
-
-// Regression test for https://github.com/denoland/deno/issues/12143.
-itest!(js_root_with_ts_check {
- args: "run --quiet --check run/js_root_with_ts_check.js",
- output: "run/js_root_with_ts_check.js.out",
- exit_code: 1,
-});
-
#[test]
fn check_local_then_remote() {
let _http_guard = util::http_server();
@@ -3502,18 +1899,6 @@ fn check_local_then_remote() {
assert_contains!(stderr, "Type 'string' is not assignable to type 'number'.");
}
-// Regression test for https://github.com/denoland/deno/issues/15163
-itest!(check_js_points_to_ts {
- args: "run --quiet --check --config run/checkjs.tsconfig.json run/check_js_points_to_ts/test.js",
- output: "run/check_js_points_to_ts/test.js.out",
- exit_code: 1,
-});
-
-itest!(no_prompt_flag {
- args: "run --quiet --no-prompt run/no_prompt.ts",
- output_str: Some(""),
-});
-
#[test]
fn permission_request_with_no_prompt() {
TestContext::default()
@@ -3544,57 +1929,6 @@ fn deno_no_prompt_environment_variable() {
assert!(output.status.success());
}
-itest!(report_error {
- args: "run --quiet run/report_error.ts",
- output: "run/report_error.ts.out",
- exit_code: 1,
-});
-
-itest!(report_error_handled {
- args: "run --quiet run/report_error_handled.ts",
- output: "run/report_error_handled.ts.out",
-});
-
-// Regression test for https://github.com/denoland/deno/issues/15513.
-itest!(report_error_end_of_program {
- args: "run --quiet run/report_error_end_of_program.ts",
- output: "run/report_error_end_of_program.ts.out",
- exit_code: 1,
-});
-
-itest!(queue_microtask_error {
- args: "run --quiet run/queue_microtask_error.ts",
- output: "run/queue_microtask_error.ts.out",
- exit_code: 1,
-});
-
-itest!(queue_microtask_error_handled {
- args: "run --quiet run/queue_microtask_error_handled.ts",
- output: "run/queue_microtask_error_handled.ts.out",
-});
-
-itest!(spawn_stdout_inherit {
- args: "run --quiet -A run/spawn_stdout_inherit.ts",
- output: "run/spawn_stdout_inherit.ts.out",
-});
-
-itest!(error_name_non_string {
- args: "run --quiet run/error_name_non_string.js",
- output: "run/error_name_non_string.js.out",
- exit_code: 1,
-});
-
-itest!(custom_inspect_url {
- args: "run run/custom_inspect_url.js",
- output: "run/custom_inspect_url.js.out",
-});
-
-itest!(config_json_import {
- args: "run --quiet -c jsx/deno-jsx.json run/config_json_import.ts",
- output: "run/config_json_import.ts.out",
- http_server: true,
-});
-
#[test]
fn running_declaration_files() {
let context = TestContextBuilder::new().use_temp_cwd().build();
@@ -3613,11 +1947,6 @@ fn running_declaration_files() {
}
}
-itest!(test_and_bench_are_noops_in_run {
- args: "run run/test_and_bench_in_run.js",
- output_str: Some(""),
-});
-
#[cfg(not(target_os = "windows"))]
itest!(spawn_kill_permissions {
args: "run --quiet --allow-run=cat spawn_kill_permissions.ts",
@@ -3628,51 +1957,6 @@ itest!(spawn_kill_permissions {
output_str: Some(""),
});
-itest!(followup_dyn_import_resolved {
- args: "run --allow-read run/followup_dyn_import_resolves/main.ts",
- output: "run/followup_dyn_import_resolves/main.ts.out",
-});
-
-itest!(unhandled_rejection {
- args: "run --check run/unhandled_rejection.ts",
- output: "run/unhandled_rejection.ts.out",
-});
-
-itest!(unhandled_rejection_sync_error {
- args: "run --check run/unhandled_rejection_sync_error.ts",
- output: "run/unhandled_rejection_sync_error.ts.out",
-});
-
-// Regression test for https://github.com/denoland/deno/issues/15661
-itest!(unhandled_rejection_dynamic_import {
- args: "run --allow-read run/unhandled_rejection_dynamic_import/main.ts",
- output: "run/unhandled_rejection_dynamic_import/main.ts.out",
- exit_code: 1,
-});
-
-// Regression test for https://github.com/denoland/deno/issues/16909
-itest!(unhandled_rejection_dynamic_import2 {
- args: "run --allow-read run/unhandled_rejection_dynamic_import2/main.ts",
- output: "run/unhandled_rejection_dynamic_import2/main.ts.out",
-});
-
-itest!(rejection_handled {
- args: "run --check run/rejection_handled.ts",
- output: "run/rejection_handled.out",
-});
-
-itest!(nested_error {
- args: "run run/nested_error/main.ts",
- output: "run/nested_error/main.ts.out",
- exit_code: 1,
-});
-
-itest!(node_env_var_allowlist {
- args: "run --no-prompt run/node_env_var_allowlist.ts",
- output: "run/node_env_var_allowlist.ts.out",
- exit_code: 1,
-});
-
#[test]
fn cache_test() {
let _g = util::http_server();
@@ -4212,48 +2496,6 @@ fn broken_stdout_repl() {
assert_not_contains!(stderr, "panic");
}
-itest!(error_cause {
- args: "run run/error_cause.ts",
- output: "run/error_cause.ts.out",
- exit_code: 1,
-});
-
-itest!(error_cause_recursive_aggregate {
- args: "run error_cause_recursive_aggregate.ts",
- output: "error_cause_recursive_aggregate.ts.out",
- exit_code: 1,
-});
-
-itest!(error_cause_recursive_tail {
- args: "run error_cause_recursive_tail.ts",
- output: "error_cause_recursive_tail.ts.out",
- exit_code: 1,
-});
-
-itest!(error_cause_recursive {
- args: "run run/error_cause_recursive.ts",
- output: "run/error_cause_recursive.ts.out",
- exit_code: 1,
-});
-
-itest!(js_without_extension {
- args: "run --ext js --check file_extensions/js_without_extension",
- output: "file_extensions/js_without_extension.out",
- exit_code: 0,
-});
-
-itest!(ts_without_extension {
- args: "run --ext ts --check file_extensions/ts_without_extension",
- output: "file_extensions/ts_without_extension.out",
- exit_code: 0,
-});
-
-itest!(ext_flag_takes_precedence_over_extension {
- args: "run --ext ts --check file_extensions/ts_with_js_extension.js",
- output: "file_extensions/ts_with_js_extension.out",
- exit_code: 0,
-});
-
#[tokio::test(flavor = "multi_thread")]
async fn websocketstream_ping() {
let _g = util::http_server();
@@ -4435,24 +2677,6 @@ async fn websocket_server_idletimeout() {
assert_eq!(child.wait().unwrap().code(), Some(123));
}
-itest!(no_lock_flag {
- args: "run --allow-import --no-lock run/no_lock_flag/main.ts",
- output: "run/no_lock_flag/main.out",
- http_server: true,
- exit_code: 0,
-});
-
-itest!(permission_args {
- args: "run run/001_hello.js --allow-net",
- output: "run/permission_args.out",
- envs: vec![("NO_COLOR".to_string(), "1".to_string())],
-});
-
-itest!(permission_args_quiet {
- args: "run --quiet run/001_hello.js --allow-net",
- output: "run/001_hello.js.out",
-});
-
// Regression test for https://github.com/denoland/deno/issues/16772
#[test]
fn file_fetcher_preserves_permissions() {
@@ -4560,12 +2784,6 @@ fn permission_prompt_escapes_ansi_codes_and_control_chars() {
}
}
-itest!(dynamic_import_syntax_error {
- args: "run -A run/dynamic_import_syntax_error.js",
- output: "run/dynamic_import_syntax_error.js.out",
- exit_code: 1,
-});
-
itest!(extension_import {
args: "run run/extension_import.ts",
output: "run/extension_import.ts.out",
@@ -4679,25 +2897,6 @@ console.log(returnsHi());"#,
.assert_exit_code(1);
}
-itest!(explicit_resource_management {
- args: "run --quiet --check run/explicit_resource_management/main.ts",
- output: "run/explicit_resource_management/main.out",
-});
-
-itest!(unsafe_proto {
- args: "run -A run/unsafe_proto/main.js",
- output: "run/unsafe_proto/main.out",
- http_server: false,
- exit_code: 0,
-});
-
-itest!(unsafe_proto_flag {
- args: "run -A --unstable-unsafe-proto run/unsafe_proto/main.js",
- output: "run/unsafe_proto/main_with_unsafe_proto_flag.out",
- http_server: false,
- exit_code: 0,
-});
-
// TODO(bartlomieju): temporary disabled
// itest!(warn_on_deprecated_api {
// args: "run -A run/warn_on_deprecated_api/main.js",
diff --git a/tests/specs/run/_001_hello/001_hello.js b/tests/specs/run/_001_hello/001_hello.js
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/_001_hello/001_hello.js
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/testdata/run/001_hello.js.out b/tests/specs/run/_001_hello/001_hello.js.out
index 557db03de..557db03de 100644
--- a/tests/testdata/run/001_hello.js.out
+++ b/tests/specs/run/_001_hello/001_hello.js.out
diff --git a/tests/specs/run/_001_hello/__test__.jsonc b/tests/specs/run/_001_hello/__test__.jsonc
new file mode 100644
index 000000000..4fd8126f0
--- /dev/null
+++ b/tests/specs/run/_001_hello/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload 001_hello.js",
+ "output": "001_hello.js.out"
+}
diff --git a/tests/specs/run/_002_hello/002_hello.ts b/tests/specs/run/_002_hello/002_hello.ts
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/_002_hello/002_hello.ts
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/testdata/run/002_hello.ts.out b/tests/specs/run/_002_hello/002_hello.ts.out
index 557db03de..557db03de 100644
--- a/tests/testdata/run/002_hello.ts.out
+++ b/tests/specs/run/_002_hello/002_hello.ts.out
diff --git a/tests/specs/run/_002_hello/__test__.jsonc b/tests/specs/run/_002_hello/__test__.jsonc
new file mode 100644
index 000000000..dde74d27c
--- /dev/null
+++ b/tests/specs/run/_002_hello/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 002_hello.ts",
+ "output": "002_hello.ts.out"
+}
diff --git a/tests/specs/run/_003_relative_import/003_relative_import.ts b/tests/specs/run/_003_relative_import/003_relative_import.ts
new file mode 100644
index 000000000..d392f4a5d
--- /dev/null
+++ b/tests/specs/run/_003_relative_import/003_relative_import.ts
@@ -0,0 +1,3 @@
+import { printHello } from "./print_hello.ts";
+
+printHello();
diff --git a/tests/testdata/run/003_relative_import.ts.out b/tests/specs/run/_003_relative_import/003_relative_import.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/003_relative_import.ts.out
+++ b/tests/specs/run/_003_relative_import/003_relative_import.ts.out
diff --git a/tests/specs/run/_003_relative_import/__test__.jsonc b/tests/specs/run/_003_relative_import/__test__.jsonc
new file mode 100644
index 000000000..7bed2c00a
--- /dev/null
+++ b/tests/specs/run/_003_relative_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 003_relative_import.ts",
+ "output": "003_relative_import.ts.out"
+}
diff --git a/tests/specs/run/_003_relative_import/print_hello.ts b/tests/specs/run/_003_relative_import/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/_003_relative_import/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/testdata/run/004_set_timeout.ts b/tests/specs/run/_004_set_timeout/004_set_timeout.ts
index 214b25086..214b25086 100644
--- a/tests/testdata/run/004_set_timeout.ts
+++ b/tests/specs/run/_004_set_timeout/004_set_timeout.ts
diff --git a/tests/testdata/run/004_set_timeout.ts.out b/tests/specs/run/_004_set_timeout/004_set_timeout.ts.out
index f9264f7fb..f9264f7fb 100644
--- a/tests/testdata/run/004_set_timeout.ts.out
+++ b/tests/specs/run/_004_set_timeout/004_set_timeout.ts.out
diff --git a/tests/specs/run/_004_set_timeout/__test__.jsonc b/tests/specs/run/_004_set_timeout/__test__.jsonc
new file mode 100644
index 000000000..6904dc093
--- /dev/null
+++ b/tests/specs/run/_004_set_timeout/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 004_set_timeout.ts",
+ "output": "004_set_timeout.ts.out"
+}
diff --git a/tests/specs/run/_005_more_imports/005_more_imports.ts b/tests/specs/run/_005_more_imports/005_more_imports.ts
new file mode 100644
index 000000000..c69556be1
--- /dev/null
+++ b/tests/specs/run/_005_more_imports/005_more_imports.ts
@@ -0,0 +1,11 @@
+import { printHello3, returnsFoo2, returnsHi } from "./mod1.ts";
+
+printHello3();
+
+if (returnsHi() !== "Hi") {
+ throw Error("Unexpected");
+}
+
+if (returnsFoo2() !== "Foo") {
+ throw Error("Unexpected");
+}
diff --git a/tests/testdata/run/005_more_imports.ts.out b/tests/specs/run/_005_more_imports/005_more_imports.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/005_more_imports.ts.out
+++ b/tests/specs/run/_005_more_imports/005_more_imports.ts.out
diff --git a/tests/specs/run/_005_more_imports/__test__.jsonc b/tests/specs/run/_005_more_imports/__test__.jsonc
new file mode 100644
index 000000000..159a0265a
--- /dev/null
+++ b/tests/specs/run/_005_more_imports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 005_more_imports.ts",
+ "output": "005_more_imports.ts.out"
+}
diff --git a/tests/specs/run/_005_more_imports/mod1.ts b/tests/specs/run/_005_more_imports/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/_005_more_imports/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/_005_more_imports/print_hello.ts b/tests/specs/run/_005_more_imports/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/_005_more_imports/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/_005_more_imports/subdir2/mod2.ts b/tests/specs/run/_005_more_imports/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/_005_more_imports/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/specs/run/_006_url_imports/006_url_imports.ts b/tests/specs/run/_006_url_imports/006_url_imports.ts
new file mode 100644
index 000000000..4036f27ed
--- /dev/null
+++ b/tests/specs/run/_006_url_imports/006_url_imports.ts
@@ -0,0 +1,3 @@
+import { printHello } from "http://localhost:4545/subdir/mod2.ts";
+printHello();
+console.log("success");
diff --git a/tests/specs/run/_006_url_imports/006_url_imports.ts.out b/tests/specs/run/_006_url_imports/006_url_imports.ts.out
new file mode 100644
index 000000000..989ce33e9
--- /dev/null
+++ b/tests/specs/run/_006_url_imports/006_url_imports.ts.out
@@ -0,0 +1,2 @@
+Hello
+success
diff --git a/tests/specs/run/_006_url_imports/__test__.jsonc b/tests/specs/run/_006_url_imports/__test__.jsonc
new file mode 100644
index 000000000..50c0379ab
--- /dev/null
+++ b/tests/specs/run/_006_url_imports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-import 006_url_imports.ts",
+ "output": "006_url_imports.ts.out"
+}
diff --git a/tests/specs/run/_006_url_imports/print_hello.ts b/tests/specs/run/_006_url_imports/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/_006_url_imports/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/_006_url_imports/subdir2/mod2.ts b/tests/specs/run/_006_url_imports/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/_006_url_imports/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/testdata/run/012_async.ts b/tests/specs/run/_012_async/012_async.ts
index 536197b68..536197b68 100644
--- a/tests/testdata/run/012_async.ts
+++ b/tests/specs/run/_012_async/012_async.ts
diff --git a/tests/testdata/run/012_async.ts.out b/tests/specs/run/_012_async/012_async.ts.out
index 01e79c32a..01e79c32a 100644
--- a/tests/testdata/run/012_async.ts.out
+++ b/tests/specs/run/_012_async/012_async.ts.out
diff --git a/tests/specs/run/_012_async/__test__.jsonc b/tests/specs/run/_012_async/__test__.jsonc
new file mode 100644
index 000000000..2778f0484
--- /dev/null
+++ b/tests/specs/run/_012_async/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 012_async.ts",
+ "output": "012_async.ts.out"
+}
diff --git a/tests/specs/run/_013_dynamic_import/013_dynamic_import.ts b/tests/specs/run/_013_dynamic_import/013_dynamic_import.ts
new file mode 100644
index 000000000..5e73b6eb7
--- /dev/null
+++ b/tests/specs/run/_013_dynamic_import/013_dynamic_import.ts
@@ -0,0 +1,15 @@
+(async () => {
+ const { returnsHi, returnsFoo2, printHello3 } = await import(
+ "./mod1.ts"
+ );
+
+ printHello3();
+
+ if (returnsHi() !== "Hi") {
+ throw Error("Unexpected");
+ }
+
+ if (returnsFoo2() !== "Foo") {
+ throw Error("Unexpected");
+ }
+})();
diff --git a/tests/testdata/run/013_dynamic_import.ts.out b/tests/specs/run/_013_dynamic_import/013_dynamic_import.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/013_dynamic_import.ts.out
+++ b/tests/specs/run/_013_dynamic_import/013_dynamic_import.ts.out
diff --git a/tests/specs/run/_013_dynamic_import/__test__.jsonc b/tests/specs/run/_013_dynamic_import/__test__.jsonc
new file mode 100644
index 000000000..8be2c975b
--- /dev/null
+++ b/tests/specs/run/_013_dynamic_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read 013_dynamic_import.ts",
+ "output": "013_dynamic_import.ts.out"
+}
diff --git a/tests/specs/run/_013_dynamic_import/mod1.ts b/tests/specs/run/_013_dynamic_import/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/_013_dynamic_import/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/_013_dynamic_import/print_hello.ts b/tests/specs/run/_013_dynamic_import/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/_013_dynamic_import/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/_013_dynamic_import/subdir2/mod2.ts b/tests/specs/run/_013_dynamic_import/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/_013_dynamic_import/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/specs/run/_014_duplicate_import/014_duplicate_import.ts b/tests/specs/run/_014_duplicate_import/014_duplicate_import.ts
new file mode 100644
index 000000000..b996ca8ae
--- /dev/null
+++ b/tests/specs/run/_014_duplicate_import/014_duplicate_import.ts
@@ -0,0 +1,9 @@
+// with all the imports of the same module, the module should only be
+// instantiated once
+import "./auto_print_hello.ts";
+
+import "./auto_print_hello.ts";
+
+(async () => {
+ await import("./auto_print_hello.ts");
+})();
diff --git a/tests/testdata/run/014_duplicate_import.ts.out b/tests/specs/run/_014_duplicate_import/014_duplicate_import.ts.out
index 4effa19f4..4effa19f4 100644
--- a/tests/testdata/run/014_duplicate_import.ts.out
+++ b/tests/specs/run/_014_duplicate_import/014_duplicate_import.ts.out
diff --git a/tests/specs/run/_014_duplicate_import/__test__.jsonc b/tests/specs/run/_014_duplicate_import/__test__.jsonc
new file mode 100644
index 000000000..7172fc183
--- /dev/null
+++ b/tests/specs/run/_014_duplicate_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read 014_duplicate_import.ts ",
+ "output": "014_duplicate_import.ts.out"
+}
diff --git a/tests/specs/run/_014_duplicate_import/auto_print_hello.ts b/tests/specs/run/_014_duplicate_import/auto_print_hello.ts
new file mode 100644
index 000000000..5efa72e03
--- /dev/null
+++ b/tests/specs/run/_014_duplicate_import/auto_print_hello.ts
@@ -0,0 +1,2 @@
+console.log("hello!");
+export default {};
diff --git a/tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js b/tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js
new file mode 100644
index 000000000..136d80f46
--- /dev/null
+++ b/tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js
@@ -0,0 +1,20 @@
+// Importing the same module in parallel, the module should only be
+// instantiated once.
+
+const promises = new Array(100)
+ .fill(null)
+ .map(() => import("./mod1.ts"));
+
+Promise.all(promises).then((imports) => {
+ const mod = imports.reduce((first, cur) => {
+ if (typeof first !== "object") {
+ throw new Error("Expected an object.");
+ }
+ if (first !== cur) {
+ throw new Error("More than one instance of the same module.");
+ }
+ return first;
+ });
+
+ mod.printHello3();
+});
diff --git a/tests/testdata/run/015_duplicate_parallel_import.js.out b/tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/015_duplicate_parallel_import.js.out
+++ b/tests/specs/run/_015_duplicate_parallel_import/015_duplicate_parallel_import.js.out
diff --git a/tests/specs/run/_015_duplicate_parallel_import/__test__.jsonc b/tests/specs/run/_015_duplicate_parallel_import/__test__.jsonc
new file mode 100644
index 000000000..44fe479e2
--- /dev/null
+++ b/tests/specs/run/_015_duplicate_parallel_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read 015_duplicate_parallel_import.js",
+ "output": "015_duplicate_parallel_import.js.out"
+}
diff --git a/tests/specs/run/_015_duplicate_parallel_import/mod1.ts b/tests/specs/run/_015_duplicate_parallel_import/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/_015_duplicate_parallel_import/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/_015_duplicate_parallel_import/print_hello.ts b/tests/specs/run/_015_duplicate_parallel_import/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/_015_duplicate_parallel_import/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/_015_duplicate_parallel_import/subdir2/mod2.ts b/tests/specs/run/_015_duplicate_parallel_import/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/_015_duplicate_parallel_import/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/testdata/run/016_double_await.ts b/tests/specs/run/_016_double_await/016_double_await.ts
index 457a53ff3..457a53ff3 100644
--- a/tests/testdata/run/016_double_await.ts
+++ b/tests/specs/run/_016_double_await/016_double_await.ts
diff --git a/tests/testdata/run/016_double_await.ts.out b/tests/specs/run/_016_double_await/016_double_await.ts.out
index da29283aa..da29283aa 100644
--- a/tests/testdata/run/016_double_await.ts.out
+++ b/tests/specs/run/_016_double_await/016_double_await.ts.out
diff --git a/tests/specs/run/_016_double_await/__test__.jsonc b/tests/specs/run/_016_double_await/__test__.jsonc
new file mode 100644
index 000000000..9ff202716
--- /dev/null
+++ b/tests/specs/run/_016_double_await/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-read --reload 016_double_await.ts",
+ "output": "016_double_await.ts.out"
+}
diff --git a/tests/specs/run/_017_import_redirect/017_import_redirect.ts b/tests/specs/run/_017_import_redirect/017_import_redirect.ts
new file mode 100644
index 000000000..1265dd4ed
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect/017_import_redirect.ts
@@ -0,0 +1,4 @@
+// http -> https redirect would happen:
+import { printHello } from "http://gist.githubusercontent.com/ry/f12b2aa3409e6b52645bc346a9e22929/raw/79318f239f51d764384a8bded8d7c6a833610dde/print_hello.ts";
+
+printHello();
diff --git a/tests/testdata/run/017_import_redirect.ts.out b/tests/specs/run/_017_import_redirect/017_import_redirect.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/017_import_redirect.ts.out
+++ b/tests/specs/run/_017_import_redirect/017_import_redirect.ts.out
diff --git a/tests/specs/run/_017_import_redirect/__test__.jsonc b/tests/specs/run/_017_import_redirect/__test__.jsonc
new file mode 100644
index 000000000..dd5442dcd
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-import --reload --check 017_import_redirect.ts",
+ "output": "017_import_redirect.ts.out"
+}
diff --git a/tests/specs/run/_017_import_redirect_check/017_import_redirect.ts b/tests/specs/run/_017_import_redirect_check/017_import_redirect.ts
new file mode 100644
index 000000000..1265dd4ed
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect_check/017_import_redirect.ts
@@ -0,0 +1,4 @@
+// http -> https redirect would happen:
+import { printHello } from "http://gist.githubusercontent.com/ry/f12b2aa3409e6b52645bc346a9e22929/raw/79318f239f51d764384a8bded8d7c6a833610dde/print_hello.ts";
+
+printHello();
diff --git a/tests/testdata/run/https_import.ts.out b/tests/specs/run/_017_import_redirect_check/017_import_redirect.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/https_import.ts.out
+++ b/tests/specs/run/_017_import_redirect_check/017_import_redirect.ts.out
diff --git a/tests/specs/run/_017_import_redirect_check/__test__.jsonc b/tests/specs/run/_017_import_redirect_check/__test__.jsonc
new file mode 100644
index 000000000..dd5442dcd
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-import --reload --check 017_import_redirect.ts",
+ "output": "017_import_redirect.ts.out"
+}
diff --git a/tests/specs/run/_017_import_redirect_info/017_import_redirect.ts b/tests/specs/run/_017_import_redirect_info/017_import_redirect.ts
new file mode 100644
index 000000000..1265dd4ed
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect_info/017_import_redirect.ts
@@ -0,0 +1,4 @@
+// http -> https redirect would happen:
+import { printHello } from "http://gist.githubusercontent.com/ry/f12b2aa3409e6b52645bc346a9e22929/raw/79318f239f51d764384a8bded8d7c6a833610dde/print_hello.ts";
+
+printHello();
diff --git a/tests/testdata/run/017_import_redirect_info.out b/tests/specs/run/_017_import_redirect_info/017_import_redirect_info.out
index d1850ccb5..d1850ccb5 100644
--- a/tests/testdata/run/017_import_redirect_info.out
+++ b/tests/specs/run/_017_import_redirect_info/017_import_redirect_info.out
diff --git a/tests/specs/run/_017_import_redirect_info/__test__.jsonc b/tests/specs/run/_017_import_redirect_info/__test__.jsonc
new file mode 100644
index 000000000..d23e8dd99
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect_info/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "info --quiet --allow-import --reload 017_import_redirect.ts",
+ "output": "017_import_redirect_info.out"
+}
diff --git a/tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts b/tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts
new file mode 100644
index 000000000..1265dd4ed
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts
@@ -0,0 +1,4 @@
+// http -> https redirect would happen:
+import { printHello } from "http://gist.githubusercontent.com/ry/f12b2aa3409e6b52645bc346a9e22929/raw/79318f239f51d764384a8bded8d7c6a833610dde/print_hello.ts";
+
+printHello();
diff --git a/tests/testdata/run/import_blob_url_imports.ts.out b/tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/import_blob_url_imports.ts.out
+++ b/tests/specs/run/_017_import_redirect_vendor_dir/017_import_redirect.ts.out
diff --git a/tests/specs/run/_017_import_redirect_vendor_dir/__test__.jsonc b/tests/specs/run/_017_import_redirect_vendor_dir/__test__.jsonc
new file mode 100644
index 000000000..dd5442dcd
--- /dev/null
+++ b/tests/specs/run/_017_import_redirect_vendor_dir/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-import --reload --check 017_import_redirect.ts",
+ "output": "017_import_redirect.ts.out"
+}
diff --git a/tests/testdata/run/018_async_catch.ts b/tests/specs/run/_018_async_catch/018_async_catch.ts
index ac43a52e8..ac43a52e8 100644
--- a/tests/testdata/run/018_async_catch.ts
+++ b/tests/specs/run/_018_async_catch/018_async_catch.ts
diff --git a/tests/testdata/run/018_async_catch.ts.out b/tests/specs/run/_018_async_catch/018_async_catch.ts.out
index 4fc219973..4fc219973 100644
--- a/tests/testdata/run/018_async_catch.ts.out
+++ b/tests/specs/run/_018_async_catch/018_async_catch.ts.out
diff --git a/tests/specs/run/_018_async_catch/__test__.jsonc b/tests/specs/run/_018_async_catch/__test__.jsonc
new file mode 100644
index 000000000..7995c79fd
--- /dev/null
+++ b/tests/specs/run/_018_async_catch/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 018_async_catch.ts",
+ "output": "018_async_catch.ts.out"
+}
diff --git a/tests/specs/run/_019_media_types/019_media_types.ts b/tests/specs/run/_019_media_types/019_media_types.ts
new file mode 100644
index 000000000..d985bd249
--- /dev/null
+++ b/tests/specs/run/_019_media_types/019_media_types.ts
@@ -0,0 +1,24 @@
+// When run against the test HTTP server, it will serve different media types
+// based on the URL containing `.t#.` strings, which exercises the different
+// mapping of media types end to end.
+
+import { loaded as loadedTs1 } from "http://localhost:4545/subdir/mt_text_typescript.t1.ts";
+import { loaded as loadedTs2 } from "http://localhost:4545/subdir/mt_video_vdn.t2.ts";
+import { loaded as loadedTs3 } from "http://localhost:4545/subdir/mt_video_mp2t.t3.ts";
+import { loaded as loadedTs4 } from "http://localhost:4545/subdir/mt_application_x_typescript.t4.ts";
+import { loaded as loadedJs1 } from "http://localhost:4545/subdir/mt_text_javascript.j1.js";
+import { loaded as loadedJs2 } from "http://localhost:4545/subdir/mt_application_ecmascript.j2.js";
+import { loaded as loadedJs3 } from "http://localhost:4545/subdir/mt_text_ecmascript.j3.js";
+import { loaded as loadedJs4 } from "http://localhost:4545/subdir/mt_application_x_javascript.j4.js";
+
+console.log(
+ "success",
+ loadedTs1,
+ loadedTs2,
+ loadedTs3,
+ loadedTs4,
+ loadedJs1,
+ loadedJs2,
+ loadedJs3,
+ loadedJs4,
+);
diff --git a/tests/testdata/run/019_media_types.ts.out b/tests/specs/run/_019_media_types/019_media_types.ts.out
index b3e94678c..b3e94678c 100644
--- a/tests/testdata/run/019_media_types.ts.out
+++ b/tests/specs/run/_019_media_types/019_media_types.ts.out
diff --git a/tests/specs/run/_019_media_types/__test__.jsonc b/tests/specs/run/_019_media_types/__test__.jsonc
new file mode 100644
index 000000000..b741a0bf2
--- /dev/null
+++ b/tests/specs/run/_019_media_types/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-import 019_media_types.ts",
+ "output": "019_media_types.ts.out"
+}
diff --git a/tests/specs/run/_020_json_modules/020_json_modules.ts b/tests/specs/run/_020_json_modules/020_json_modules.ts
new file mode 100644
index 000000000..bde024cf8
--- /dev/null
+++ b/tests/specs/run/_020_json_modules/020_json_modules.ts
@@ -0,0 +1,2 @@
+import config from "./config.json";
+console.log(JSON.stringify(config));
diff --git a/tests/specs/run/_020_json_modules/020_json_modules.ts.out b/tests/specs/run/_020_json_modules/020_json_modules.ts.out
new file mode 100644
index 000000000..8bf0b4146
--- /dev/null
+++ b/tests/specs/run/_020_json_modules/020_json_modules.ts.out
@@ -0,0 +1,3 @@
+error: Expected a JavaScript or TypeScript module, but identified a Json module. Consider importing Json modules with an import attribute with the type of "json".
+ Specifier: [WILDCARD]/config.json
+[WILDCARD] \ No newline at end of file
diff --git a/tests/specs/run/_020_json_modules/__test__.jsonc b/tests/specs/run/_020_json_modules/__test__.jsonc
new file mode 100644
index 000000000..618616438
--- /dev/null
+++ b/tests/specs/run/_020_json_modules/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload 020_json_modules.ts",
+ "output": "020_json_modules.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/_020_json_modules/config.json b/tests/specs/run/_020_json_modules/config.json
new file mode 100644
index 000000000..01c3b5e79
--- /dev/null
+++ b/tests/specs/run/_020_json_modules/config.json
@@ -0,0 +1,6 @@
+{
+ "foo": {
+ "bar": true,
+ "baz": ["qat", 1]
+ }
+}
diff --git a/tests/specs/run/_021_mjs_modules/021_mjs_modules.ts b/tests/specs/run/_021_mjs_modules/021_mjs_modules.ts
new file mode 100644
index 000000000..326fce3e5
--- /dev/null
+++ b/tests/specs/run/_021_mjs_modules/021_mjs_modules.ts
@@ -0,0 +1,2 @@
+import { isMod5 } from "./mod5.mjs";
+console.log(isMod5);
diff --git a/tests/testdata/run/021_mjs_modules.ts.out b/tests/specs/run/_021_mjs_modules/021_mjs_modules.ts.out
index 27ba77dda..27ba77dda 100644
--- a/tests/testdata/run/021_mjs_modules.ts.out
+++ b/tests/specs/run/_021_mjs_modules/021_mjs_modules.ts.out
diff --git a/tests/specs/run/_021_mjs_modules/__test__.jsonc b/tests/specs/run/_021_mjs_modules/__test__.jsonc
new file mode 100644
index 000000000..f02965886
--- /dev/null
+++ b/tests/specs/run/_021_mjs_modules/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 021_mjs_modules.ts",
+ "output": "021_mjs_modules.ts.out"
+}
diff --git a/tests/specs/run/_021_mjs_modules/mod5.mjs b/tests/specs/run/_021_mjs_modules/mod5.mjs
new file mode 100644
index 000000000..f21d8862b
--- /dev/null
+++ b/tests/specs/run/_021_mjs_modules/mod5.mjs
@@ -0,0 +1 @@
+export const isMod5 = true;
diff --git a/tests/testdata/run/025_reload_js_type_error.js b/tests/specs/run/_025_reload_js_type_error/025_reload_js_type_error.js
index 660626a68..660626a68 100644
--- a/tests/testdata/run/025_reload_js_type_error.js
+++ b/tests/specs/run/_025_reload_js_type_error/025_reload_js_type_error.js
diff --git a/tests/testdata/run/025_reload_js_type_error.js.out b/tests/specs/run/_025_reload_js_type_error/025_reload_js_type_error.js.out
index ce0136250..ce0136250 100644
--- a/tests/testdata/run/025_reload_js_type_error.js.out
+++ b/tests/specs/run/_025_reload_js_type_error/025_reload_js_type_error.js.out
diff --git a/tests/specs/run/_025_reload_js_type_error/__test__.jsonc b/tests/specs/run/_025_reload_js_type_error/__test__.jsonc
new file mode 100644
index 000000000..ce098f909
--- /dev/null
+++ b/tests/specs/run/_025_reload_js_type_error/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 025_reload_js_type_error.js",
+ "output": "025_reload_js_type_error.js.out"
+}
diff --git a/tests/testdata/run/027_redirect_typescript.ts b/tests/specs/run/_027_redirect_typescript/027_redirect_typescript.ts
index 584341975..584341975 100644
--- a/tests/testdata/run/027_redirect_typescript.ts
+++ b/tests/specs/run/_027_redirect_typescript/027_redirect_typescript.ts
diff --git a/tests/testdata/run/027_redirect_typescript.ts.out b/tests/specs/run/_027_redirect_typescript/027_redirect_typescript.ts.out
index 480d4e8ca..480d4e8ca 100644
--- a/tests/testdata/run/027_redirect_typescript.ts.out
+++ b/tests/specs/run/_027_redirect_typescript/027_redirect_typescript.ts.out
diff --git a/tests/specs/run/_027_redirect_typescript/__test__.jsonc b/tests/specs/run/_027_redirect_typescript/__test__.jsonc
new file mode 100644
index 000000000..fca55c9f8
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-import 027_redirect_typescript.ts",
+ "output": "027_redirect_typescript.ts.out"
+}
diff --git a/tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts b/tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts
new file mode 100644
index 000000000..584341975
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts
@@ -0,0 +1,2 @@
+import { value } from "http://localhost:4547/redirects/redirect4.ts";
+console.log(value);
diff --git a/tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts.out b/tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts.out
new file mode 100644
index 000000000..480d4e8ca
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript_vendor_dir/027_redirect_typescript.ts.out
@@ -0,0 +1 @@
+4 imports 1
diff --git a/tests/specs/run/_027_redirect_typescript_vendor_dir/__test__.jsonc b/tests/specs/run/_027_redirect_typescript_vendor_dir/__test__.jsonc
new file mode 100644
index 000000000..f35557907
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript_vendor_dir/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --vendor --allow-import 027_redirect_typescript.ts",
+ "output": "027_redirect_typescript.ts.out"
+}
diff --git a/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect1.ts b/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect1.ts
new file mode 100644
index 000000000..d674be88c
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect1.ts
@@ -0,0 +1 @@
+export const redirect = 1;
diff --git a/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect4.ts b/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect4.ts
new file mode 100644
index 000000000..45c65c5eb
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/http_localhost_4545/subdir/redirects/redirect4.ts
@@ -0,0 +1,2 @@
+import { redirect } from "./redirect1.ts";
+export const value = `4 imports ${redirect}`;
diff --git a/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/manifest.json b/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/manifest.json
new file mode 100644
index 000000000..49cc42e8c
--- /dev/null
+++ b/tests/specs/run/_027_redirect_typescript_vendor_dir/vendor/manifest.json
@@ -0,0 +1,9 @@
+{
+ "modules": {
+ "http://localhost:4547/redirects/redirect4.ts": {
+ "headers": {
+ "location": "http://localhost:4545/subdir/redirects/redirect4.ts"
+ }
+ }
+ }
+}
diff --git a/tests/testdata/run/028_args.ts b/tests/specs/run/_028_args/028_args.ts
index ec41d52f9..ec41d52f9 100644
--- a/tests/testdata/run/028_args.ts
+++ b/tests/specs/run/_028_args/028_args.ts
diff --git a/tests/testdata/run/028_args.ts.out b/tests/specs/run/_028_args/028_args.ts.out
index 0f1b5c59e..0f1b5c59e 100644
--- a/tests/testdata/run/028_args.ts.out
+++ b/tests/specs/run/_028_args/028_args.ts.out
diff --git a/tests/specs/run/_028_args/__test__.jsonc b/tests/specs/run/_028_args/__test__.jsonc
new file mode 100644
index 000000000..6ab81bf21
--- /dev/null
+++ b/tests/specs/run/_028_args/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 028_args.ts --arg1 val1 --arg2=val2 -- arg3 arg4",
+ "output": "028_args.ts.out"
+}
diff --git a/tests/specs/run/_033_import_map_data_uri/__test__.jsonc b/tests/specs/run/_033_import_map_data_uri/__test__.jsonc
new file mode 100644
index 000000000..400269c75
--- /dev/null
+++ b/tests/specs/run/_033_import_map_data_uri/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-import --import-map=data:application/json;charset=utf-8;base64,ewogICJpbXBvcnRzIjogewogICAgInRlc3Rfc2VydmVyLyI6ICJodHRwOi8vbG9jYWxob3N0OjQ1NDUvIgogIH0KfQ== test_data.ts",
+ "output": "test_data.ts.out"
+}
diff --git a/tests/specs/run/_033_import_map_data_uri/lodash/lodash.ts b/tests/specs/run/_033_import_map_data_uri/lodash/lodash.ts
new file mode 100644
index 000000000..2ec04ed3c
--- /dev/null
+++ b/tests/specs/run/_033_import_map_data_uri/lodash/lodash.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped lodash!");
diff --git a/tests/specs/run/_033_import_map_data_uri/lodash/other_file.ts b/tests/specs/run/_033_import_map_data_uri/lodash/other_file.ts
new file mode 100644
index 000000000..714adae3f
--- /dev/null
+++ b/tests/specs/run/_033_import_map_data_uri/lodash/other_file.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped lodash dir!");
diff --git a/tests/testdata/run/import_maps/test_data.ts b/tests/specs/run/_033_import_map_data_uri/test_data.ts
index 5e8efea69..5e8efea69 100644
--- a/tests/testdata/run/import_maps/test_data.ts
+++ b/tests/specs/run/_033_import_map_data_uri/test_data.ts
diff --git a/tests/testdata/run/import_maps/test_data.ts.out b/tests/specs/run/_033_import_map_data_uri/test_data.ts.out
index da996dc0d..da996dc0d 100644
--- a/tests/testdata/run/import_maps/test_data.ts.out
+++ b/tests/specs/run/_033_import_map_data_uri/test_data.ts.out
diff --git a/tests/testdata/run/033_import_map_remote.out b/tests/specs/run/_033_import_map_remote/033_import_map_remote.out
index 804fa0d57..804fa0d57 100644
--- a/tests/testdata/run/033_import_map_remote.out
+++ b/tests/specs/run/_033_import_map_remote/033_import_map_remote.out
diff --git a/tests/specs/run/_033_import_map_remote/__test__.jsonc b/tests/specs/run/_033_import_map_remote/__test__.jsonc
new file mode 100644
index 000000000..20c848d49
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-import --import-map=import_map_remote.json test_remote.ts",
+ "output": "033_import_map_remote.out"
+}
diff --git a/tests/specs/run/_033_import_map_remote/import_map_remote.json b/tests/specs/run/_033_import_map_remote/import_map_remote.json
new file mode 100644
index 000000000..190fc4f55
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/import_map_remote.json
@@ -0,0 +1,10 @@
+{
+ "imports": {
+ "moment": "./moment/moment.ts",
+ "moment/": "./moment/",
+ "lodash": "./lodash/lodash.ts",
+ "lodash/": "./lodash/",
+ "https://www.unpkg.com/vue/dist/vue.runtime.esm.js": "./vue.ts",
+ "print_hello": "./print_hello.ts"
+ }
+}
diff --git a/tests/specs/run/_033_import_map_remote/lodash/lodash.ts b/tests/specs/run/_033_import_map_remote/lodash/lodash.ts
new file mode 100644
index 000000000..2ec04ed3c
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/lodash/lodash.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped lodash!");
diff --git a/tests/specs/run/_033_import_map_remote/lodash/other_file.ts b/tests/specs/run/_033_import_map_remote/lodash/other_file.ts
new file mode 100644
index 000000000..714adae3f
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/lodash/other_file.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped lodash dir!");
diff --git a/tests/specs/run/_033_import_map_remote/moment/moment.ts b/tests/specs/run/_033_import_map_remote/moment/moment.ts
new file mode 100644
index 000000000..2b54a431e
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/moment/moment.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped moment!");
diff --git a/tests/specs/run/_033_import_map_remote/moment/other_file.ts b/tests/specs/run/_033_import_map_remote/moment/other_file.ts
new file mode 100644
index 000000000..24f3a0226
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/moment/other_file.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped moment dir!");
diff --git a/tests/specs/run/_033_import_map_remote/print_hello.ts b/tests/specs/run/_033_import_map_remote/print_hello.ts
new file mode 100644
index 000000000..794257390
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello, world!");
+}
diff --git a/tests/specs/run/_033_import_map_remote/test_remote.ts b/tests/specs/run/_033_import_map_remote/test_remote.ts
new file mode 100644
index 000000000..206bdbd5f
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/test_remote.ts
@@ -0,0 +1,5 @@
+import "moment";
+import "moment/other_file.ts";
+import "lodash";
+import "lodash/other_file.ts";
+import "https://www.unpkg.com/vue/dist/vue.runtime.esm.js";
diff --git a/tests/specs/run/_033_import_map_remote/vue.ts b/tests/specs/run/_033_import_map_remote/vue.ts
new file mode 100644
index 000000000..76dbe1917
--- /dev/null
+++ b/tests/specs/run/_033_import_map_remote/vue.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped Vue!");
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/033_import_map_remote.out b/tests/specs/run/_033_import_map_vendor_dir_remote/033_import_map_remote.out
new file mode 100644
index 000000000..804fa0d57
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/033_import_map_remote.out
@@ -0,0 +1,5 @@
+Hello from remapped moment!
+Hello from remapped moment dir!
+Hello from remapped lodash!
+Hello from remapped lodash dir!
+Hello from remapped Vue!
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/__test__.jsonc b/tests/specs/run/_033_import_map_vendor_dir_remote/__test__.jsonc
new file mode 100644
index 000000000..4eb3a22c5
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-import --import-map=import_map_remote.json --vendor test_remote.ts",
+ "output": "033_import_map_remote.out"
+}
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/import_map_remote.json b/tests/specs/run/_033_import_map_vendor_dir_remote/import_map_remote.json
new file mode 100644
index 000000000..190fc4f55
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/import_map_remote.json
@@ -0,0 +1,10 @@
+{
+ "imports": {
+ "moment": "./moment/moment.ts",
+ "moment/": "./moment/",
+ "lodash": "./lodash/lodash.ts",
+ "lodash/": "./lodash/",
+ "https://www.unpkg.com/vue/dist/vue.runtime.esm.js": "./vue.ts",
+ "print_hello": "./print_hello.ts"
+ }
+}
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/lodash/lodash.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/lodash/lodash.ts
new file mode 100644
index 000000000..2ec04ed3c
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/lodash/lodash.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped lodash!");
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/lodash/other_file.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/lodash/other_file.ts
new file mode 100644
index 000000000..714adae3f
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/lodash/other_file.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped lodash dir!");
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/moment/moment.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/moment/moment.ts
new file mode 100644
index 000000000..2b54a431e
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/moment/moment.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped moment!");
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/moment/other_file.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/moment/other_file.ts
new file mode 100644
index 000000000..24f3a0226
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/moment/other_file.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped moment dir!");
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/print_hello.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/print_hello.ts
new file mode 100644
index 000000000..794257390
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello, world!");
+}
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/test_remote.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/test_remote.ts
new file mode 100644
index 000000000..206bdbd5f
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/test_remote.ts
@@ -0,0 +1,5 @@
+import "moment";
+import "moment/other_file.ts";
+import "lodash";
+import "lodash/other_file.ts";
+import "https://www.unpkg.com/vue/dist/vue.runtime.esm.js";
diff --git a/tests/specs/run/_033_import_map_vendor_dir_remote/vue.ts b/tests/specs/run/_033_import_map_vendor_dir_remote/vue.ts
new file mode 100644
index 000000000..76dbe1917
--- /dev/null
+++ b/tests/specs/run/_033_import_map_vendor_dir_remote/vue.ts
@@ -0,0 +1 @@
+console.log("Hello from remapped Vue!");
diff --git a/tests/specs/run/_035_cached_only_flag/019_media_types.ts b/tests/specs/run/_035_cached_only_flag/019_media_types.ts
new file mode 100644
index 000000000..d985bd249
--- /dev/null
+++ b/tests/specs/run/_035_cached_only_flag/019_media_types.ts
@@ -0,0 +1,24 @@
+// When run against the test HTTP server, it will serve different media types
+// based on the URL containing `.t#.` strings, which exercises the different
+// mapping of media types end to end.
+
+import { loaded as loadedTs1 } from "http://localhost:4545/subdir/mt_text_typescript.t1.ts";
+import { loaded as loadedTs2 } from "http://localhost:4545/subdir/mt_video_vdn.t2.ts";
+import { loaded as loadedTs3 } from "http://localhost:4545/subdir/mt_video_mp2t.t3.ts";
+import { loaded as loadedTs4 } from "http://localhost:4545/subdir/mt_application_x_typescript.t4.ts";
+import { loaded as loadedJs1 } from "http://localhost:4545/subdir/mt_text_javascript.j1.js";
+import { loaded as loadedJs2 } from "http://localhost:4545/subdir/mt_application_ecmascript.j2.js";
+import { loaded as loadedJs3 } from "http://localhost:4545/subdir/mt_text_ecmascript.j3.js";
+import { loaded as loadedJs4 } from "http://localhost:4545/subdir/mt_application_x_javascript.j4.js";
+
+console.log(
+ "success",
+ loadedTs1,
+ loadedTs2,
+ loadedTs3,
+ loadedTs4,
+ loadedJs1,
+ loadedJs2,
+ loadedJs3,
+ loadedJs4,
+);
diff --git a/tests/specs/run/_035_cached_only_flag/035_cached_only_flag.out b/tests/specs/run/_035_cached_only_flag/035_cached_only_flag.out
new file mode 100644
index 000000000..aad3f2fbc
--- /dev/null
+++ b/tests/specs/run/_035_cached_only_flag/035_cached_only_flag.out
@@ -0,0 +1 @@
+error: Specifier not found in cache: "http://127.0.0.1:4545/019_media_types.ts", --cached-only is specified.
diff --git a/tests/specs/run/_035_cached_only_flag/__test__.jsonc b/tests/specs/run/_035_cached_only_flag/__test__.jsonc
new file mode 100644
index 000000000..ac9d01cdd
--- /dev/null
+++ b/tests/specs/run/_035_cached_only_flag/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check --allow-import --cached-only http://127.0.0.1:4545/019_media_types.ts",
+ "output": "035_cached_only_flag.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/038_checkjs.js b/tests/specs/run/_038_checkjs/038_checkjs.js
index f0856d94c..f0856d94c 100644
--- a/tests/testdata/run/038_checkjs.js
+++ b/tests/specs/run/_038_checkjs/038_checkjs.js
diff --git a/tests/testdata/run/038_checkjs.js.out b/tests/specs/run/_038_checkjs/038_checkjs.js.out
index 4ea473e4f..4ea473e4f 100644
--- a/tests/testdata/run/038_checkjs.js.out
+++ b/tests/specs/run/_038_checkjs/038_checkjs.js.out
diff --git a/tests/specs/run/_038_checkjs/__test__.jsonc b/tests/specs/run/_038_checkjs/__test__.jsonc
new file mode 100644
index 000000000..6915787d2
--- /dev/null
+++ b/tests/specs/run/_038_checkjs/__test__.jsonc
@@ -0,0 +1,6 @@
+{
+ // checking if JS file is run through TS compiler
+ "args": "run --reload --config checkjs.tsconfig.json --check 038_checkjs.js",
+ "exitCode": 1,
+ "output": "038_checkjs.js.out"
+}
diff --git a/tests/specs/run/_038_checkjs/checkjs.tsconfig.json b/tests/specs/run/_038_checkjs/checkjs.tsconfig.json
new file mode 100644
index 000000000..08ac60b6c
--- /dev/null
+++ b/tests/specs/run/_038_checkjs/checkjs.tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "checkJs": true
+ }
+}
diff --git a/tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts b/tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts
new file mode 100644
index 000000000..f39ae2468
--- /dev/null
+++ b/tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts
@@ -0,0 +1,5 @@
+// @ts-expect-error "Deno[Deno.internal].core" is not a public interface
+Deno[Deno.internal].core.evalContext(
+ "(async () => console.log(await import('./_042_dyn_import_evalcontext/mod4.js')))()",
+ new URL("..", import.meta.url).href,
+);
diff --git a/tests/testdata/run/042_dyn_import_evalcontext.ts.out b/tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts.out
index 89e16b478..89e16b478 100644
--- a/tests/testdata/run/042_dyn_import_evalcontext.ts.out
+++ b/tests/specs/run/_042_dyn_import_evalcontext/042_dyn_import_evalcontext.ts.out
diff --git a/tests/specs/run/_042_dyn_import_evalcontext/__test__.jsonc b/tests/specs/run/_042_dyn_import_evalcontext/__test__.jsonc
new file mode 100644
index 000000000..e3cb0d184
--- /dev/null
+++ b/tests/specs/run/_042_dyn_import_evalcontext/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-read --reload 042_dyn_import_evalcontext.ts",
+ "output": "042_dyn_import_evalcontext.ts.out"
+}
diff --git a/tests/specs/run/_042_dyn_import_evalcontext/mod4.js b/tests/specs/run/_042_dyn_import_evalcontext/mod4.js
new file mode 100644
index 000000000..71332dbc4
--- /dev/null
+++ b/tests/specs/run/_042_dyn_import_evalcontext/mod4.js
@@ -0,0 +1 @@
+export const isMod4 = true;
diff --git a/tests/specs/run/_044_bad_resource/044_bad_resource.ts b/tests/specs/run/_044_bad_resource/044_bad_resource.ts
new file mode 100644
index 000000000..c76a11eff
--- /dev/null
+++ b/tests/specs/run/_044_bad_resource/044_bad_resource.ts
@@ -0,0 +1,3 @@
+const file = await Deno.open("./044_bad_resource.ts", { read: true });
+file.close();
+await file.seek(10, 0);
diff --git a/tests/testdata/run/044_bad_resource.ts.out b/tests/specs/run/_044_bad_resource/044_bad_resource.ts.out
index c9912711d..c9912711d 100644
--- a/tests/testdata/run/044_bad_resource.ts.out
+++ b/tests/specs/run/_044_bad_resource/044_bad_resource.ts.out
diff --git a/tests/specs/run/_044_bad_resource/__test__.jsonc b/tests/specs/run/_044_bad_resource/__test__.jsonc
new file mode 100644
index 000000000..cb7832e74
--- /dev/null
+++ b/tests/specs/run/_044_bad_resource/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-read 044_bad_resource.ts",
+ "output": "044_bad_resource.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/046_jsx_test.tsx b/tests/specs/run/_046_tsx/046_jsx_test.tsx
index 5ed3ff2fa..5ed3ff2fa 100644
--- a/tests/testdata/run/046_jsx_test.tsx
+++ b/tests/specs/run/_046_tsx/046_jsx_test.tsx
diff --git a/tests/testdata/run/046_jsx_test.tsx.out b/tests/specs/run/_046_tsx/046_jsx_test.tsx.out
index 85cfe824b..85cfe824b 100644
--- a/tests/testdata/run/046_jsx_test.tsx.out
+++ b/tests/specs/run/_046_tsx/046_jsx_test.tsx.out
diff --git a/tests/specs/run/_046_tsx/__test__.jsonc b/tests/specs/run/_046_tsx/__test__.jsonc
new file mode 100644
index 000000000..28a48ecec
--- /dev/null
+++ b/tests/specs/run/_046_tsx/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 046_jsx_test.tsx",
+ "output": "046_jsx_test.tsx.out"
+}
diff --git a/tests/testdata/run/047_jsx_test.jsx b/tests/specs/run/_047_jsx/047_jsx_test.jsx
index 4c2314072..4c2314072 100644
--- a/tests/testdata/run/047_jsx_test.jsx
+++ b/tests/specs/run/_047_jsx/047_jsx_test.jsx
diff --git a/tests/testdata/run/047_jsx_test.jsx.out b/tests/specs/run/_047_jsx/047_jsx_test.jsx.out
index 85cfe824b..85cfe824b 100644
--- a/tests/testdata/run/047_jsx_test.jsx.out
+++ b/tests/specs/run/_047_jsx/047_jsx_test.jsx.out
diff --git a/tests/specs/run/_047_jsx/__test__.jsonc b/tests/specs/run/_047_jsx/__test__.jsonc
new file mode 100644
index 000000000..bb89db017
--- /dev/null
+++ b/tests/specs/run/_047_jsx/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload 047_jsx_test.jsx",
+ "output": "047_jsx_test.jsx.out"
+}
diff --git a/tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts b/tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts
new file mode 100644
index 000000000..8dcd0ad68
--- /dev/null
+++ b/tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts
@@ -0,0 +1,32 @@
+// When run against the test HTTP server, it will serve different media types
+// based on the URL containing `.t#.` strings, which exercises the different
+// mapping of media types end to end.
+import { loaded as loadedTsx1 } from "http://localhost:4545/subdir/mt_text_typescript_tsx.t1.tsx";
+import { loaded as loadedTsx2 } from "http://localhost:4545/subdir/mt_video_vdn_tsx.t2.tsx";
+import { loaded as loadedTsx3 } from "http://localhost:4545/subdir/mt_video_mp2t_tsx.t3.tsx";
+import { loaded as loadedTsx4 } from "http://localhost:4545/subdir/mt_application_x_typescript_tsx.t4.tsx";
+import { loaded as loadedJsx1 } from "http://localhost:4545/subdir/mt_text_javascript_jsx.j1.jsx";
+import { loaded as loadedJsx2 } from "http://localhost:4545/subdir/mt_application_ecmascript_jsx.j2.jsx";
+import { loaded as loadedJsx3 } from "http://localhost:4545/subdir/mt_text_ecmascript_jsx.j3.jsx";
+import { loaded as loadedJsx4 } from "http://localhost:4545/subdir/mt_application_x_javascript_jsx.j4.jsx";
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ // deno-lint-ignore no-explicit-any
+ [elemName: string]: any;
+ }
+ }
+}
+
+console.log(
+ "success",
+ loadedTsx1,
+ loadedTsx2,
+ loadedTsx3,
+ loadedTsx4,
+ loadedJsx1,
+ loadedJsx2,
+ loadedJsx3,
+ loadedJsx4,
+);
diff --git a/tests/testdata/run/048_media_types_jsx.ts.out b/tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts.out
index 266cc5741..266cc5741 100644
--- a/tests/testdata/run/048_media_types_jsx.ts.out
+++ b/tests/specs/run/_048_media_types_jsx/048_media_types_jsx.ts.out
diff --git a/tests/specs/run/_048_media_types_jsx/__test__.jsonc b/tests/specs/run/_048_media_types_jsx/__test__.jsonc
new file mode 100644
index 000000000..0dec930b0
--- /dev/null
+++ b/tests/specs/run/_048_media_types_jsx/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-import 048_media_types_jsx.ts",
+ "output": "048_media_types_jsx.ts.out"
+}
diff --git a/tests/specs/run/_052_no_remote_flag/019_media_types.ts b/tests/specs/run/_052_no_remote_flag/019_media_types.ts
new file mode 100644
index 000000000..d985bd249
--- /dev/null
+++ b/tests/specs/run/_052_no_remote_flag/019_media_types.ts
@@ -0,0 +1,24 @@
+// When run against the test HTTP server, it will serve different media types
+// based on the URL containing `.t#.` strings, which exercises the different
+// mapping of media types end to end.
+
+import { loaded as loadedTs1 } from "http://localhost:4545/subdir/mt_text_typescript.t1.ts";
+import { loaded as loadedTs2 } from "http://localhost:4545/subdir/mt_video_vdn.t2.ts";
+import { loaded as loadedTs3 } from "http://localhost:4545/subdir/mt_video_mp2t.t3.ts";
+import { loaded as loadedTs4 } from "http://localhost:4545/subdir/mt_application_x_typescript.t4.ts";
+import { loaded as loadedJs1 } from "http://localhost:4545/subdir/mt_text_javascript.j1.js";
+import { loaded as loadedJs2 } from "http://localhost:4545/subdir/mt_application_ecmascript.j2.js";
+import { loaded as loadedJs3 } from "http://localhost:4545/subdir/mt_text_ecmascript.j3.js";
+import { loaded as loadedJs4 } from "http://localhost:4545/subdir/mt_application_x_javascript.j4.js";
+
+console.log(
+ "success",
+ loadedTs1,
+ loadedTs2,
+ loadedTs3,
+ loadedTs4,
+ loadedJs1,
+ loadedJs2,
+ loadedJs3,
+ loadedJs4,
+);
diff --git a/tests/specs/run/_052_no_remote_flag/052_no_remote_flag.out b/tests/specs/run/_052_no_remote_flag/052_no_remote_flag.out
new file mode 100644
index 000000000..c1f9f4e13
--- /dev/null
+++ b/tests/specs/run/_052_no_remote_flag/052_no_remote_flag.out
@@ -0,0 +1 @@
+error: A remote specifier was requested: "http://127.0.0.1:4545/019_media_types.ts", but --no-remote is specified.
diff --git a/tests/specs/run/_052_no_remote_flag/__test__.jsonc b/tests/specs/run/_052_no_remote_flag/__test__.jsonc
new file mode 100644
index 000000000..c8ac477c6
--- /dev/null
+++ b/tests/specs/run/_052_no_remote_flag/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check --allow-import --no-remote http://127.0.0.1:4545/019_media_types.ts",
+ "output": "052_no_remote_flag.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/058_tasks_microtasks_close.ts b/tests/specs/run/_058_tasks_microtasks_close/058_tasks_microtasks_close.ts
index df6f85ea0..df6f85ea0 100644
--- a/tests/testdata/run/058_tasks_microtasks_close.ts
+++ b/tests/specs/run/_058_tasks_microtasks_close/058_tasks_microtasks_close.ts
diff --git a/tests/testdata/run/058_tasks_microtasks_close.ts.out b/tests/specs/run/_058_tasks_microtasks_close/058_tasks_microtasks_close.ts.out
index 218273cab..218273cab 100644
--- a/tests/testdata/run/058_tasks_microtasks_close.ts.out
+++ b/tests/specs/run/_058_tasks_microtasks_close/058_tasks_microtasks_close.ts.out
diff --git a/tests/specs/run/_058_tasks_microtasks_close/__test__.jsonc b/tests/specs/run/_058_tasks_microtasks_close/__test__.jsonc
new file mode 100644
index 000000000..9eec8f53c
--- /dev/null
+++ b/tests/specs/run/_058_tasks_microtasks_close/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet 058_tasks_microtasks_close.ts",
+ "output": "058_tasks_microtasks_close.ts.out"
+}
diff --git a/tests/testdata/run/059_fs_relative_path_perm.ts b/tests/specs/run/_059_fs_relative_path_perm/059_fs_relative_path_perm.ts
index 26630fe1c..26630fe1c 100644
--- a/tests/testdata/run/059_fs_relative_path_perm.ts
+++ b/tests/specs/run/_059_fs_relative_path_perm/059_fs_relative_path_perm.ts
diff --git a/tests/testdata/run/059_fs_relative_path_perm.ts.out b/tests/specs/run/_059_fs_relative_path_perm/059_fs_relative_path_perm.ts.out
index 0d0412208..0d0412208 100644
--- a/tests/testdata/run/059_fs_relative_path_perm.ts.out
+++ b/tests/specs/run/_059_fs_relative_path_perm/059_fs_relative_path_perm.ts.out
diff --git a/tests/specs/run/_059_fs_relative_path_perm/__test__.jsonc b/tests/specs/run/_059_fs_relative_path_perm/__test__.jsonc
new file mode 100644
index 000000000..04a7b8aa4
--- /dev/null
+++ b/tests/specs/run/_059_fs_relative_path_perm/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run 059_fs_relative_path_perm.ts",
+ "output": "059_fs_relative_path_perm.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/063_permissions_revoke.ts b/tests/specs/run/_063_permissions_revoke/063_permissions_revoke.ts
index a81eee7cb..a81eee7cb 100644
--- a/tests/testdata/run/063_permissions_revoke.ts
+++ b/tests/specs/run/_063_permissions_revoke/063_permissions_revoke.ts
diff --git a/tests/testdata/run/063_permissions_revoke.ts.out b/tests/specs/run/_063_permissions_revoke/063_permissions_revoke.ts.out
index bbd64c557..bbd64c557 100644
--- a/tests/testdata/run/063_permissions_revoke.ts.out
+++ b/tests/specs/run/_063_permissions_revoke/063_permissions_revoke.ts.out
diff --git a/tests/specs/run/_063_permissions_revoke/__test__.jsonc b/tests/specs/run/_063_permissions_revoke/__test__.jsonc
new file mode 100644
index 000000000..1dd5ed747
--- /dev/null
+++ b/tests/specs/run/_063_permissions_revoke/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read=foo,bar 063_permissions_revoke.ts",
+ "output": "063_permissions_revoke.ts.out"
+}
diff --git a/tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke.ts.out b/tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke.ts.out
new file mode 100644
index 000000000..bbd64c557
--- /dev/null
+++ b/tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke.ts.out
@@ -0,0 +1,3 @@
+[WILDCARD]PermissionStatus { state: "prompt", onchange: null }
+PermissionStatus { state: "granted", onchange: null }
+PermissionStatus { state: "prompt", onchange: null }
diff --git a/tests/testdata/run/063_permissions_revoke_sync.ts b/tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke_sync.ts
index 267ef3785..267ef3785 100644
--- a/tests/testdata/run/063_permissions_revoke_sync.ts
+++ b/tests/specs/run/_063_permissions_revoke_sync/063_permissions_revoke_sync.ts
diff --git a/tests/specs/run/_063_permissions_revoke_sync/__test__.jsonc b/tests/specs/run/_063_permissions_revoke_sync/__test__.jsonc
new file mode 100644
index 000000000..8dd9384e3
--- /dev/null
+++ b/tests/specs/run/_063_permissions_revoke_sync/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read=foo,bar 063_permissions_revoke_sync.ts",
+ "output": "063_permissions_revoke.ts.out"
+}
diff --git a/tests/testdata/run/064_permissions_revoke_global.ts b/tests/specs/run/_064_permissions_revoke_global/064_permissions_revoke_global.ts
index a9b1fcd40..a9b1fcd40 100644
--- a/tests/testdata/run/064_permissions_revoke_global.ts
+++ b/tests/specs/run/_064_permissions_revoke_global/064_permissions_revoke_global.ts
diff --git a/tests/testdata/run/064_permissions_revoke_global.ts.out b/tests/specs/run/_064_permissions_revoke_global/064_permissions_revoke_global.ts.out
index f7e389a76..f7e389a76 100644
--- a/tests/testdata/run/064_permissions_revoke_global.ts.out
+++ b/tests/specs/run/_064_permissions_revoke_global/064_permissions_revoke_global.ts.out
diff --git a/tests/specs/run/_064_permissions_revoke_global/__test__.jsonc b/tests/specs/run/_064_permissions_revoke_global/__test__.jsonc
new file mode 100644
index 000000000..929e48ee8
--- /dev/null
+++ b/tests/specs/run/_064_permissions_revoke_global/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read=foo,bar 064_permissions_revoke_global.ts",
+ "output": "064_permissions_revoke_global.ts.out"
+}
diff --git a/tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global.ts.out b/tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global.ts.out
new file mode 100644
index 000000000..f7e389a76
--- /dev/null
+++ b/tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global.ts.out
@@ -0,0 +1,3 @@
+[WILDCARD]PermissionStatus { state: "prompt", onchange: null }
+PermissionStatus { state: "prompt", onchange: null }
+PermissionStatus { state: "prompt", onchange: null }
diff --git a/tests/testdata/run/064_permissions_revoke_global_sync.ts b/tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global_sync.ts
index 597b1481d..597b1481d 100644
--- a/tests/testdata/run/064_permissions_revoke_global_sync.ts
+++ b/tests/specs/run/_064_permissions_revoke_global_sync/064_permissions_revoke_global_sync.ts
diff --git a/tests/specs/run/_064_permissions_revoke_global_sync/__test__.jsonc b/tests/specs/run/_064_permissions_revoke_global_sync/__test__.jsonc
new file mode 100644
index 000000000..8d6f8079d
--- /dev/null
+++ b/tests/specs/run/_064_permissions_revoke_global_sync/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read=foo,bar 064_permissions_revoke_global_sync.ts",
+ "output": "064_permissions_revoke_global.ts.out"
+}
diff --git a/tests/testdata/run/065_permissions_revoke_net.ts b/tests/specs/run/_065_permissions_revoke_net/065_permissions_revoke_net.ts
index 40c9d413a..40c9d413a 100644
--- a/tests/testdata/run/065_permissions_revoke_net.ts
+++ b/tests/specs/run/_065_permissions_revoke_net/065_permissions_revoke_net.ts
diff --git a/tests/testdata/run/065_permissions_revoke_net.ts.out b/tests/specs/run/_065_permissions_revoke_net/065_permissions_revoke_net.ts.out
index a9c941ecd..a9c941ecd 100644
--- a/tests/testdata/run/065_permissions_revoke_net.ts.out
+++ b/tests/specs/run/_065_permissions_revoke_net/065_permissions_revoke_net.ts.out
diff --git a/tests/specs/run/_065_permissions_revoke_net/__test__.jsonc b/tests/specs/run/_065_permissions_revoke_net/__test__.jsonc
new file mode 100644
index 000000000..ab66835fd
--- /dev/null
+++ b/tests/specs/run/_065_permissions_revoke_net/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-net 065_permissions_revoke_net.ts",
+ "output": "065_permissions_revoke_net.ts.out"
+}
diff --git a/tests/testdata/run/070_location.ts b/tests/specs/run/_070_location/070_location.ts
index 05e5abdf1..05e5abdf1 100644
--- a/tests/testdata/run/070_location.ts
+++ b/tests/specs/run/_070_location/070_location.ts
diff --git a/tests/testdata/run/070_location.ts.out b/tests/specs/run/_070_location/070_location.ts.out
index a03cf6477..a03cf6477 100644
--- a/tests/testdata/run/070_location.ts.out
+++ b/tests/specs/run/_070_location/070_location.ts.out
diff --git a/tests/specs/run/_070_location/__test__.jsonc b/tests/specs/run/_070_location/__test__.jsonc
new file mode 100644
index 000000000..ad92752ea
--- /dev/null
+++ b/tests/specs/run/_070_location/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --location https://foo/bar?baz#bat 070_location.ts",
+ "output": "070_location.ts.out"
+}
diff --git a/tests/testdata/run/071_location_unset.ts b/tests/specs/run/_071_location_unset/071_location_unset.ts
index f560d2716..f560d2716 100644
--- a/tests/testdata/run/071_location_unset.ts
+++ b/tests/specs/run/_071_location_unset/071_location_unset.ts
diff --git a/tests/testdata/run/071_location_unset.ts.out b/tests/specs/run/_071_location_unset/071_location_unset.ts.out
index c9482011f..c9482011f 100644
--- a/tests/testdata/run/071_location_unset.ts.out
+++ b/tests/specs/run/_071_location_unset/071_location_unset.ts.out
diff --git a/tests/specs/run/_071_location_unset/__test__.jsonc b/tests/specs/run/_071_location_unset/__test__.jsonc
new file mode 100644
index 000000000..946755cf5
--- /dev/null
+++ b/tests/specs/run/_071_location_unset/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run 071_location_unset.ts",
+ "output": "071_location_unset.ts.out"
+}
diff --git a/tests/testdata/run/072_location_relative_fetch.ts b/tests/specs/run/_072_location_relative_fetch/072_location_relative_fetch.ts
index b2a291693..b2a291693 100644
--- a/tests/testdata/run/072_location_relative_fetch.ts
+++ b/tests/specs/run/_072_location_relative_fetch/072_location_relative_fetch.ts
diff --git a/tests/testdata/run/072_location_relative_fetch.ts.out b/tests/specs/run/_072_location_relative_fetch/072_location_relative_fetch.ts.out
index 8151f6f88..8151f6f88 100644
--- a/tests/testdata/run/072_location_relative_fetch.ts.out
+++ b/tests/specs/run/_072_location_relative_fetch/072_location_relative_fetch.ts.out
diff --git a/tests/specs/run/_072_location_relative_fetch/__test__.jsonc b/tests/specs/run/_072_location_relative_fetch/__test__.jsonc
new file mode 100644
index 000000000..e6e9e4899
--- /dev/null
+++ b/tests/specs/run/_072_location_relative_fetch/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --location http://127.0.0.1:4545/ --allow-net 072_location_relative_fetch.ts",
+ "output": "072_location_relative_fetch.ts.out"
+}
diff --git a/tests/specs/run/_072_location_relative_fetch/fetch/hello.txt b/tests/specs/run/_072_location_relative_fetch/fetch/hello.txt
new file mode 100644
index 000000000..af5626b4a
--- /dev/null
+++ b/tests/specs/run/_072_location_relative_fetch/fetch/hello.txt
@@ -0,0 +1 @@
+Hello, world!
diff --git a/tests/specs/run/_075_import_local_query_hash/001_hello.js b/tests/specs/run/_075_import_local_query_hash/001_hello.js
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/_075_import_local_query_hash/001_hello.js
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/specs/run/_075_import_local_query_hash/002_hello.ts b/tests/specs/run/_075_import_local_query_hash/002_hello.ts
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/_075_import_local_query_hash/002_hello.ts
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/testdata/run/075_import_local_query_hash.ts b/tests/specs/run/_075_import_local_query_hash/075_import_local_query_hash.ts
index 99c7ceab4..99c7ceab4 100644
--- a/tests/testdata/run/075_import_local_query_hash.ts
+++ b/tests/specs/run/_075_import_local_query_hash/075_import_local_query_hash.ts
diff --git a/tests/testdata/run/075_import_local_query_hash.ts.out b/tests/specs/run/_075_import_local_query_hash/075_import_local_query_hash.ts.out
index 340777742..340777742 100644
--- a/tests/testdata/run/075_import_local_query_hash.ts.out
+++ b/tests/specs/run/_075_import_local_query_hash/075_import_local_query_hash.ts.out
diff --git a/tests/specs/run/_075_import_local_query_hash/__test__.jsonc b/tests/specs/run/_075_import_local_query_hash/__test__.jsonc
new file mode 100644
index 000000000..521cd3ea8
--- /dev/null
+++ b/tests/specs/run/_075_import_local_query_hash/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run 075_import_local_query_hash.ts",
+ "output": "075_import_local_query_hash.ts.out"
+}
diff --git a/tests/testdata/run/077_fetch_empty.ts b/tests/specs/run/_077_fetch_empty/077_fetch_empty.ts
index b10a9094e..b10a9094e 100644
--- a/tests/testdata/run/077_fetch_empty.ts
+++ b/tests/specs/run/_077_fetch_empty/077_fetch_empty.ts
diff --git a/tests/testdata/run/077_fetch_empty.ts.out b/tests/specs/run/_077_fetch_empty/077_fetch_empty.ts.out
index f11e0f563..f11e0f563 100644
--- a/tests/testdata/run/077_fetch_empty.ts.out
+++ b/tests/specs/run/_077_fetch_empty/077_fetch_empty.ts.out
diff --git a/tests/specs/run/_077_fetch_empty/__test__.jsonc b/tests/specs/run/_077_fetch_empty/__test__.jsonc
new file mode 100644
index 000000000..654b10938
--- /dev/null
+++ b/tests/specs/run/_077_fetch_empty/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run -A 077_fetch_empty.ts",
+ "output": "077_fetch_empty.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/078_unload_on_exit.ts b/tests/specs/run/_078_unload_on_exit/078_unload_on_exit.ts
index aaa80c578..aaa80c578 100644
--- a/tests/testdata/run/078_unload_on_exit.ts
+++ b/tests/specs/run/_078_unload_on_exit/078_unload_on_exit.ts
diff --git a/tests/testdata/run/078_unload_on_exit.ts.out b/tests/specs/run/_078_unload_on_exit/078_unload_on_exit.ts.out
index e213f9632..e213f9632 100644
--- a/tests/testdata/run/078_unload_on_exit.ts.out
+++ b/tests/specs/run/_078_unload_on_exit/078_unload_on_exit.ts.out
diff --git a/tests/specs/run/_078_unload_on_exit/__test__.jsonc b/tests/specs/run/_078_unload_on_exit/__test__.jsonc
new file mode 100644
index 000000000..4091b7dc9
--- /dev/null
+++ b/tests/specs/run/_078_unload_on_exit/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run 078_unload_on_exit.ts",
+ "output": "078_unload_on_exit.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/079_location_authentication.ts b/tests/specs/run/_079_location_authentication/079_location_authentication.ts
index 4989312ac..4989312ac 100644
--- a/tests/testdata/run/079_location_authentication.ts
+++ b/tests/specs/run/_079_location_authentication/079_location_authentication.ts
diff --git a/tests/testdata/run/079_location_authentication.ts.out b/tests/specs/run/_079_location_authentication/079_location_authentication.ts.out
index 0dd73f999..0dd73f999 100644
--- a/tests/testdata/run/079_location_authentication.ts.out
+++ b/tests/specs/run/_079_location_authentication/079_location_authentication.ts.out
diff --git a/tests/specs/run/_079_location_authentication/__test__.jsonc b/tests/specs/run/_079_location_authentication/__test__.jsonc
new file mode 100644
index 000000000..30ba27949
--- /dev/null
+++ b/tests/specs/run/_079_location_authentication/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --location https://foo:bar@baz/qux 079_location_authentication.ts",
+ "output": "079_location_authentication.ts.out"
+}
diff --git a/tests/testdata/run/081_location_relative_fetch_redirect.ts b/tests/specs/run/_081_location_relative_fetch_redirect/081_location_relative_fetch_redirect.ts
index 742ef0afb..742ef0afb 100644
--- a/tests/testdata/run/081_location_relative_fetch_redirect.ts
+++ b/tests/specs/run/_081_location_relative_fetch_redirect/081_location_relative_fetch_redirect.ts
diff --git a/tests/testdata/run/081_location_relative_fetch_redirect.ts.out b/tests/specs/run/_081_location_relative_fetch_redirect/081_location_relative_fetch_redirect.ts.out
index f62b93195..f62b93195 100644
--- a/tests/testdata/run/081_location_relative_fetch_redirect.ts.out
+++ b/tests/specs/run/_081_location_relative_fetch_redirect/081_location_relative_fetch_redirect.ts.out
diff --git a/tests/specs/run/_081_location_relative_fetch_redirect/__test__.jsonc b/tests/specs/run/_081_location_relative_fetch_redirect/__test__.jsonc
new file mode 100644
index 000000000..6756bf6d1
--- /dev/null
+++ b/tests/specs/run/_081_location_relative_fetch_redirect/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --location http://127.0.0.1:4546/ --allow-net 081_location_relative_fetch_redirect.ts",
+ "output": "081_location_relative_fetch_redirect.ts.out"
+}
diff --git a/tests/testdata/run/082_prepare_stack_trace_throw.js b/tests/specs/run/_082_prepare_stack_trace_throw/082_prepare_stack_trace_throw.js
index 8137bfdc8..8137bfdc8 100644
--- a/tests/testdata/run/082_prepare_stack_trace_throw.js
+++ b/tests/specs/run/_082_prepare_stack_trace_throw/082_prepare_stack_trace_throw.js
diff --git a/tests/testdata/run/082_prepare_stack_trace_throw.js.out b/tests/specs/run/_082_prepare_stack_trace_throw/082_prepare_stack_trace_throw.js.out
index b6715c749..b6715c749 100644
--- a/tests/testdata/run/082_prepare_stack_trace_throw.js.out
+++ b/tests/specs/run/_082_prepare_stack_trace_throw/082_prepare_stack_trace_throw.js.out
diff --git a/tests/specs/run/_082_prepare_stack_trace_throw/__test__.jsonc b/tests/specs/run/_082_prepare_stack_trace_throw/__test__.jsonc
new file mode 100644
index 000000000..41b27e3bd
--- /dev/null
+++ b/tests/specs/run/_082_prepare_stack_trace_throw/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run 082_prepare_stack_trace_throw.js",
+ "output": "082_prepare_stack_trace_throw.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/088_dynamic_import_already_evaluating.ts b/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_already_evaluating.ts
index 272163a5d..272163a5d 100644
--- a/tests/testdata/run/088_dynamic_import_already_evaluating.ts
+++ b/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_already_evaluating.ts
diff --git a/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out b/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_already_evaluating.ts.out
index a36dd11e7..a36dd11e7 100644
--- a/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out
+++ b/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_already_evaluating.ts.out
diff --git a/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_target.ts b/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_target.ts
new file mode 100644
index 000000000..226f1851a
--- /dev/null
+++ b/tests/specs/run/_088_dynamic_import_already_evaluating/088_dynamic_import_target.ts
@@ -0,0 +1,3 @@
+console.log(1);
+await new Promise((r) => setTimeout(r, 100));
+console.log(2);
diff --git a/tests/specs/run/_088_dynamic_import_already_evaluating/__test__.jsonc b/tests/specs/run/_088_dynamic_import_already_evaluating/__test__.jsonc
new file mode 100644
index 000000000..4ce912bf8
--- /dev/null
+++ b/tests/specs/run/_088_dynamic_import_already_evaluating/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read 088_dynamic_import_already_evaluating.ts",
+ "output": "088_dynamic_import_already_evaluating.ts.out"
+}
diff --git a/tests/testdata/run/091_use_define_for_class_fields.ts b/tests/specs/run/_091_use_define_for_class_fields/091_use_define_for_class_fields.ts
index 46be3ac0b..46be3ac0b 100644
--- a/tests/testdata/run/091_use_define_for_class_fields.ts
+++ b/tests/specs/run/_091_use_define_for_class_fields/091_use_define_for_class_fields.ts
diff --git a/tests/testdata/run/091_use_define_for_class_fields.ts.out b/tests/specs/run/_091_use_define_for_class_fields/091_use_define_for_class_fields.ts.out
index 08f94a967..08f94a967 100644
--- a/tests/testdata/run/091_use_define_for_class_fields.ts.out
+++ b/tests/specs/run/_091_use_define_for_class_fields/091_use_define_for_class_fields.ts.out
diff --git a/tests/specs/run/_091_use_define_for_class_fields/__test__.jsonc b/tests/specs/run/_091_use_define_for_class_fields/__test__.jsonc
new file mode 100644
index 000000000..100db44aa
--- /dev/null
+++ b/tests/specs/run/_091_use_define_for_class_fields/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --check 091_use_define_for_class_fields.ts",
+ "output": "091_use_define_for_class_fields.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/aggregate_error/__test__.jsonc b/tests/specs/run/aggregate_error/__test__.jsonc
new file mode 100644
index 000000000..e9bd82481
--- /dev/null
+++ b/tests/specs/run/aggregate_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet aggregate_error.ts",
+ "output": "aggregate_error.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/aggregate_error.out b/tests/specs/run/aggregate_error/aggregate_error.out
index 59c0fb2a5..59c0fb2a5 100644
--- a/tests/testdata/run/aggregate_error.out
+++ b/tests/specs/run/aggregate_error/aggregate_error.out
diff --git a/tests/testdata/run/aggregate_error.ts b/tests/specs/run/aggregate_error/aggregate_error.ts
index ce4b54376..ce4b54376 100644
--- a/tests/testdata/run/aggregate_error.ts
+++ b/tests/specs/run/aggregate_error/aggregate_error.ts
diff --git a/tests/specs/run/async_error/__test__.jsonc b/tests/specs/run/async_error/__test__.jsonc
new file mode 100644
index 000000000..86c31adac
--- /dev/null
+++ b/tests/specs/run/async_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload async_error.ts",
+ "output": "async_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/async_error.ts b/tests/specs/run/async_error/async_error.ts
index b55c73aeb..b55c73aeb 100644
--- a/tests/testdata/run/async_error.ts
+++ b/tests/specs/run/async_error/async_error.ts
diff --git a/tests/testdata/run/async_error.ts.out b/tests/specs/run/async_error/async_error.ts.out
index b424f9072..b424f9072 100644
--- a/tests/testdata/run/async_error.ts.out
+++ b/tests/specs/run/async_error/async_error.ts.out
diff --git a/tests/specs/run/beforeunload_event/__test__.jsonc b/tests/specs/run/beforeunload_event/__test__.jsonc
new file mode 100644
index 000000000..01c7e7007
--- /dev/null
+++ b/tests/specs/run/beforeunload_event/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run before_unload.js",
+ "output": "before_unload.js.out"
+}
diff --git a/tests/testdata/run/before_unload.js b/tests/specs/run/beforeunload_event/before_unload.js
index 2572e512b..2572e512b 100644
--- a/tests/testdata/run/before_unload.js
+++ b/tests/specs/run/beforeunload_event/before_unload.js
diff --git a/tests/testdata/run/before_unload.js.out b/tests/specs/run/beforeunload_event/before_unload.js.out
index f1f2ab49a..f1f2ab49a 100644
--- a/tests/testdata/run/before_unload.js.out
+++ b/tests/specs/run/beforeunload_event/before_unload.js.out
diff --git a/tests/specs/run/blob_gc_finalization/__test__.jsonc b/tests/specs/run/blob_gc_finalization/__test__.jsonc
new file mode 100644
index 000000000..20a8128fc
--- /dev/null
+++ b/tests/specs/run/blob_gc_finalization/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run blob_gc_finalization.js",
+ "output": "blob_gc_finalization.js.out",
+ "exitCode": 0
+}
diff --git a/tests/testdata/run/blob_gc_finalization.js b/tests/specs/run/blob_gc_finalization/blob_gc_finalization.js
index c721e6b45..c721e6b45 100644
--- a/tests/testdata/run/blob_gc_finalization.js
+++ b/tests/specs/run/blob_gc_finalization/blob_gc_finalization.js
diff --git a/tests/testdata/run/blob_gc_finalization.js.out b/tests/specs/run/blob_gc_finalization/blob_gc_finalization.js.out
index dcc4500f8..dcc4500f8 100644
--- a/tests/testdata/run/blob_gc_finalization.js.out
+++ b/tests/specs/run/blob_gc_finalization/blob_gc_finalization.js.out
diff --git a/tests/specs/run/byte_order_mark/001_hello.js b/tests/specs/run/byte_order_mark/001_hello.js
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/byte_order_mark/001_hello.js
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/specs/run/byte_order_mark/__test__.jsonc b/tests/specs/run/byte_order_mark/__test__.jsonc
new file mode 100644
index 000000000..f47cb7d02
--- /dev/null
+++ b/tests/specs/run/byte_order_mark/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --no-check byte_order_mark.ts",
+ "output": "byte_order_mark.out"
+}
diff --git a/tests/testdata/run/byte_order_mark.out b/tests/specs/run/byte_order_mark/byte_order_mark.out
index 557db03de..557db03de 100644
--- a/tests/testdata/run/byte_order_mark.out
+++ b/tests/specs/run/byte_order_mark/byte_order_mark.out
diff --git a/tests/specs/run/byte_order_mark/byte_order_mark.ts b/tests/specs/run/byte_order_mark/byte_order_mark.ts
new file mode 100644
index 000000000..71da3e1e9
--- /dev/null
+++ b/tests/specs/run/byte_order_mark/byte_order_mark.ts
@@ -0,0 +1,4 @@
+import "./001_hello.js";
+// Note this file starts with special byte order mark <U+FEFF>
+// it's important that this file is a .ts typescript file which is passed to
+// deno through `--no-check` mode.
diff --git a/tests/specs/run/check_js_points_to_ts/__test__.jsonc b/tests/specs/run/check_js_points_to_ts/__test__.jsonc
new file mode 100644
index 000000000..a63b9e5a4
--- /dev/null
+++ b/tests/specs/run/check_js_points_to_ts/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --check --config checkjs.tsconfig.json check_js_points_to_ts/test.js",
+ "output": "check_js_points_to_ts/test.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/check_js_points_to_ts/bar.ts b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/bar.ts
index 026cd2f1e..026cd2f1e 100644
--- a/tests/testdata/run/check_js_points_to_ts/bar.ts
+++ b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/bar.ts
diff --git a/tests/testdata/run/check_js_points_to_ts/foo.d.ts b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/foo.d.ts
index e69de29bb..e69de29bb 100644
--- a/tests/testdata/run/check_js_points_to_ts/foo.d.ts
+++ b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/foo.d.ts
diff --git a/tests/testdata/run/check_js_points_to_ts/foo.js b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/foo.js
index 9ac1a14ff..9ac1a14ff 100644
--- a/tests/testdata/run/check_js_points_to_ts/foo.js
+++ b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/foo.js
diff --git a/tests/testdata/run/check_js_points_to_ts/test.js b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/test.js
index 00d894451..00d894451 100644
--- a/tests/testdata/run/check_js_points_to_ts/test.js
+++ b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/test.js
diff --git a/tests/testdata/run/check_js_points_to_ts/test.js.out b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/test.js.out
index 67cda9a65..67cda9a65 100644
--- a/tests/testdata/run/check_js_points_to_ts/test.js.out
+++ b/tests/specs/run/check_js_points_to_ts/check_js_points_to_ts/test.js.out
diff --git a/tests/specs/run/check_js_points_to_ts/checkjs.tsconfig.json b/tests/specs/run/check_js_points_to_ts/checkjs.tsconfig.json
new file mode 100644
index 000000000..08ac60b6c
--- /dev/null
+++ b/tests/specs/run/check_js_points_to_ts/checkjs.tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "checkJs": true
+ }
+}
diff --git a/tests/specs/run/check_remote/__test__.jsonc b/tests/specs/run/check_remote/__test__.jsonc
new file mode 100644
index 000000000..6543e61b3
--- /dev/null
+++ b/tests/specs/run/check_remote/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --allow-import --reload --check=all no_check_remote.ts",
+ "output": "no_check_remote.ts.disabled.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/check_remote/no_check_remote.ts b/tests/specs/run/check_remote/no_check_remote.ts
new file mode 100644
index 000000000..f42dadf8a
--- /dev/null
+++ b/tests/specs/run/check_remote/no_check_remote.ts
@@ -0,0 +1,3 @@
+import * as a from "./type_error.ts";
+
+console.log(a.a);
diff --git a/tests/specs/run/check_remote/no_check_remote.ts.disabled.out b/tests/specs/run/check_remote/no_check_remote.ts.disabled.out
new file mode 100644
index 000000000..06c046072
--- /dev/null
+++ b/tests/specs/run/check_remote/no_check_remote.ts.disabled.out
@@ -0,0 +1,4 @@
+error: TS2322 [ERROR]: Type '12' is not assignable to type '"a"'.
+export const a: "a" = 12;
+ ^
+ at [WILDCARD]/type_error.ts:1:14
diff --git a/tests/specs/run/check_remote/type_error.ts b/tests/specs/run/check_remote/type_error.ts
new file mode 100644
index 000000000..cc3c1d29d
--- /dev/null
+++ b/tests/specs/run/check_remote/type_error.ts
@@ -0,0 +1 @@
+export const a: "a" = 12;
diff --git a/tests/specs/run/classic_workers_event_loop/__test__.jsonc b/tests/specs/run/classic_workers_event_loop/__test__.jsonc
new file mode 100644
index 000000000..44ea36bdc
--- /dev/null
+++ b/tests/specs/run/classic_workers_event_loop/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --enable-testing-features-do-not-use classic_workers_event_loop.js",
+ "output": "classic_workers_event_loop.js.out"
+}
diff --git a/tests/testdata/run/classic_workers_event_loop.js b/tests/specs/run/classic_workers_event_loop/classic_workers_event_loop.js
index 810a6df7f..810a6df7f 100644
--- a/tests/testdata/run/classic_workers_event_loop.js
+++ b/tests/specs/run/classic_workers_event_loop/classic_workers_event_loop.js
diff --git a/tests/testdata/run/classic_workers_event_loop.js.out b/tests/specs/run/classic_workers_event_loop/classic_workers_event_loop.js.out
index 19f86f493..19f86f493 100644
--- a/tests/testdata/run/classic_workers_event_loop.js.out
+++ b/tests/specs/run/classic_workers_event_loop/classic_workers_event_loop.js.out
diff --git a/tests/specs/run/colors_without_global_this/__test__.jsonc b/tests/specs/run/colors_without_global_this/__test__.jsonc
new file mode 100644
index 000000000..1d2f1c1cf
--- /dev/null
+++ b/tests/specs/run/colors_without_global_this/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run colors_without_globalThis.js",
+ "output": "true\n"
+}
diff --git a/tests/testdata/run/colors_without_globalThis.js b/tests/specs/run/colors_without_global_this/colors_without_globalThis.js
index f9d4b68fc..f9d4b68fc 100644
--- a/tests/testdata/run/colors_without_globalThis.js
+++ b/tests/specs/run/colors_without_global_this/colors_without_globalThis.js
diff --git a/tests/specs/run/complex_error/__test__.jsonc b/tests/specs/run/complex_error/__test__.jsonc
new file mode 100644
index 000000000..2f7274be4
--- /dev/null
+++ b/tests/specs/run/complex_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet complex_error.ts",
+ "output": "complex_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/complex_error.ts b/tests/specs/run/complex_error/complex_error.ts
index b462992ac..b462992ac 100644
--- a/tests/testdata/run/complex_error.ts
+++ b/tests/specs/run/complex_error/complex_error.ts
diff --git a/tests/testdata/run/complex_error.ts.out b/tests/specs/run/complex_error/complex_error.ts.out
index 3c3c26eaf..3c3c26eaf 100644
--- a/tests/testdata/run/complex_error.ts.out
+++ b/tests/specs/run/complex_error/complex_error.ts.out
diff --git a/tests/specs/run/config/__test__.jsonc b/tests/specs/run/config/__test__.jsonc
new file mode 100644
index 000000000..59d3ae5fc
--- /dev/null
+++ b/tests/specs/run/config/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --config config/tsconfig.json --check config/main.ts",
+ "output": "config/main.out"
+}
diff --git a/tests/testdata/run/config/main.out b/tests/specs/run/config/config/main.out
index 277314807..277314807 100644
--- a/tests/testdata/run/config/main.out
+++ b/tests/specs/run/config/config/main.out
diff --git a/tests/testdata/run/config/main.ts b/tests/specs/run/config/config/main.ts
index 51a61e447..51a61e447 100644
--- a/tests/testdata/run/config/main.ts
+++ b/tests/specs/run/config/config/main.ts
diff --git a/tests/testdata/run/config/tsconfig.json b/tests/specs/run/config/config/tsconfig.json
index 0f0881920..0f0881920 100644
--- a/tests/testdata/run/config/tsconfig.json
+++ b/tests/specs/run/config/config/tsconfig.json
diff --git a/tests/specs/run/config_auto_discovered_for_local_script/__test__.jsonc b/tests/specs/run/config_auto_discovered_for_local_script/__test__.jsonc
new file mode 100644
index 000000000..bd2a77ab1
--- /dev/null
+++ b/tests/specs/run/config_auto_discovered_for_local_script/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet frontend_work.ts",
+ "output": "ok\n"
+}
diff --git a/tests/testdata/run/with_config/frontend_work.ts b/tests/specs/run/config_auto_discovered_for_local_script/frontend_work.ts
index 783af44e4..783af44e4 100644
--- a/tests/testdata/run/with_config/frontend_work.ts
+++ b/tests/specs/run/config_auto_discovered_for_local_script/frontend_work.ts
diff --git a/tests/specs/run/config_auto_discovered_for_local_script_log/__test__.jsonc b/tests/specs/run/config_auto_discovered_for_local_script_log/__test__.jsonc
new file mode 100644
index 000000000..5182cc958
--- /dev/null
+++ b/tests/specs/run/config_auto_discovered_for_local_script_log/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run -L debug frontend_work.ts",
+ "output": "auto_discovery_log.out"
+}
diff --git a/tests/testdata/run/with_config/auto_discovery_log.out b/tests/specs/run/config_auto_discovered_for_local_script_log/auto_discovery_log.out
index 1a25eb9a7..1a25eb9a7 100644
--- a/tests/testdata/run/with_config/auto_discovery_log.out
+++ b/tests/specs/run/config_auto_discovered_for_local_script_log/auto_discovery_log.out
diff --git a/tests/testdata/run/with_config/deno.jsonc b/tests/specs/run/config_auto_discovered_for_local_script_log/deno.jsonc
index 9017fac30..9017fac30 100644
--- a/tests/testdata/run/with_config/deno.jsonc
+++ b/tests/specs/run/config_auto_discovered_for_local_script_log/deno.jsonc
diff --git a/tests/specs/run/config_auto_discovered_for_local_script_log/frontend_work.ts b/tests/specs/run/config_auto_discovered_for_local_script_log/frontend_work.ts
new file mode 100644
index 000000000..783af44e4
--- /dev/null
+++ b/tests/specs/run/config_auto_discovered_for_local_script_log/frontend_work.ts
@@ -0,0 +1,4 @@
+function _main() {
+ console.log(document);
+}
+console.log("ok");
diff --git a/tests/specs/run/config_json_import/__test__.jsonc b/tests/specs/run/config_json_import/__test__.jsonc
new file mode 100644
index 000000000..6ef632ff8
--- /dev/null
+++ b/tests/specs/run/config_json_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet -c deno-jsx.json config_json_import.ts",
+ "output": "config_json_import.ts.out"
+}
diff --git a/tests/specs/run/config_json_import/config_json_import.ts b/tests/specs/run/config_json_import/config_json_import.ts
new file mode 100644
index 000000000..4a772fac3
--- /dev/null
+++ b/tests/specs/run/config_json_import/config_json_import.ts
@@ -0,0 +1,2 @@
+import config from "./deno-jsx.json" with { type: "json" };
+console.log(config);
diff --git a/tests/testdata/run/config_json_import.ts.out b/tests/specs/run/config_json_import/config_json_import.ts.out
index aa55be7d5..aa55be7d5 100644
--- a/tests/testdata/run/config_json_import.ts.out
+++ b/tests/specs/run/config_json_import/config_json_import.ts.out
diff --git a/tests/specs/run/config_json_import/deno-jsx.json b/tests/specs/run/config_json_import/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/config_json_import/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/config_not_auto_discovered_for_remote_script/__test__.jsonc b/tests/specs/run/config_not_auto_discovered_for_remote_script/__test__.jsonc
new file mode 100644
index 000000000..e6ccc02ac
--- /dev/null
+++ b/tests/specs/run/config_not_auto_discovered_for_remote_script/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet server_side_work.ts",
+ "output": "ok\n"
+}
diff --git a/tests/testdata/run/with_config/server_side_work.ts b/tests/specs/run/config_not_auto_discovered_for_remote_script/server_side_work.ts
index 12db2ab05..12db2ab05 100644
--- a/tests/testdata/run/with_config/server_side_work.ts
+++ b/tests/specs/run/config_not_auto_discovered_for_remote_script/server_side_work.ts
diff --git a/tests/specs/run/config_types/__test__.jsonc b/tests/specs/run/config_types/__test__.jsonc
new file mode 100644
index 000000000..d803915c7
--- /dev/null
+++ b/tests/specs/run/config_types/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --quiet --check=all --config config_types/tsconfig.json config_types/main.ts",
+ "output": "config_types/main.out"
+}
diff --git a/tests/specs/run/config_types/config_types/deno.lock b/tests/specs/run/config_types/config_types/deno.lock
new file mode 100644
index 000000000..157bd98a2
--- /dev/null
+++ b/tests/specs/run/config_types/config_types/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/run/config_types/types.d.ts": "741c39165e37de0c12acc5c081841f4362487e3f17dc4cad7017b70af72c4605"
+ }
+}
diff --git a/tests/testdata/run/config_types/main.out b/tests/specs/run/config_types/config_types/main.out
index 417b7b537..417b7b537 100644
--- a/tests/testdata/run/config_types/main.out
+++ b/tests/specs/run/config_types/config_types/main.out
diff --git a/tests/testdata/run/config_types/main.ts b/tests/specs/run/config_types/config_types/main.ts
index f1a8d6583..f1a8d6583 100644
--- a/tests/testdata/run/config_types/main.ts
+++ b/tests/specs/run/config_types/config_types/main.ts
diff --git a/tests/testdata/run/config_types/remote.tsconfig.json b/tests/specs/run/config_types/config_types/remote.tsconfig.json
index 255ff5def..255ff5def 100644
--- a/tests/testdata/run/config_types/remote.tsconfig.json
+++ b/tests/specs/run/config_types/config_types/remote.tsconfig.json
diff --git a/tests/testdata/run/config_types/tsconfig.json b/tests/specs/run/config_types/config_types/tsconfig.json
index 85f1549e0..85f1549e0 100644
--- a/tests/testdata/run/config_types/tsconfig.json
+++ b/tests/specs/run/config_types/config_types/tsconfig.json
diff --git a/tests/specs/run/config_types/config_types/types.d.ts b/tests/specs/run/config_types/config_types/types.d.ts
new file mode 100644
index 000000000..536a6d0a6
--- /dev/null
+++ b/tests/specs/run/config_types/config_types/types.d.ts
@@ -0,0 +1,2 @@
+// deno-lint-ignore-file no-var
+declare var a: string;
diff --git a/tests/specs/run/config_types_remote/__test__.jsonc b/tests/specs/run/config_types_remote/__test__.jsonc
new file mode 100644
index 000000000..87457ace2
--- /dev/null
+++ b/tests/specs/run/config_types_remote/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --quiet --check=all --config config_types/remote.tsconfig.json config_types/main.ts",
+ "output": "config_types/main.out"
+}
diff --git a/tests/specs/run/config_types_remote/config_types/deno.lock b/tests/specs/run/config_types_remote/config_types/deno.lock
new file mode 100644
index 000000000..157bd98a2
--- /dev/null
+++ b/tests/specs/run/config_types_remote/config_types/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/run/config_types/types.d.ts": "741c39165e37de0c12acc5c081841f4362487e3f17dc4cad7017b70af72c4605"
+ }
+}
diff --git a/tests/testdata/run/reference_types.ts.out b/tests/specs/run/config_types_remote/config_types/main.out
index 417b7b537..417b7b537 100644
--- a/tests/testdata/run/reference_types.ts.out
+++ b/tests/specs/run/config_types_remote/config_types/main.out
diff --git a/tests/specs/run/config_types_remote/config_types/main.ts b/tests/specs/run/config_types_remote/config_types/main.ts
new file mode 100644
index 000000000..f1a8d6583
--- /dev/null
+++ b/tests/specs/run/config_types_remote/config_types/main.ts
@@ -0,0 +1 @@
+console.log(globalThis.a);
diff --git a/tests/specs/run/config_types_remote/config_types/remote.tsconfig.json b/tests/specs/run/config_types_remote/config_types/remote.tsconfig.json
new file mode 100644
index 000000000..255ff5def
--- /dev/null
+++ b/tests/specs/run/config_types_remote/config_types/remote.tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "types": [
+ "http://localhost:4545/run/config_types/types.d.ts"
+ ]
+ }
+}
diff --git a/tests/specs/run/config_types_remote/config_types/tsconfig.json b/tests/specs/run/config_types_remote/config_types/tsconfig.json
new file mode 100644
index 000000000..85f1549e0
--- /dev/null
+++ b/tests/specs/run/config_types_remote/config_types/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "types": [
+ "./types.d.ts"
+ ]
+ }
+}
diff --git a/tests/specs/run/config_types_remote/config_types/types.d.ts b/tests/specs/run/config_types_remote/config_types/types.d.ts
new file mode 100644
index 000000000..536a6d0a6
--- /dev/null
+++ b/tests/specs/run/config_types_remote/config_types/types.d.ts
@@ -0,0 +1,2 @@
+// deno-lint-ignore-file no-var
+declare var a: string;
diff --git a/tests/specs/run/custom_inspect_url/__test__.jsonc b/tests/specs/run/custom_inspect_url/__test__.jsonc
new file mode 100644
index 000000000..1c1c2b9c4
--- /dev/null
+++ b/tests/specs/run/custom_inspect_url/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run custom_inspect_url.js",
+ "output": "custom_inspect_url.js.out"
+}
diff --git a/tests/testdata/run/custom_inspect_url.js b/tests/specs/run/custom_inspect_url/custom_inspect_url.js
index 69aa2dc49..69aa2dc49 100644
--- a/tests/testdata/run/custom_inspect_url.js
+++ b/tests/specs/run/custom_inspect_url/custom_inspect_url.js
diff --git a/tests/testdata/run/custom_inspect_url.js.out b/tests/specs/run/custom_inspect_url/custom_inspect_url.js.out
index 1c714e34e..1c714e34e 100644
--- a/tests/testdata/run/custom_inspect_url.js.out
+++ b/tests/specs/run/custom_inspect_url/custom_inspect_url.js.out
diff --git a/tests/specs/run/decorators_tc39_proposal/__test__.jsonc b/tests/specs/run/decorators_tc39_proposal/__test__.jsonc
new file mode 100644
index 000000000..8e529695d
--- /dev/null
+++ b/tests/specs/run/decorators_tc39_proposal/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --check decorators/tc39_proposal/main.ts",
+ "output": "decorators/tc39_proposal/main.out"
+}
diff --git a/tests/testdata/run/decorators/experimental/deno.json b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/deno.json
index 504cd646e..504cd646e 100644
--- a/tests/testdata/run/decorators/experimental/deno.json
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/deno.json
diff --git a/tests/testdata/run/decorators/experimental/no_check/main.out b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/no_check/main.out
index 015f7076e..015f7076e 100644
--- a/tests/testdata/run/decorators/experimental/no_check/main.out
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/no_check/main.out
diff --git a/tests/testdata/run/decorators/experimental/no_check/main.ts b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/no_check/main.ts
index 9f7ec550d..9f7ec550d 100644
--- a/tests/testdata/run/decorators/experimental/no_check/main.ts
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/no_check/main.ts
diff --git a/tests/testdata/run/decorators/experimental/runtime/main.out b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/runtime/main.out
index 0fc1d4590..0fc1d4590 100644
--- a/tests/testdata/run/decorators/experimental/runtime/main.out
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/runtime/main.out
diff --git a/tests/testdata/run/decorators/experimental/runtime/main.ts b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/runtime/main.ts
index 40a26bbd4..40a26bbd4 100644
--- a/tests/testdata/run/decorators/experimental/runtime/main.ts
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/runtime/main.ts
diff --git a/tests/testdata/run/decorators/experimental/ts/main.out b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/ts/main.out
index ea64fbaa6..ea64fbaa6 100644
--- a/tests/testdata/run/decorators/experimental/ts/main.out
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/ts/main.out
diff --git a/tests/testdata/run/decorators/experimental/ts/main.ts b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/ts/main.ts
index 95fba6cd4..95fba6cd4 100644
--- a/tests/testdata/run/decorators/experimental/ts/main.ts
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/experimental/ts/main.ts
diff --git a/tests/testdata/run/decorators/tc39_proposal/main.out b/tests/specs/run/decorators_tc39_proposal/decorators/tc39_proposal/main.out
index 39394952e..39394952e 100644
--- a/tests/testdata/run/decorators/tc39_proposal/main.out
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/tc39_proposal/main.out
diff --git a/tests/testdata/run/decorators/tc39_proposal/main.ts b/tests/specs/run/decorators_tc39_proposal/decorators/tc39_proposal/main.ts
index 00c8a8502..00c8a8502 100644
--- a/tests/testdata/run/decorators/tc39_proposal/main.ts
+++ b/tests/specs/run/decorators_tc39_proposal/decorators/tc39_proposal/main.ts
diff --git a/tests/specs/run/deno_exit_tampering/__test__.jsonc b/tests/specs/run/deno_exit_tampering/__test__.jsonc
new file mode 100644
index 000000000..1666fbacb
--- /dev/null
+++ b/tests/specs/run/deno_exit_tampering/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --no-check deno_exit_tampering.ts",
+ "output": "",
+ "exitCode": 42
+}
diff --git a/tests/testdata/run/deno_exit_tampering.ts b/tests/specs/run/deno_exit_tampering/deno_exit_tampering.ts
index 3b24261e2..3b24261e2 100644
--- a/tests/testdata/run/deno_exit_tampering.ts
+++ b/tests/specs/run/deno_exit_tampering/deno_exit_tampering.ts
diff --git a/tests/specs/run/deny_all_permission_args/__test__.jsonc b/tests/specs/run/deny_all_permission_args/__test__.jsonc
new file mode 100644
index 000000000..1d6b28682
--- /dev/null
+++ b/tests/specs/run/deny_all_permission_args/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --deny-env --deny-read --deny-write --deny-ffi --deny-run --deny-sys --deny-net deny_all_permission_args.js",
+ "output": "deny_all_permission_args.out"
+}
diff --git a/tests/testdata/run/deny_all_permission_args.js b/tests/specs/run/deny_all_permission_args/deny_all_permission_args.js
index c63d2c362..c63d2c362 100644
--- a/tests/testdata/run/deny_all_permission_args.js
+++ b/tests/specs/run/deny_all_permission_args/deny_all_permission_args.js
diff --git a/tests/testdata/run/deny_all_permission_args.out b/tests/specs/run/deny_all_permission_args/deny_all_permission_args.out
index de6f687f4..de6f687f4 100644
--- a/tests/testdata/run/deny_all_permission_args.out
+++ b/tests/specs/run/deny_all_permission_args/deny_all_permission_args.out
diff --git a/tests/specs/run/deny_some_permission_args/__test__.jsonc b/tests/specs/run/deny_some_permission_args/__test__.jsonc
new file mode 100644
index 000000000..a55ee57e4
--- /dev/null
+++ b/tests/specs/run/deny_some_permission_args/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-env --deny-env=FOO --allow-read --deny-read=/foo --allow-write --deny-write=/foo --allow-ffi --deny-ffi=/foo --allow-run --deny-run=foo --allow-sys --deny-sys=hostname --allow-net --deny-net=127.0.0.1 deny_some_permission_args.js",
+ "output": "deny_some_permission_args.out"
+}
diff --git a/tests/testdata/run/deny_some_permission_args.js b/tests/specs/run/deny_some_permission_args/deny_some_permission_args.js
index 357dda238..357dda238 100644
--- a/tests/testdata/run/deny_some_permission_args.js
+++ b/tests/specs/run/deny_some_permission_args/deny_some_permission_args.js
diff --git a/tests/testdata/run/deny_some_permission_args.out b/tests/specs/run/deny_some_permission_args/deny_some_permission_args.out
index abb5274ee..abb5274ee 100644
--- a/tests/testdata/run/deny_some_permission_args.out
+++ b/tests/specs/run/deny_some_permission_args/deny_some_permission_args.out
diff --git a/tests/specs/run/dom_exception_formatting/__test__.jsonc b/tests/specs/run/dom_exception_formatting/__test__.jsonc
new file mode 100644
index 000000000..5b1505b57
--- /dev/null
+++ b/tests/specs/run/dom_exception_formatting/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run dom_exception_formatting.ts",
+ "output": "dom_exception_formatting.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/dom_exception_formatting.ts b/tests/specs/run/dom_exception_formatting/dom_exception_formatting.ts
index 0209ec81e..0209ec81e 100644
--- a/tests/testdata/run/dom_exception_formatting.ts
+++ b/tests/specs/run/dom_exception_formatting/dom_exception_formatting.ts
diff --git a/tests/testdata/run/dom_exception_formatting.ts.out b/tests/specs/run/dom_exception_formatting/dom_exception_formatting.ts.out
index 75615d0a8..75615d0a8 100644
--- a/tests/testdata/run/dom_exception_formatting.ts.out
+++ b/tests/specs/run/dom_exception_formatting/dom_exception_formatting.ts.out
diff --git a/tests/specs/run/dynamic_import_already_rejected/__test__.jsonc b/tests/specs/run/dynamic_import_already_rejected/__test__.jsonc
new file mode 100644
index 000000000..0cd120130
--- /dev/null
+++ b/tests/specs/run/dynamic_import_already_rejected/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read dynamic_import_already_rejected/main.ts",
+ "output": "dynamic_import_already_rejected/main.out"
+}
diff --git a/tests/testdata/run/dynamic_import_already_rejected/error_001.ts b/tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/error_001.ts
index b01068bc0..b01068bc0 100644
--- a/tests/testdata/run/dynamic_import_already_rejected/error_001.ts
+++ b/tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/error_001.ts
diff --git a/tests/testdata/run/dynamic_import_already_rejected/main.out b/tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/main.out
index c3eb66f9e..c3eb66f9e 100644
--- a/tests/testdata/run/dynamic_import_already_rejected/main.out
+++ b/tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/main.out
diff --git a/tests/testdata/run/dynamic_import_already_rejected/main.ts b/tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/main.ts
index 249de8d8b..249de8d8b 100644
--- a/tests/testdata/run/dynamic_import_already_rejected/main.ts
+++ b/tests/specs/run/dynamic_import_already_rejected/dynamic_import_already_rejected/main.ts
diff --git a/tests/specs/run/dynamic_import_async_error/__test__.jsonc b/tests/specs/run/dynamic_import_async_error/__test__.jsonc
new file mode 100644
index 000000000..9824c3450
--- /dev/null
+++ b/tests/specs/run/dynamic_import_async_error/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read dynamic_import_async_error/main.ts",
+ "output": "dynamic_import_async_error/main.out"
+}
diff --git a/tests/testdata/run/dynamic_import_async_error/delayed_error.ts b/tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/delayed_error.ts
index 76057e627..76057e627 100644
--- a/tests/testdata/run/dynamic_import_async_error/delayed_error.ts
+++ b/tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/delayed_error.ts
diff --git a/tests/testdata/run/dynamic_import_async_error/main.out b/tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/main.out
index 974c2e426..974c2e426 100644
--- a/tests/testdata/run/dynamic_import_async_error/main.out
+++ b/tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/main.out
diff --git a/tests/testdata/run/dynamic_import_async_error/main.ts b/tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/main.ts
index 998e7ed3e..998e7ed3e 100644
--- a/tests/testdata/run/dynamic_import_async_error/main.ts
+++ b/tests/specs/run/dynamic_import_async_error/dynamic_import_async_error/main.ts
diff --git a/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/__test__.jsonc b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/__test__.jsonc
new file mode 100644
index 000000000..c4c30ca5d
--- /dev/null
+++ b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --allow-read --allow-net --quiet dynamic_import_concurrent_non_statically_analyzable/main.ts",
+ "output": "dynamic_import_concurrent_non_statically_analyzable/main.out"
+}
diff --git a/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/main.out
index c344d0aae..c344d0aae 100644
--- a/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out
+++ b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/main.out
diff --git a/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/main.ts
index 0832e40be..0832e40be 100644
--- a/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts
+++ b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/main.ts
diff --git a/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/mod.ts
index 56f2002ed..56f2002ed 100644
--- a/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts
+++ b/tests/specs/run/dynamic_import_concurrent_non_statically_analyzable/dynamic_import_concurrent_non_statically_analyzable/mod.ts
diff --git a/tests/specs/run/dynamic_import_conditional/__test__.jsonc b/tests/specs/run/dynamic_import_conditional/__test__.jsonc
new file mode 100644
index 000000000..8adff3a16
--- /dev/null
+++ b/tests/specs/run/dynamic_import_conditional/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload dynamic_import_conditional.js",
+ "output": "dynamic_import_conditional.js.out"
+}
diff --git a/tests/testdata/run/dynamic_import_conditional.js b/tests/specs/run/dynamic_import_conditional/dynamic_import_conditional.js
index 1b4193e3e..1b4193e3e 100644
--- a/tests/testdata/run/dynamic_import_conditional.js
+++ b/tests/specs/run/dynamic_import_conditional/dynamic_import_conditional.js
diff --git a/tests/testdata/run/dynamic_import_conditional.js.out b/tests/specs/run/dynamic_import_conditional/dynamic_import_conditional.js.out
index 27ba77dda..27ba77dda 100644
--- a/tests/testdata/run/dynamic_import_conditional.js.out
+++ b/tests/specs/run/dynamic_import_conditional/dynamic_import_conditional.js.out
diff --git a/tests/specs/run/dynamic_import_permissions_blob_local/__test__.jsonc b/tests/specs/run/dynamic_import_permissions_blob_local/__test__.jsonc
new file mode 100644
index 000000000..27a747b3a
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_blob_local/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-net=localhost:4545 permissions_blob_local.ts",
+ "output": "permissions_blob_local.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts b/tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts
new file mode 100644
index 000000000..865c1777a
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts
@@ -0,0 +1,6 @@
+// This file doesn't really exist, but it doesn't matter, a "NotCapable" error should be thrown.
+const code = `import "file:///${
+ Deno.build.os == "windows" ? "C:/" : ""
+}local_file.ts";`;
+const blob = new Blob([code]);
+await import(URL.createObjectURL(blob));
diff --git a/tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts.out b/tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts.out
new file mode 100644
index 000000000..b7b246ba2
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_blob_local/permissions_blob_local.ts.out
@@ -0,0 +1,5 @@
+error: Uncaught (in promise) TypeError: Requires read access to "[WILDCARD]local_file.ts", run again with the --allow-read flag
+ at blob:null/[WILDCARD]:1:8
+await import(URL.createObjectURL(blob));
+^
+ at async file://[WILDCARD]/permissions_blob_local.ts:6:1
diff --git a/tests/specs/run/dynamic_import_permissions_blob_remote/__test__.jsonc b/tests/specs/run/dynamic_import_permissions_blob_remote/__test__.jsonc
new file mode 100644
index 000000000..f9d66b6b3
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_blob_remote/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-net=localhost:4545 permissions_blob_remote.ts",
+ "output": "permissions_blob_remote.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts b/tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts
new file mode 100644
index 000000000..569b1f84c
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts
@@ -0,0 +1,3 @@
+const code = `import "https://example.com/some/file.ts";`;
+const blob = new Blob([code]);
+await import(URL.createObjectURL(blob));
diff --git a/tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts.out b/tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts.out
new file mode 100644
index 000000000..287cf9998
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_blob_remote/permissions_blob_remote.ts.out
@@ -0,0 +1,5 @@
+error: Uncaught (in promise) TypeError: Requires import access to "example.com:443", run again with the --allow-import flag
+ at blob:null/[WILDCARD]:1:8
+await import(URL.createObjectURL(blob));
+^
+ at async file:///[WILDCARD]/permissions_blob_remote.ts:3:1
diff --git a/tests/specs/run/dynamic_import_permissions_data_local/__test__.jsonc b/tests/specs/run/dynamic_import_permissions_data_local/__test__.jsonc
new file mode 100644
index 000000000..8f118d8be
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_data_local/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-net=localhost:4545 permissions_data_local.ts",
+ "output": "permissions_data_local.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts b/tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts
new file mode 100644
index 000000000..01bff7d7a
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts
@@ -0,0 +1,5 @@
+// This file doesn't really exist, but it doesn't matter, a "NotCapable" error should be thrown.
+const code = `import "file:///${
+ Deno.build.os == "windows" ? "C:/" : ""
+}local_file.ts";`;
+await import(`data:application/javascript;base64,${btoa(code)}`);
diff --git a/tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts.out b/tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts.out
new file mode 100644
index 000000000..bf8c1948e
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_data_local/permissions_data_local.ts.out
@@ -0,0 +1,5 @@
+error: Uncaught (in promise) TypeError: Requires read access to "[WILDCARD]local_file.ts", run again with the --allow-read flag
+ at data:application/javascript;base64,[WILDCARD]:1:8
+await import(`data:application/javascript;base64,${btoa(code)}`);
+^
+ at async file:///[WILDCARD]/permissions_data_local.ts:5:1
diff --git a/tests/specs/run/dynamic_import_permissions_data_remote/__test__.jsonc b/tests/specs/run/dynamic_import_permissions_data_remote/__test__.jsonc
new file mode 100644
index 000000000..5b2c0c568
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_data_remote/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-import=localhost:4545 permissions_data_remote.ts",
+ "output": "permissions_data_remote.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts b/tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts
new file mode 100644
index 000000000..b0a9540c3
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts
@@ -0,0 +1,3 @@
+// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown.
+const code = `import "https://example.com/some/file.ts";`;
+await import(`data:application/javascript;base64,${btoa(code)}`);
diff --git a/tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts.out b/tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts.out
new file mode 100644
index 000000000..c8de9382a
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_data_remote/permissions_data_remote.ts.out
@@ -0,0 +1,5 @@
+error: Uncaught (in promise) TypeError: Requires import access to "example.com:443", run again with the --allow-import flag
+ at data:application/javascript;base64,aW1wb3J0ICJodHRwczovL2V4YW1wbGUuY29tL3NvbWUvZmlsZS50cyI7:1:8
+await import(`data:application/javascript;base64,${btoa(code)}`);
+^
+ at async file:///[WILDCARD]/permissions_data_remote.ts:3:1
diff --git a/tests/specs/run/dynamic_import_permissions_remote_remote/__test__.jsonc b/tests/specs/run/dynamic_import_permissions_remote_remote/__test__.jsonc
new file mode 100644
index 000000000..00fd2a6e4
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_remote_remote/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-import=localhost:4545 permissions_remote_remote.ts",
+ "output": "permissions_remote_remote.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts b/tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts
new file mode 100644
index 000000000..65a254191
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts
@@ -0,0 +1,3 @@
+await import(
+ "" + "http://localhost:4545/dynamic_import/static_remote.ts"
+);
diff --git a/tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts.out b/tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts.out
new file mode 100644
index 000000000..16fe3bbdd
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_remote_remote/permissions_remote_remote.ts.out
@@ -0,0 +1,5 @@
+error: Uncaught (in promise) TypeError: Requires import access to "example.com:443", run again with the --allow-import flag
+ at http://localhost:4545/dynamic_import/static_remote.ts:2:8
+await import(
+^
+ at async file:///[WILDCARD]/permissions_remote_remote.ts:1:1
diff --git a/tests/specs/run/dynamic_import_permissions_remote_remote/static_remote.ts b/tests/specs/run/dynamic_import_permissions_remote_remote/static_remote.ts
new file mode 100644
index 000000000..2d6e820fd
--- /dev/null
+++ b/tests/specs/run/dynamic_import_permissions_remote_remote/static_remote.ts
@@ -0,0 +1,2 @@
+// This file doesn't really exist, but it doesn't matter, a "PermissionsDenied" error should be thrown.
+import "https://example.com/some/file.ts";
diff --git a/tests/specs/run/dynamic_import_static_analysis_no_permissions/__test__.jsonc b/tests/specs/run/dynamic_import_static_analysis_no_permissions/__test__.jsonc
new file mode 100644
index 000000000..937974869
--- /dev/null
+++ b/tests/specs/run/dynamic_import_static_analysis_no_permissions/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --no-prompt static_analysis_no_permissions.ts",
+ "output": "static_analysis_no_permissions.ts.out"
+}
diff --git a/tests/testdata/run/empty.ts b/tests/specs/run/dynamic_import_static_analysis_no_permissions/empty_1.ts
index e69de29bb..e69de29bb 100644
--- a/tests/testdata/run/empty.ts
+++ b/tests/specs/run/dynamic_import_static_analysis_no_permissions/empty_1.ts
diff --git a/tests/testdata/run/wasm_shared.out b/tests/specs/run/dynamic_import_static_analysis_no_permissions/empty_2.ts
index e69de29bb..e69de29bb 100644
--- a/tests/testdata/run/wasm_shared.out
+++ b/tests/specs/run/dynamic_import_static_analysis_no_permissions/empty_2.ts
diff --git a/tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts b/tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts
new file mode 100644
index 000000000..de75ba87b
--- /dev/null
+++ b/tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts
@@ -0,0 +1,13 @@
+try {
+ await import("./empty_1.ts");
+ console.log("✅ Succeeded importing statically analyzable specifier");
+} catch {
+ console.log("❌ Failed importing statically analyzable specifier");
+}
+
+try {
+ await import("" + "./empty_2.ts");
+ console.log("❌ Succeeded importing non-statically analyzable specifier");
+} catch {
+ console.log("✅ Failed importing non-statically analyzable specifier");
+}
diff --git a/tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts.out b/tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts.out
new file mode 100644
index 000000000..ba9249ab0
--- /dev/null
+++ b/tests/specs/run/dynamic_import_static_analysis_no_permissions/static_analysis_no_permissions.ts.out
@@ -0,0 +1,2 @@
+✅ Succeeded importing statically analyzable specifier
+✅ Failed importing non-statically analyzable specifier
diff --git a/tests/specs/run/dynamic_import_syntax_error/__test__.jsonc b/tests/specs/run/dynamic_import_syntax_error/__test__.jsonc
new file mode 100644
index 000000000..1971d3184
--- /dev/null
+++ b/tests/specs/run/dynamic_import_syntax_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run -A dynamic_import_syntax_error.js",
+ "output": "dynamic_import_syntax_error.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/dynamic_import_syntax_error.js b/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error.js
index be8ec132f..be8ec132f 100644
--- a/tests/testdata/run/dynamic_import_syntax_error.js
+++ b/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error.js
diff --git a/tests/testdata/run/dynamic_import_syntax_error.js.out b/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error.js.out
index 91e69eac7..91e69eac7 100644
--- a/tests/testdata/run/dynamic_import_syntax_error.js.out
+++ b/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error.js.out
diff --git a/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error_import.js b/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error_import.js
new file mode 100644
index 000000000..bcf075638
--- /dev/null
+++ b/tests/specs/run/dynamic_import_syntax_error/dynamic_import_syntax_error_import.js
@@ -0,0 +1,5 @@
+// deno-lint-ignore-file
+function foo() {
+ await Promise.resolve();
+}
+foo();
diff --git a/tests/specs/run/empty_typescript/__test__.jsonc b/tests/specs/run/empty_typescript/__test__.jsonc
new file mode 100644
index 000000000..8090c50f6
--- /dev/null
+++ b/tests/specs/run/empty_typescript/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --check empty.ts",
+ "output": "Check file:[WILDCARD]/empty.ts\n"
+}
diff --git a/tests/testdata/run/worker_close_race.js.out b/tests/specs/run/empty_typescript/empty.ts
index e69de29bb..e69de29bb 100644
--- a/tests/testdata/run/worker_close_race.js.out
+++ b/tests/specs/run/empty_typescript/empty.ts
diff --git a/tests/specs/run/error_001/__test__.jsonc b/tests/specs/run/error_001/__test__.jsonc
new file mode 100644
index 000000000..7b9158e4f
--- /dev/null
+++ b/tests/specs/run/error_001/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_001.ts",
+ "output": "error_001.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/error_001/error_001.ts b/tests/specs/run/error_001/error_001.ts
new file mode 100644
index 000000000..b01068bc0
--- /dev/null
+++ b/tests/specs/run/error_001/error_001.ts
@@ -0,0 +1,9 @@
+function foo(): never {
+ throw Error("bad");
+}
+
+function bar() {
+ foo();
+}
+
+bar();
diff --git a/tests/testdata/run/error_001.ts.out b/tests/specs/run/error_001/error_001.ts.out
index 9d8559917..9d8559917 100644
--- a/tests/testdata/run/error_001.ts.out
+++ b/tests/specs/run/error_001/error_001.ts.out
diff --git a/tests/specs/run/error_002/__test__.jsonc b/tests/specs/run/error_002/__test__.jsonc
new file mode 100644
index 000000000..3a68a8675
--- /dev/null
+++ b/tests/specs/run/error_002/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_002.ts",
+ "output": "error_002.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/error_002/error_002.ts b/tests/specs/run/error_002/error_002.ts
new file mode 100644
index 000000000..ac712fbf7
--- /dev/null
+++ b/tests/specs/run/error_002/error_002.ts
@@ -0,0 +1,7 @@
+import { throwsError } from "./mod1.ts";
+
+function foo() {
+ throwsError();
+}
+
+foo();
diff --git a/tests/specs/run/error_002/error_002.ts.out b/tests/specs/run/error_002/error_002.ts.out
new file mode 100644
index 000000000..1051e7360
--- /dev/null
+++ b/tests/specs/run/error_002/error_002.ts.out
@@ -0,0 +1,6 @@
+[WILDCARD]error: Uncaught (in promise) Error: exception from mod1
+ throw Error("exception from mod1");
+ ^
+ at throwsError ([WILDCARD]/mod1.ts:16:9)
+ at foo ([WILDCARD]/error_002.ts:4:3)
+ at [WILDCARD]/error_002.ts:7:1
diff --git a/tests/specs/run/error_002/mod1.ts b/tests/specs/run/error_002/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/error_002/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/error_002/print_hello.ts b/tests/specs/run/error_002/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/error_002/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/error_002/subdir2/mod2.ts b/tests/specs/run/error_002/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/error_002/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/specs/run/error_003_typescript/__test__.jsonc b/tests/specs/run/error_003_typescript/__test__.jsonc
new file mode 100644
index 000000000..f7ef69b26
--- /dev/null
+++ b/tests/specs/run/error_003_typescript/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check error_003_typescript.ts",
+ "output": "error_003_typescript.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_003_typescript.ts b/tests/specs/run/error_003_typescript/error_003_typescript.ts
index e1f882123..e1f882123 100644
--- a/tests/testdata/run/error_003_typescript.ts
+++ b/tests/specs/run/error_003_typescript/error_003_typescript.ts
diff --git a/tests/testdata/run/error_003_typescript.ts.out b/tests/specs/run/error_003_typescript/error_003_typescript.ts.out
index bbb2ec470..bbb2ec470 100644
--- a/tests/testdata/run/error_003_typescript.ts.out
+++ b/tests/specs/run/error_003_typescript/error_003_typescript.ts.out
diff --git a/tests/specs/run/error_003_typescript2/__test__.jsonc b/tests/specs/run/error_003_typescript2/__test__.jsonc
new file mode 100644
index 000000000..ceeb6e7d9
--- /dev/null
+++ b/tests/specs/run/error_003_typescript2/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --check error_003_typescript.ts",
+ "output": "error_003_typescript.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/error_003_typescript2/error_003_typescript.ts b/tests/specs/run/error_003_typescript2/error_003_typescript.ts
new file mode 100644
index 000000000..e1f882123
--- /dev/null
+++ b/tests/specs/run/error_003_typescript2/error_003_typescript.ts
@@ -0,0 +1,20 @@
+// deno-lint-ignore-file
+let x = {
+ a: {
+ b: {
+ c() {
+ return { d: "hello" };
+ },
+ },
+ },
+};
+let y = {
+ a: {
+ b: {
+ c() {
+ return { d: 1234 };
+ },
+ },
+ },
+};
+x = y;
diff --git a/tests/specs/run/error_003_typescript2/error_003_typescript.ts.out b/tests/specs/run/error_003_typescript2/error_003_typescript.ts.out
new file mode 100644
index 000000000..bbb2ec470
--- /dev/null
+++ b/tests/specs/run/error_003_typescript2/error_003_typescript.ts.out
@@ -0,0 +1,7 @@
+[WILDCARD]
+error: TS2322 [ERROR]: Type '{ a: { b: { c(): { d: number; }; }; }; }' is not assignable to type '{ a: { b: { c(): { d: string; }; }; }; }'.
+ The types of 'a.b.c().d' are incompatible between these types.
+ Type 'number' is not assignable to type 'string'.
+x = y;
+^
+ at [WILDCARD]/error_003_typescript.ts:20:1
diff --git a/tests/specs/run/error_004_missing_module/__test__.jsonc b/tests/specs/run/error_004_missing_module/__test__.jsonc
new file mode 100644
index 000000000..824b9d8c9
--- /dev/null
+++ b/tests/specs/run/error_004_missing_module/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_004_missing_module.ts",
+ "output": "error_004_missing_module.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_004_missing_module.ts b/tests/specs/run/error_004_missing_module/error_004_missing_module.ts
index 82b281181..82b281181 100644
--- a/tests/testdata/run/error_004_missing_module.ts
+++ b/tests/specs/run/error_004_missing_module/error_004_missing_module.ts
diff --git a/tests/testdata/run/error_004_missing_module.ts.out b/tests/specs/run/error_004_missing_module/error_004_missing_module.ts.out
index 9a2cfb8a8..9a2cfb8a8 100644
--- a/tests/testdata/run/error_004_missing_module.ts.out
+++ b/tests/specs/run/error_004_missing_module/error_004_missing_module.ts.out
diff --git a/tests/specs/run/error_005_missing_dynamic_import/__test__.jsonc b/tests/specs/run/error_005_missing_dynamic_import/__test__.jsonc
new file mode 100644
index 000000000..b9f6a1b74
--- /dev/null
+++ b/tests/specs/run/error_005_missing_dynamic_import/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --allow-read --quiet error_005_missing_dynamic_import.ts",
+ "output": "error_005_missing_dynamic_import.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_005_missing_dynamic_import.ts b/tests/specs/run/error_005_missing_dynamic_import/error_005_missing_dynamic_import.ts
index 8ea8ff94e..8ea8ff94e 100644
--- a/tests/testdata/run/error_005_missing_dynamic_import.ts
+++ b/tests/specs/run/error_005_missing_dynamic_import/error_005_missing_dynamic_import.ts
diff --git a/tests/testdata/run/error_005_missing_dynamic_import.ts.out b/tests/specs/run/error_005_missing_dynamic_import/error_005_missing_dynamic_import.ts.out
index 55e4a8524..55e4a8524 100644
--- a/tests/testdata/run/error_005_missing_dynamic_import.ts.out
+++ b/tests/specs/run/error_005_missing_dynamic_import/error_005_missing_dynamic_import.ts.out
diff --git a/tests/specs/run/error_006_import_ext_failure/__test__.jsonc b/tests/specs/run/error_006_import_ext_failure/__test__.jsonc
new file mode 100644
index 000000000..0e70bdcaf
--- /dev/null
+++ b/tests/specs/run/error_006_import_ext_failure/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_006_import_ext_failure.ts",
+ "output": "error_006_import_ext_failure.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_006_import_ext_failure.ts b/tests/specs/run/error_006_import_ext_failure/error_006_import_ext_failure.ts
index 3c32303a3..3c32303a3 100644
--- a/tests/testdata/run/error_006_import_ext_failure.ts
+++ b/tests/specs/run/error_006_import_ext_failure/error_006_import_ext_failure.ts
diff --git a/tests/testdata/run/error_006_import_ext_failure.ts.out b/tests/specs/run/error_006_import_ext_failure/error_006_import_ext_failure.ts.out
index 667579bd8..667579bd8 100644
--- a/tests/testdata/run/error_006_import_ext_failure.ts.out
+++ b/tests/specs/run/error_006_import_ext_failure/error_006_import_ext_failure.ts.out
diff --git a/tests/specs/run/error_007_any/__test__.jsonc b/tests/specs/run/error_007_any/__test__.jsonc
new file mode 100644
index 000000000..8a1c0d27e
--- /dev/null
+++ b/tests/specs/run/error_007_any/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_007_any.ts",
+ "output": "error_007_any.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_007_any.ts b/tests/specs/run/error_007_any/error_007_any.ts
index bfef1289b..bfef1289b 100644
--- a/tests/testdata/run/error_007_any.ts
+++ b/tests/specs/run/error_007_any/error_007_any.ts
diff --git a/tests/testdata/run/error_007_any.ts.out b/tests/specs/run/error_007_any/error_007_any.ts.out
index 8d13dadb9..8d13dadb9 100644
--- a/tests/testdata/run/error_007_any.ts.out
+++ b/tests/specs/run/error_007_any/error_007_any.ts.out
diff --git a/tests/specs/run/error_008_checkjs/__test__.jsonc b/tests/specs/run/error_008_checkjs/__test__.jsonc
new file mode 100644
index 000000000..f735be953
--- /dev/null
+++ b/tests/specs/run/error_008_checkjs/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_008_checkjs.js",
+ "output": "error_008_checkjs.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_008_checkjs.js b/tests/specs/run/error_008_checkjs/error_008_checkjs.js
index f0856d94c..f0856d94c 100644
--- a/tests/testdata/run/error_008_checkjs.js
+++ b/tests/specs/run/error_008_checkjs/error_008_checkjs.js
diff --git a/tests/testdata/run/error_008_checkjs.js.out b/tests/specs/run/error_008_checkjs/error_008_checkjs.js.out
index bab481422..bab481422 100644
--- a/tests/testdata/run/error_008_checkjs.js.out
+++ b/tests/specs/run/error_008_checkjs/error_008_checkjs.js.out
diff --git a/tests/specs/run/error_009_extensions_error/__test__.jsonc b/tests/specs/run/error_009_extensions_error/__test__.jsonc
new file mode 100644
index 000000000..740d5119f
--- /dev/null
+++ b/tests/specs/run/error_009_extensions_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_009_extensions_error.js",
+ "output": "error_009_extensions_error.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_009_extensions_error.js b/tests/specs/run/error_009_extensions_error/error_009_extensions_error.js
index 01b97ea38..01b97ea38 100644
--- a/tests/testdata/run/error_009_extensions_error.js
+++ b/tests/specs/run/error_009_extensions_error/error_009_extensions_error.js
diff --git a/tests/testdata/run/error_009_extensions_error.js.out b/tests/specs/run/error_009_extensions_error/error_009_extensions_error.js.out
index 2ed936643..2ed936643 100644
--- a/tests/testdata/run/error_009_extensions_error.js.out
+++ b/tests/specs/run/error_009_extensions_error/error_009_extensions_error.js.out
diff --git a/tests/specs/run/error_011_bad_module_specifier/__test__.jsonc b/tests/specs/run/error_011_bad_module_specifier/__test__.jsonc
new file mode 100644
index 000000000..5ca5146be
--- /dev/null
+++ b/tests/specs/run/error_011_bad_module_specifier/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_011_bad_module_specifier.ts",
+ "output": "error_011_bad_module_specifier.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_011_bad_module_specifier.ts b/tests/specs/run/error_011_bad_module_specifier/error_011_bad_module_specifier.ts
index 1c57e37a5..1c57e37a5 100644
--- a/tests/testdata/run/error_011_bad_module_specifier.ts
+++ b/tests/specs/run/error_011_bad_module_specifier/error_011_bad_module_specifier.ts
diff --git a/tests/testdata/run/error_011_bad_module_specifier.ts.out b/tests/specs/run/error_011_bad_module_specifier/error_011_bad_module_specifier.ts.out
index 81be915d1..81be915d1 100644
--- a/tests/testdata/run/error_011_bad_module_specifier.ts.out
+++ b/tests/specs/run/error_011_bad_module_specifier/error_011_bad_module_specifier.ts.out
diff --git a/tests/specs/run/error_012_bad_dynamic_import_specifier/__test__.jsonc b/tests/specs/run/error_012_bad_dynamic_import_specifier/__test__.jsonc
new file mode 100644
index 000000000..9344f730d
--- /dev/null
+++ b/tests/specs/run/error_012_bad_dynamic_import_specifier/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check error_012_bad_dynamic_import_specifier.ts",
+ "output": "error_012_bad_dynamic_import_specifier.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts b/tests/specs/run/error_012_bad_dynamic_import_specifier/error_012_bad_dynamic_import_specifier.ts
index 5f39f407c..5f39f407c 100644
--- a/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts
+++ b/tests/specs/run/error_012_bad_dynamic_import_specifier/error_012_bad_dynamic_import_specifier.ts
diff --git a/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out b/tests/specs/run/error_012_bad_dynamic_import_specifier/error_012_bad_dynamic_import_specifier.ts.out
index 7acd66713..7acd66713 100644
--- a/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out
+++ b/tests/specs/run/error_012_bad_dynamic_import_specifier/error_012_bad_dynamic_import_specifier.ts.out
diff --git a/tests/specs/run/error_014_catch_dynamic_import_error/__test__.jsonc b/tests/specs/run/error_014_catch_dynamic_import_error/__test__.jsonc
new file mode 100644
index 000000000..94957dc65
--- /dev/null
+++ b/tests/specs/run/error_014_catch_dynamic_import_error/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-read error_014_catch_dynamic_import_error.js",
+ "output": "error_014_catch_dynamic_import_error.js.out"
+}
diff --git a/tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js b/tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js
new file mode 100644
index 000000000..05b021d15
--- /dev/null
+++ b/tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js
@@ -0,0 +1,31 @@
+(async () => {
+ try {
+ await import("does not exist");
+ } catch (err) {
+ console.log("Caught direct dynamic import error.");
+ console.log(err);
+ }
+
+ try {
+ await import("./indirect_import_error.js");
+ } catch (err) {
+ console.log("Caught indirect direct dynamic import error.");
+ console.log(err);
+ }
+
+ try {
+ await import("./throws.js");
+ } catch (err) {
+ console.log("Caught error thrown by dynamically imported module.");
+ console.log(err);
+ }
+
+ try {
+ await import("./indirect_throws.js");
+ } catch (err) {
+ console.log(
+ "Caught error thrown indirectly by dynamically imported module.",
+ );
+ console.log(err);
+ }
+})();
diff --git a/tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js.out b/tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js.out
new file mode 100644
index 000000000..71feaa55b
--- /dev/null
+++ b/tests/specs/run/error_014_catch_dynamic_import_error/error_014_catch_dynamic_import_error.js.out
@@ -0,0 +1,19 @@
+Caught direct dynamic import error.
+TypeError: Relative import path "does not exist" not prefixed with / or ./ or ../
+ at [WILDCARD]/error_014_catch_dynamic_import_error.js:3:18
+
+ at [WILDCARD]/error_014_catch_dynamic_import_error.js:3:5 {
+ code: "ERR_MODULE_NOT_FOUND"
+}
+Caught indirect direct dynamic import error.
+TypeError: Relative import path "does not exist either" not prefixed with / or ./ or ../
+ at [WILDCARD]/indirect_import_error.js:1:15
+ at async [WILDCARD]/error_014_catch_dynamic_import_error.js:10:5 {
+ code: "ERR_MODULE_NOT_FOUND"
+}
+Caught error thrown by dynamically imported module.
+Error: An error
+ at [WILDCARD]/throws.js:6:7
+Caught error thrown indirectly by dynamically imported module.
+Error: An error
+ at [WILDCARD]/throws.js:6:7
diff --git a/tests/specs/run/error_014_catch_dynamic_import_error/indirect_import_error.js b/tests/specs/run/error_014_catch_dynamic_import_error/indirect_import_error.js
new file mode 100644
index 000000000..84011d291
--- /dev/null
+++ b/tests/specs/run/error_014_catch_dynamic_import_error/indirect_import_error.js
@@ -0,0 +1 @@
+export * from "does not exist either";
diff --git a/tests/specs/run/error_014_catch_dynamic_import_error/indirect_throws.js b/tests/specs/run/error_014_catch_dynamic_import_error/indirect_throws.js
new file mode 100644
index 000000000..e1810a66c
--- /dev/null
+++ b/tests/specs/run/error_014_catch_dynamic_import_error/indirect_throws.js
@@ -0,0 +1 @@
+export * from "./throws.js";
diff --git a/tests/specs/run/error_014_catch_dynamic_import_error/throws.js b/tests/specs/run/error_014_catch_dynamic_import_error/throws.js
new file mode 100644
index 000000000..abdf29156
--- /dev/null
+++ b/tests/specs/run/error_014_catch_dynamic_import_error/throws.js
@@ -0,0 +1,6 @@
+// deno-lint-ignore-file
+export function boo() {
+ console.log("Boo!");
+}
+
+throw new Error("An error");
diff --git a/tests/specs/run/error_015_dynamic_import_permissions/__test__.jsonc b/tests/specs/run/error_015_dynamic_import_permissions/__test__.jsonc
new file mode 100644
index 000000000..3ab25f1a5
--- /dev/null
+++ b/tests/specs/run/error_015_dynamic_import_permissions/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --quiet error_015_dynamic_import_permissions.js",
+ "output": "error_015_dynamic_import_permissions.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.js b/tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.js
new file mode 100644
index 000000000..6e7daf5d0
--- /dev/null
+++ b/tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.js
@@ -0,0 +1,3 @@
+(async () => {
+ await import("" + "http://example.com/mod4.js");
+})();
diff --git a/tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.out b/tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.out
new file mode 100644
index 000000000..8ef2f6f1e
--- /dev/null
+++ b/tests/specs/run/error_015_dynamic_import_permissions/error_015_dynamic_import_permissions.out
@@ -0,0 +1,4 @@
+error: Uncaught (in promise) TypeError: Requires import access to "example.com:80", run again with the --allow-import flag
+ await import("" + "http://example.com/mod4.js");
+ ^
+ at async file://[WILDCARD]/error_015_dynamic_import_permissions.js:2:3
diff --git a/tests/specs/run/error_015_dynamic_import_permissions/mod4.js b/tests/specs/run/error_015_dynamic_import_permissions/mod4.js
new file mode 100644
index 000000000..71332dbc4
--- /dev/null
+++ b/tests/specs/run/error_015_dynamic_import_permissions/mod4.js
@@ -0,0 +1 @@
+export const isMod4 = true;
diff --git a/tests/specs/run/error_017_hide_long_source_ts/__test__.jsonc b/tests/specs/run/error_017_hide_long_source_ts/__test__.jsonc
new file mode 100644
index 000000000..382d56039
--- /dev/null
+++ b/tests/specs/run/error_017_hide_long_source_ts/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check error_017_hide_long_source_ts.ts",
+ "output": "error_017_hide_long_source_ts.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_017_hide_long_source_ts.ts b/tests/specs/run/error_017_hide_long_source_ts/error_017_hide_long_source_ts.ts
index d61cb1277..d61cb1277 100644
--- a/tests/testdata/run/error_017_hide_long_source_ts.ts
+++ b/tests/specs/run/error_017_hide_long_source_ts/error_017_hide_long_source_ts.ts
diff --git a/tests/testdata/run/error_017_hide_long_source_ts.ts.out b/tests/specs/run/error_017_hide_long_source_ts/error_017_hide_long_source_ts.ts.out
index 917061ab9..917061ab9 100644
--- a/tests/testdata/run/error_017_hide_long_source_ts.ts.out
+++ b/tests/specs/run/error_017_hide_long_source_ts/error_017_hide_long_source_ts.ts.out
diff --git a/tests/specs/run/error_018_hide_long_source_js/__test__.jsonc b/tests/specs/run/error_018_hide_long_source_js/__test__.jsonc
new file mode 100644
index 000000000..4e91a820d
--- /dev/null
+++ b/tests/specs/run/error_018_hide_long_source_js/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_018_hide_long_source_js.js",
+ "output": "error_018_hide_long_source_js.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_018_hide_long_source_js.js b/tests/specs/run/error_018_hide_long_source_js/error_018_hide_long_source_js.js
index d61cb1277..d61cb1277 100644
--- a/tests/testdata/run/error_018_hide_long_source_js.js
+++ b/tests/specs/run/error_018_hide_long_source_js/error_018_hide_long_source_js.js
diff --git a/tests/testdata/run/error_018_hide_long_source_js.js.out b/tests/specs/run/error_018_hide_long_source_js/error_018_hide_long_source_js.js.out
index 0897a100c..0897a100c 100644
--- a/tests/testdata/run/error_018_hide_long_source_js.js.out
+++ b/tests/specs/run/error_018_hide_long_source_js/error_018_hide_long_source_js.js.out
diff --git a/tests/specs/run/error_019_stack_function/__test__.jsonc b/tests/specs/run/error_019_stack_function/__test__.jsonc
new file mode 100644
index 000000000..5e272ee49
--- /dev/null
+++ b/tests/specs/run/error_019_stack_function/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_019_stack_function.ts",
+ "output": "error_019_stack_function.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_019_stack_function.ts b/tests/specs/run/error_019_stack_function/error_019_stack_function.ts
index a6a69d146..a6a69d146 100644
--- a/tests/testdata/run/error_019_stack_function.ts
+++ b/tests/specs/run/error_019_stack_function/error_019_stack_function.ts
diff --git a/tests/testdata/run/error_019_stack_function.ts.out b/tests/specs/run/error_019_stack_function/error_019_stack_function.ts.out
index edaff27c0..edaff27c0 100644
--- a/tests/testdata/run/error_019_stack_function.ts.out
+++ b/tests/specs/run/error_019_stack_function/error_019_stack_function.ts.out
diff --git a/tests/specs/run/error_020_stack_constructor/__test__.jsonc b/tests/specs/run/error_020_stack_constructor/__test__.jsonc
new file mode 100644
index 000000000..2dd574565
--- /dev/null
+++ b/tests/specs/run/error_020_stack_constructor/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_020_stack_constructor.ts",
+ "output": "error_020_stack_constructor.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_020_stack_constructor.ts b/tests/specs/run/error_020_stack_constructor/error_020_stack_constructor.ts
index 526d1a661..526d1a661 100644
--- a/tests/testdata/run/error_020_stack_constructor.ts
+++ b/tests/specs/run/error_020_stack_constructor/error_020_stack_constructor.ts
diff --git a/tests/testdata/run/error_020_stack_constructor.ts.out b/tests/specs/run/error_020_stack_constructor/error_020_stack_constructor.ts.out
index 9e48b8f98..9e48b8f98 100644
--- a/tests/testdata/run/error_020_stack_constructor.ts.out
+++ b/tests/specs/run/error_020_stack_constructor/error_020_stack_constructor.ts.out
diff --git a/tests/specs/run/error_021_stack_method/__test__.jsonc b/tests/specs/run/error_021_stack_method/__test__.jsonc
new file mode 100644
index 000000000..db78cac09
--- /dev/null
+++ b/tests/specs/run/error_021_stack_method/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_021_stack_method.ts",
+ "output": "error_021_stack_method.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_021_stack_method.ts b/tests/specs/run/error_021_stack_method/error_021_stack_method.ts
index b6ebe1f5e..b6ebe1f5e 100644
--- a/tests/testdata/run/error_021_stack_method.ts
+++ b/tests/specs/run/error_021_stack_method/error_021_stack_method.ts
diff --git a/tests/testdata/run/error_021_stack_method.ts.out b/tests/specs/run/error_021_stack_method/error_021_stack_method.ts.out
index 9df9b1b7c..9df9b1b7c 100644
--- a/tests/testdata/run/error_021_stack_method.ts.out
+++ b/tests/specs/run/error_021_stack_method/error_021_stack_method.ts.out
diff --git a/tests/specs/run/error_022_stack_custom_error/__test__.jsonc b/tests/specs/run/error_022_stack_custom_error/__test__.jsonc
new file mode 100644
index 000000000..f31505833
--- /dev/null
+++ b/tests/specs/run/error_022_stack_custom_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_022_stack_custom_error.ts",
+ "output": "error_022_stack_custom_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_022_stack_custom_error.ts b/tests/specs/run/error_022_stack_custom_error/error_022_stack_custom_error.ts
index b95743503..b95743503 100644
--- a/tests/testdata/run/error_022_stack_custom_error.ts
+++ b/tests/specs/run/error_022_stack_custom_error/error_022_stack_custom_error.ts
diff --git a/tests/testdata/run/error_022_stack_custom_error.ts.out b/tests/specs/run/error_022_stack_custom_error/error_022_stack_custom_error.ts.out
index 73e033e52..73e033e52 100644
--- a/tests/testdata/run/error_022_stack_custom_error.ts.out
+++ b/tests/specs/run/error_022_stack_custom_error/error_022_stack_custom_error.ts.out
diff --git a/tests/specs/run/error_023_stack_async/__test__.jsonc b/tests/specs/run/error_023_stack_async/__test__.jsonc
new file mode 100644
index 000000000..76cdff013
--- /dev/null
+++ b/tests/specs/run/error_023_stack_async/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_023_stack_async.ts",
+ "output": "error_023_stack_async.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_023_stack_async.ts b/tests/specs/run/error_023_stack_async/error_023_stack_async.ts
index fdabaa5df..fdabaa5df 100644
--- a/tests/testdata/run/error_023_stack_async.ts
+++ b/tests/specs/run/error_023_stack_async/error_023_stack_async.ts
diff --git a/tests/testdata/run/error_023_stack_async.ts.out b/tests/specs/run/error_023_stack_async/error_023_stack_async.ts.out
index 2d122d986..2d122d986 100644
--- a/tests/testdata/run/error_023_stack_async.ts.out
+++ b/tests/specs/run/error_023_stack_async/error_023_stack_async.ts.out
diff --git a/tests/specs/run/error_024_stack_promise_all/__test__.jsonc b/tests/specs/run/error_024_stack_promise_all/__test__.jsonc
new file mode 100644
index 000000000..7c733f971
--- /dev/null
+++ b/tests/specs/run/error_024_stack_promise_all/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_024_stack_promise_all.ts",
+ "output": "error_024_stack_promise_all.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_024_stack_promise_all.ts b/tests/specs/run/error_024_stack_promise_all/error_024_stack_promise_all.ts
index 8ca7b203c..8ca7b203c 100644
--- a/tests/testdata/run/error_024_stack_promise_all.ts
+++ b/tests/specs/run/error_024_stack_promise_all/error_024_stack_promise_all.ts
diff --git a/tests/testdata/run/error_024_stack_promise_all.ts.out b/tests/specs/run/error_024_stack_promise_all/error_024_stack_promise_all.ts.out
index c7d10a649..c7d10a649 100644
--- a/tests/testdata/run/error_024_stack_promise_all.ts.out
+++ b/tests/specs/run/error_024_stack_promise_all/error_024_stack_promise_all.ts.out
diff --git a/tests/specs/run/error_025_tab_indent/__test__.jsonc b/tests/specs/run/error_025_tab_indent/__test__.jsonc
new file mode 100644
index 000000000..23c49458e
--- /dev/null
+++ b/tests/specs/run/error_025_tab_indent/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_025_tab_indent",
+ "output": "error_025_tab_indent.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_025_tab_indent b/tests/specs/run/error_025_tab_indent/error_025_tab_indent
index 35a25bcea..35a25bcea 100644
--- a/tests/testdata/run/error_025_tab_indent
+++ b/tests/specs/run/error_025_tab_indent/error_025_tab_indent
diff --git a/tests/testdata/run/error_025_tab_indent.out b/tests/specs/run/error_025_tab_indent/error_025_tab_indent.out
index edf525c90..edf525c90 100644
--- a/tests/testdata/run/error_025_tab_indent.out
+++ b/tests/specs/run/error_025_tab_indent/error_025_tab_indent.out
diff --git a/tests/specs/run/error_cause/__test__.jsonc b/tests/specs/run/error_cause/__test__.jsonc
new file mode 100644
index 000000000..ccbf71dea
--- /dev/null
+++ b/tests/specs/run/error_cause/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_cause.ts",
+ "output": "error_cause.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_cause.ts b/tests/specs/run/error_cause/error_cause.ts
index 385ce2a03..385ce2a03 100644
--- a/tests/testdata/run/error_cause.ts
+++ b/tests/specs/run/error_cause/error_cause.ts
diff --git a/tests/testdata/run/error_cause.ts.out b/tests/specs/run/error_cause/error_cause.ts.out
index 4dc439ac9..4dc439ac9 100644
--- a/tests/testdata/run/error_cause.ts.out
+++ b/tests/specs/run/error_cause/error_cause.ts.out
diff --git a/tests/specs/run/error_cause_recursive/__test__.jsonc b/tests/specs/run/error_cause_recursive/__test__.jsonc
new file mode 100644
index 000000000..71c4cf3cc
--- /dev/null
+++ b/tests/specs/run/error_cause_recursive/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_cause_recursive.ts",
+ "output": "error_cause_recursive.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_cause_recursive.ts b/tests/specs/run/error_cause_recursive/error_cause_recursive.ts
index a6999b1ff..a6999b1ff 100644
--- a/tests/testdata/run/error_cause_recursive.ts
+++ b/tests/specs/run/error_cause_recursive/error_cause_recursive.ts
diff --git a/tests/testdata/run/error_cause_recursive.ts.out b/tests/specs/run/error_cause_recursive/error_cause_recursive.ts.out
index 52d5a03a1..52d5a03a1 100644
--- a/tests/testdata/run/error_cause_recursive.ts.out
+++ b/tests/specs/run/error_cause_recursive/error_cause_recursive.ts.out
diff --git a/tests/specs/run/error_cause_recursive_aggregate/__test__.jsonc b/tests/specs/run/error_cause_recursive_aggregate/__test__.jsonc
new file mode 100644
index 000000000..2aabee0ec
--- /dev/null
+++ b/tests/specs/run/error_cause_recursive_aggregate/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_cause_recursive_aggregate.ts",
+ "output": "error_cause_recursive_aggregate.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/error_cause_recursive_aggregate.ts b/tests/specs/run/error_cause_recursive_aggregate/error_cause_recursive_aggregate.ts
index 4bb2ae064..4bb2ae064 100644
--- a/tests/testdata/error_cause_recursive_aggregate.ts
+++ b/tests/specs/run/error_cause_recursive_aggregate/error_cause_recursive_aggregate.ts
diff --git a/tests/testdata/error_cause_recursive_aggregate.ts.out b/tests/specs/run/error_cause_recursive_aggregate/error_cause_recursive_aggregate.ts.out
index 4ae20055a..4ae20055a 100644
--- a/tests/testdata/error_cause_recursive_aggregate.ts.out
+++ b/tests/specs/run/error_cause_recursive_aggregate/error_cause_recursive_aggregate.ts.out
diff --git a/tests/specs/run/error_cause_recursive_tail/__test__.jsonc b/tests/specs/run/error_cause_recursive_tail/__test__.jsonc
new file mode 100644
index 000000000..249ccac48
--- /dev/null
+++ b/tests/specs/run/error_cause_recursive_tail/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run error_cause_recursive_tail.ts",
+ "output": "error_cause_recursive_tail.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/error_cause_recursive_tail.ts b/tests/specs/run/error_cause_recursive_tail/error_cause_recursive_tail.ts
index 51e7fa6d9..51e7fa6d9 100644
--- a/tests/testdata/error_cause_recursive_tail.ts
+++ b/tests/specs/run/error_cause_recursive_tail/error_cause_recursive_tail.ts
diff --git a/tests/testdata/error_cause_recursive_tail.ts.out b/tests/specs/run/error_cause_recursive_tail/error_cause_recursive_tail.ts.out
index 04b15e91a..04b15e91a 100644
--- a/tests/testdata/error_cause_recursive_tail.ts.out
+++ b/tests/specs/run/error_cause_recursive_tail/error_cause_recursive_tail.ts.out
diff --git a/tests/specs/run/error_for_await/__test__.jsonc b/tests/specs/run/error_for_await/__test__.jsonc
new file mode 100644
index 000000000..b67f67ece
--- /dev/null
+++ b/tests/specs/run/error_for_await/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check error_for_await.ts",
+ "output": "error_for_await.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_for_await.ts b/tests/specs/run/error_for_await/error_for_await.ts
index ce8571df1..ce8571df1 100644
--- a/tests/testdata/run/error_for_await.ts
+++ b/tests/specs/run/error_for_await/error_for_await.ts
diff --git a/tests/testdata/run/error_for_await.ts.out b/tests/specs/run/error_for_await/error_for_await.ts.out
index db3cdecb4..db3cdecb4 100644
--- a/tests/testdata/run/error_for_await.ts.out
+++ b/tests/specs/run/error_for_await/error_for_await.ts.out
diff --git a/tests/specs/run/error_import_map_unable_to_load/__test__.jsonc b/tests/specs/run/error_import_map_unable_to_load/__test__.jsonc
new file mode 100644
index 000000000..c7dd939a4
--- /dev/null
+++ b/tests/specs/run/error_import_map_unable_to_load/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --import-map=import_maps/does_not_exist.json import_maps/test.ts",
+ "output": "error_import_map_unable_to_load.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_import_map_unable_to_load.out b/tests/specs/run/error_import_map_unable_to_load/error_import_map_unable_to_load.out
index 50760e438..50760e438 100644
--- a/tests/testdata/run/error_import_map_unable_to_load.out
+++ b/tests/specs/run/error_import_map_unable_to_load/error_import_map_unable_to_load.out
diff --git a/tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts b/tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts
new file mode 100644
index 000000000..5e8efea69
--- /dev/null
+++ b/tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts
@@ -0,0 +1 @@
+import "test_server/import_maps/lodash/lodash.ts";
diff --git a/tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts.out b/tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts.out
new file mode 100644
index 000000000..da996dc0d
--- /dev/null
+++ b/tests/specs/run/error_import_map_unable_to_load/import_maps/test_data.ts.out
@@ -0,0 +1 @@
+Hello from remapped lodash!
diff --git a/tests/specs/run/error_missing_module_named_import/__test__.jsonc b/tests/specs/run/error_missing_module_named_import/__test__.jsonc
new file mode 100644
index 000000000..9f5780d2a
--- /dev/null
+++ b/tests/specs/run/error_missing_module_named_import/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_missing_module_named_import.ts",
+ "output": "error_missing_module_named_import.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_missing_module_named_import.ts b/tests/specs/run/error_missing_module_named_import/error_missing_module_named_import.ts
index 9eb5239ff..9eb5239ff 100644
--- a/tests/testdata/run/error_missing_module_named_import.ts
+++ b/tests/specs/run/error_missing_module_named_import/error_missing_module_named_import.ts
diff --git a/tests/testdata/run/error_missing_module_named_import.ts.out b/tests/specs/run/error_missing_module_named_import/error_missing_module_named_import.ts.out
index 700377d65..700377d65 100644
--- a/tests/testdata/run/error_missing_module_named_import.ts.out
+++ b/tests/specs/run/error_missing_module_named_import/error_missing_module_named_import.ts.out
diff --git a/tests/specs/run/error_name_non_string/__test__.jsonc b/tests/specs/run/error_name_non_string/__test__.jsonc
new file mode 100644
index 000000000..a6748b56a
--- /dev/null
+++ b/tests/specs/run/error_name_non_string/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet error_name_non_string.js",
+ "output": "error_name_non_string.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_name_non_string.js b/tests/specs/run/error_name_non_string/error_name_non_string.js
index ae9609927..ae9609927 100644
--- a/tests/testdata/run/error_name_non_string.js
+++ b/tests/specs/run/error_name_non_string/error_name_non_string.js
diff --git a/tests/testdata/run/error_name_non_string.js.out b/tests/specs/run/error_name_non_string/error_name_non_string.js.out
index 14fa56c62..14fa56c62 100644
--- a/tests/testdata/run/error_name_non_string.js.out
+++ b/tests/specs/run/error_name_non_string/error_name_non_string.js.out
diff --git a/tests/specs/run/error_no_check/__test__.jsonc b/tests/specs/run/error_no_check/__test__.jsonc
new file mode 100644
index 000000000..439dc5615
--- /dev/null
+++ b/tests/specs/run/error_no_check/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --no-check error_no_check.ts",
+ "output": "error_no_check.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/error_no_check/error_no_check.ts b/tests/specs/run/error_no_check/error_no_check.ts
new file mode 100644
index 000000000..95ebff028
--- /dev/null
+++ b/tests/specs/run/error_no_check/error_no_check.ts
@@ -0,0 +1 @@
+export { AnInterface, isAnInterface } from "./type_and_code.ts";
diff --git a/tests/specs/run/error_no_check/error_no_check.ts.out b/tests/specs/run/error_no_check/error_no_check.ts.out
new file mode 100644
index 000000000..c4e85332d
--- /dev/null
+++ b/tests/specs/run/error_no_check/error_no_check.ts.out
@@ -0,0 +1,2 @@
+error: Uncaught SyntaxError: The requested module './type_and_code.ts' does not provide an export named 'AnInterface'
+[WILDCARD] \ No newline at end of file
diff --git a/tests/specs/run/error_no_check/type_and_code.ts b/tests/specs/run/error_no_check/type_and_code.ts
new file mode 100644
index 000000000..b14713419
--- /dev/null
+++ b/tests/specs/run/error_no_check/type_and_code.ts
@@ -0,0 +1,7 @@
+export interface AnInterface {
+ a: string;
+}
+
+export function isAnInterface(value: unknown): value is AnInterface {
+ return value && typeof value === "object" && "a" in value;
+}
diff --git a/tests/specs/run/error_syntax/__test__.jsonc b/tests/specs/run/error_syntax/__test__.jsonc
new file mode 100644
index 000000000..7a60f2c73
--- /dev/null
+++ b/tests/specs/run/error_syntax/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_syntax.js",
+ "output": "error_syntax.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_syntax.js b/tests/specs/run/error_syntax/error_syntax.js
index c0414c356..c0414c356 100644
--- a/tests/testdata/run/error_syntax.js
+++ b/tests/specs/run/error_syntax/error_syntax.js
diff --git a/tests/testdata/run/error_syntax.js.out b/tests/specs/run/error_syntax/error_syntax.js.out
index fa4d51686..fa4d51686 100644
--- a/tests/testdata/run/error_syntax.js.out
+++ b/tests/specs/run/error_syntax/error_syntax.js.out
diff --git a/tests/specs/run/error_syntax_empty_trailing_line/__test__.jsonc b/tests/specs/run/error_syntax_empty_trailing_line/__test__.jsonc
new file mode 100644
index 000000000..72f1de1f7
--- /dev/null
+++ b/tests/specs/run/error_syntax_empty_trailing_line/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload error_syntax_empty_trailing_line.mjs",
+ "output": "error_syntax_empty_trailing_line.mjs.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_syntax_empty_trailing_line.mjs b/tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs
index 864dfb0c7..864dfb0c7 100644
--- a/tests/testdata/run/error_syntax_empty_trailing_line.mjs
+++ b/tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs
diff --git a/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out b/tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs.out
index 2c9b97aa4..2c9b97aa4 100644
--- a/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out
+++ b/tests/specs/run/error_syntax_empty_trailing_line/error_syntax_empty_trailing_line.mjs.out
diff --git a/tests/specs/run/error_type_definitions/__test__.jsonc b/tests/specs/run/error_type_definitions/__test__.jsonc
new file mode 100644
index 000000000..0ea9bc016
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check error_type_definitions.ts",
+ "output": "error_type_definitions.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/error_type_definitions/error_type_definitions.ts b/tests/specs/run/error_type_definitions/error_type_definitions.ts
new file mode 100644
index 000000000..ceb11787e
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/error_type_definitions.ts
@@ -0,0 +1,5 @@
+// @deno-types="./type_definitions/bar.d.ts"
+import { Bar } from "./type_definitions/bar.js";
+
+const bar = new Bar();
+console.log(bar);
diff --git a/tests/testdata/run/error_type_definitions.ts.out b/tests/specs/run/error_type_definitions/error_type_definitions.ts.out
index 057c21df5..057c21df5 100644
--- a/tests/testdata/run/error_type_definitions.ts.out
+++ b/tests/specs/run/error_type_definitions/error_type_definitions.ts.out
diff --git a/tests/specs/run/error_type_definitions/type_definitions/bar.d.ts b/tests/specs/run/error_type_definitions/type_definitions/bar.d.ts
new file mode 100644
index 000000000..d43335dbb
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/bar.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="baz" />
+
+declare namespace bar {
+ export class Bar {
+ baz: string;
+ }
+}
diff --git a/tests/specs/run/error_type_definitions/type_definitions/bar.js b/tests/specs/run/error_type_definitions/type_definitions/bar.js
new file mode 100644
index 000000000..e9c2e5193
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/bar.js
@@ -0,0 +1,5 @@
+export class Bar {
+ constructor() {
+ this.baz = "baz";
+ }
+}
diff --git a/tests/specs/run/error_type_definitions/type_definitions/fizz.d.ts b/tests/specs/run/error_type_definitions/type_definitions/fizz.d.ts
new file mode 100644
index 000000000..34eb41b96
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/fizz.d.ts
@@ -0,0 +1,2 @@
+/** A global value. */
+declare const fizz: string;
diff --git a/tests/specs/run/error_type_definitions/type_definitions/fizz.js b/tests/specs/run/error_type_definitions/type_definitions/fizz.js
new file mode 100644
index 000000000..852162c94
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/fizz.js
@@ -0,0 +1 @@
+globalThis.fizz = "fizz";
diff --git a/tests/specs/run/error_type_definitions/type_definitions/foo.d.ts b/tests/specs/run/error_type_definitions/type_definitions/foo.d.ts
new file mode 100644
index 000000000..ce39201e1
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/foo.d.ts
@@ -0,0 +1,2 @@
+/** An exported value. */
+export const foo: string;
diff --git a/tests/specs/run/error_type_definitions/type_definitions/foo.js b/tests/specs/run/error_type_definitions/type_definitions/foo.js
new file mode 100644
index 000000000..61d366eb2
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/foo.js
@@ -0,0 +1 @@
+export const foo = "foo";
diff --git a/tests/specs/run/error_type_definitions/type_definitions/qat.ts b/tests/specs/run/error_type_definitions/type_definitions/qat.ts
new file mode 100644
index 000000000..6196c9d38
--- /dev/null
+++ b/tests/specs/run/error_type_definitions/type_definitions/qat.ts
@@ -0,0 +1 @@
+export const qat = "qat";
diff --git a/tests/specs/run/error_with_errors_prop/__test__.jsonc b/tests/specs/run/error_with_errors_prop/__test__.jsonc
new file mode 100644
index 000000000..afbfd24cf
--- /dev/null
+++ b/tests/specs/run/error_with_errors_prop/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet error_with_errors_prop.js",
+ "output": "error_with_errors_prop.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/error_with_errors_prop.js b/tests/specs/run/error_with_errors_prop/error_with_errors_prop.js
index d1c6bbfaa..d1c6bbfaa 100644
--- a/tests/testdata/run/error_with_errors_prop.js
+++ b/tests/specs/run/error_with_errors_prop/error_with_errors_prop.js
diff --git a/tests/testdata/run/error_with_errors_prop.js.out b/tests/specs/run/error_with_errors_prop/error_with_errors_prop.js.out
index d958996af..d958996af 100644
--- a/tests/testdata/run/error_with_errors_prop.js.out
+++ b/tests/specs/run/error_with_errors_prop/error_with_errors_prop.js.out
diff --git a/tests/specs/run/es_private_fields/__test__.jsonc b/tests/specs/run/es_private_fields/__test__.jsonc
new file mode 100644
index 000000000..817efd67e
--- /dev/null
+++ b/tests/specs/run/es_private_fields/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload es_private_fields.js",
+ "output": "es_private_fields.js.out"
+}
diff --git a/tests/testdata/run/es_private_fields.js b/tests/specs/run/es_private_fields/es_private_fields.js
index b5f83e39c..b5f83e39c 100644
--- a/tests/testdata/run/es_private_fields.js
+++ b/tests/specs/run/es_private_fields/es_private_fields.js
diff --git a/tests/testdata/run/es_private_fields.js.out b/tests/specs/run/es_private_fields/es_private_fields.js.out
index be1970b05..be1970b05 100644
--- a/tests/testdata/run/es_private_fields.js.out
+++ b/tests/specs/run/es_private_fields/es_private_fields.js.out
diff --git a/tests/specs/run/eval_context_throw_dom_exception/__test__.jsonc b/tests/specs/run/eval_context_throw_dom_exception/__test__.jsonc
new file mode 100644
index 000000000..6ad302b03
--- /dev/null
+++ b/tests/specs/run/eval_context_throw_dom_exception/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run eval_context_throw_dom_exception.js",
+ "output": "eval_context_throw_dom_exception.js.out"
+}
diff --git a/tests/testdata/run/eval_context_throw_dom_exception.js b/tests/specs/run/eval_context_throw_dom_exception/eval_context_throw_dom_exception.js
index 99eaa0f4a..99eaa0f4a 100644
--- a/tests/testdata/run/eval_context_throw_dom_exception.js
+++ b/tests/specs/run/eval_context_throw_dom_exception/eval_context_throw_dom_exception.js
diff --git a/tests/testdata/run/eval_context_throw_dom_exception.js.out b/tests/specs/run/eval_context_throw_dom_exception/eval_context_throw_dom_exception.js.out
index 24ea0cffc..24ea0cffc 100644
--- a/tests/testdata/run/eval_context_throw_dom_exception.js.out
+++ b/tests/specs/run/eval_context_throw_dom_exception/eval_context_throw_dom_exception.js.out
diff --git a/tests/specs/run/event_listener_error/__test__.jsonc b/tests/specs/run/event_listener_error/__test__.jsonc
new file mode 100644
index 000000000..b2540e03d
--- /dev/null
+++ b/tests/specs/run/event_listener_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet event_listener_error.ts",
+ "output": "event_listener_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/event_listener_error.ts b/tests/specs/run/event_listener_error/event_listener_error.ts
index 1cbdf7bc2..1cbdf7bc2 100644
--- a/tests/testdata/run/event_listener_error.ts
+++ b/tests/specs/run/event_listener_error/event_listener_error.ts
diff --git a/tests/testdata/run/event_listener_error.ts.out b/tests/specs/run/event_listener_error/event_listener_error.ts.out
index a20a91dfd..a20a91dfd 100644
--- a/tests/testdata/run/event_listener_error.ts.out
+++ b/tests/specs/run/event_listener_error/event_listener_error.ts.out
diff --git a/tests/specs/run/event_listener_error_handled/__test__.jsonc b/tests/specs/run/event_listener_error_handled/__test__.jsonc
new file mode 100644
index 000000000..f1fdcd5db
--- /dev/null
+++ b/tests/specs/run/event_listener_error_handled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet event_listener_error_handled.ts",
+ "output": "event_listener_error_handled.ts.out"
+}
diff --git a/tests/testdata/run/event_listener_error_handled.ts b/tests/specs/run/event_listener_error_handled/event_listener_error_handled.ts
index c4c8fd1cd..c4c8fd1cd 100644
--- a/tests/testdata/run/event_listener_error_handled.ts
+++ b/tests/specs/run/event_listener_error_handled/event_listener_error_handled.ts
diff --git a/tests/testdata/run/event_listener_error_handled.ts.out b/tests/specs/run/event_listener_error_handled/event_listener_error_handled.ts.out
index d3cf525c3..d3cf525c3 100644
--- a/tests/testdata/run/event_listener_error_handled.ts.out
+++ b/tests/specs/run/event_listener_error_handled/event_listener_error_handled.ts.out
diff --git a/tests/specs/run/event_listener_error_immediate_exit/__test__.jsonc b/tests/specs/run/event_listener_error_immediate_exit/__test__.jsonc
new file mode 100644
index 000000000..2974c0e42
--- /dev/null
+++ b/tests/specs/run/event_listener_error_immediate_exit/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet event_listener_error_immediate_exit.ts",
+ "output": "event_listener_error_immediate_exit.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/event_listener_error_immediate_exit.ts b/tests/specs/run/event_listener_error_immediate_exit/event_listener_error_immediate_exit.ts
index 292a0df00..292a0df00 100644
--- a/tests/testdata/run/event_listener_error_immediate_exit.ts
+++ b/tests/specs/run/event_listener_error_immediate_exit/event_listener_error_immediate_exit.ts
diff --git a/tests/testdata/run/event_listener_error_immediate_exit.ts.out b/tests/specs/run/event_listener_error_immediate_exit/event_listener_error_immediate_exit.ts.out
index 8f03f71b8..8f03f71b8 100644
--- a/tests/testdata/run/event_listener_error_immediate_exit.ts.out
+++ b/tests/specs/run/event_listener_error_immediate_exit/event_listener_error_immediate_exit.ts.out
diff --git a/tests/specs/run/event_listener_error_immediate_exit_worker/__test__.jsonc b/tests/specs/run/event_listener_error_immediate_exit_worker/__test__.jsonc
new file mode 100644
index 000000000..6ef3ef2ed
--- /dev/null
+++ b/tests/specs/run/event_listener_error_immediate_exit_worker/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet -A event_listener_error_immediate_exit_worker.ts",
+ "output": "event_listener_error_immediate_exit_worker.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit.ts b/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit.ts
new file mode 100644
index 000000000..292a0df00
--- /dev/null
+++ b/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit.ts
@@ -0,0 +1,12 @@
+addEventListener("foo", () => {
+ queueMicrotask(() => console.log("queueMicrotask"));
+ setTimeout(() => console.log("timer"), 0);
+ throw new Error("bar");
+});
+console.log(1);
+// @ts-ignore Deno[Deno.internal].core
+Deno[Deno.internal].core.setNextTickCallback(() => console.log("nextTick"));
+// @ts-ignore Deno[Deno.internal].core
+Deno[Deno.internal].core.setHasTickScheduled(true);
+dispatchEvent(new CustomEvent("foo"));
+console.log(2);
diff --git a/tests/testdata/run/event_listener_error_immediate_exit_worker.ts b/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit_worker.ts
index 58c45d1bb..58c45d1bb 100644
--- a/tests/testdata/run/event_listener_error_immediate_exit_worker.ts
+++ b/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit_worker.ts
diff --git a/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out b/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit_worker.ts.out
index 85b52190b..85b52190b 100644
--- a/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out
+++ b/tests/specs/run/event_listener_error_immediate_exit_worker/event_listener_error_immediate_exit_worker.ts.out
diff --git a/tests/specs/run/exit_error42/__test__.jsonc b/tests/specs/run/exit_error42/__test__.jsonc
new file mode 100644
index 000000000..43d308956
--- /dev/null
+++ b/tests/specs/run/exit_error42/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload exit_error42.ts",
+ "output": "exit_error42.ts.out",
+ "exitCode": 42
+}
diff --git a/tests/testdata/run/exit_error42.ts b/tests/specs/run/exit_error42/exit_error42.ts
index e4db41f3a..e4db41f3a 100644
--- a/tests/testdata/run/exit_error42.ts
+++ b/tests/specs/run/exit_error42/exit_error42.ts
diff --git a/tests/testdata/run/exit_error42.ts.out b/tests/specs/run/exit_error42/exit_error42.ts.out
index 90be1f305..90be1f305 100644
--- a/tests/testdata/run/exit_error42.ts.out
+++ b/tests/specs/run/exit_error42/exit_error42.ts.out
diff --git a/tests/specs/run/explicit_resource_management/__test__.jsonc b/tests/specs/run/explicit_resource_management/__test__.jsonc
new file mode 100644
index 000000000..7062e6f36
--- /dev/null
+++ b/tests/specs/run/explicit_resource_management/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --check explicit_resource_management/main.ts",
+ "output": "explicit_resource_management/main.out"
+}
diff --git a/tests/testdata/run/explicit_resource_management/main.out b/tests/specs/run/explicit_resource_management/explicit_resource_management/main.out
index ff5ac4b59..ff5ac4b59 100644
--- a/tests/testdata/run/explicit_resource_management/main.out
+++ b/tests/specs/run/explicit_resource_management/explicit_resource_management/main.out
diff --git a/tests/testdata/run/explicit_resource_management/main.ts b/tests/specs/run/explicit_resource_management/explicit_resource_management/main.ts
index 0201a51f9..0201a51f9 100644
--- a/tests/testdata/run/explicit_resource_management/main.ts
+++ b/tests/specs/run/explicit_resource_management/explicit_resource_management/main.ts
diff --git a/tests/specs/run/ext_flag_takes_precedence_over_extension/__test__.jsonc b/tests/specs/run/ext_flag_takes_precedence_over_extension/__test__.jsonc
new file mode 100644
index 000000000..0806088b4
--- /dev/null
+++ b/tests/specs/run/ext_flag_takes_precedence_over_extension/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --ext ts --check ts_with_js_extension.js",
+ "output": "ts_with_js_extension.out",
+ "exitCode": 0
+}
diff --git a/tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.js b/tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.js
new file mode 100644
index 000000000..3c49f7484
--- /dev/null
+++ b/tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.js
@@ -0,0 +1,5 @@
+interface Lollipop {
+ _: number;
+}
+
+console.log("executing typescript with extension");
diff --git a/tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.out b/tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.out
new file mode 100644
index 000000000..7ae7b9168
--- /dev/null
+++ b/tests/specs/run/ext_flag_takes_precedence_over_extension/ts_with_js_extension.out
@@ -0,0 +1,2 @@
+Check [WILDCARD]/ts_with_js_extension.js
+executing typescript with extension
diff --git a/tests/specs/run/fetch_async_error_stack/__test__.jsonc b/tests/specs/run/fetch_async_error_stack/__test__.jsonc
new file mode 100644
index 000000000..152f57807
--- /dev/null
+++ b/tests/specs/run/fetch_async_error_stack/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet -A fetch_async_error_stack.ts",
+ "output": "fetch_async_error_stack.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/fetch_async_error_stack.ts b/tests/specs/run/fetch_async_error_stack/fetch_async_error_stack.ts
index f583192c2..f583192c2 100644
--- a/tests/testdata/run/fetch_async_error_stack.ts
+++ b/tests/specs/run/fetch_async_error_stack/fetch_async_error_stack.ts
diff --git a/tests/testdata/run/fetch_async_error_stack.ts.out b/tests/specs/run/fetch_async_error_stack/fetch_async_error_stack.ts.out
index 2722cc8a7..2722cc8a7 100644
--- a/tests/testdata/run/fetch_async_error_stack.ts.out
+++ b/tests/specs/run/fetch_async_error_stack/fetch_async_error_stack.ts.out
diff --git a/tests/specs/run/fetch_response_finalization/__test__.jsonc b/tests/specs/run/fetch_response_finalization/__test__.jsonc
new file mode 100644
index 000000000..51a7e2b04
--- /dev/null
+++ b/tests/specs/run/fetch_response_finalization/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --v8-flags=--expose-gc --allow-net fetch_response_finalization.js",
+ "output": "fetch_response_finalization.js.out",
+ "exitCode": 0
+}
diff --git a/tests/testdata/run/fetch_response_finalization.js b/tests/specs/run/fetch_response_finalization/fetch_response_finalization.js
index 85fc6afa3..85fc6afa3 100644
--- a/tests/testdata/run/fetch_response_finalization.js
+++ b/tests/specs/run/fetch_response_finalization/fetch_response_finalization.js
diff --git a/tests/testdata/run/fetch_response_finalization.js.out b/tests/specs/run/fetch_response_finalization/fetch_response_finalization.js.out
index 645842a5b..645842a5b 100644
--- a/tests/testdata/run/fetch_response_finalization.js.out
+++ b/tests/specs/run/fetch_response_finalization/fetch_response_finalization.js.out
diff --git a/tests/specs/run/finalization_registry/__test__.jsonc b/tests/specs/run/finalization_registry/__test__.jsonc
new file mode 100644
index 000000000..f7526506c
--- /dev/null
+++ b/tests/specs/run/finalization_registry/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --v8-flags=--expose-gc finalization_registry.js",
+ "output": "finalization_registry.js.out"
+}
diff --git a/tests/testdata/run/finalization_registry.js b/tests/specs/run/finalization_registry/finalization_registry.js
index ee9dc384f..ee9dc384f 100644
--- a/tests/testdata/run/finalization_registry.js
+++ b/tests/specs/run/finalization_registry/finalization_registry.js
diff --git a/tests/testdata/run/finalization_registry.js.out b/tests/specs/run/finalization_registry/finalization_registry.js.out
index fee61413a..fee61413a 100644
--- a/tests/testdata/run/finalization_registry.js.out
+++ b/tests/specs/run/finalization_registry/finalization_registry.js.out
diff --git a/tests/specs/run/fix_dynamic_import_errors/__test__.jsonc b/tests/specs/run/fix_dynamic_import_errors/__test__.jsonc
new file mode 100644
index 000000000..d9302d2ca
--- /dev/null
+++ b/tests/specs/run/fix_dynamic_import_errors/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload fix_dynamic_import_errors.js",
+ "output": "fix_dynamic_import_errors.js.out"
+}
diff --git a/tests/specs/run/fix_dynamic_import_errors/b.js b/tests/specs/run/fix_dynamic_import_errors/b.js
new file mode 100644
index 000000000..6ea50d360
--- /dev/null
+++ b/tests/specs/run/fix_dynamic_import_errors/b.js
@@ -0,0 +1,2 @@
+import "./bad.mjs";
+export default () => "error";
diff --git a/tests/specs/run/fix_dynamic_import_errors/c.js b/tests/specs/run/fix_dynamic_import_errors/c.js
new file mode 100644
index 000000000..20546455e
--- /dev/null
+++ b/tests/specs/run/fix_dynamic_import_errors/c.js
@@ -0,0 +1,2 @@
+await import("./bad2.mjs");
+export default () => "error";
diff --git a/tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js b/tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js
new file mode 100644
index 000000000..e105cbada
--- /dev/null
+++ b/tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js
@@ -0,0 +1,7 @@
+import("./b.js").catch(() => {
+ console.log("caught import error from b.js");
+});
+
+import("./c.js").catch(() => {
+ console.log("caught import error from c.js");
+});
diff --git a/tests/testdata/run/fix_dynamic_import_errors.js.out b/tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js.out
index e7856fb9c..e7856fb9c 100644
--- a/tests/testdata/run/fix_dynamic_import_errors.js.out
+++ b/tests/specs/run/fix_dynamic_import_errors/fix_dynamic_import_errors.js.out
diff --git a/tests/specs/run/fix_emittable_skipped/__test__.jsonc b/tests/specs/run/fix_emittable_skipped/__test__.jsonc
new file mode 100644
index 000000000..ef1445e0e
--- /dev/null
+++ b/tests/specs/run/fix_emittable_skipped/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload fix_emittable_skipped.js",
+ "output": "fix_emittable_skipped.ts.out"
+}
diff --git a/tests/specs/run/fix_emittable_skipped/emittable.d.ts b/tests/specs/run/fix_emittable_skipped/emittable.d.ts
new file mode 100644
index 000000000..425b80f24
--- /dev/null
+++ b/tests/specs/run/fix_emittable_skipped/emittable.d.ts
@@ -0,0 +1 @@
+export const a: string;
diff --git a/tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.js b/tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.js
new file mode 100644
index 000000000..b94af2730
--- /dev/null
+++ b/tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.js
@@ -0,0 +1,7 @@
+/// <reference types="./emittable.d.ts" />
+
+import "./polyfill.ts";
+
+export const a = "a";
+
+console.log(globalThis.polyfill);
diff --git a/tests/testdata/run/fix_emittable_skipped.ts.out b/tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.ts.out
index 865759299..865759299 100644
--- a/tests/testdata/run/fix_emittable_skipped.ts.out
+++ b/tests/specs/run/fix_emittable_skipped/fix_emittable_skipped.ts.out
diff --git a/tests/specs/run/fix_emittable_skipped/polyfill.ts b/tests/specs/run/fix_emittable_skipped/polyfill.ts
new file mode 100644
index 000000000..7af67c4c0
--- /dev/null
+++ b/tests/specs/run/fix_emittable_skipped/polyfill.ts
@@ -0,0 +1,8 @@
+declare global {
+ const polyfill: () => void;
+}
+
+// deno-lint-ignore no-explicit-any
+(globalThis as any).polyfill = () => {
+ console.log("polyfill");
+};
diff --git a/tests/specs/run/fix_js_import_js/__test__.jsonc b/tests/specs/run/fix_js_import_js/__test__.jsonc
new file mode 100644
index 000000000..94b1df540
--- /dev/null
+++ b/tests/specs/run/fix_js_import_js/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload fix_js_import_js.ts",
+ "output": "fix_js_import_js.ts.out"
+}
diff --git a/tests/specs/run/fix_js_import_js/fix_js_import_js.ts b/tests/specs/run/fix_js_import_js/fix_js_import_js.ts
new file mode 100644
index 000000000..4862f03e1
--- /dev/null
+++ b/tests/specs/run/fix_js_import_js/fix_js_import_js.ts
@@ -0,0 +1,3 @@
+import { isMod4 } from "./mod6.js";
+
+console.log(isMod4);
diff --git a/tests/testdata/run/fix_js_import_js.ts.out b/tests/specs/run/fix_js_import_js/fix_js_import_js.ts.out
index 27ba77dda..27ba77dda 100644
--- a/tests/testdata/run/fix_js_import_js.ts.out
+++ b/tests/specs/run/fix_js_import_js/fix_js_import_js.ts.out
diff --git a/tests/specs/run/fix_js_import_js/mod4.js b/tests/specs/run/fix_js_import_js/mod4.js
new file mode 100644
index 000000000..71332dbc4
--- /dev/null
+++ b/tests/specs/run/fix_js_import_js/mod4.js
@@ -0,0 +1 @@
+export const isMod4 = true;
diff --git a/tests/specs/run/fix_js_import_js/mod6.js b/tests/specs/run/fix_js_import_js/mod6.js
new file mode 100644
index 000000000..5e17c9ee0
--- /dev/null
+++ b/tests/specs/run/fix_js_import_js/mod6.js
@@ -0,0 +1 @@
+export { isMod4 } from "./mod4.js";
diff --git a/tests/specs/run/fix_js_imports/__test__.jsonc b/tests/specs/run/fix_js_imports/__test__.jsonc
new file mode 100644
index 000000000..a3635d18c
--- /dev/null
+++ b/tests/specs/run/fix_js_imports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload fix_js_imports.ts",
+ "output": "fix_js_imports.ts.out"
+}
diff --git a/tests/specs/run/fix_js_imports/amd_like.js b/tests/specs/run/fix_js_imports/amd_like.js
new file mode 100644
index 000000000..f27e505e4
--- /dev/null
+++ b/tests/specs/run/fix_js_imports/amd_like.js
@@ -0,0 +1,3 @@
+// looks like an AMD module, but isn't
+const define = () => {};
+define(["fake_module"], () => {});
diff --git a/tests/specs/run/fix_js_imports/fix_js_imports.ts b/tests/specs/run/fix_js_imports/fix_js_imports.ts
new file mode 100644
index 000000000..07e68a135
--- /dev/null
+++ b/tests/specs/run/fix_js_imports/fix_js_imports.ts
@@ -0,0 +1,3 @@
+import * as amdLike from "./amd_like.js";
+
+console.log(amdLike);
diff --git a/tests/testdata/run/fix_js_imports.ts.out b/tests/specs/run/fix_js_imports/fix_js_imports.ts.out
index c427932a4..c427932a4 100644
--- a/tests/testdata/run/fix_js_imports.ts.out
+++ b/tests/specs/run/fix_js_imports/fix_js_imports.ts.out
diff --git a/tests/specs/run/fix_tsc_file_exists/__test__.jsonc b/tests/specs/run/fix_tsc_file_exists/__test__.jsonc
new file mode 100644
index 000000000..d2b0bda29
--- /dev/null
+++ b/tests/specs/run/fix_tsc_file_exists/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload tsc/test.js",
+ "output": "fix_tsc_file_exists.out"
+}
diff --git a/tests/testdata/run/fix_tsc_file_exists.out b/tests/specs/run/fix_tsc_file_exists/fix_tsc_file_exists.out
index ce0136250..ce0136250 100644
--- a/tests/testdata/run/fix_tsc_file_exists.out
+++ b/tests/specs/run/fix_tsc_file_exists/fix_tsc_file_exists.out
diff --git a/tests/specs/run/fix_tsc_file_exists/tsc/a.js b/tests/specs/run/fix_tsc_file_exists/tsc/a.js
new file mode 100644
index 000000000..5a7b3ff93
--- /dev/null
+++ b/tests/specs/run/fix_tsc_file_exists/tsc/a.js
@@ -0,0 +1,2 @@
+import { v4 } from "./d.ts";
+export function a() {}
diff --git a/tests/specs/run/fix_tsc_file_exists/tsc/d.ts b/tests/specs/run/fix_tsc_file_exists/tsc/d.ts
new file mode 100644
index 000000000..3c74b8c83
--- /dev/null
+++ b/tests/specs/run/fix_tsc_file_exists/tsc/d.ts
@@ -0,0 +1,3 @@
+export function v4() {
+ return "hello";
+}
diff --git a/tests/specs/run/fix_tsc_file_exists/tsc/node_modules/b.js b/tests/specs/run/fix_tsc_file_exists/tsc/node_modules/b.js
new file mode 100644
index 000000000..191660935
--- /dev/null
+++ b/tests/specs/run/fix_tsc_file_exists/tsc/node_modules/b.js
@@ -0,0 +1,2 @@
+import c from "./c.js";
+export { c };
diff --git a/tests/specs/run/fix_tsc_file_exists/tsc/node_modules/c.js b/tests/specs/run/fix_tsc_file_exists/tsc/node_modules/c.js
new file mode 100644
index 000000000..cff71c44a
--- /dev/null
+++ b/tests/specs/run/fix_tsc_file_exists/tsc/node_modules/c.js
@@ -0,0 +1 @@
+export default function c() {}
diff --git a/tests/specs/run/fix_tsc_file_exists/tsc/test.js b/tests/specs/run/fix_tsc_file_exists/tsc/test.js
new file mode 100644
index 000000000..b7f46b351
--- /dev/null
+++ b/tests/specs/run/fix_tsc_file_exists/tsc/test.js
@@ -0,0 +1,4 @@
+import { a } from "./a.js";
+import { c } from "./node_modules/b.js";
+
+console.log("hello");
diff --git a/tests/specs/run/fix_worker_dispatchevent/__test__.jsonc b/tests/specs/run/fix_worker_dispatchevent/__test__.jsonc
new file mode 100644
index 000000000..45e49b87f
--- /dev/null
+++ b/tests/specs/run/fix_worker_dispatchevent/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload fix_worker_dispatchevent.ts",
+ "output": "fix_worker_dispatchevent.ts.out"
+}
diff --git a/tests/testdata/run/fix_worker_dispatchevent.ts b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts
index 1b73b52dc..1b73b52dc 100644
--- a/tests/testdata/run/fix_worker_dispatchevent.ts
+++ b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts
diff --git a/tests/testdata/run/fix_worker_dispatchevent.ts.out b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out
index 2e9ba477f..2e9ba477f 100644
--- a/tests/testdata/run/fix_worker_dispatchevent.ts.out
+++ b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out
diff --git a/tests/specs/run/followup_dyn_import_resolved/__test__.jsonc b/tests/specs/run/followup_dyn_import_resolved/__test__.jsonc
new file mode 100644
index 000000000..b94e3d8c9
--- /dev/null
+++ b/tests/specs/run/followup_dyn_import_resolved/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read followup_dyn_import_resolves/main.ts",
+ "output": "followup_dyn_import_resolves/main.ts.out"
+}
diff --git a/tests/testdata/run/followup_dyn_import_resolves/main.ts b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/main.ts
index a8508f942..a8508f942 100644
--- a/tests/testdata/run/followup_dyn_import_resolves/main.ts
+++ b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/main.ts
diff --git a/tests/testdata/run/followup_dyn_import_resolves/main.ts.out b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/main.ts.out
index a19976d4a..a19976d4a 100644
--- a/tests/testdata/run/followup_dyn_import_resolves/main.ts.out
+++ b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/main.ts.out
diff --git a/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub1.ts b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub1.ts
new file mode 100644
index 000000000..d06c30221
--- /dev/null
+++ b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub1.ts
@@ -0,0 +1,2 @@
+await import("./sub2.ts");
+console.log("sub1");
diff --git a/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub2.ts b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub2.ts
new file mode 100644
index 000000000..cce2b524c
--- /dev/null
+++ b/tests/specs/run/followup_dyn_import_resolved/followup_dyn_import_resolves/sub2.ts
@@ -0,0 +1 @@
+console.log("sub2");
diff --git a/tests/specs/run/heapstats/__test__.jsonc b/tests/specs/run/heapstats/__test__.jsonc
new file mode 100644
index 000000000..6429d7cf5
--- /dev/null
+++ b/tests/specs/run/heapstats/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --v8-flags=--expose-gc heapstats.js",
+ "output": "heapstats.js.out"
+}
diff --git a/tests/testdata/run/heapstats.js b/tests/specs/run/heapstats/heapstats.js
index b93c9c120..b93c9c120 100644
--- a/tests/testdata/run/heapstats.js
+++ b/tests/specs/run/heapstats/heapstats.js
diff --git a/tests/testdata/run/heapstats.js.out b/tests/specs/run/heapstats/heapstats.js.out
index 954266333..954266333 100644
--- a/tests/testdata/run/heapstats.js.out
+++ b/tests/specs/run/heapstats/heapstats.js.out
diff --git a/tests/specs/run/https_import/RootCA.pem b/tests/specs/run/https_import/RootCA.pem
new file mode 100644
index 000000000..c2f84ceeb
--- /dev/null
+++ b/tests/specs/run/https_import/RootCA.pem
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDIzCCAgugAwIBAgIJAMKPPW4tsOymMA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV
+BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwIBcNMTkxMDIxMTYyODIy
+WhgPMjExODA5MjcxNjI4MjJaMCcxCzAJBgNVBAYTAlVTMRgwFgYDVQQDDA9FeGFt
+cGxlLVJvb3QtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMH/IO
+2qtHfyBKwANNPB4K0q5JVSg8XxZdRpTTlz0CwU0oRO3uHrI52raCCfVeiQutyZop
+eFZTDWeXGudGAFA2B5m3orWt0s+touPi8MzjsG2TQ+WSI66QgbXTNDitDDBtTVcV
+5G3Ic+3SppQAYiHSekLISnYWgXLl+k5CnEfTowg6cjqjVr0KjL03cTN3H7b+6+0S
+ws4rYbW1j4ExR7K6BFNH6572yq5qR20E6GqlY+EcOZpw4CbCk9lS8/CWuXze/vMs
+OfDcc6K+B625d27wyEGZHedBomT2vAD7sBjvO8hn/DP1Qb46a8uCHR6NSfnJ7bXO
+G1igaIbgY1zXirNdAgMBAAGjUDBOMB0GA1UdDgQWBBTzut+pwwDfqmMYcI9KNWRD
+hxcIpTAfBgNVHSMEGDAWgBTzut+pwwDfqmMYcI9KNWRDhxcIpTAMBgNVHRMEBTAD
+AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB9AqSbZ+hEglAgSHxAMCqRFdhVu7MvaQM0
+P090mhGlOCt3yB7kdGfsIrUW6nQcTz7PPQFRaJMrFHPvFvPootkBUpTYR4hTkdce
+H6RCRu2Jxl4Y9bY/uezd9YhGCYfUtfjA6/TH9FcuZfttmOOlxOt01XfNvVMIR6RM
+z/AYhd+DeOXjr35F/VHeVpnk+55L0PYJsm1CdEbOs5Hy1ecR7ACuDkXnbM4fpz9I
+kyIWJwk2zJReKcJMgi1aIinDM9ao/dca1G99PHOw8dnr4oyoTiv8ao6PWiSRHHMi
+MNf4EgWfK+tZMnuqfpfO9740KzfcVoMNo4QJD4yn5YxroUOO/Azi
+-----END CERTIFICATE-----
diff --git a/tests/specs/run/https_import/__test__.jsonc b/tests/specs/run/https_import/__test__.jsonc
new file mode 100644
index 000000000..9a37230f2
--- /dev/null
+++ b/tests/specs/run/https_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload --cert RootCA.pem https_import.ts",
+ "output": "https_import.ts.out"
+}
diff --git a/tests/specs/run/https_import/https_import.ts b/tests/specs/run/https_import/https_import.ts
new file mode 100644
index 000000000..d392f4a5d
--- /dev/null
+++ b/tests/specs/run/https_import/https_import.ts
@@ -0,0 +1,3 @@
+import { printHello } from "./print_hello.ts";
+
+printHello();
diff --git a/tests/testdata/run/import_data_url_imports.ts.out b/tests/specs/run/https_import/https_import.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/import_data_url_imports.ts.out
+++ b/tests/specs/run/https_import/https_import.ts.out
diff --git a/tests/specs/run/https_import/print_hello.ts b/tests/specs/run/https_import/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/https_import/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/if_main/__test__.jsonc b/tests/specs/run/if_main/__test__.jsonc
new file mode 100644
index 000000000..f6e2dbf27
--- /dev/null
+++ b/tests/specs/run/if_main/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload if_main.ts",
+ "output": "if_main.ts.out"
+}
diff --git a/tests/testdata/run/if_main.ts b/tests/specs/run/if_main/if_main.ts
index 4dcfecea0..4dcfecea0 100644
--- a/tests/testdata/run/if_main.ts
+++ b/tests/specs/run/if_main/if_main.ts
diff --git a/tests/specs/run/if_main/if_main.ts.out b/tests/specs/run/if_main/if_main.ts.out
new file mode 100644
index 000000000..ba2906d06
--- /dev/null
+++ b/tests/specs/run/if_main/if_main.ts.out
@@ -0,0 +1 @@
+main
diff --git a/tests/specs/run/import_attributes_dynamic_error/__test__.jsonc b/tests/specs/run/import_attributes_dynamic_error/__test__.jsonc
new file mode 100644
index 000000000..0a6137a2b
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-read dynamic_error.ts",
+ "output": "dynamic_error.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/import_attributes_dynamic_error/data.json b/tests/specs/run/import_attributes_dynamic_error/data.json
new file mode 100644
index 000000000..37b3ee1e0
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_error/data.json
@@ -0,0 +1,6 @@
+{
+ "a": "b",
+ "c": {
+ "d": 10
+ }
+}
diff --git a/tests/specs/run/import_attributes_dynamic_error/dynamic_error.out b/tests/specs/run/import_attributes_dynamic_error/dynamic_error.out
new file mode 100644
index 000000000..24f29de72
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_error/dynamic_error.out
@@ -0,0 +1,4 @@
+error: Uncaught (in promise) TypeError: Attempted to load JSON module without specifying "type": "json" attribute in the import statement.
+const data = await import("./data.json");
+ ^
+ at async [WILDCARD]dynamic_error.ts:1:14
diff --git a/tests/specs/run/import_attributes_dynamic_error/dynamic_error.ts b/tests/specs/run/import_attributes_dynamic_error/dynamic_error.ts
new file mode 100644
index 000000000..2d9c6757f
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_error/dynamic_error.ts
@@ -0,0 +1,3 @@
+const data = await import("./data.json");
+
+console.log(data);
diff --git a/tests/specs/run/import_attributes_dynamic_import/__test__.jsonc b/tests/specs/run/import_attributes_dynamic_import/__test__.jsonc
new file mode 100644
index 000000000..75962e88d
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read --check dynamic_import.ts",
+ "output": "dynamic_import.out"
+}
diff --git a/tests/specs/run/import_attributes_dynamic_import/data.json b/tests/specs/run/import_attributes_dynamic_import/data.json
new file mode 100644
index 000000000..37b3ee1e0
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_import/data.json
@@ -0,0 +1,6 @@
+{
+ "a": "b",
+ "c": {
+ "d": 10
+ }
+}
diff --git a/tests/specs/run/import_attributes_dynamic_import/dynamic_import.out b/tests/specs/run/import_attributes_dynamic_import/dynamic_import.out
new file mode 100644
index 000000000..7a7b4c91f
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_import/dynamic_import.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+[Module: null prototype] { default: { a: "b", c: { d: 10 } } }
diff --git a/tests/specs/run/import_attributes_dynamic_import/dynamic_import.ts b/tests/specs/run/import_attributes_dynamic_import/dynamic_import.ts
new file mode 100644
index 000000000..093136fb0
--- /dev/null
+++ b/tests/specs/run/import_attributes_dynamic_import/dynamic_import.ts
@@ -0,0 +1,3 @@
+const data1 = await import("./data.json", { with: { type: "json" } });
+
+console.log(data1);
diff --git a/tests/specs/run/import_attributes_static_error/__test__.jsonc b/tests/specs/run/import_attributes_static_error/__test__.jsonc
new file mode 100644
index 000000000..2d08c66d3
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-read static_error.ts",
+ "output": "static_error.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/import_attributes_static_error/data.json b/tests/specs/run/import_attributes_static_error/data.json
new file mode 100644
index 000000000..37b3ee1e0
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_error/data.json
@@ -0,0 +1,6 @@
+{
+ "a": "b",
+ "c": {
+ "d": 10
+ }
+}
diff --git a/tests/specs/run/import_attributes_static_error/static_error.out b/tests/specs/run/import_attributes_static_error/static_error.out
new file mode 100644
index 000000000..29b24b965
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_error/static_error.out
@@ -0,0 +1,3 @@
+error: Expected a JavaScript or TypeScript module, but identified a Json module. Consider importing Json modules with an import attribute with the type of "json".
+ Specifier: [WILDCARD]/data.json
+ at [WILDCARD]static_error.ts:1:18
diff --git a/tests/specs/run/import_attributes_static_error/static_error.ts b/tests/specs/run/import_attributes_static_error/static_error.ts
new file mode 100644
index 000000000..0bc3a93f8
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_error/static_error.ts
@@ -0,0 +1,3 @@
+import data from "./data.json";
+
+console.log(data);
diff --git a/tests/specs/run/import_attributes_static_export/__test__.jsonc b/tests/specs/run/import_attributes_static_export/__test__.jsonc
new file mode 100644
index 000000000..05a64aab5
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_export/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read static_export.ts",
+ "output": "static_export.out"
+}
diff --git a/tests/specs/run/import_attributes_static_export/data.json b/tests/specs/run/import_attributes_static_export/data.json
new file mode 100644
index 000000000..37b3ee1e0
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_export/data.json
@@ -0,0 +1,6 @@
+{
+ "a": "b",
+ "c": {
+ "d": 10
+ }
+}
diff --git a/tests/specs/run/import_attributes_static_export/static_export.out b/tests/specs/run/import_attributes_static_export/static_export.out
new file mode 100644
index 000000000..41af79d7c
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_export/static_export.out
@@ -0,0 +1 @@
+{ a: "b", c: { d: 10 } }
diff --git a/tests/specs/run/import_attributes_static_export/static_export.ts b/tests/specs/run/import_attributes_static_export/static_export.ts
new file mode 100644
index 000000000..ac3ee694f
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_export/static_export.ts
@@ -0,0 +1,3 @@
+import data from "./static_reexport.ts";
+
+console.log(data);
diff --git a/tests/specs/run/import_attributes_static_export/static_reexport.ts b/tests/specs/run/import_attributes_static_export/static_reexport.ts
new file mode 100644
index 000000000..e6175691c
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_export/static_reexport.ts
@@ -0,0 +1 @@
+export { default } from "./data.json" with { type: "json" };
diff --git a/tests/specs/run/import_attributes_static_import/__test__.jsonc b/tests/specs/run/import_attributes_static_import/__test__.jsonc
new file mode 100644
index 000000000..4ea39e6d3
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read static_import.ts",
+ "output": "static_import.out"
+}
diff --git a/tests/specs/run/import_attributes_static_import/data.json b/tests/specs/run/import_attributes_static_import/data.json
new file mode 100644
index 000000000..37b3ee1e0
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_import/data.json
@@ -0,0 +1,6 @@
+{
+ "a": "b",
+ "c": {
+ "d": 10
+ }
+}
diff --git a/tests/specs/run/import_attributes_static_import/static_import.out b/tests/specs/run/import_attributes_static_import/static_import.out
new file mode 100644
index 000000000..e57dffa99
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_import/static_import.out
@@ -0,0 +1,2 @@
+{ a: "b", c: { d: 10 } }
+{ a: "b", c: { d: 10 } }
diff --git a/tests/specs/run/import_attributes_static_import/static_import.ts b/tests/specs/run/import_attributes_static_import/static_import.ts
new file mode 100644
index 000000000..f585b893f
--- /dev/null
+++ b/tests/specs/run/import_attributes_static_import/static_import.ts
@@ -0,0 +1,5 @@
+import data1 from "./data.json" with { type: "json" };
+import data2 from "./data.json" with { type: "json" };
+
+console.log(data1);
+console.log(data2);
diff --git a/tests/specs/run/import_attributes_type_check/__test__.jsonc b/tests/specs/run/import_attributes_type_check/__test__.jsonc
new file mode 100644
index 000000000..89f6e0a79
--- /dev/null
+++ b/tests/specs/run/import_attributes_type_check/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-read --check type_check.ts",
+ "output": "type_check.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/import_attributes_type_check/data.json b/tests/specs/run/import_attributes_type_check/data.json
new file mode 100644
index 000000000..37b3ee1e0
--- /dev/null
+++ b/tests/specs/run/import_attributes_type_check/data.json
@@ -0,0 +1,6 @@
+{
+ "a": "b",
+ "c": {
+ "d": 10
+ }
+}
diff --git a/tests/specs/run/import_attributes_type_check/type_check.out b/tests/specs/run/import_attributes_type_check/type_check.out
new file mode 100644
index 000000000..2fc26dae3
--- /dev/null
+++ b/tests/specs/run/import_attributes_type_check/type_check.out
@@ -0,0 +1,12 @@
+Check file:///[WILDCARD]/type_check.ts
+error: TS2339 [ERROR]: Property 'foo' does not exist on type '{ a: string; c: { d: number; }; }'.
+console.log(data1.foo);
+ ~~~
+ at [WILDCARD]type_check.ts:5:19
+
+TS2339 [ERROR]: Property 'foo' does not exist on type '{ a: string; c: { d: number; }; }'.
+console.log(data2.foo);
+ ~~~
+ at [WILDCARD]type_check.ts:6:19
+
+Found 2 errors.
diff --git a/tests/specs/run/import_attributes_type_check/type_check.ts b/tests/specs/run/import_attributes_type_check/type_check.ts
new file mode 100644
index 000000000..36e47bd5b
--- /dev/null
+++ b/tests/specs/run/import_attributes_type_check/type_check.ts
@@ -0,0 +1,6 @@
+import data1 from "./data.json" with { type: "json" };
+// deno-lint-ignore no-import-assertions
+import data2 from "./data.json" assert { type: "json" };
+
+console.log(data1.foo);
+console.log(data2.foo);
diff --git a/tests/specs/run/import_blob_url/__test__.jsonc b/tests/specs/run/import_blob_url/__test__.jsonc
new file mode 100644
index 000000000..9ae6b5a42
--- /dev/null
+++ b/tests/specs/run/import_blob_url/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload import_blob_url.ts",
+ "output": "import_blob_url.ts.out"
+}
diff --git a/tests/testdata/run/import_blob_url.ts b/tests/specs/run/import_blob_url/import_blob_url.ts
index 86bb634e1..86bb634e1 100644
--- a/tests/testdata/run/import_blob_url.ts
+++ b/tests/specs/run/import_blob_url/import_blob_url.ts
diff --git a/tests/testdata/run/import_blob_url.ts.out b/tests/specs/run/import_blob_url/import_blob_url.ts.out
index bfa0b9d94..bfa0b9d94 100644
--- a/tests/testdata/run/import_blob_url.ts.out
+++ b/tests/specs/run/import_blob_url/import_blob_url.ts.out
diff --git a/tests/specs/run/import_blob_url_error_stack/__test__.jsonc b/tests/specs/run/import_blob_url_error_stack/__test__.jsonc
new file mode 100644
index 000000000..56a1489cd
--- /dev/null
+++ b/tests/specs/run/import_blob_url_error_stack/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload import_blob_url_error_stack.ts",
+ "output": "import_blob_url_error_stack.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/import_blob_url_error_stack.ts b/tests/specs/run/import_blob_url_error_stack/import_blob_url_error_stack.ts
index f9c4f2e9d..f9c4f2e9d 100644
--- a/tests/testdata/run/import_blob_url_error_stack.ts
+++ b/tests/specs/run/import_blob_url_error_stack/import_blob_url_error_stack.ts
diff --git a/tests/testdata/run/import_blob_url_error_stack.ts.out b/tests/specs/run/import_blob_url_error_stack/import_blob_url_error_stack.ts.out
index 201556b8a..201556b8a 100644
--- a/tests/testdata/run/import_blob_url_error_stack.ts.out
+++ b/tests/specs/run/import_blob_url_error_stack/import_blob_url_error_stack.ts.out
diff --git a/tests/specs/run/import_blob_url_import_relative/__test__.jsonc b/tests/specs/run/import_blob_url_import_relative/__test__.jsonc
new file mode 100644
index 000000000..4fda81b31
--- /dev/null
+++ b/tests/specs/run/import_blob_url_import_relative/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload import_blob_url_import_relative.ts",
+ "output": "import_blob_url_import_relative.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/import_blob_url_import_relative.ts b/tests/specs/run/import_blob_url_import_relative/import_blob_url_import_relative.ts
index ad130bdac..ad130bdac 100644
--- a/tests/testdata/run/import_blob_url_import_relative.ts
+++ b/tests/specs/run/import_blob_url_import_relative/import_blob_url_import_relative.ts
diff --git a/tests/testdata/run/import_blob_url_import_relative.ts.out b/tests/specs/run/import_blob_url_import_relative/import_blob_url_import_relative.ts.out
index 59a6f07fb..59a6f07fb 100644
--- a/tests/testdata/run/import_blob_url_import_relative.ts.out
+++ b/tests/specs/run/import_blob_url_import_relative/import_blob_url_import_relative.ts.out
diff --git a/tests/specs/run/import_blob_url_imports/__test__.jsonc b/tests/specs/run/import_blob_url_imports/__test__.jsonc
new file mode 100644
index 000000000..511d22a59
--- /dev/null
+++ b/tests/specs/run/import_blob_url_imports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload --allow-net=localhost:4545 import_blob_url_imports.ts",
+ "output": "import_blob_url_imports.ts.out"
+}
diff --git a/tests/testdata/run/import_blob_url_imports.ts b/tests/specs/run/import_blob_url_imports/import_blob_url_imports.ts
index a7c639152..a7c639152 100644
--- a/tests/testdata/run/import_blob_url_imports.ts
+++ b/tests/specs/run/import_blob_url_imports/import_blob_url_imports.ts
diff --git a/tests/testdata/run/import_extensionless.ts.out b/tests/specs/run/import_blob_url_imports/import_blob_url_imports.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/import_extensionless.ts.out
+++ b/tests/specs/run/import_blob_url_imports/import_blob_url_imports.ts.out
diff --git a/tests/specs/run/import_blob_url_jsx/__test__.jsonc b/tests/specs/run/import_blob_url_jsx/__test__.jsonc
new file mode 100644
index 000000000..985c6f842
--- /dev/null
+++ b/tests/specs/run/import_blob_url_jsx/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload import_blob_url_jsx.ts",
+ "output": "import_blob_url_jsx.ts.out"
+}
diff --git a/tests/testdata/run/import_blob_url_jsx.ts b/tests/specs/run/import_blob_url_jsx/import_blob_url_jsx.ts
index 8d645796a..8d645796a 100644
--- a/tests/testdata/run/import_blob_url_jsx.ts
+++ b/tests/specs/run/import_blob_url_jsx/import_blob_url_jsx.ts
diff --git a/tests/testdata/run/import_blob_url_jsx.ts.out b/tests/specs/run/import_blob_url_jsx/import_blob_url_jsx.ts.out
index c1c85f250..c1c85f250 100644
--- a/tests/testdata/run/import_blob_url_jsx.ts.out
+++ b/tests/specs/run/import_blob_url_jsx/import_blob_url_jsx.ts.out
diff --git a/tests/specs/run/import_compression/__test__.jsonc b/tests/specs/run/import_compression/__test__.jsonc
new file mode 100644
index 000000000..c8f7af9e1
--- /dev/null
+++ b/tests/specs/run/import_compression/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload --allow-net import_compression/main.ts",
+ "output": "import_compression/main.out"
+}
diff --git a/tests/specs/run/import_compression/import_compression/brotli b/tests/specs/run/import_compression/import_compression/brotli
new file mode 100644
index 000000000..65f679d57
--- /dev/null
+++ b/tests/specs/run/import_compression/import_compression/brotli
@@ -0,0 +1,2 @@
+
+console.log('brotli'); \ No newline at end of file
diff --git a/tests/specs/run/import_compression/import_compression/gziped b/tests/specs/run/import_compression/import_compression/gziped
new file mode 100644
index 000000000..9f9a7bc69
--- /dev/null
+++ b/tests/specs/run/import_compression/import_compression/gziped
Binary files differ
diff --git a/tests/testdata/run/import_compression/main.out b/tests/specs/run/import_compression/import_compression/main.out
index 371994979..371994979 100644
--- a/tests/testdata/run/import_compression/main.out
+++ b/tests/specs/run/import_compression/import_compression/main.out
diff --git a/tests/testdata/run/import_compression/main.ts b/tests/specs/run/import_compression/import_compression/main.ts
index 3dcd6fa24..3dcd6fa24 100644
--- a/tests/testdata/run/import_compression/main.ts
+++ b/tests/specs/run/import_compression/import_compression/main.ts
diff --git a/tests/specs/run/import_data_url/__test__.jsonc b/tests/specs/run/import_data_url/__test__.jsonc
new file mode 100644
index 000000000..95d1c94a3
--- /dev/null
+++ b/tests/specs/run/import_data_url/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload import_data_url.ts",
+ "output": "import_data_url.ts.out"
+}
diff --git a/tests/testdata/run/import_data_url.ts b/tests/specs/run/import_data_url/import_data_url.ts
index 258514a5e..258514a5e 100644
--- a/tests/testdata/run/import_data_url.ts
+++ b/tests/specs/run/import_data_url/import_data_url.ts
diff --git a/tests/testdata/run/import_data_url.ts.out b/tests/specs/run/import_data_url/import_data_url.ts.out
index bfa0b9d94..bfa0b9d94 100644
--- a/tests/testdata/run/import_data_url.ts.out
+++ b/tests/specs/run/import_data_url/import_data_url.ts.out
diff --git a/tests/specs/run/import_data_url_error_stack/__test__.jsonc b/tests/specs/run/import_data_url_error_stack/__test__.jsonc
new file mode 100644
index 000000000..851aae191
--- /dev/null
+++ b/tests/specs/run/import_data_url_error_stack/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload import_data_url_error_stack.ts",
+ "output": "import_data_url_error_stack.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/import_data_url_error_stack.ts b/tests/specs/run/import_data_url_error_stack/import_data_url_error_stack.ts
index 022e49fe1..022e49fe1 100644
--- a/tests/testdata/run/import_data_url_error_stack.ts
+++ b/tests/specs/run/import_data_url_error_stack/import_data_url_error_stack.ts
diff --git a/tests/testdata/run/import_data_url_error_stack.ts.out b/tests/specs/run/import_data_url_error_stack/import_data_url_error_stack.ts.out
index 83eed611d..83eed611d 100644
--- a/tests/testdata/run/import_data_url_error_stack.ts.out
+++ b/tests/specs/run/import_data_url_error_stack/import_data_url_error_stack.ts.out
diff --git a/tests/specs/run/import_data_url_import_relative/__test__.jsonc b/tests/specs/run/import_data_url_import_relative/__test__.jsonc
new file mode 100644
index 000000000..b241bc917
--- /dev/null
+++ b/tests/specs/run/import_data_url_import_relative/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload import_data_url_import_relative.ts",
+ "output": "import_data_url_import_relative.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/import_data_url_import_relative.ts b/tests/specs/run/import_data_url_import_relative/import_data_url_import_relative.ts
index 23947fe60..23947fe60 100644
--- a/tests/testdata/run/import_data_url_import_relative.ts
+++ b/tests/specs/run/import_data_url_import_relative/import_data_url_import_relative.ts
diff --git a/tests/testdata/run/import_data_url_import_relative.ts.out b/tests/specs/run/import_data_url_import_relative/import_data_url_import_relative.ts.out
index 821c3e4df..821c3e4df 100644
--- a/tests/testdata/run/import_data_url_import_relative.ts.out
+++ b/tests/specs/run/import_data_url_import_relative/import_data_url_import_relative.ts.out
diff --git a/tests/specs/run/import_data_url_imports/__test__.jsonc b/tests/specs/run/import_data_url_imports/__test__.jsonc
new file mode 100644
index 000000000..7fc8df315
--- /dev/null
+++ b/tests/specs/run/import_data_url_imports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload import_data_url_imports.ts",
+ "output": "import_data_url_imports.ts.out"
+}
diff --git a/tests/testdata/run/import_data_url_imports.ts b/tests/specs/run/import_data_url_imports/import_data_url_imports.ts
index df7dae727..df7dae727 100644
--- a/tests/testdata/run/import_data_url_imports.ts
+++ b/tests/specs/run/import_data_url_imports/import_data_url_imports.ts
diff --git a/tests/testdata/run/issue13562.ts.out b/tests/specs/run/import_data_url_imports/import_data_url_imports.ts.out
index e965047ad..e965047ad 100644
--- a/tests/testdata/run/issue13562.ts.out
+++ b/tests/specs/run/import_data_url_imports/import_data_url_imports.ts.out
diff --git a/tests/specs/run/import_data_url_jsx/__test__.jsonc b/tests/specs/run/import_data_url_jsx/__test__.jsonc
new file mode 100644
index 000000000..8fb1f9a1d
--- /dev/null
+++ b/tests/specs/run/import_data_url_jsx/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload import_data_url_jsx.ts",
+ "output": "import_data_url_jsx.ts.out"
+}
diff --git a/tests/testdata/run/import_data_url_jsx.ts b/tests/specs/run/import_data_url_jsx/import_data_url_jsx.ts
index 1881211f9..1881211f9 100644
--- a/tests/testdata/run/import_data_url_jsx.ts
+++ b/tests/specs/run/import_data_url_jsx/import_data_url_jsx.ts
diff --git a/tests/testdata/run/import_data_url_jsx.ts.out b/tests/specs/run/import_data_url_jsx/import_data_url_jsx.ts.out
index c1c85f250..c1c85f250 100644
--- a/tests/testdata/run/import_data_url_jsx.ts.out
+++ b/tests/specs/run/import_data_url_jsx/import_data_url_jsx.ts.out
diff --git a/tests/specs/run/import_dynamic_data_url/__test__.jsonc b/tests/specs/run/import_dynamic_data_url/__test__.jsonc
new file mode 100644
index 000000000..09ff77f41
--- /dev/null
+++ b/tests/specs/run/import_dynamic_data_url/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload import_dynamic_data_url.ts",
+ "output": "import_dynamic_data_url.ts.out"
+}
diff --git a/tests/testdata/run/import_dynamic_data_url.ts b/tests/specs/run/import_dynamic_data_url/import_dynamic_data_url.ts
index 53a0fbcd3..53a0fbcd3 100644
--- a/tests/testdata/run/import_dynamic_data_url.ts
+++ b/tests/specs/run/import_dynamic_data_url/import_dynamic_data_url.ts
diff --git a/tests/testdata/run/import_dynamic_data_url.ts.out b/tests/specs/run/import_dynamic_data_url/import_dynamic_data_url.ts.out
index bfa0b9d94..bfa0b9d94 100644
--- a/tests/testdata/run/import_dynamic_data_url.ts.out
+++ b/tests/specs/run/import_dynamic_data_url/import_dynamic_data_url.ts.out
diff --git a/tests/specs/run/import_extensionless/__test__.jsonc b/tests/specs/run/import_extensionless/__test__.jsonc
new file mode 100644
index 000000000..cde59b5e2
--- /dev/null
+++ b/tests/specs/run/import_extensionless/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload import_extensionless.ts",
+ "output": "import_extensionless.ts.out"
+}
diff --git a/tests/testdata/run/import_extensionless.ts b/tests/specs/run/import_extensionless/import_extensionless.ts
index 689d553ff..689d553ff 100644
--- a/tests/testdata/run/import_extensionless.ts
+++ b/tests/specs/run/import_extensionless/import_extensionless.ts
diff --git a/tests/specs/run/import_extensionless/import_extensionless.ts.out b/tests/specs/run/import_extensionless/import_extensionless.ts.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/tests/specs/run/import_extensionless/import_extensionless.ts.out
@@ -0,0 +1 @@
+Hello
diff --git a/tests/specs/run/import_file_with_colon/__test__.jsonc b/tests/specs/run/import_file_with_colon/__test__.jsonc
new file mode 100644
index 000000000..5e6602ab3
--- /dev/null
+++ b/tests/specs/run/import_file_with_colon/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload import_file_with_colon.ts",
+ "output": "import_file_with_colon.ts.out"
+}
diff --git a/tests/testdata/run/import_file_with_colon.ts b/tests/specs/run/import_file_with_colon/import_file_with_colon.ts
index 619bdd66d..619bdd66d 100644
--- a/tests/testdata/run/import_file_with_colon.ts
+++ b/tests/specs/run/import_file_with_colon/import_file_with_colon.ts
diff --git a/tests/testdata/run/import_file_with_colon.ts.out b/tests/specs/run/import_file_with_colon/import_file_with_colon.ts.out
index f60bbf4b1..f60bbf4b1 100644
--- a/tests/testdata/run/import_file_with_colon.ts.out
+++ b/tests/specs/run/import_file_with_colon/import_file_with_colon.ts.out
diff --git a/tests/specs/run/import_type/__test__.jsonc b/tests/specs/run/import_type/__test__.jsonc
new file mode 100644
index 000000000..2958483d0
--- /dev/null
+++ b/tests/specs/run/import_type/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload import_type.ts",
+ "output": "import_type.ts.out"
+}
diff --git a/tests/specs/run/import_type/export_types.ts b/tests/specs/run/import_type/export_types.ts
new file mode 100644
index 000000000..18c8ed881
--- /dev/null
+++ b/tests/specs/run/import_type/export_types.ts
@@ -0,0 +1,11 @@
+export interface A {
+ a: string;
+}
+
+export class B implements A {
+ a = "a";
+}
+
+export function create(): B {
+ return new B();
+}
diff --git a/tests/specs/run/import_type/import_type.ts b/tests/specs/run/import_type/import_type.ts
new file mode 100644
index 000000000..91baba19a
--- /dev/null
+++ b/tests/specs/run/import_type/import_type.ts
@@ -0,0 +1,5 @@
+import { type B, create } from "./export_types.ts";
+
+const b: B = create();
+
+console.log(b);
diff --git a/tests/testdata/run/import_type.ts.out b/tests/specs/run/import_type/import_type.ts.out
index e35539e35..e35539e35 100644
--- a/tests/testdata/run/import_type.ts.out
+++ b/tests/specs/run/import_type/import_type.ts.out
diff --git a/tests/specs/run/import_type_no_check/__test__.jsonc b/tests/specs/run/import_type_no_check/__test__.jsonc
new file mode 100644
index 000000000..d858f5fa1
--- /dev/null
+++ b/tests/specs/run/import_type_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --no-check import_type.ts",
+ "output": "import_type.ts.out"
+}
diff --git a/tests/specs/run/import_type_no_check/export_types.ts b/tests/specs/run/import_type_no_check/export_types.ts
new file mode 100644
index 000000000..18c8ed881
--- /dev/null
+++ b/tests/specs/run/import_type_no_check/export_types.ts
@@ -0,0 +1,11 @@
+export interface A {
+ a: string;
+}
+
+export class B implements A {
+ a = "a";
+}
+
+export function create(): B {
+ return new B();
+}
diff --git a/tests/specs/run/import_type_no_check/import_type.ts b/tests/specs/run/import_type_no_check/import_type.ts
new file mode 100644
index 000000000..91baba19a
--- /dev/null
+++ b/tests/specs/run/import_type_no_check/import_type.ts
@@ -0,0 +1,5 @@
+import { type B, create } from "./export_types.ts";
+
+const b: B = create();
+
+console.log(b);
diff --git a/tests/specs/run/import_type_no_check/import_type.ts.out b/tests/specs/run/import_type_no_check/import_type.ts.out
new file mode 100644
index 000000000..e35539e35
--- /dev/null
+++ b/tests/specs/run/import_type_no_check/import_type.ts.out
@@ -0,0 +1 @@
+B { a: "a" }
diff --git a/tests/specs/run/inline_js_source_map_2/__test__.jsonc b/tests/specs/run/inline_js_source_map_2/__test__.jsonc
new file mode 100644
index 000000000..99ca6c1ae
--- /dev/null
+++ b/tests/specs/run/inline_js_source_map_2/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet inline_js_source_map_2.js",
+ "output": "inline_js_source_map_2.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js b/tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js
new file mode 100644
index 000000000..87132ee6a
--- /dev/null
+++ b/tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js
@@ -0,0 +1,4 @@
+"use strict";
+1 + 1;
+throw new Error("Hello world!");
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo0NTQ1L3J1bi9pbmxpbmVfanNfc291cmNlX21hcF8yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO0FBS0osTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUErQixDQUFDLENBQUMifQ==
diff --git a/tests/testdata/run/inline_js_source_map_2.js.out b/tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js.out
index ba3053eba..ba3053eba 100644
--- a/tests/testdata/run/inline_js_source_map_2.js.out
+++ b/tests/specs/run/inline_js_source_map_2/inline_js_source_map_2.js.out
diff --git a/tests/specs/run/inline_js_source_map_2_with_inline_contents/__test__.jsonc b/tests/specs/run/inline_js_source_map_2_with_inline_contents/__test__.jsonc
new file mode 100644
index 000000000..45fe6eba6
--- /dev/null
+++ b/tests/specs/run/inline_js_source_map_2_with_inline_contents/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet inline_js_source_map_2_with_inline_contents.js",
+ "output": "inline_js_source_map_2_with_inline_contents.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js b/tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js
new file mode 100644
index 000000000..41bee7fe4
--- /dev/null
+++ b/tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js
@@ -0,0 +1,4 @@
+"use strict";
+
+throw new Error("Hello world!");
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo0NTQ1L3J1bi9pbmxpbmVfanNfc291cmNlX21hcF8yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIjErMTtcbmludGVyZmFjZSBUZXN0IHtcbiAgaGVsbG86IHN0cmluZztcbn1cblxudGhyb3cgbmV3IEVycm9yKFwiSGVsbG8gd29ybGQhXCIgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO0FBS0osTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUErQixDQUFDLENBQUMifQ==
diff --git a/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out b/tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js.out
index ba3053eba..ba3053eba 100644
--- a/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out
+++ b/tests/specs/run/inline_js_source_map_2_with_inline_contents/inline_js_source_map_2_with_inline_contents.js.out
diff --git a/tests/specs/run/inline_js_source_map_with_contents_from_graph/__test__.jsonc b/tests/specs/run/inline_js_source_map_with_contents_from_graph/__test__.jsonc
new file mode 100644
index 000000000..71dc4d509
--- /dev/null
+++ b/tests/specs/run/inline_js_source_map_with_contents_from_graph/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-import --quiet inline_js_source_map_with_contents_from_graph.js",
+ "output": "inline_js_source_map_with_contents_from_graph.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js b/tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js
new file mode 100644
index 000000000..12fa1644d
--- /dev/null
+++ b/tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js
@@ -0,0 +1,4 @@
+"use strict";
+import "http://localhost:4545/run/inline_js_source_map.ts";
+throw new Error("Hello world!");
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo0NTQ1L3J1bi9pbmxpbmVfanNfc291cmNlX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsQ0FBQyxHQUFDLENBQUMsQ0FBQztBQUtKLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBK0IsQ0FBQyxDQUFDIn0=
diff --git a/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out b/tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js.out
index d80a1c7bb..d80a1c7bb 100644
--- a/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out
+++ b/tests/specs/run/inline_js_source_map_with_contents_from_graph/inline_js_source_map_with_contents_from_graph.js.out
diff --git a/tests/specs/run/issue_13562/__test__.jsonc b/tests/specs/run/issue_13562/__test__.jsonc
new file mode 100644
index 000000000..1971d552b
--- /dev/null
+++ b/tests/specs/run/issue_13562/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run issue13562.ts",
+ "output": "issue13562.ts.out"
+}
diff --git a/tests/specs/run/issue_13562/issue13562.ts b/tests/specs/run/issue_13562/issue13562.ts
new file mode 100644
index 000000000..51e97629b
--- /dev/null
+++ b/tests/specs/run/issue_13562/issue13562.ts
@@ -0,0 +1,3 @@
+import { printHello3 } from "./mod1.ts?q=.json";
+
+printHello3();
diff --git a/tests/specs/run/issue_13562/issue13562.ts.out b/tests/specs/run/issue_13562/issue13562.ts.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/tests/specs/run/issue_13562/issue13562.ts.out
@@ -0,0 +1 @@
+Hello
diff --git a/tests/specs/run/issue_13562/mod1.ts b/tests/specs/run/issue_13562/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/issue_13562/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/issue_13562/print_hello.ts b/tests/specs/run/issue_13562/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/issue_13562/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/issue_13562/subdir2/dynamic_import.ts b/tests/specs/run/issue_13562/subdir2/dynamic_import.ts
new file mode 100644
index 000000000..59beb64c3
--- /dev/null
+++ b/tests/specs/run/issue_13562/subdir2/dynamic_import.ts
@@ -0,0 +1,4 @@
+(async () => {
+ const { printHello } = await import("../mod2.ts");
+ printHello();
+})();
diff --git a/tests/specs/run/issue_13562/subdir2/mod2.ts b/tests/specs/run/issue_13562/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/issue_13562/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/specs/run/js_import_detect/__test__.jsonc b/tests/specs/run/js_import_detect/__test__.jsonc
new file mode 100644
index 000000000..6a648f476
--- /dev/null
+++ b/tests/specs/run/js_import_detect/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload js_import_detect.ts",
+ "output": "js_import_detect.ts.out",
+ "exitCode": 0
+}
diff --git a/tests/testdata/run/js_import_detect.ts b/tests/specs/run/js_import_detect/js_import_detect.ts
index 751741996..751741996 100644
--- a/tests/testdata/run/js_import_detect.ts
+++ b/tests/specs/run/js_import_detect/js_import_detect.ts
diff --git a/tests/testdata/run/js_import_detect.ts.out b/tests/specs/run/js_import_detect/js_import_detect.ts.out
index 9766475a4..9766475a4 100644
--- a/tests/testdata/run/js_import_detect.ts.out
+++ b/tests/specs/run/js_import_detect/js_import_detect.ts.out
diff --git a/tests/specs/run/js_root_with_ts_check/__test__.jsonc b/tests/specs/run/js_root_with_ts_check/__test__.jsonc
new file mode 100644
index 000000000..ebc4d7598
--- /dev/null
+++ b/tests/specs/run/js_root_with_ts_check/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --check js_root_with_ts_check.js",
+ "output": "js_root_with_ts_check.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/js_root_with_ts_check.js b/tests/specs/run/js_root_with_ts_check/js_root_with_ts_check.js
index adca847ee..adca847ee 100644
--- a/tests/testdata/run/js_root_with_ts_check.js
+++ b/tests/specs/run/js_root_with_ts_check/js_root_with_ts_check.js
diff --git a/tests/testdata/run/js_root_with_ts_check.js.out b/tests/specs/run/js_root_with_ts_check/js_root_with_ts_check.js.out
index 34e2fa61e..34e2fa61e 100644
--- a/tests/testdata/run/js_root_with_ts_check.js.out
+++ b/tests/specs/run/js_root_with_ts_check/js_root_with_ts_check.js.out
diff --git a/tests/specs/run/js_without_extension/__test__.jsonc b/tests/specs/run/js_without_extension/__test__.jsonc
new file mode 100644
index 000000000..0d2aac73b
--- /dev/null
+++ b/tests/specs/run/js_without_extension/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --ext js --check js_without_extension",
+ "output": "js_without_extension.out",
+ "exitCode": 0
+}
diff --git a/tests/specs/run/js_without_extension/js_without_extension b/tests/specs/run/js_without_extension/js_without_extension
new file mode 100644
index 000000000..4774be326
--- /dev/null
+++ b/tests/specs/run/js_without_extension/js_without_extension
@@ -0,0 +1,3 @@
+let i = 123;
+i = "hello"
+console.log("executing javascript with no extension");
diff --git a/tests/specs/run/js_without_extension/js_without_extension.out b/tests/specs/run/js_without_extension/js_without_extension.out
new file mode 100644
index 000000000..1236c1e53
--- /dev/null
+++ b/tests/specs/run/js_without_extension/js_without_extension.out
@@ -0,0 +1 @@
+executing javascript with no extension
diff --git a/tests/specs/run/jsx_import_from_ts/__test__.jsonc b/tests/specs/run/jsx_import_from_ts/__test__.jsonc
new file mode 100644
index 000000000..0f89205dc
--- /dev/null
+++ b/tests/specs/run/jsx_import_from_ts/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload jsx_import_from_ts.ts",
+ "output": "jsx_import_from_ts.ts.out"
+}
diff --git a/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.App.jsx b/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.App.jsx
new file mode 100644
index 000000000..649230613
--- /dev/null
+++ b/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.App.jsx
@@ -0,0 +1,11 @@
+const React = {
+ createElement() {},
+};
+
+export default function app() {
+ return (
+ <div>
+ <h2>asdf</h2>
+ </div>
+ );
+}
diff --git a/tests/testdata/run/jsx_import_from_ts.ts b/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.ts
index 3cc916698..3cc916698 100644
--- a/tests/testdata/run/jsx_import_from_ts.ts
+++ b/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.ts
diff --git a/tests/testdata/run/jsx_import_from_ts.ts.out b/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.ts.out
index d449b8c9a..d449b8c9a 100644
--- a/tests/testdata/run/jsx_import_from_ts.ts.out
+++ b/tests/specs/run/jsx_import_from_ts/jsx_import_from_ts.ts.out
diff --git a/tests/specs/run/jsx_import_source_error/__test__.jsonc b/tests/specs/run/jsx_import_source_error/__test__.jsonc
new file mode 100644
index 000000000..22b1d29ca
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --config jsx/deno-jsx-error.jsonc --check jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source_error.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/deno.lock b/tests/specs/run/jsx_import_source_error/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_error/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_error/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/import-map.json b/tests/specs/run/jsx_import_source_error/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_error/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_error/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_error/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_error/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_error/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/testdata/run/jsx_import_source_error.out b/tests/specs/run/jsx_import_source_error/jsx_import_source_error.out
index 634a5b09b..634a5b09b 100644
--- a/tests/testdata/run/jsx_import_source_error.out
+++ b/tests/specs/run/jsx_import_source_error/jsx_import_source_error.out
diff --git a/tests/specs/run/jsx_import_source_error/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_error/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_error/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/__test__.jsonc b/tests/specs/run/jsx_import_source_import_map/__test__.jsonc
new file mode 100644
index 000000000..8a62c5243
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-import-map.jsonc jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source_import_map.out"
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/deno.lock b/tests/specs/run/jsx_import_source_import_map/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_import_map/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/import-map.json b/tests/specs/run/jsx_import_source_import_map/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_import_map/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_import_map/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_import_map/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx_import_source_import_map.out b/tests/specs/run/jsx_import_source_import_map/jsx_import_source_import_map.out
new file mode 100644
index 000000000..0d3238967
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx_import_source_import_map.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime/index.ts
diff --git a/tests/specs/run/jsx_import_source_import_map/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_import_map/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/__test__.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/__test__.jsonc
new file mode 100644
index 000000000..b62e7cb6f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsxdev-import-map.jsonc jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source_import_map_dev.out"
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno.lock b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map.json b/tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_import_map_dev.out b/tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_import_map_dev.out
new file mode 100644
index 000000000..56f514d90
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_import_map_dev.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-dev-runtime/index.ts
diff --git a/tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_dev/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/__test__.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/__test__.jsonc
new file mode 100644
index 000000000..ea4265484
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-import-map.jsonc --no-check jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source_import_map.out"
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno.lock b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map.json b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_import_map.out b/tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_import_map.out
new file mode 100644
index 000000000..0d3238967
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_import_map.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime/index.ts
diff --git a/tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_import_map_no_check/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/__test__.jsonc b/tests/specs/run/jsx_import_source_no_pragma/__test__.jsonc
new file mode 100644
index 000000000..7678e18f4
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/deno.lock b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_no_pragma/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/import-map.json b/tests/specs/run/jsx_import_source_no_pragma/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/testdata/run/jsx_import_source.out b/tests/specs/run/jsx_import_source_no_pragma/jsx_import_source.out
index b9555987a..b9555987a 100644
--- a/tests/testdata/run/jsx_import_source.out
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx_import_source.out
diff --git a/tests/specs/run/jsx_import_source_no_pragma/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_no_pragma/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/__test__.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/__test__.jsonc
new file mode 100644
index 000000000..8f9ee81f6
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --config jsx/deno-jsxdev.jsonc --no-lock jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source_dev.out"
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno.lock b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map.json b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/testdata/run/jsx_import_source_dev.out b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_dev.out
index 38d7a12f0..38d7a12f0 100644
--- a/tests/testdata/run/jsx_import_source_dev.out
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_dev.out
diff --git a/tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_dev/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/__test__.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/__test__.jsonc
new file mode 100644
index 000000000..12cc9b076
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock --no-check jsx_import_source_no_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno.lock b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map.json b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source.out b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source.out
new file mode 100644
index 000000000..b9555987a
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime
diff --git a/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source_no_pragma.tsx b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source_no_pragma.tsx
new file mode 100644
index 000000000..2c756054f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_no_pragma_no_check/jsx_import_source_no_pragma.tsx
@@ -0,0 +1,7 @@
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma/__test__.jsonc
new file mode 100644
index 000000000..9d704c065
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-import jsx_import_source_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma/jsx_import_source.out b/tests/specs/run/jsx_import_source_pragma/jsx_import_source.out
new file mode 100644
index 000000000..b9555987a
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma/jsx_import_source.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime
diff --git a/tests/testdata/run/jsx_import_source_pragma.tsx b/tests/specs/run/jsx_import_source_pragma/jsx_import_source_pragma.tsx
index c19e53d4f..c19e53d4f 100644
--- a/tests/testdata/run/jsx_import_source_pragma.tsx
+++ b/tests/specs/run/jsx_import_source_pragma/jsx_import_source_pragma.tsx
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/__test__.jsonc
new file mode 100644
index 000000000..9eafe5196
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --import-map jsx/import-map.json jsx_import_source_pragma_import_map.tsx",
+ "output": "jsx_import_source_import_map.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_import_map.out b/tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_import_map.out
new file mode 100644
index 000000000..0d3238967
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_import_map.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime/index.ts
diff --git a/tests/testdata/run/jsx_import_source_pragma_import_map.tsx b/tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_pragma_import_map.tsx
index 548365f18..548365f18 100644
--- a/tests/testdata/run/jsx_import_source_pragma_import_map.tsx
+++ b/tests/specs/run/jsx_import_source_pragma_import_map/jsx_import_source_pragma_import_map.tsx
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/__test__.jsonc
new file mode 100644
index 000000000..bb271c0ee
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --import-map jsx/import-map.json --config jsx/deno-jsxdev-import-map.jsonc jsx_import_source_pragma_import_map.tsx",
+ "output": "jsx_import_source_import_map_dev.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_import_map_dev.out b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_import_map_dev.out
new file mode 100644
index 000000000..56f514d90
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_import_map_dev.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-dev-runtime/index.ts
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_pragma_import_map.tsx b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_pragma_import_map.tsx
new file mode 100644
index 000000000..548365f18
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_dev/jsx_import_source_pragma_import_map.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/__test__.jsonc
new file mode 100644
index 000000000..dd42b71fd
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --import-map jsx/import-map.json --no-check jsx_import_source_pragma_import_map.tsx",
+ "output": "jsx_import_source_import_map.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_import_map.out b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_import_map.out
new file mode 100644
index 000000000..0d3238967
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_import_map.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime/index.ts
diff --git a/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_pragma_import_map.tsx b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_pragma_import_map.tsx
new file mode 100644
index 000000000..548365f18
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_import_map_no_check/jsx_import_source_pragma_import_map.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/__test__.jsonc
new file mode 100644
index 000000000..0956b94a7
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --no-check jsx_import_source_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source.out b/tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source.out
new file mode 100644
index 000000000..b9555987a
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime
diff --git a/tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source_pragma.tsx b/tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source_pragma.tsx
new file mode 100644
index 000000000..c19e53d4f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_no_check/jsx_import_source_pragma.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource http://localhost:4545/jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/__test__.jsonc
new file mode 100644
index 000000000..aeaf209c3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-import --config jsx/deno-jsx.jsonc --no-lock jsx_import_source_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source.out b/tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source.out
new file mode 100644
index 000000000..b9555987a
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source_pragma.tsx b/tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source_pragma.tsx
new file mode 100644
index 000000000..c19e53d4f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config/jsx_import_source_pragma.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource http://localhost:4545/jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/__test__.jsonc
new file mode 100644
index 000000000..3e8089fd2
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock --no-check jsx_import_source_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source.out b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source.out
new file mode 100644
index 000000000..b9555987a
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source_pragma.tsx b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source_pragma.tsx
new file mode 100644
index 000000000..c19e53d4f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_no_check/jsx_import_source_pragma.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource http://localhost:4545/jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/__test__.jsonc
new file mode 100644
index 000000000..03ed1af1b
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --config jsx/deno-jsx.jsonc --no-lock --vendor jsx_import_source_pragma.tsx",
+ "output": "jsx_import_source.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/http_localhost_4545/jsx/#jsx-runtime_62ac8.js b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/http_localhost_4545/jsx/#jsx-runtime_62ac8.js
new file mode 100644
index 000000000..c8f0a908d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/http_localhost_4545/jsx/#jsx-runtime_62ac8.js
@@ -0,0 +1,11 @@
+export function jsx(
+ _type,
+ _props,
+ _key,
+ _source,
+ _self,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/manifest.json b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/manifest.json
new file mode 100644
index 000000000..a770c3366
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx/vendor/manifest.json
@@ -0,0 +1,9 @@
+{
+ "modules": {
+ "http://localhost:4545/jsx/jsx-runtime": {
+ "headers": {
+ "content-type": "application/javascript"
+ }
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source.out b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source.out
new file mode 100644
index 000000000..b9555987a
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-runtime
diff --git a/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source_pragma.tsx b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source_pragma.tsx
new file mode 100644
index 000000000..c19e53d4f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_config_vendor_dir/jsx_import_source_pragma.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource http://localhost:4545/jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/__test__.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/__test__.jsonc
new file mode 100644
index 000000000..56734e467
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-import --config jsx/deno-jsxdev.jsonc --no-lock jsx_import_source_pragma.tsx",
+ "output": "jsx_import_source_dev.out"
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno.lock b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map.json b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_dev.out b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_dev.out
new file mode 100644
index 000000000..38d7a12f0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_dev.out
@@ -0,0 +1,2 @@
+[WILDCARD]
+imported http://localhost:4545/jsx/jsx-dev-runtime
diff --git a/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_pragma.tsx b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_pragma.tsx
new file mode 100644
index 000000000..c19e53d4f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_pragma_with_dev_config/jsx_import_source_pragma.tsx
@@ -0,0 +1,9 @@
+/** @jsxImportSource http://localhost:4545/jsx */
+
+function A() {
+ return "hello";
+}
+
+export function B() {
+ return <A></A>;
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/__test__.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/__test__.jsonc
new file mode 100644
index 000000000..c795a9d8e
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --check --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-precompile.jsonc jsx_precompile/no_pragma.tsx",
+ "output": "jsx_precompile/no_pragma.out"
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno.lock b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map.json b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.out b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.out
new file mode 100644
index 000000000..f26984258
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.out
@@ -0,0 +1,3 @@
+Download http://localhost:4545/jsx/jsx-precompile/index.ts
+Check file:///[WILDCARD]/jsx_precompile/no_pragma.tsx
+imported http://localhost:4545/jsx/jsx-precompile/index.ts
diff --git a/tests/testdata/run/jsx_precompile/no_pragma.tsx b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.tsx
index 7ba21d80d..7ba21d80d 100644
--- a/tests/testdata/run/jsx_precompile/no_pragma.tsx
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/no_pragma.tsx
diff --git a/tests/testdata/run/jsx_precompile/skip.out b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/skip.out
index a32b616f0..a32b616f0 100644
--- a/tests/testdata/run/jsx_precompile/skip.out
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/skip.out
diff --git a/tests/testdata/run/jsx_precompile/skip.tsx b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/skip.tsx
index 49bc4e2b7..49bc4e2b7 100644
--- a/tests/testdata/run/jsx_precompile/skip.tsx
+++ b/tests/specs/run/jsx_import_source_precompile_import_map/jsx_precompile/skip.tsx
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/__test__.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/__test__.jsonc
new file mode 100644
index 000000000..7163c83d0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --check --import-map jsx/import-map.json --no-lock --config jsx/deno-jsx-precompile-skip.jsonc jsx_precompile/skip.tsx",
+ "output": "jsx_precompile/skip.out"
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-error.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-error.jsonc
new file mode 100644
index 000000000..37cb4dd91
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-error.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "./nonexistent"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-import-map.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-import-map.jsonc
new file mode 100644
index 000000000..5adbfa8b5
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile-skip.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile-skip.jsonc
new file mode 100644
index 000000000..3c9e4fa1f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile-skip.jsonc
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile",
+ "jsxPrecompileSkipElements": ["a", "img"]
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile.jsonc
new file mode 100644
index 000000000..95ae1b9f3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx-precompile.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "precompile",
+ "jsxImportSource": "jsx-precompile"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.json b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.json
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.jsonc
new file mode 100644
index 000000000..311409ea3
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsx.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev-import-map.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev-import-map.jsonc
new file mode 100644
index 000000000..7481d5a2d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev-import-map.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev.jsonc b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev.jsonc
new file mode 100644
index 000000000..ae5bdf9f1
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno-jsxdev.jsonc
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsxdev",
+ "jsxImportSource": "http://localhost:4545/jsx"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno.lock b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno.lock
new file mode 100644
index 000000000..011e8fe10
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/deno.lock
@@ -0,0 +1,6 @@
+{
+ "version": "2",
+ "remote": {
+ "http://localhost:4545/jsx/jsx-dev-runtime/index.ts": "183c5bf1cfb82b15fc1e8cca15593d4816035759532d851abd4476df378c8412"
+ }
+} \ No newline at end of file
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map-scoped.json b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map-scoped.json
new file mode 100644
index 000000000..9b2005128
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map-scoped.json
@@ -0,0 +1,8 @@
+{
+ "scopes": {
+ "../subdir/": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts"
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map.json b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map.json
new file mode 100644
index 000000000..1bfa04e2f
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/import-map.json
@@ -0,0 +1,7 @@
+{
+ "imports": {
+ "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts",
+ "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts",
+ "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts"
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-dev-runtime/index.ts b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-dev-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-dev-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-precompile/index.ts b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-precompile/index.ts
new file mode 100644
index 000000000..0d56095e0
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-precompile/index.ts
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+// deno-lint-ignore-file no-explicit-any
+export const jsxAttr = (name: string, value: any) => `${name}="${value}"`;
+// deno-lint-ignore-file no-explicit-any
+export const jsxTemplate = (_template: string[], ..._exprs: any[]) => "";
+// deno-lint-ignore-file no-explicit-any
+export const jsxEscape = (_value: any) => "";
+console.log("imported", import.meta.url);
+
+declare global {
+ namespace JSX {
+ interface IntrinsicElements {
+ [tagName: string]: Record<string, any>;
+ }
+ }
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-runtime/index.ts b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-runtime/index.ts
new file mode 100644
index 000000000..15e2029c8
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx/jsx-runtime/index.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file no-explicit-any
+export function jsx(
+ _type: any,
+ _props: any,
+ _key: any,
+ _source: any,
+ _self: any,
+) {}
+export const jsxs = jsx;
+export const jsxDEV = jsx;
+export const Fragment = Symbol("Fragment");
+console.log("imported", import.meta.url);
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.out b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.out
new file mode 100644
index 000000000..f26984258
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.out
@@ -0,0 +1,3 @@
+Download http://localhost:4545/jsx/jsx-precompile/index.ts
+Check file:///[WILDCARD]/jsx_precompile/no_pragma.tsx
+imported http://localhost:4545/jsx/jsx-precompile/index.ts
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.tsx b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.tsx
new file mode 100644
index 000000000..7ba21d80d
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/no_pragma.tsx
@@ -0,0 +1,3 @@
+export function A() {
+ return <h1>hello</h1>;
+}
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.out b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.out
new file mode 100644
index 000000000..6696c550c
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.out
@@ -0,0 +1,3 @@
+Download http://localhost:4545/jsx/jsx-precompile/index.ts
+Check file:///[WILDCARD]/jsx_precompile/skip.tsx
+imported http://localhost:4545/jsx/jsx-precompile/index.ts
diff --git a/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.tsx b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.tsx
new file mode 100644
index 000000000..49bc4e2b7
--- /dev/null
+++ b/tests/specs/run/jsx_import_source_precompile_import_map_skip_element/jsx_precompile/skip.tsx
@@ -0,0 +1,9 @@
+export function A() {
+ return (
+ <div>
+ <a href="#">foo</a>
+ <p>hello</p>
+ <img src="#" alt="" />
+ </div>
+ );
+}
diff --git a/tests/specs/run/lock_check_ok/003_relative_import.ts b/tests/specs/run/lock_check_ok/003_relative_import.ts
new file mode 100644
index 000000000..d392f4a5d
--- /dev/null
+++ b/tests/specs/run/lock_check_ok/003_relative_import.ts
@@ -0,0 +1,3 @@
+import { printHello } from "./print_hello.ts";
+
+printHello();
diff --git a/tests/specs/run/lock_check_ok/003_relative_import.ts.out b/tests/specs/run/lock_check_ok/003_relative_import.ts.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/tests/specs/run/lock_check_ok/003_relative_import.ts.out
@@ -0,0 +1 @@
+Hello
diff --git a/tests/specs/run/lock_check_ok/__test__.jsonc b/tests/specs/run/lock_check_ok/__test__.jsonc
new file mode 100644
index 000000000..e8ce4572e
--- /dev/null
+++ b/tests/specs/run/lock_check_ok/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-import --lock=lock_check_ok.json 003_relative_import.ts",
+ "output": "003_relative_import.ts.out"
+}
diff --git a/tests/specs/run/lock_check_ok/lock_check_ok.json b/tests/specs/run/lock_check_ok/lock_check_ok.json
new file mode 100644
index 000000000..20f7e2000
--- /dev/null
+++ b/tests/specs/run/lock_check_ok/lock_check_ok.json
@@ -0,0 +1,4 @@
+{
+ "http://127.0.0.1:4545/print_hello.ts": "fa6692c8f9ff3fb107e773c3ece5274e9d08be282867a1e3ded1d9c00fcaa63c",
+ "http://127.0.0.1:4545/003_relative_import.ts": "a1572e8fd2c2712b33f04aed2561505b5feb2c8696f1f2cded3de7127931b97e"
+}
diff --git a/tests/specs/run/lock_check_ok/print_hello.ts b/tests/specs/run/lock_check_ok/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/lock_check_ok/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/lock_check_ok2/019_media_types.ts b/tests/specs/run/lock_check_ok2/019_media_types.ts
new file mode 100644
index 000000000..d985bd249
--- /dev/null
+++ b/tests/specs/run/lock_check_ok2/019_media_types.ts
@@ -0,0 +1,24 @@
+// When run against the test HTTP server, it will serve different media types
+// based on the URL containing `.t#.` strings, which exercises the different
+// mapping of media types end to end.
+
+import { loaded as loadedTs1 } from "http://localhost:4545/subdir/mt_text_typescript.t1.ts";
+import { loaded as loadedTs2 } from "http://localhost:4545/subdir/mt_video_vdn.t2.ts";
+import { loaded as loadedTs3 } from "http://localhost:4545/subdir/mt_video_mp2t.t3.ts";
+import { loaded as loadedTs4 } from "http://localhost:4545/subdir/mt_application_x_typescript.t4.ts";
+import { loaded as loadedJs1 } from "http://localhost:4545/subdir/mt_text_javascript.j1.js";
+import { loaded as loadedJs2 } from "http://localhost:4545/subdir/mt_application_ecmascript.j2.js";
+import { loaded as loadedJs3 } from "http://localhost:4545/subdir/mt_text_ecmascript.j3.js";
+import { loaded as loadedJs4 } from "http://localhost:4545/subdir/mt_application_x_javascript.j4.js";
+
+console.log(
+ "success",
+ loadedTs1,
+ loadedTs2,
+ loadedTs3,
+ loadedTs4,
+ loadedJs1,
+ loadedJs2,
+ loadedJs3,
+ loadedJs4,
+);
diff --git a/tests/specs/run/lock_check_ok2/019_media_types.ts.out b/tests/specs/run/lock_check_ok2/019_media_types.ts.out
new file mode 100644
index 000000000..b3e94678c
--- /dev/null
+++ b/tests/specs/run/lock_check_ok2/019_media_types.ts.out
@@ -0,0 +1 @@
+[WILDCARD]success true true true true true true true true
diff --git a/tests/specs/run/lock_check_ok2/__test__.jsonc b/tests/specs/run/lock_check_ok2/__test__.jsonc
new file mode 100644
index 000000000..dc790528a
--- /dev/null
+++ b/tests/specs/run/lock_check_ok2/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --lock=lock_check_ok2.json 019_media_types.ts",
+ "output": "019_media_types.ts.out"
+}
diff --git a/tests/testdata/run/lock_check_ok2.json b/tests/specs/run/lock_check_ok2/lock_check_ok2.json
index 55a6f9892..55a6f9892 100644
--- a/tests/testdata/run/lock_check_ok2.json
+++ b/tests/specs/run/lock_check_ok2/lock_check_ok2.json
diff --git a/tests/specs/run/lock_v2_check_ok/003_relative_import.ts b/tests/specs/run/lock_v2_check_ok/003_relative_import.ts
new file mode 100644
index 000000000..d392f4a5d
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok/003_relative_import.ts
@@ -0,0 +1,3 @@
+import { printHello } from "./print_hello.ts";
+
+printHello();
diff --git a/tests/specs/run/lock_v2_check_ok/003_relative_import.ts.out b/tests/specs/run/lock_v2_check_ok/003_relative_import.ts.out
new file mode 100644
index 000000000..e965047ad
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok/003_relative_import.ts.out
@@ -0,0 +1 @@
+Hello
diff --git a/tests/specs/run/lock_v2_check_ok/__test__.jsonc b/tests/specs/run/lock_v2_check_ok/__test__.jsonc
new file mode 100644
index 000000000..d7b819d56
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --lock=lock_v2_check_ok.json 003_relative_import.ts",
+ "output": "003_relative_import.ts.out"
+}
diff --git a/tests/specs/run/lock_v2_check_ok/lock_v2_check_ok.json b/tests/specs/run/lock_v2_check_ok/lock_v2_check_ok.json
new file mode 100644
index 000000000..47a761fbd
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok/lock_v2_check_ok.json
@@ -0,0 +1,7 @@
+{
+ "version": "2",
+ "remote": {
+ "http://127.0.0.1:4545/print_hello.ts": "fa6692c8f9ff3fb107e773c3ece5274e9d08be282867a1e3ded1d9c00fcaa63c",
+ "http://127.0.0.1:4545/003_relative_import.ts": "a1572e8fd2c2712b33f04aed2561505b5feb2c8696f1f2cded3de7127931b97e"
+ }
+}
diff --git a/tests/specs/run/lock_v2_check_ok/print_hello.ts b/tests/specs/run/lock_v2_check_ok/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/lock_v2_check_ok2/019_media_types.ts b/tests/specs/run/lock_v2_check_ok2/019_media_types.ts
new file mode 100644
index 000000000..d985bd249
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok2/019_media_types.ts
@@ -0,0 +1,24 @@
+// When run against the test HTTP server, it will serve different media types
+// based on the URL containing `.t#.` strings, which exercises the different
+// mapping of media types end to end.
+
+import { loaded as loadedTs1 } from "http://localhost:4545/subdir/mt_text_typescript.t1.ts";
+import { loaded as loadedTs2 } from "http://localhost:4545/subdir/mt_video_vdn.t2.ts";
+import { loaded as loadedTs3 } from "http://localhost:4545/subdir/mt_video_mp2t.t3.ts";
+import { loaded as loadedTs4 } from "http://localhost:4545/subdir/mt_application_x_typescript.t4.ts";
+import { loaded as loadedJs1 } from "http://localhost:4545/subdir/mt_text_javascript.j1.js";
+import { loaded as loadedJs2 } from "http://localhost:4545/subdir/mt_application_ecmascript.j2.js";
+import { loaded as loadedJs3 } from "http://localhost:4545/subdir/mt_text_ecmascript.j3.js";
+import { loaded as loadedJs4 } from "http://localhost:4545/subdir/mt_application_x_javascript.j4.js";
+
+console.log(
+ "success",
+ loadedTs1,
+ loadedTs2,
+ loadedTs3,
+ loadedTs4,
+ loadedJs1,
+ loadedJs2,
+ loadedJs3,
+ loadedJs4,
+);
diff --git a/tests/specs/run/lock_v2_check_ok2/019_media_types.ts.out b/tests/specs/run/lock_v2_check_ok2/019_media_types.ts.out
new file mode 100644
index 000000000..b3e94678c
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok2/019_media_types.ts.out
@@ -0,0 +1 @@
+[WILDCARD]success true true true true true true true true
diff --git a/tests/specs/run/lock_v2_check_ok2/__test__.jsonc b/tests/specs/run/lock_v2_check_ok2/__test__.jsonc
new file mode 100644
index 000000000..a9430b4bc
--- /dev/null
+++ b/tests/specs/run/lock_v2_check_ok2/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --lock=lock_v2_check_ok2.json 019_media_types.ts",
+ "output": "019_media_types.ts.out"
+}
diff --git a/tests/testdata/run/lock_v2_check_ok2.json b/tests/specs/run/lock_v2_check_ok2/lock_v2_check_ok2.json
index 4356c9421..4356c9421 100644
--- a/tests/testdata/run/lock_v2_check_ok2.json
+++ b/tests/specs/run/lock_v2_check_ok2/lock_v2_check_ok2.json
diff --git a/tests/specs/run/long_data_url_formatting/__test__.jsonc b/tests/specs/run/long_data_url_formatting/__test__.jsonc
new file mode 100644
index 000000000..f7ae56c63
--- /dev/null
+++ b/tests/specs/run/long_data_url_formatting/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run long_data_url_formatting.ts",
+ "output": "long_data_url_formatting.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/long_data_url_formatting.ts b/tests/specs/run/long_data_url_formatting/long_data_url_formatting.ts
index 2ed2d5a03..2ed2d5a03 100644
--- a/tests/testdata/run/long_data_url_formatting.ts
+++ b/tests/specs/run/long_data_url_formatting/long_data_url_formatting.ts
diff --git a/tests/testdata/run/long_data_url_formatting.ts.out b/tests/specs/run/long_data_url_formatting/long_data_url_formatting.ts.out
index ea78c2591..ea78c2591 100644
--- a/tests/testdata/run/long_data_url_formatting.ts.out
+++ b/tests/specs/run/long_data_url_formatting/long_data_url_formatting.ts.out
diff --git a/tests/specs/run/main_module/__test__.jsonc b/tests/specs/run/main_module/__test__.jsonc
new file mode 100644
index 000000000..0d70eddbd
--- /dev/null
+++ b/tests/specs/run/main_module/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload main_module/main.ts",
+ "output": "main_module/main.out"
+}
diff --git a/tests/testdata/run/main_module/main.out b/tests/specs/run/main_module/main_module/main.out
index 29f592c2a..29f592c2a 100644
--- a/tests/testdata/run/main_module/main.out
+++ b/tests/specs/run/main_module/main_module/main.out
diff --git a/tests/testdata/run/main_module/main.ts b/tests/specs/run/main_module/main_module/main.ts
index d2f2c66ee..d2f2c66ee 100644
--- a/tests/testdata/run/main_module/main.ts
+++ b/tests/specs/run/main_module/main_module/main.ts
diff --git a/tests/testdata/run/main_module/other.ts b/tests/specs/run/main_module/main_module/other.ts
index b3e524b0a..b3e524b0a 100644
--- a/tests/testdata/run/main_module/other.ts
+++ b/tests/specs/run/main_module/main_module/other.ts
diff --git a/tests/specs/run/mts_dmts_mjs/__test__.jsonc b/tests/specs/run/mts_dmts_mjs/__test__.jsonc
new file mode 100644
index 000000000..b50bb4b19
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run import.mts",
+ "output": "mts_dmts_mjs.out"
+}
diff --git a/tests/specs/run/mts_dmts_mjs/import.mts b/tests/specs/run/mts_dmts_mjs/import.mts
new file mode 100644
index 000000000..eeb200f59
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs/import.mts
@@ -0,0 +1,4 @@
+import * as a from "./mod.mjs";
+import { type A } from "./types.d.mts";
+
+console.log(a.a as A);
diff --git a/tests/specs/run/mts_dmts_mjs/mod.mjs b/tests/specs/run/mts_dmts_mjs/mod.mjs
new file mode 100644
index 000000000..9233cce2f
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs/mod.mjs
@@ -0,0 +1 @@
+export const a = "a";
diff --git a/tests/testdata/run/mts_dmts_mjs.out b/tests/specs/run/mts_dmts_mjs/mts_dmts_mjs.out
index 789819226..789819226 100644
--- a/tests/testdata/run/mts_dmts_mjs.out
+++ b/tests/specs/run/mts_dmts_mjs/mts_dmts_mjs.out
diff --git a/tests/specs/run/mts_dmts_mjs/types.d.mts b/tests/specs/run/mts_dmts_mjs/types.d.mts
new file mode 100644
index 000000000..28c282146
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs/types.d.mts
@@ -0,0 +1 @@
+export type A = "a";
diff --git a/tests/specs/run/mts_dmts_mjs_no_check/__test__.jsonc b/tests/specs/run/mts_dmts_mjs_no_check/__test__.jsonc
new file mode 100644
index 000000000..0d36517bc
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --no-check import.mts",
+ "output": "mts_dmts_mjs.out"
+}
diff --git a/tests/specs/run/mts_dmts_mjs_no_check/import.mts b/tests/specs/run/mts_dmts_mjs_no_check/import.mts
new file mode 100644
index 000000000..eeb200f59
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs_no_check/import.mts
@@ -0,0 +1,4 @@
+import * as a from "./mod.mjs";
+import { type A } from "./types.d.mts";
+
+console.log(a.a as A);
diff --git a/tests/specs/run/mts_dmts_mjs_no_check/mod.mjs b/tests/specs/run/mts_dmts_mjs_no_check/mod.mjs
new file mode 100644
index 000000000..9233cce2f
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs_no_check/mod.mjs
@@ -0,0 +1 @@
+export const a = "a";
diff --git a/tests/specs/run/mts_dmts_mjs_no_check/mts_dmts_mjs.out b/tests/specs/run/mts_dmts_mjs_no_check/mts_dmts_mjs.out
new file mode 100644
index 000000000..789819226
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs_no_check/mts_dmts_mjs.out
@@ -0,0 +1 @@
+a
diff --git a/tests/specs/run/mts_dmts_mjs_no_check/types.d.mts b/tests/specs/run/mts_dmts_mjs_no_check/types.d.mts
new file mode 100644
index 000000000..28c282146
--- /dev/null
+++ b/tests/specs/run/mts_dmts_mjs_no_check/types.d.mts
@@ -0,0 +1 @@
+export type A = "a";
diff --git a/tests/specs/run/nested_error/__test__.jsonc b/tests/specs/run/nested_error/__test__.jsonc
new file mode 100644
index 000000000..d167832ba
--- /dev/null
+++ b/tests/specs/run/nested_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run nested_error/main.ts",
+ "output": "nested_error/main.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/nested_error/main.ts b/tests/specs/run/nested_error/nested_error/main.ts
index 69828e1ca..69828e1ca 100644
--- a/tests/testdata/run/nested_error/main.ts
+++ b/tests/specs/run/nested_error/nested_error/main.ts
diff --git a/tests/testdata/run/nested_error/main.ts.out b/tests/specs/run/nested_error/nested_error/main.ts.out
index 05780bc6a..05780bc6a 100644
--- a/tests/testdata/run/nested_error/main.ts.out
+++ b/tests/specs/run/nested_error/nested_error/main.ts.out
diff --git a/tests/specs/run/no_check/006_url_imports.ts b/tests/specs/run/no_check/006_url_imports.ts
new file mode 100644
index 000000000..ad2d25915
--- /dev/null
+++ b/tests/specs/run/no_check/006_url_imports.ts
@@ -0,0 +1,3 @@
+import { printHello } from "./mod2.ts";
+printHello();
+console.log("success");
diff --git a/tests/specs/run/no_check/006_url_imports.ts.out b/tests/specs/run/no_check/006_url_imports.ts.out
new file mode 100644
index 000000000..989ce33e9
--- /dev/null
+++ b/tests/specs/run/no_check/006_url_imports.ts.out
@@ -0,0 +1,2 @@
+Hello
+success
diff --git a/tests/specs/run/no_check/__test__.jsonc b/tests/specs/run/no_check/__test__.jsonc
new file mode 100644
index 000000000..696e08e2a
--- /dev/null
+++ b/tests/specs/run/no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload --no-check 006_url_imports.ts",
+ "output": "006_url_imports.ts.out"
+}
diff --git a/tests/specs/run/no_check/mod2.ts b/tests/specs/run/no_check/mod2.ts
new file mode 100644
index 000000000..ce1adc0e8
--- /dev/null
+++ b/tests/specs/run/no_check/mod2.ts
@@ -0,0 +1 @@
+export { printHello } from "./print_hello.ts";
diff --git a/tests/specs/run/no_check/print_hello.ts b/tests/specs/run/no_check/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/no_check/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/no_check_decorators/__test__.jsonc b/tests/specs/run/no_check_decorators/__test__.jsonc
new file mode 100644
index 000000000..da50d30a0
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --no-check decorators/experimental/no_check/main.ts",
+ "output": "decorators/experimental/no_check/main.out"
+}
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/deno.json b/tests/specs/run/no_check_decorators/decorators/experimental/deno.json
new file mode 100644
index 000000000..504cd646e
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/deno.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true
+ }
+}
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.out b/tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.out
new file mode 100644
index 000000000..015f7076e
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.out
@@ -0,0 +1,3 @@
+a(): evaluated
+a(): called
+method
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.ts b/tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.ts
new file mode 100644
index 000000000..9f7ec550d
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/no_check/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("a(): evaluated");
+ return (
+ _target: any,
+ _propertyKey: string,
+ _descriptor: PropertyDescriptor,
+ ) => {
+ console.log("a(): called");
+ };
+}
+
+class B {
+ @a()
+ method() {
+ console.log("method");
+ }
+}
+
+const b = new B();
+b.method();
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.out b/tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.out
new file mode 100644
index 000000000..0fc1d4590
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.out
@@ -0,0 +1,7 @@
+@A evaluated
+@B evaluated
+@B called
+@A called
+fn() called from @A
+fn() called from @B
+C.test() called
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.ts b/tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.ts
new file mode 100644
index 000000000..40a26bbd4
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/runtime/main.ts
@@ -0,0 +1,42 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("@A evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@A called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @A");
+ fn();
+ };
+ };
+}
+
+function b() {
+ console.log("@B evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@B called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @B");
+ fn();
+ };
+ };
+}
+
+class C {
+ @a()
+ @b()
+ static test() {
+ console.log("C.test() called");
+ }
+}
+
+C.test();
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/ts/main.out b/tests/specs/run/no_check_decorators/decorators/experimental/ts/main.out
new file mode 100644
index 000000000..ea64fbaa6
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/ts/main.out
@@ -0,0 +1,3 @@
+Warning experimentalDecorators compiler option is deprecated and may be removed at any time
+Check [WILDCARD]
+SomeClass { someField: "asdf" }
diff --git a/tests/specs/run/no_check_decorators/decorators/experimental/ts/main.ts b/tests/specs/run/no_check_decorators/decorators/experimental/ts/main.ts
new file mode 100644
index 000000000..95fba6cd4
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/experimental/ts/main.ts
@@ -0,0 +1,14 @@
+// deno-lint-ignore-file
+
+function Decorate() {
+ return function (constructor: any): any {
+ return class extends constructor {
+ protected someField: string = "asdf";
+ };
+ };
+}
+
+@Decorate()
+class SomeClass {}
+
+console.log(new SomeClass());
diff --git a/tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.out b/tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.out
new file mode 100644
index 000000000..39394952e
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.out
@@ -0,0 +1,3 @@
+starting m with arguments 1
+C.m 1
+ending m
diff --git a/tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.ts b/tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.ts
new file mode 100644
index 000000000..00c8a8502
--- /dev/null
+++ b/tests/specs/run/no_check_decorators/decorators/tc39_proposal/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore no-explicit-any
+function logged(value: any, { kind, name }: { kind: string; name: string }) {
+ if (kind === "method") {
+ return function (...args: unknown[]) {
+ console.log(`starting ${name} with arguments ${args.join(", ")}`);
+ // @ts-ignore this has implicit any type
+ const ret = value.call(this, ...args);
+ console.log(`ending ${name}`);
+ return ret;
+ };
+ }
+}
+
+class C {
+ @logged
+ m(arg: number) {
+ console.log("C.m", arg);
+ }
+}
+
+new C().m(1);
diff --git a/tests/specs/run/no_config_auto_discovery_for_local_script/__test__.jsonc b/tests/specs/run/no_config_auto_discovery_for_local_script/__test__.jsonc
new file mode 100644
index 000000000..0a03dbc22
--- /dev/null
+++ b/tests/specs/run/no_config_auto_discovery_for_local_script/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --no-config --check frontend_work.ts",
+ "output": "no_auto_discovery.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/no_config_auto_discovery_for_local_script/frontend_work.ts b/tests/specs/run/no_config_auto_discovery_for_local_script/frontend_work.ts
new file mode 100644
index 000000000..783af44e4
--- /dev/null
+++ b/tests/specs/run/no_config_auto_discovery_for_local_script/frontend_work.ts
@@ -0,0 +1,4 @@
+function _main() {
+ console.log(document);
+}
+console.log("ok");
diff --git a/tests/specs/run/no_config_auto_discovery_for_local_script/no_auto_discovery.out b/tests/specs/run/no_config_auto_discovery_for_local_script/no_auto_discovery.out
new file mode 100644
index 000000000..f45a1097c
--- /dev/null
+++ b/tests/specs/run/no_config_auto_discovery_for_local_script/no_auto_discovery.out
@@ -0,0 +1,4 @@
+error: TS2584 [ERROR]: Cannot find name 'document'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.
+ console.log(document);
+ ~~~~~~~~
+ at [WILDCARD]frontend_work.ts:2:15
diff --git a/tests/specs/run/no_lock_flag/__test__.jsonc b/tests/specs/run/no_lock_flag/__test__.jsonc
new file mode 100644
index 000000000..b8485c845
--- /dev/null
+++ b/tests/specs/run/no_lock_flag/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-import --no-lock no_lock_flag/main.ts",
+ "output": "no_lock_flag/main.out",
+ "exitCode": 0
+}
diff --git a/tests/testdata/run/no_lock_flag/deno.json b/tests/specs/run/no_lock_flag/no_lock_flag/deno.json
index 90faa728a..90faa728a 100644
--- a/tests/testdata/run/no_lock_flag/deno.json
+++ b/tests/specs/run/no_lock_flag/no_lock_flag/deno.json
diff --git a/tests/testdata/run/no_lock_flag/deno.lock b/tests/specs/run/no_lock_flag/no_lock_flag/deno.lock
index 059f66789..059f66789 100644
--- a/tests/testdata/run/no_lock_flag/deno.lock
+++ b/tests/specs/run/no_lock_flag/no_lock_flag/deno.lock
diff --git a/tests/testdata/run/no_lock_flag/main.out b/tests/specs/run/no_lock_flag/no_lock_flag/main.out
index 0d8f0a237..0d8f0a237 100644
--- a/tests/testdata/run/no_lock_flag/main.out
+++ b/tests/specs/run/no_lock_flag/no_lock_flag/main.out
diff --git a/tests/testdata/run/no_lock_flag/main.ts b/tests/specs/run/no_lock_flag/no_lock_flag/main.ts
index baa52775d..baa52775d 100644
--- a/tests/testdata/run/no_lock_flag/main.ts
+++ b/tests/specs/run/no_lock_flag/no_lock_flag/main.ts
diff --git a/tests/specs/run/no_prompt_flag/__test__.jsonc b/tests/specs/run/no_prompt_flag/__test__.jsonc
new file mode 100644
index 000000000..2342a63e8
--- /dev/null
+++ b/tests/specs/run/no_prompt_flag/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --no-prompt no_prompt.ts",
+ "output": ""
+}
diff --git a/tests/specs/run/no_prompt_flag/no_prompt.ts b/tests/specs/run/no_prompt_flag/no_prompt.ts
new file mode 100644
index 000000000..17d54b92c
--- /dev/null
+++ b/tests/specs/run/no_prompt_flag/no_prompt.ts
@@ -0,0 +1,10 @@
+new Worker("data:,setTimeout(() => Deno.exit(2), 200)", { type: "module" });
+
+try {
+ await new Deno.Command("ps", {
+ stdout: "inherit",
+ stderr: "inherit",
+ }).output();
+} catch {
+ Deno.exit(0);
+}
diff --git a/tests/specs/run/node_env_var_allowlist/__test__.jsonc b/tests/specs/run/node_env_var_allowlist/__test__.jsonc
new file mode 100644
index 000000000..055ac62e8
--- /dev/null
+++ b/tests/specs/run/node_env_var_allowlist/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --no-prompt node_env_var_allowlist.ts",
+ "output": "node_env_var_allowlist.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/node_env_var_allowlist.ts b/tests/specs/run/node_env_var_allowlist/node_env_var_allowlist.ts
index 95da38c24..95da38c24 100644
--- a/tests/testdata/run/node_env_var_allowlist.ts
+++ b/tests/specs/run/node_env_var_allowlist/node_env_var_allowlist.ts
diff --git a/tests/testdata/run/node_env_var_allowlist.ts.out b/tests/specs/run/node_env_var_allowlist/node_env_var_allowlist.ts.out
index 2dcffd67b..2dcffd67b 100644
--- a/tests/testdata/run/node_env_var_allowlist.ts.out
+++ b/tests/specs/run/node_env_var_allowlist/node_env_var_allowlist.ts.out
diff --git a/tests/specs/run/onload/__test__.jsonc b/tests/specs/run/onload/__test__.jsonc
new file mode 100644
index 000000000..b17dc665d
--- /dev/null
+++ b/tests/specs/run/onload/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --config deno.json onload/main.ts",
+ "output": "onload/main.out"
+}
diff --git a/tests/specs/run/onload/deno.json b/tests/specs/run/onload/deno.json
new file mode 100644
index 000000000..105514e13
--- /dev/null
+++ b/tests/specs/run/onload/deno.json
@@ -0,0 +1,4 @@
+{
+ "lock": false,
+ "importMap": "../../../../import_map.json"
+}
diff --git a/tests/testdata/run/onload/imported.ts b/tests/specs/run/onload/onload/imported.ts
index 643e2fc78..643e2fc78 100644
--- a/tests/testdata/run/onload/imported.ts
+++ b/tests/specs/run/onload/onload/imported.ts
diff --git a/tests/testdata/run/onload/main.out b/tests/specs/run/onload/onload/main.out
index b25d33fa8..b25d33fa8 100644
--- a/tests/testdata/run/onload/main.out
+++ b/tests/specs/run/onload/onload/main.out
diff --git a/tests/testdata/run/onload/main.ts b/tests/specs/run/onload/onload/main.ts
index c4b8424fb..c4b8424fb 100644
--- a/tests/testdata/run/onload/main.ts
+++ b/tests/specs/run/onload/onload/main.ts
diff --git a/tests/testdata/run/onload/nest_imported.ts b/tests/specs/run/onload/onload/nest_imported.ts
index f1d28e8dc..f1d28e8dc 100644
--- a/tests/testdata/run/onload/nest_imported.ts
+++ b/tests/specs/run/onload/onload/nest_imported.ts
diff --git a/tests/specs/run/op_exit_op_set_exit_code_in_worker/__test__.jsonc b/tests/specs/run/op_exit_op_set_exit_code_in_worker/__test__.jsonc
new file mode 100644
index 000000000..664fcb5c1
--- /dev/null
+++ b/tests/specs/run/op_exit_op_set_exit_code_in_worker/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --no-check --allow-read op_exit_op_set_exit_code_in_worker.ts",
+ "output": "",
+ "exitCode": 21
+}
diff --git a/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts b/tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_in_worker.ts
index b6a776439..b6a776439 100644
--- a/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts
+++ b/tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_in_worker.ts
diff --git a/tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_worker.js b/tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_worker.js
new file mode 100644
index 000000000..9b284c37d
--- /dev/null
+++ b/tests/specs/run/op_exit_op_set_exit_code_in_worker/op_exit_op_set_exit_code_worker.js
@@ -0,0 +1,4 @@
+self.onmessage = () => {
+ Deno[Deno.internal].core.ops.op_set_exit_code(42);
+ Deno.exit();
+};
diff --git a/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/__test__.jsonc b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/__test__.jsonc
new file mode 100644
index 000000000..ac66ccdf1
--- /dev/null
+++ b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run -L debug main.ts",
+ "output": "main.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/deno.json b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/deno.json
new file mode 100644
index 000000000..36e1765d1
--- /dev/null
+++ b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/deno.json
@@ -0,0 +1,5 @@
+{
+ "tasks": {
+ "dev": "deno run main.ts"
+ }
+}
diff --git a/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.out b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.out
new file mode 100644
index 000000000..5ab43ac47
--- /dev/null
+++ b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.out
@@ -0,0 +1,5 @@
+[WILDCARD]Config file found at '[WILDCARD]deno.json'
+[WILDCARD]
+error: Relative import path "chalk" not prefixed with / or ./ or ../
+ hint: If you want to use a JSR or npm package, try running `deno add jsr:chalk` or `deno add npm:chalk`
+ at file:///[WILDCARD]/main.ts:3:19
diff --git a/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.ts b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.ts
new file mode 100644
index 000000000..6016470a1
--- /dev/null
+++ b/tests/specs/run/package_json_auto_discovered_for_local_script_arg_with_stop/main.ts
@@ -0,0 +1,6 @@
+// This import should fail, because `package.json` is not discovered, as we're
+// stopping the discovery when encountering `deno.json`.
+import chalk from "chalk";
+
+console.log("ok");
+console.log(chalk);
diff --git a/tests/specs/run/permission_args/001_hello.js b/tests/specs/run/permission_args/001_hello.js
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/permission_args/001_hello.js
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/specs/run/permission_args/__test__.jsonc b/tests/specs/run/permission_args/__test__.jsonc
new file mode 100644
index 000000000..2843ee395
--- /dev/null
+++ b/tests/specs/run/permission_args/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run 001_hello.js --allow-net",
+ "output": "permission_args.out"
+}
diff --git a/tests/testdata/run/permission_args.out b/tests/specs/run/permission_args/permission_args.out
index 6a1e1787c..6a1e1787c 100644
--- a/tests/testdata/run/permission_args.out
+++ b/tests/specs/run/permission_args/permission_args.out
diff --git a/tests/specs/run/permission_args_quiet/001_hello.js b/tests/specs/run/permission_args_quiet/001_hello.js
new file mode 100644
index 000000000..accefceba
--- /dev/null
+++ b/tests/specs/run/permission_args_quiet/001_hello.js
@@ -0,0 +1 @@
+console.log("Hello World");
diff --git a/tests/specs/run/permission_args_quiet/001_hello.js.out b/tests/specs/run/permission_args_quiet/001_hello.js.out
new file mode 100644
index 000000000..557db03de
--- /dev/null
+++ b/tests/specs/run/permission_args_quiet/001_hello.js.out
@@ -0,0 +1 @@
+Hello World
diff --git a/tests/specs/run/permission_args_quiet/__test__.jsonc b/tests/specs/run/permission_args_quiet/__test__.jsonc
new file mode 100644
index 000000000..2b98b963e
--- /dev/null
+++ b/tests/specs/run/permission_args_quiet/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet 001_hello.js --allow-net",
+ "output": "001_hello.js.out"
+}
diff --git a/tests/specs/run/private_field_presence/__test__.jsonc b/tests/specs/run/private_field_presence/__test__.jsonc
new file mode 100644
index 000000000..982b88289
--- /dev/null
+++ b/tests/specs/run/private_field_presence/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload private_field_presence.ts",
+ "output": "private_field_presence.ts.out"
+}
diff --git a/tests/testdata/run/private_field_presence.ts b/tests/specs/run/private_field_presence/private_field_presence.ts
index 7ce2840d8..7ce2840d8 100644
--- a/tests/testdata/run/private_field_presence.ts
+++ b/tests/specs/run/private_field_presence/private_field_presence.ts
diff --git a/tests/testdata/run/private_field_presence.ts.out b/tests/specs/run/private_field_presence/private_field_presence.ts.out
index 1d474d525..1d474d525 100644
--- a/tests/testdata/run/private_field_presence.ts.out
+++ b/tests/specs/run/private_field_presence/private_field_presence.ts.out
diff --git a/tests/specs/run/private_field_presence_no_check/__test__.jsonc b/tests/specs/run/private_field_presence_no_check/__test__.jsonc
new file mode 100644
index 000000000..b7a26db25
--- /dev/null
+++ b/tests/specs/run/private_field_presence_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --no-check private_field_presence.ts",
+ "output": "private_field_presence.ts.out"
+}
diff --git a/tests/specs/run/private_field_presence_no_check/private_field_presence.ts b/tests/specs/run/private_field_presence_no_check/private_field_presence.ts
new file mode 100644
index 000000000..7ce2840d8
--- /dev/null
+++ b/tests/specs/run/private_field_presence_no_check/private_field_presence.ts
@@ -0,0 +1,20 @@
+export class Person {
+ #name: string;
+ constructor(name: string) {
+ this.#name = name;
+ }
+
+ equals(other: unknown) {
+ return other &&
+ typeof other === "object" &&
+ #name in other &&
+ this.#name === other.#name;
+ }
+}
+
+const a = new Person("alice");
+const b = new Person("bob");
+const c = new Person("alice");
+
+console.log(a.equals(b));
+console.log(a.equals(c));
diff --git a/tests/specs/run/private_field_presence_no_check/private_field_presence.ts.out b/tests/specs/run/private_field_presence_no_check/private_field_presence.ts.out
new file mode 100644
index 000000000..1d474d525
--- /dev/null
+++ b/tests/specs/run/private_field_presence_no_check/private_field_presence.ts.out
@@ -0,0 +1,2 @@
+false
+true
diff --git a/tests/specs/run/proto_exploit/__test__.jsonc b/tests/specs/run/proto_exploit/__test__.jsonc
new file mode 100644
index 000000000..218f38654
--- /dev/null
+++ b/tests/specs/run/proto_exploit/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run proto_exploit.js",
+ "output": "proto_exploit.js.out"
+}
diff --git a/tests/testdata/run/proto_exploit.js b/tests/specs/run/proto_exploit/proto_exploit.js
index 8bd22cfe5..8bd22cfe5 100644
--- a/tests/testdata/run/proto_exploit.js
+++ b/tests/specs/run/proto_exploit/proto_exploit.js
diff --git a/tests/testdata/run/proto_exploit.js.out b/tests/specs/run/proto_exploit/proto_exploit.js.out
index fde881dc5..fde881dc5 100644
--- a/tests/testdata/run/proto_exploit.js.out
+++ b/tests/specs/run/proto_exploit/proto_exploit.js.out
diff --git a/tests/specs/run/queue_microtask_error/__test__.jsonc b/tests/specs/run/queue_microtask_error/__test__.jsonc
new file mode 100644
index 000000000..30821d67f
--- /dev/null
+++ b/tests/specs/run/queue_microtask_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet queue_microtask_error.ts",
+ "output": "queue_microtask_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/queue_microtask_error.ts b/tests/specs/run/queue_microtask_error/queue_microtask_error.ts
index b2e9642c5..b2e9642c5 100644
--- a/tests/testdata/run/queue_microtask_error.ts
+++ b/tests/specs/run/queue_microtask_error/queue_microtask_error.ts
diff --git a/tests/testdata/run/queue_microtask_error.ts.out b/tests/specs/run/queue_microtask_error/queue_microtask_error.ts.out
index a8ce13170..a8ce13170 100644
--- a/tests/testdata/run/queue_microtask_error.ts.out
+++ b/tests/specs/run/queue_microtask_error/queue_microtask_error.ts.out
diff --git a/tests/specs/run/queue_microtask_error_handled/__test__.jsonc b/tests/specs/run/queue_microtask_error_handled/__test__.jsonc
new file mode 100644
index 000000000..c343acfb4
--- /dev/null
+++ b/tests/specs/run/queue_microtask_error_handled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet queue_microtask_error_handled.ts",
+ "output": "queue_microtask_error_handled.ts.out"
+}
diff --git a/tests/testdata/run/queue_microtask_error_handled.ts b/tests/specs/run/queue_microtask_error_handled/queue_microtask_error_handled.ts
index 47ea2d32e..47ea2d32e 100644
--- a/tests/testdata/run/queue_microtask_error_handled.ts
+++ b/tests/specs/run/queue_microtask_error_handled/queue_microtask_error_handled.ts
diff --git a/tests/testdata/run/queue_microtask_error_handled.ts.out b/tests/specs/run/queue_microtask_error_handled/queue_microtask_error_handled.ts.out
index bdc8eafa1..bdc8eafa1 100644
--- a/tests/testdata/run/queue_microtask_error_handled.ts.out
+++ b/tests/specs/run/queue_microtask_error_handled/queue_microtask_error_handled.ts.out
diff --git a/tests/specs/run/reference_types/__test__.jsonc b/tests/specs/run/reference_types/__test__.jsonc
new file mode 100644
index 000000000..4e4bd08b8
--- /dev/null
+++ b/tests/specs/run/reference_types/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --quiet reference_types.ts",
+ "output": "reference_types.ts.out"
+}
diff --git a/tests/testdata/run/reference_types.ts b/tests/specs/run/reference_types/reference_types.ts
index 105e23b37..105e23b37 100644
--- a/tests/testdata/run/reference_types.ts
+++ b/tests/specs/run/reference_types/reference_types.ts
diff --git a/tests/testdata/run/reference_types_remote.ts.out b/tests/specs/run/reference_types/reference_types.ts.out
index 417b7b537..417b7b537 100644
--- a/tests/testdata/run/reference_types_remote.ts.out
+++ b/tests/specs/run/reference_types/reference_types.ts.out
diff --git a/tests/specs/run/reference_types_error/__test__.jsonc b/tests/specs/run/reference_types_error/__test__.jsonc
new file mode 100644
index 000000000..08450acc1
--- /dev/null
+++ b/tests/specs/run/reference_types_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --config checkjs.tsconfig.json --check reference_types_error.js",
+ "output": "reference_types_error.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/reference_types_error/checkjs.tsconfig.json b/tests/specs/run/reference_types_error/checkjs.tsconfig.json
new file mode 100644
index 000000000..08ac60b6c
--- /dev/null
+++ b/tests/specs/run/reference_types_error/checkjs.tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "checkJs": true
+ }
+}
diff --git a/tests/testdata/run/reference_types_error.js b/tests/specs/run/reference_types_error/reference_types_error.js
index 68b6c2136..68b6c2136 100644
--- a/tests/testdata/run/reference_types_error.js
+++ b/tests/specs/run/reference_types_error/reference_types_error.js
diff --git a/tests/testdata/run/reference_types_error.js.out b/tests/specs/run/reference_types_error/reference_types_error.js.out
index 86055f3ac..86055f3ac 100644
--- a/tests/testdata/run/reference_types_error.js.out
+++ b/tests/specs/run/reference_types_error/reference_types_error.js.out
diff --git a/tests/specs/run/reference_types_error_no_check/__test__.jsonc b/tests/specs/run/reference_types_error_no_check/__test__.jsonc
new file mode 100644
index 000000000..78744759d
--- /dev/null
+++ b/tests/specs/run/reference_types_error_no_check/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --no-check reference_types_error.js",
+ "output": ""
+}
diff --git a/tests/specs/run/reference_types_error_no_check/reference_types_error.js b/tests/specs/run/reference_types_error_no_check/reference_types_error.js
new file mode 100644
index 000000000..68b6c2136
--- /dev/null
+++ b/tests/specs/run/reference_types_error_no_check/reference_types_error.js
@@ -0,0 +1,2 @@
+/// <reference types="./nonexistent.d.ts" />
+export const a = 1;
diff --git a/tests/specs/run/reference_types_error_vendor_dir/__test__.jsonc b/tests/specs/run/reference_types_error_vendor_dir/__test__.jsonc
new file mode 100644
index 000000000..c48dd1d5e
--- /dev/null
+++ b/tests/specs/run/reference_types_error_vendor_dir/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --config checkjs.tsconfig.json --check --vendor reference_types_error.js",
+ "output": "reference_types_error.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/reference_types_error_vendor_dir/checkjs.tsconfig.json b/tests/specs/run/reference_types_error_vendor_dir/checkjs.tsconfig.json
new file mode 100644
index 000000000..08ac60b6c
--- /dev/null
+++ b/tests/specs/run/reference_types_error_vendor_dir/checkjs.tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "checkJs": true
+ }
+}
diff --git a/tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js b/tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js
new file mode 100644
index 000000000..68b6c2136
--- /dev/null
+++ b/tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js
@@ -0,0 +1,2 @@
+/// <reference types="./nonexistent.d.ts" />
+export const a = 1;
diff --git a/tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js.out b/tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js.out
new file mode 100644
index 000000000..86055f3ac
--- /dev/null
+++ b/tests/specs/run/reference_types_error_vendor_dir/reference_types_error.js.out
@@ -0,0 +1,2 @@
+error: Module not found "file:///[WILDCARD]/nonexistent.d.ts".
+ at file:///[WILDCARD]/reference_types_error.js:1:22
diff --git a/tests/specs/run/references_types_remote/__test__.jsonc b/tests/specs/run/references_types_remote/__test__.jsonc
new file mode 100644
index 000000000..3f7f27c26
--- /dev/null
+++ b/tests/specs/run/references_types_remote/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --quiet reference_types_remote.ts",
+ "output": "reference_types_remote.ts.out"
+}
diff --git a/tests/testdata/run/reference_types_remote.ts b/tests/specs/run/references_types_remote/reference_types_remote.ts
index e7fa81b2c..e7fa81b2c 100644
--- a/tests/testdata/run/reference_types_remote.ts
+++ b/tests/specs/run/references_types_remote/reference_types_remote.ts
diff --git a/tests/specs/run/references_types_remote/reference_types_remote.ts.out b/tests/specs/run/references_types_remote/reference_types_remote.ts.out
new file mode 100644
index 000000000..417b7b537
--- /dev/null
+++ b/tests/specs/run/references_types_remote/reference_types_remote.ts.out
@@ -0,0 +1 @@
+undefined
diff --git a/tests/specs/run/rejection_handled/__test__.jsonc b/tests/specs/run/rejection_handled/__test__.jsonc
new file mode 100644
index 000000000..7565a7dd1
--- /dev/null
+++ b/tests/specs/run/rejection_handled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --check rejection_handled.ts",
+ "output": "rejection_handled.out"
+}
diff --git a/tests/testdata/run/rejection_handled.out b/tests/specs/run/rejection_handled/rejection_handled.out
index 5c06fcd2b..5c06fcd2b 100644
--- a/tests/testdata/run/rejection_handled.out
+++ b/tests/specs/run/rejection_handled/rejection_handled.out
diff --git a/tests/testdata/run/rejection_handled.ts b/tests/specs/run/rejection_handled/rejection_handled.ts
index 8822203f1..8822203f1 100644
--- a/tests/testdata/run/rejection_handled.ts
+++ b/tests/specs/run/rejection_handled/rejection_handled.ts
diff --git a/tests/specs/run/replace_self/__test__.jsonc b/tests/specs/run/replace_self/__test__.jsonc
new file mode 100644
index 000000000..cfadbf791
--- /dev/null
+++ b/tests/specs/run/replace_self/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run replace_self.js",
+ "output": "replace_self.js.out"
+}
diff --git a/tests/testdata/run/replace_self.js b/tests/specs/run/replace_self/replace_self.js
index cfd473cd3..cfd473cd3 100644
--- a/tests/testdata/run/replace_self.js
+++ b/tests/specs/run/replace_self/replace_self.js
diff --git a/tests/testdata/run/replace_self.js.out b/tests/specs/run/replace_self/replace_self.js.out
index aaffb5a62..aaffb5a62 100644
--- a/tests/testdata/run/replace_self.js.out
+++ b/tests/specs/run/replace_self/replace_self.js.out
diff --git a/tests/specs/run/report_error/__test__.jsonc b/tests/specs/run/report_error/__test__.jsonc
new file mode 100644
index 000000000..0577ad245
--- /dev/null
+++ b/tests/specs/run/report_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet report_error.ts",
+ "output": "report_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/report_error.ts b/tests/specs/run/report_error/report_error.ts
index a6d4af1fd..a6d4af1fd 100644
--- a/tests/testdata/run/report_error.ts
+++ b/tests/specs/run/report_error/report_error.ts
diff --git a/tests/testdata/run/report_error.ts.out b/tests/specs/run/report_error/report_error.ts.out
index 185db62a5..185db62a5 100644
--- a/tests/testdata/run/report_error.ts.out
+++ b/tests/specs/run/report_error/report_error.ts.out
diff --git a/tests/specs/run/report_error_end_of_program/__test__.jsonc b/tests/specs/run/report_error_end_of_program/__test__.jsonc
new file mode 100644
index 000000000..c34956b74
--- /dev/null
+++ b/tests/specs/run/report_error_end_of_program/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet report_error_end_of_program.ts",
+ "output": "report_error_end_of_program.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/report_error_end_of_program.ts b/tests/specs/run/report_error_end_of_program/report_error_end_of_program.ts
index cd7ce7f9c..cd7ce7f9c 100644
--- a/tests/testdata/run/report_error_end_of_program.ts
+++ b/tests/specs/run/report_error_end_of_program/report_error_end_of_program.ts
diff --git a/tests/testdata/run/report_error_end_of_program.ts.out b/tests/specs/run/report_error_end_of_program/report_error_end_of_program.ts.out
index ecca63389..ecca63389 100644
--- a/tests/testdata/run/report_error_end_of_program.ts.out
+++ b/tests/specs/run/report_error_end_of_program/report_error_end_of_program.ts.out
diff --git a/tests/specs/run/report_error_handled/__test__.jsonc b/tests/specs/run/report_error_handled/__test__.jsonc
new file mode 100644
index 000000000..126687b95
--- /dev/null
+++ b/tests/specs/run/report_error_handled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet report_error_handled.ts",
+ "output": "report_error_handled.ts.out"
+}
diff --git a/tests/testdata/run/report_error_handled.ts b/tests/specs/run/report_error_handled/report_error_handled.ts
index d18996c13..d18996c13 100644
--- a/tests/testdata/run/report_error_handled.ts
+++ b/tests/specs/run/report_error_handled/report_error_handled.ts
diff --git a/tests/testdata/run/report_error_handled.ts.out b/tests/specs/run/report_error_handled/report_error_handled.ts.out
index 89fa30314..89fa30314 100644
--- a/tests/testdata/run/report_error_handled.ts.out
+++ b/tests/specs/run/report_error_handled/report_error_handled.ts.out
diff --git a/tests/specs/run/runtime_decorators/__test__.jsonc b/tests/specs/run/runtime_decorators/__test__.jsonc
new file mode 100644
index 000000000..286fd377d
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --no-check decorators/experimental/runtime/main.ts",
+ "output": "decorators/experimental/runtime/main.out"
+}
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/deno.json b/tests/specs/run/runtime_decorators/decorators/experimental/deno.json
new file mode 100644
index 000000000..504cd646e
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/deno.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true
+ }
+}
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.out b/tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.out
new file mode 100644
index 000000000..015f7076e
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.out
@@ -0,0 +1,3 @@
+a(): evaluated
+a(): called
+method
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.ts b/tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.ts
new file mode 100644
index 000000000..9f7ec550d
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/no_check/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("a(): evaluated");
+ return (
+ _target: any,
+ _propertyKey: string,
+ _descriptor: PropertyDescriptor,
+ ) => {
+ console.log("a(): called");
+ };
+}
+
+class B {
+ @a()
+ method() {
+ console.log("method");
+ }
+}
+
+const b = new B();
+b.method();
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.out b/tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.out
new file mode 100644
index 000000000..0fc1d4590
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.out
@@ -0,0 +1,7 @@
+@A evaluated
+@B evaluated
+@B called
+@A called
+fn() called from @A
+fn() called from @B
+C.test() called
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.ts b/tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.ts
new file mode 100644
index 000000000..40a26bbd4
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/runtime/main.ts
@@ -0,0 +1,42 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("@A evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@A called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @A");
+ fn();
+ };
+ };
+}
+
+function b() {
+ console.log("@B evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@B called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @B");
+ fn();
+ };
+ };
+}
+
+class C {
+ @a()
+ @b()
+ static test() {
+ console.log("C.test() called");
+ }
+}
+
+C.test();
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/ts/main.out b/tests/specs/run/runtime_decorators/decorators/experimental/ts/main.out
new file mode 100644
index 000000000..ea64fbaa6
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/ts/main.out
@@ -0,0 +1,3 @@
+Warning experimentalDecorators compiler option is deprecated and may be removed at any time
+Check [WILDCARD]
+SomeClass { someField: "asdf" }
diff --git a/tests/specs/run/runtime_decorators/decorators/experimental/ts/main.ts b/tests/specs/run/runtime_decorators/decorators/experimental/ts/main.ts
new file mode 100644
index 000000000..95fba6cd4
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/experimental/ts/main.ts
@@ -0,0 +1,14 @@
+// deno-lint-ignore-file
+
+function Decorate() {
+ return function (constructor: any): any {
+ return class extends constructor {
+ protected someField: string = "asdf";
+ };
+ };
+}
+
+@Decorate()
+class SomeClass {}
+
+console.log(new SomeClass());
diff --git a/tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.out b/tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.out
new file mode 100644
index 000000000..39394952e
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.out
@@ -0,0 +1,3 @@
+starting m with arguments 1
+C.m 1
+ending m
diff --git a/tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.ts b/tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.ts
new file mode 100644
index 000000000..00c8a8502
--- /dev/null
+++ b/tests/specs/run/runtime_decorators/decorators/tc39_proposal/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore no-explicit-any
+function logged(value: any, { kind, name }: { kind: string; name: string }) {
+ if (kind === "method") {
+ return function (...args: unknown[]) {
+ console.log(`starting ${name} with arguments ${args.join(", ")}`);
+ // @ts-ignore this has implicit any type
+ const ret = value.call(this, ...args);
+ console.log(`ending ${name}`);
+ return ret;
+ };
+ }
+}
+
+class C {
+ @logged
+ m(arg: number) {
+ console.log("C.m", arg);
+ }
+}
+
+new C().m(1);
diff --git a/tests/specs/run/seed_random/__test__.jsonc b/tests/specs/run/seed_random/__test__.jsonc
new file mode 100644
index 000000000..5a1876d6c
--- /dev/null
+++ b/tests/specs/run/seed_random/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --seed=100 seed_random.js",
+ "output": "seed_random.js.out"
+}
diff --git a/tests/testdata/run/seed_random.js b/tests/specs/run/seed_random/seed_random.js
index 7f6e336df..7f6e336df 100644
--- a/tests/testdata/run/seed_random.js
+++ b/tests/specs/run/seed_random/seed_random.js
diff --git a/tests/testdata/run/seed_random.js.out b/tests/specs/run/seed_random/seed_random.js.out
index 4d1ebd081..4d1ebd081 100644
--- a/tests/testdata/run/seed_random.js.out
+++ b/tests/specs/run/seed_random/seed_random.js.out
diff --git a/tests/specs/run/set_exit_code_0/__test__.jsonc b/tests/specs/run/set_exit_code_0/__test__.jsonc
new file mode 100644
index 000000000..a5866e8c6
--- /dev/null
+++ b/tests/specs/run/set_exit_code_0/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --no-check set_exit_code_0.ts",
+ "output": "",
+ "exitCode": 0
+}
diff --git a/tests/testdata/run/set_exit_code_0.ts b/tests/specs/run/set_exit_code_0/set_exit_code_0.ts
index 8a0103c8f..8a0103c8f 100644
--- a/tests/testdata/run/set_exit_code_0.ts
+++ b/tests/specs/run/set_exit_code_0/set_exit_code_0.ts
diff --git a/tests/specs/run/set_exit_code_1/__test__.jsonc b/tests/specs/run/set_exit_code_1/__test__.jsonc
new file mode 100644
index 000000000..1ca50c982
--- /dev/null
+++ b/tests/specs/run/set_exit_code_1/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --no-check set_exit_code_1.ts",
+ "output": "",
+ "exitCode": 42
+}
diff --git a/tests/testdata/run/set_exit_code_1.ts b/tests/specs/run/set_exit_code_1/set_exit_code_1.ts
index 45027ccf7..45027ccf7 100644
--- a/tests/testdata/run/set_exit_code_1.ts
+++ b/tests/specs/run/set_exit_code_1/set_exit_code_1.ts
diff --git a/tests/specs/run/set_exit_code_2/__test__.jsonc b/tests/specs/run/set_exit_code_2/__test__.jsonc
new file mode 100644
index 000000000..af7411f7c
--- /dev/null
+++ b/tests/specs/run/set_exit_code_2/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --no-check set_exit_code_2.ts",
+ "output": "",
+ "exitCode": 42
+}
diff --git a/tests/testdata/run/set_exit_code_2.ts b/tests/specs/run/set_exit_code_2/set_exit_code_2.ts
index 48469c17d..48469c17d 100644
--- a/tests/testdata/run/set_exit_code_2.ts
+++ b/tests/specs/run/set_exit_code_2/set_exit_code_2.ts
diff --git a/tests/specs/run/set_timeout_error/__test__.jsonc b/tests/specs/run/set_timeout_error/__test__.jsonc
new file mode 100644
index 000000000..eea730fd8
--- /dev/null
+++ b/tests/specs/run/set_timeout_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet set_timeout_error.ts",
+ "output": "set_timeout_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/set_timeout_error.ts b/tests/specs/run/set_timeout_error/set_timeout_error.ts
index 2864574e7..2864574e7 100644
--- a/tests/testdata/run/set_timeout_error.ts
+++ b/tests/specs/run/set_timeout_error/set_timeout_error.ts
diff --git a/tests/testdata/run/set_timeout_error.ts.out b/tests/specs/run/set_timeout_error/set_timeout_error.ts.out
index 9db053f6c..9db053f6c 100644
--- a/tests/testdata/run/set_timeout_error.ts.out
+++ b/tests/specs/run/set_timeout_error/set_timeout_error.ts.out
diff --git a/tests/specs/run/set_timeout_error_handled/__test__.jsonc b/tests/specs/run/set_timeout_error_handled/__test__.jsonc
new file mode 100644
index 000000000..39a9424bb
--- /dev/null
+++ b/tests/specs/run/set_timeout_error_handled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet set_timeout_error_handled.ts",
+ "output": "set_timeout_error_handled.ts.out"
+}
diff --git a/tests/testdata/run/set_timeout_error_handled.ts b/tests/specs/run/set_timeout_error_handled/set_timeout_error_handled.ts
index aee2d97d2..aee2d97d2 100644
--- a/tests/testdata/run/set_timeout_error_handled.ts
+++ b/tests/specs/run/set_timeout_error_handled/set_timeout_error_handled.ts
diff --git a/tests/testdata/run/set_timeout_error_handled.ts.out b/tests/specs/run/set_timeout_error_handled/set_timeout_error_handled.ts.out
index 054dd9b6b..054dd9b6b 100644
--- a/tests/testdata/run/set_timeout_error_handled.ts.out
+++ b/tests/specs/run/set_timeout_error_handled/set_timeout_error_handled.ts.out
diff --git a/tests/specs/run/shebang_swc/__test__.jsonc b/tests/specs/run/shebang_swc/__test__.jsonc
new file mode 100644
index 000000000..65e0b5c9b
--- /dev/null
+++ b/tests/specs/run/shebang_swc/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet shebang.ts",
+ "output": "shebang.ts.out"
+}
diff --git a/tests/testdata/run/shebang.ts b/tests/specs/run/shebang_swc/shebang.ts
index 00feb2da0..00feb2da0 100644
--- a/tests/testdata/run/shebang.ts
+++ b/tests/specs/run/shebang_swc/shebang.ts
diff --git a/tests/testdata/run/shebang.ts.out b/tests/specs/run/shebang_swc/shebang.ts.out
index d81cc0710..d81cc0710 100644
--- a/tests/testdata/run/shebang.ts.out
+++ b/tests/specs/run/shebang_swc/shebang.ts.out
diff --git a/tests/specs/run/shebang_swc/shebang2.ts b/tests/specs/run/shebang_swc/shebang2.ts
new file mode 100644
index 000000000..da0d7bf0c
--- /dev/null
+++ b/tests/specs/run/shebang_swc/shebang2.ts
@@ -0,0 +1,3 @@
+#!/usr/bin/env -S deno run
+
+export default 42;
diff --git a/tests/specs/run/shebang_tsc/__test__.jsonc b/tests/specs/run/shebang_tsc/__test__.jsonc
new file mode 100644
index 000000000..f78971d57
--- /dev/null
+++ b/tests/specs/run/shebang_tsc/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --check shebang.ts",
+ "output": "shebang.ts.out"
+}
diff --git a/tests/specs/run/shebang_tsc/shebang.ts b/tests/specs/run/shebang_tsc/shebang.ts
new file mode 100644
index 000000000..00feb2da0
--- /dev/null
+++ b/tests/specs/run/shebang_tsc/shebang.ts
@@ -0,0 +1,5 @@
+#!/usr/bin/env -S deno run
+
+import test from "./shebang2.ts";
+
+console.log(test as number);
diff --git a/tests/testdata/run/wasm.ts.out b/tests/specs/run/shebang_tsc/shebang.ts.out
index d81cc0710..d81cc0710 100644
--- a/tests/testdata/run/wasm.ts.out
+++ b/tests/specs/run/shebang_tsc/shebang.ts.out
diff --git a/tests/specs/run/shebang_tsc/shebang2.ts b/tests/specs/run/shebang_tsc/shebang2.ts
new file mode 100644
index 000000000..da0d7bf0c
--- /dev/null
+++ b/tests/specs/run/shebang_tsc/shebang2.ts
@@ -0,0 +1,3 @@
+#!/usr/bin/env -S deno run
+
+export default 42;
diff --git a/tests/specs/run/shebang_with_json_imports_swc/__test__.jsonc b/tests/specs/run/shebang_with_json_imports_swc/__test__.jsonc
new file mode 100644
index 000000000..90592757f
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_swc/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --no-check json_with_shebang.ts",
+ "output": "json_with_shebang.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.json b/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.json
new file mode 100644
index 000000000..b695e4457
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.json
@@ -0,0 +1,4 @@
+#!/usr/env -S deno run
+{
+ "test": null
+}
diff --git a/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts b/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts
new file mode 100644
index 000000000..9524026bc
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts
@@ -0,0 +1,3 @@
+import json from "./json_with_shebang.json" with { type: "json" };
+
+console.log(json);
diff --git a/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts.out b/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts.out
new file mode 100644
index 000000000..23eb03720
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_swc/json_with_shebang.ts.out
@@ -0,0 +1 @@
+error: Uncaught SyntaxError: Unexpected token '#', "#!/usr/env"... is not valid JSON
diff --git a/tests/specs/run/shebang_with_json_imports_tsc/__test__.jsonc b/tests/specs/run/shebang_with_json_imports_tsc/__test__.jsonc
new file mode 100644
index 000000000..7fbb8a5d3
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_tsc/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet json_with_shebang.ts",
+ "output": "json_with_shebang.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.json b/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.json
new file mode 100644
index 000000000..b695e4457
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.json
@@ -0,0 +1,4 @@
+#!/usr/env -S deno run
+{
+ "test": null
+}
diff --git a/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts b/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts
new file mode 100644
index 000000000..9524026bc
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts
@@ -0,0 +1,3 @@
+import json from "./json_with_shebang.json" with { type: "json" };
+
+console.log(json);
diff --git a/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts.out b/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts.out
new file mode 100644
index 000000000..23eb03720
--- /dev/null
+++ b/tests/specs/run/shebang_with_json_imports_tsc/json_with_shebang.ts.out
@@ -0,0 +1 @@
+error: Uncaught SyntaxError: Unexpected token '#', "#!/usr/env"... is not valid JSON
diff --git a/tests/specs/run/single_compile_with_reload/__test__.jsonc b/tests/specs/run/single_compile_with_reload/__test__.jsonc
new file mode 100644
index 000000000..3e2e04379
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --allow-read single_compile_with_reload.ts",
+ "output": "single_compile_with_reload.ts.out"
+}
diff --git a/tests/specs/run/single_compile_with_reload/mod1.ts b/tests/specs/run/single_compile_with_reload/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/single_compile_with_reload/print_hello.ts b/tests/specs/run/single_compile_with_reload/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/testdata/run/single_compile_with_reload.ts b/tests/specs/run/single_compile_with_reload/single_compile_with_reload.ts
index 9478ad523..9478ad523 100644
--- a/tests/testdata/run/single_compile_with_reload.ts
+++ b/tests/specs/run/single_compile_with_reload/single_compile_with_reload.ts
diff --git a/tests/testdata/run/single_compile_with_reload.ts.out b/tests/specs/run/single_compile_with_reload/single_compile_with_reload.ts.out
index a3986e3af..a3986e3af 100644
--- a/tests/testdata/run/single_compile_with_reload.ts.out
+++ b/tests/specs/run/single_compile_with_reload/single_compile_with_reload.ts.out
diff --git a/tests/specs/run/single_compile_with_reload/single_compile_with_reload_dyn.ts b/tests/specs/run/single_compile_with_reload/single_compile_with_reload_dyn.ts
new file mode 100644
index 000000000..c69556be1
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/single_compile_with_reload_dyn.ts
@@ -0,0 +1,11 @@
+import { printHello3, returnsFoo2, returnsHi } from "./mod1.ts";
+
+printHello3();
+
+if (returnsHi() !== "Hi") {
+ throw Error("Unexpected");
+}
+
+if (returnsFoo2() !== "Foo") {
+ throw Error("Unexpected");
+}
diff --git a/tests/specs/run/single_compile_with_reload/single_compile_with_reload_worker.ts b/tests/specs/run/single_compile_with_reload/single_compile_with_reload_worker.ts
new file mode 100644
index 000000000..103cafe20
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/single_compile_with_reload_worker.ts
@@ -0,0 +1,3 @@
+console.log("Hello from worker");
+postMessage(null);
+close();
diff --git a/tests/specs/run/single_compile_with_reload/subdir2/dynamic_import.ts b/tests/specs/run/single_compile_with_reload/subdir2/dynamic_import.ts
new file mode 100644
index 000000000..59beb64c3
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/subdir2/dynamic_import.ts
@@ -0,0 +1,4 @@
+(async () => {
+ const { printHello } = await import("../mod2.ts");
+ printHello();
+})();
diff --git a/tests/specs/run/single_compile_with_reload/subdir2/mod2.ts b/tests/specs/run/single_compile_with_reload/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/single_compile_with_reload/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/specs/run/spawn_stdout_inherit/__test__.jsonc b/tests/specs/run/spawn_stdout_inherit/__test__.jsonc
new file mode 100644
index 000000000..4dd5fe54c
--- /dev/null
+++ b/tests/specs/run/spawn_stdout_inherit/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet -A spawn_stdout_inherit.ts",
+ "output": "spawn_stdout_inherit.ts.out"
+}
diff --git a/tests/testdata/run/spawn_stdout_inherit.ts b/tests/specs/run/spawn_stdout_inherit/spawn_stdout_inherit.ts
index 04f635cea..04f635cea 100644
--- a/tests/testdata/run/spawn_stdout_inherit.ts
+++ b/tests/specs/run/spawn_stdout_inherit/spawn_stdout_inherit.ts
diff --git a/tests/testdata/run/spawn_stdout_inherit.ts.out b/tests/specs/run/spawn_stdout_inherit/spawn_stdout_inherit.ts.out
index 474891cf2..474891cf2 100644
--- a/tests/testdata/run/spawn_stdout_inherit.ts.out
+++ b/tests/specs/run/spawn_stdout_inherit/spawn_stdout_inherit.ts.out
diff --git a/tests/specs/run/stdin_read_all/__test__.jsonc b/tests/specs/run/stdin_read_all/__test__.jsonc
new file mode 100644
index 000000000..6fc035aab
--- /dev/null
+++ b/tests/specs/run/stdin_read_all/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet stdin_read_all.ts",
+ "output": "stdin_read_all.out",
+ "input": "01234567890123456789012345678901234567890123456789"
+}
diff --git a/tests/testdata/run/stdin_read_all.out b/tests/specs/run/stdin_read_all/stdin_read_all.out
index 2f0dfb71a..2f0dfb71a 100644
--- a/tests/testdata/run/stdin_read_all.out
+++ b/tests/specs/run/stdin_read_all/stdin_read_all.out
diff --git a/tests/testdata/run/stdin_read_all.ts b/tests/specs/run/stdin_read_all/stdin_read_all.ts
index d683a2bf6..d683a2bf6 100644
--- a/tests/testdata/run/stdin_read_all.ts
+++ b/tests/specs/run/stdin_read_all/stdin_read_all.ts
diff --git a/tests/specs/run/stdout_write_all/__test__.jsonc b/tests/specs/run/stdout_write_all/__test__.jsonc
new file mode 100644
index 000000000..2057f4a11
--- /dev/null
+++ b/tests/specs/run/stdout_write_all/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet stdout_write_all.ts",
+ "output": "stdout_write_all.out"
+}
diff --git a/tests/testdata/run/stdout_write_all.out b/tests/specs/run/stdout_write_all/stdout_write_all.out
index d0e667fd4..d0e667fd4 100644
--- a/tests/testdata/run/stdout_write_all.out
+++ b/tests/specs/run/stdout_write_all/stdout_write_all.out
diff --git a/tests/testdata/run/stdout_write_all.ts b/tests/specs/run/stdout_write_all/stdout_write_all.ts
index cfb2981e4..cfb2981e4 100644
--- a/tests/testdata/run/stdout_write_all.ts
+++ b/tests/specs/run/stdout_write_all/stdout_write_all.ts
diff --git a/tests/specs/run/stdout_write_sync_async/__test__.jsonc b/tests/specs/run/stdout_write_sync_async/__test__.jsonc
new file mode 100644
index 000000000..5032ca015
--- /dev/null
+++ b/tests/specs/run/stdout_write_sync_async/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet stdout_write_sync_async.ts",
+ "output": "stdout_write_sync_async.out"
+}
diff --git a/tests/testdata/run/stdout_write_sync_async.out b/tests/specs/run/stdout_write_sync_async/stdout_write_sync_async.out
index 91ebda1ca..91ebda1ca 100644
--- a/tests/testdata/run/stdout_write_sync_async.out
+++ b/tests/specs/run/stdout_write_sync_async/stdout_write_sync_async.out
diff --git a/tests/testdata/run/stdout_write_sync_async.ts b/tests/specs/run/stdout_write_sync_async/stdout_write_sync_async.ts
index 648999d8a..648999d8a 100644
--- a/tests/testdata/run/stdout_write_sync_async.ts
+++ b/tests/specs/run/stdout_write_sync_async/stdout_write_sync_async.ts
diff --git a/tests/specs/run/swc_syntax_error/__test__.jsonc b/tests/specs/run/swc_syntax_error/__test__.jsonc
new file mode 100644
index 000000000..842a4fcf8
--- /dev/null
+++ b/tests/specs/run/swc_syntax_error/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check swc_syntax_error.ts",
+ "output": "swc_syntax_error.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/swc_syntax_error.ts b/tests/specs/run/swc_syntax_error/swc_syntax_error.ts
index 991ca9214..991ca9214 100644
--- a/tests/testdata/run/swc_syntax_error.ts
+++ b/tests/specs/run/swc_syntax_error/swc_syntax_error.ts
diff --git a/tests/testdata/run/swc_syntax_error.ts.out b/tests/specs/run/swc_syntax_error/swc_syntax_error.ts.out
index 81b0c1949..81b0c1949 100644
--- a/tests/testdata/run/swc_syntax_error.ts.out
+++ b/tests/specs/run/swc_syntax_error/swc_syntax_error.ts.out
diff --git a/tests/specs/run/test_and_bench_are_noops_in_run/__test__.jsonc b/tests/specs/run/test_and_bench_are_noops_in_run/__test__.jsonc
new file mode 100644
index 000000000..3d8d2ba56
--- /dev/null
+++ b/tests/specs/run/test_and_bench_are_noops_in_run/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run test_and_bench_in_run.js",
+ "output": ""
+}
diff --git a/tests/testdata/run/test_and_bench_in_run.js b/tests/specs/run/test_and_bench_are_noops_in_run/test_and_bench_in_run.js
index 108ae937a..108ae937a 100644
--- a/tests/testdata/run/test_and_bench_in_run.js
+++ b/tests/specs/run/test_and_bench_are_noops_in_run/test_and_bench_in_run.js
diff --git a/tests/specs/run/tls_connecttls/RootCA.pem b/tests/specs/run/tls_connecttls/RootCA.pem
new file mode 100644
index 000000000..c2f84ceeb
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/RootCA.pem
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDIzCCAgugAwIBAgIJAMKPPW4tsOymMA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV
+BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwIBcNMTkxMDIxMTYyODIy
+WhgPMjExODA5MjcxNjI4MjJaMCcxCzAJBgNVBAYTAlVTMRgwFgYDVQQDDA9FeGFt
+cGxlLVJvb3QtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMH/IO
+2qtHfyBKwANNPB4K0q5JVSg8XxZdRpTTlz0CwU0oRO3uHrI52raCCfVeiQutyZop
+eFZTDWeXGudGAFA2B5m3orWt0s+touPi8MzjsG2TQ+WSI66QgbXTNDitDDBtTVcV
+5G3Ic+3SppQAYiHSekLISnYWgXLl+k5CnEfTowg6cjqjVr0KjL03cTN3H7b+6+0S
+ws4rYbW1j4ExR7K6BFNH6572yq5qR20E6GqlY+EcOZpw4CbCk9lS8/CWuXze/vMs
+OfDcc6K+B625d27wyEGZHedBomT2vAD7sBjvO8hn/DP1Qb46a8uCHR6NSfnJ7bXO
+G1igaIbgY1zXirNdAgMBAAGjUDBOMB0GA1UdDgQWBBTzut+pwwDfqmMYcI9KNWRD
+hxcIpTAfBgNVHSMEGDAWgBTzut+pwwDfqmMYcI9KNWRDhxcIpTAMBgNVHRMEBTAD
+AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB9AqSbZ+hEglAgSHxAMCqRFdhVu7MvaQM0
+P090mhGlOCt3yB7kdGfsIrUW6nQcTz7PPQFRaJMrFHPvFvPootkBUpTYR4hTkdce
+H6RCRu2Jxl4Y9bY/uezd9YhGCYfUtfjA6/TH9FcuZfttmOOlxOt01XfNvVMIR6RM
+z/AYhd+DeOXjr35F/VHeVpnk+55L0PYJsm1CdEbOs5Hy1ecR7ACuDkXnbM4fpz9I
+kyIWJwk2zJReKcJMgi1aIinDM9ao/dca1G99PHOw8dnr4oyoTiv8ao6PWiSRHHMi
+MNf4EgWfK+tZMnuqfpfO9740KzfcVoMNo4QJD4yn5YxroUOO/Azi
+-----END CERTIFICATE-----
diff --git a/tests/specs/run/tls_connecttls/__test__.jsonc b/tests/specs/run/tls_connecttls/__test__.jsonc
new file mode 100644
index 000000000..2e8f88339
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-net --allow-read --cert RootCA.pem --config deno.json tls_connecttls.js",
+ "output": "tls.out"
+}
diff --git a/tests/specs/run/tls_connecttls/deno.json b/tests/specs/run/tls_connecttls/deno.json
new file mode 100644
index 000000000..105514e13
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/deno.json
@@ -0,0 +1,4 @@
+{
+ "lock": false,
+ "importMap": "../../../../import_map.json"
+}
diff --git a/tests/specs/run/tls_connecttls/localhost.crt b/tests/specs/run/tls_connecttls/localhost.crt
new file mode 100644
index 000000000..a71ae9050
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/localhost.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDajCCAlKgAwIBAgIJAOPyQVdy/UpPMA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV
+BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwIBcNMTkxMDIxMTYyODU4
+WhgPMjExODA5MjcxNjI4NThaMG0xCzAJBgNVBAYTAlVTMRIwEAYDVQQIDAlZb3Vy
+U3RhdGUxETAPBgNVBAcMCFlvdXJDaXR5MR0wGwYDVQQKDBRFeGFtcGxlLUNlcnRp
+ZmljYXRlczEYMBYGA1UEAwwPbG9jYWxob3N0LmxvY2FsMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAz9svjVdf5jihUBtofd84XKdb8dEHQRJfDNKaJ4Ar
+baqMHAdnqi/fWtlqEEMn8gweZ7+4hshECY5mnx4Hhy7IAbePDsTTbSm01dChhlxF
+uvd9QuvzvrqSjSq+v4Jlau+pQIhUzzV12dF5bFvrIrGWxCZp+W7lLDZI6Pd6Su+y
+ZIeiwrUaPMzdUePNf2hZI/IvWCUMCIyoqrrKHdHoPuvQCW17IyxsnFQJNbmN+Rtp
+BQilhtwvBbggCBWhHxEdiqBaZHDw6Zl+bU7ejx1mu9A95wpQ9SCL2cRkAlz2LDOy
+wznrTAwGcvqvFKxlV+3HsaD7rba4kCA1Ihp5mm/dS2k94QIDAQABo1EwTzAfBgNV
+HSMEGDAWgBTzut+pwwDfqmMYcI9KNWRDhxcIpTAJBgNVHRMEAjAAMAsGA1UdDwQE
+AwIE8DAUBgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQELBQADggEBAKVu
+vVpu5nPGAGn1SX4FQUcbn9Z5wgBkjnZxfJHJQX4sYIRlcirZviPHCZGPWex4VHC+
+lFMm+70YEN2uoe5jGrdgcugzx2Amc7/mLrsvvpMsaS0PlxNMcqhdM1WHbGjjdNln
+XICVITSKnB1fSGH6uo9CMCWw5kgPS9o4QWrLLkxnds3hoz7gVEUyi/6V65mcfFNA
+lof9iKcK9JsSHdBs35vpv7UKLX+96RM7Nm2Mu0yue5JiS79/zuMA/Kryxot4jv5z
+ecdWFl0eIyQBZmBzMw2zPUqkxEnXLiKjV8jutEg/4qovTOB6YiA41qbARXdzNA2V
+FYuchcTcWmnmVVRFyyU=
+-----END CERTIFICATE-----
diff --git a/tests/specs/run/tls_connecttls/localhost.key b/tests/specs/run/tls_connecttls/localhost.key
new file mode 100644
index 000000000..42774c977
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/localhost.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDP2y+NV1/mOKFQ
+G2h93zhcp1vx0QdBEl8M0pongCttqowcB2eqL99a2WoQQyfyDB5nv7iGyEQJjmaf
+HgeHLsgBt48OxNNtKbTV0KGGXEW6931C6/O+upKNKr6/gmVq76lAiFTPNXXZ0Xls
+W+sisZbEJmn5buUsNkjo93pK77Jkh6LCtRo8zN1R481/aFkj8i9YJQwIjKiqusod
+0eg+69AJbXsjLGycVAk1uY35G2kFCKWG3C8FuCAIFaEfER2KoFpkcPDpmX5tTt6P
+HWa70D3nClD1IIvZxGQCXPYsM7LDOetMDAZy+q8UrGVX7cexoPuttriQIDUiGnma
+b91LaT3hAgMBAAECggEBAJABfn+BQorBP1m9s3ZJmcXvmW7+7/SwYrQCkRS+4te2
+6h1dMAAj7K4HpUkhDeLPbJ1aoeCXjTPFuemRp4uL6Lvvzahgy059L7FXOyFYemMf
+pmQgDx5cKr6tF7yc/eDJrExuZ7urgTvouiRNxqmhuh+psZBDuXkZHwhwtQSH7uNg
+KBDKu0qWO73vFLcLckdGEU3+H9oIWs5xcvvOkWzyvHbRGFJSihgcRpPPHodF5xB9
+T/gZIoJHMmCbUMlWaSasUyNXTuvCnkvBDol8vXrMJCVzKZj9GpPDcIFdc08GSn4I
+pTdSNwzUcHbdERzdVU28Xt+t6W5rvp/4FWrssi4IzkUCgYEA//ZcEcBguRD4OFrx
+6wbSjzCcUW1NWhzA8uTOORZi4SvndcH1cU4S2wznuHNubU1XlrGwJX6PUGebmY/l
+53B5PJvStbVtZCVIxllR+ZVzRuL8wLodRHzlYH8GOzHwoa4ivSupkzl72ij1u/tI
+NMLGfYEKVdNd8zXIESUY88NszvsCgYEAz+MDp3xOhFaCe+CPv80A592cJcfzc8Al
++rahEOu+VdN2QBZf86PIf2Bfv/t0QvnRvs1z648TuH6h83YSggOAbmfHyd789jkq
+UWlktIaXbVn+VaHmPTcBWTg3ZTlvG+fiFCbZXiYhm+UUf1MDqZHdiifAoyVIjV/Z
+YhCNJo3q39MCgYEAknrpK5t9fstwUcfyA/9OhnVaL9suVjB4V0iLn+3ovlXCywgp
+ryLv9X3IKi2c9144jtu3I23vFCOGz3WjKzSZnQ7LogNmy9XudNxu5jcZ1mpWHPEl
+iKk1F2j6Juwoek5OQRX4oHFYKHwiTOa75r3Em9Q6Fu20KVgQ24bwZafj3/sCgYAy
+k0AoVw2jFIjaKl/Ogclen4OFjYek+XJD9Hpq62964d866Dafx5DXrFKfGkXGpZBp
+owI4pK5fjC9KU8dc6g0szwLEEgPowy+QbtuZL8VXTTWbD7A75E3nrs2LStXFLDzM
+OkdXqF801h6Oe1vAvUPwgItVJZTpEBCK0wwD/TLPEQKBgQDRkhlTtAoHW7W6STd0
+A/OWc0dxhzMurpxg0bLgCqUjw1ESGrSCGhffFn0IWa8sv19VWsZuBhTgjNatZsYB
+AhDs/6OosT/3nJoh2/t0hYDj1FBI0lPXWYD4pesuZ5yIMrmSaAOtIzp4BGY7ui8N
+wOqcq/jdiHj/MKEdqOXy3YAJrA==
+-----END PRIVATE KEY-----
diff --git a/tests/specs/run/tls_connecttls/textproto.ts b/tests/specs/run/tls_connecttls/textproto.ts
new file mode 100644
index 000000000..9e0f5f5f0
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/textproto.ts
@@ -0,0 +1,170 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/** **Deprecated**. Use `TextLineStream` from `std/steams` for line-by-line text reading instead.
+ *
+ * A reader for dealing with low level text based protocols.
+ *
+ * Based on
+ * [net/textproto](https://github.com/golang/go/tree/master/src/net/textproto).
+ *
+ * @deprecated (will be removed after 0.159.0) Use `TextLineStream` from `std/steams` for line-by-line text reading instead.
+ * @module
+ */
+
+import type { BufReader, ReadLineResult } from "@std/io/buf-reader";
+import { concat } from "@std/bytes/concat";
+
+// Constants created for DRY
+const CHAR_SPACE: number = " ".charCodeAt(0);
+const CHAR_TAB: number = "\t".charCodeAt(0);
+const CHAR_COLON: number = ":".charCodeAt(0);
+
+const WHITESPACES: Array<number> = [CHAR_SPACE, CHAR_TAB];
+
+const decoder = new TextDecoder();
+
+// FROM https://github.com/denoland/deno/blob/b34628a26ab0187a827aa4ebe256e23178e25d39/cli/js/web/headers.ts#L9
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/g;
+
+function str(buf: Uint8Array | null | undefined): string {
+ return !buf ? "" : decoder.decode(buf);
+}
+
+/**
+ * @deprecated (will be removed after 0.159.0) Use `TextLineStream` from `std/steams` for line-by-line text reading instead.
+ */
+export class TextProtoReader {
+ constructor(readonly r: BufReader) {}
+
+ /** readLine() reads a single line from the TextProtoReader,
+ * eliding the final \n or \r\n from the returned string.
+ */
+ async readLine(): Promise<string | null> {
+ const s = await this.readLineSlice();
+ return s === null ? null : str(s);
+ }
+
+ /** ReadMimeHeader reads a MIME-style header from r.
+ * The header is a sequence of possibly continued Key: Value lines
+ * ending in a blank line.
+ * The returned map m maps CanonicalMIMEHeaderKey(key) to a
+ * sequence of values in the same order encountered in the input.
+ *
+ * For example, consider this input:
+ *
+ * My-Key: Value 1
+ * Long-Key: Even
+ * Longer Value
+ * My-Key: Value 2
+ *
+ * Given that input, ReadMIMEHeader returns the map:
+ *
+ * map[string][]string{
+ * "My-Key": {"Value 1", "Value 2"},
+ * "Long-Key": {"Even Longer Value"},
+ * }
+ */
+ async readMimeHeader(): Promise<Headers | null> {
+ const m = new Headers();
+ let line: Uint8Array | undefined;
+
+ // The first line cannot start with a leading space.
+ let buf = await this.r.peek(1);
+ if (buf === null) {
+ return null;
+ } else if (WHITESPACES.includes(buf[0])) {
+ line = (await this.readLineSlice()) as Uint8Array;
+ }
+
+ buf = await this.r.peek(1);
+ if (buf === null) {
+ throw new Deno.errors.UnexpectedEof();
+ } else if (WHITESPACES.includes(buf[0])) {
+ throw new Deno.errors.InvalidData(
+ `malformed MIME header initial line: ${str(line)}`,
+ );
+ }
+
+ while (true) {
+ const kv = await this.readLineSlice(); // readContinuedLineSlice
+ if (kv === null) throw new Deno.errors.UnexpectedEof();
+ if (kv.byteLength === 0) return m;
+
+ // Key ends at first colon
+ let i = kv.indexOf(CHAR_COLON);
+ if (i < 0) {
+ throw new Deno.errors.InvalidData(
+ `malformed MIME header line: ${str(kv)}`,
+ );
+ }
+
+ //let key = canonicalMIMEHeaderKey(kv.subarray(0, endKey));
+ const key = str(kv.subarray(0, i));
+
+ // As per RFC 7230 field-name is a token,
+ // tokens consist of one or more chars.
+ // We could throw `Deno.errors.InvalidData` here,
+ // but better to be liberal in what we
+ // accept, so if we get an empty key, skip it.
+ if (key == "") {
+ continue;
+ }
+
+ // Skip initial spaces in value.
+ i++; // skip colon
+ while (
+ i < kv.byteLength &&
+ (WHITESPACES.includes(kv[i]))
+ ) {
+ i++;
+ }
+ const value = str(kv.subarray(i)).replace(
+ invalidHeaderCharRegex,
+ encodeURI,
+ );
+
+ // In case of invalid header we swallow the error
+ // example: "Audio Mode" => invalid due to space in the key
+ try {
+ m.append(key, value);
+ } catch {
+ // Pass
+ }
+ }
+ }
+
+ async readLineSlice(): Promise<Uint8Array | null> {
+ let line = new Uint8Array(0);
+ let r: ReadLineResult | null = null;
+
+ do {
+ r = await this.r.readLine();
+ // TODO(ry):
+ // This skipSpace() is definitely misplaced, but I don't know where it
+ // comes from nor how to fix it.
+
+ //TODO(SmashingQuasar): Kept skipSpace to preserve behavior but it should be looked into to check if it makes sense when this is used.
+
+ if (r !== null && this.skipSpace(r.line) !== 0) {
+ line = concat([line, r.line]);
+ }
+ } while (r !== null && r.more);
+
+ return r === null ? null : line;
+ }
+
+ skipSpace(l: Uint8Array): number {
+ let n = 0;
+
+ for (const val of l) {
+ if (!WHITESPACES.includes(val)) {
+ n++;
+ }
+ }
+
+ return n;
+ }
+}
diff --git a/tests/testdata/run/tls.out b/tests/specs/run/tls_connecttls/tls.out
index c8e8a135c..c8e8a135c 100644
--- a/tests/testdata/run/tls.out
+++ b/tests/specs/run/tls_connecttls/tls.out
diff --git a/tests/specs/run/tls_connecttls/tls_connecttls.js b/tests/specs/run/tls_connecttls/tls_connecttls.js
new file mode 100644
index 000000000..686b13aea
--- /dev/null
+++ b/tests/specs/run/tls_connecttls/tls_connecttls.js
@@ -0,0 +1,65 @@
+import { assert, assertEquals } from "@std/assert";
+import { BufReader, BufWriter } from "@std/io";
+import { TextProtoReader } from "./textproto.ts";
+
+const encoder = new TextEncoder();
+const decoder = new TextDecoder();
+
+const { promise, resolve } = Promise.withResolvers();
+const hostname = "localhost";
+const port = 3505;
+
+const listener = Deno.listenTls({
+ hostname,
+ port,
+ cert: Deno.readTextFileSync("./localhost.crt"),
+ key: Deno.readTextFileSync("./localhost.key"),
+});
+
+const response = encoder.encode(
+ "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n",
+);
+
+listener.accept().then(
+ async (conn) => {
+ assert(conn.remoteAddr != null);
+ assert(conn.localAddr != null);
+ await conn.write(response);
+ // TODO(bartlomieju): this might be a bug
+ setTimeout(() => {
+ conn.close();
+ resolve();
+ }, 0);
+ },
+);
+
+const conn = await Deno.connectTls({
+ hostname,
+ port,
+});
+const w = new BufWriter(conn);
+const r = new BufReader(conn);
+const body = `GET / HTTP/1.1\r\nHost: ${hostname}:${port}\r\n\r\n`;
+const writeResult = await w.write(encoder.encode(body));
+assertEquals(body.length, writeResult);
+await w.flush();
+const tpr = new TextProtoReader(r);
+const statusLine = await tpr.readLine();
+assert(statusLine !== null, `line must be read: ${String(statusLine)}`);
+const m = statusLine.match(/^(.+?) (.+?) (.+?)$/);
+assert(m !== null, "must be matched");
+const [_, proto, status, ok] = m;
+assertEquals(proto, "HTTP/1.1");
+assertEquals(status, "200");
+assertEquals(ok, "OK");
+const headers = await tpr.readMimeHeader();
+assert(headers !== null);
+const contentLength = parseInt(headers.get("content-length"));
+const bodyBuf = new Uint8Array(contentLength);
+await r.readFull(bodyBuf);
+assertEquals(decoder.decode(bodyBuf), "Hello World\n");
+conn.close();
+listener.close();
+await promise;
+
+console.log("DONE");
diff --git a/tests/specs/run/tls_starttls/RootCA.pem b/tests/specs/run/tls_starttls/RootCA.pem
new file mode 100644
index 000000000..c2f84ceeb
--- /dev/null
+++ b/tests/specs/run/tls_starttls/RootCA.pem
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDIzCCAgugAwIBAgIJAMKPPW4tsOymMA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV
+BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwIBcNMTkxMDIxMTYyODIy
+WhgPMjExODA5MjcxNjI4MjJaMCcxCzAJBgNVBAYTAlVTMRgwFgYDVQQDDA9FeGFt
+cGxlLVJvb3QtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMH/IO
+2qtHfyBKwANNPB4K0q5JVSg8XxZdRpTTlz0CwU0oRO3uHrI52raCCfVeiQutyZop
+eFZTDWeXGudGAFA2B5m3orWt0s+touPi8MzjsG2TQ+WSI66QgbXTNDitDDBtTVcV
+5G3Ic+3SppQAYiHSekLISnYWgXLl+k5CnEfTowg6cjqjVr0KjL03cTN3H7b+6+0S
+ws4rYbW1j4ExR7K6BFNH6572yq5qR20E6GqlY+EcOZpw4CbCk9lS8/CWuXze/vMs
+OfDcc6K+B625d27wyEGZHedBomT2vAD7sBjvO8hn/DP1Qb46a8uCHR6NSfnJ7bXO
+G1igaIbgY1zXirNdAgMBAAGjUDBOMB0GA1UdDgQWBBTzut+pwwDfqmMYcI9KNWRD
+hxcIpTAfBgNVHSMEGDAWgBTzut+pwwDfqmMYcI9KNWRDhxcIpTAMBgNVHRMEBTAD
+AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB9AqSbZ+hEglAgSHxAMCqRFdhVu7MvaQM0
+P090mhGlOCt3yB7kdGfsIrUW6nQcTz7PPQFRaJMrFHPvFvPootkBUpTYR4hTkdce
+H6RCRu2Jxl4Y9bY/uezd9YhGCYfUtfjA6/TH9FcuZfttmOOlxOt01XfNvVMIR6RM
+z/AYhd+DeOXjr35F/VHeVpnk+55L0PYJsm1CdEbOs5Hy1ecR7ACuDkXnbM4fpz9I
+kyIWJwk2zJReKcJMgi1aIinDM9ao/dca1G99PHOw8dnr4oyoTiv8ao6PWiSRHHMi
+MNf4EgWfK+tZMnuqfpfO9740KzfcVoMNo4QJD4yn5YxroUOO/Azi
+-----END CERTIFICATE-----
diff --git a/tests/specs/run/tls_starttls/__test__.jsonc b/tests/specs/run/tls_starttls/__test__.jsonc
new file mode 100644
index 000000000..4c1fe6324
--- /dev/null
+++ b/tests/specs/run/tls_starttls/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-net --allow-read --cert RootCA.pem --config deno.json tls_starttls.js",
+ "output": "tls.out"
+}
diff --git a/tests/specs/run/tls_starttls/deno.json b/tests/specs/run/tls_starttls/deno.json
new file mode 100644
index 000000000..105514e13
--- /dev/null
+++ b/tests/specs/run/tls_starttls/deno.json
@@ -0,0 +1,4 @@
+{
+ "lock": false,
+ "importMap": "../../../../import_map.json"
+}
diff --git a/tests/specs/run/tls_starttls/localhost.crt b/tests/specs/run/tls_starttls/localhost.crt
new file mode 100644
index 000000000..a71ae9050
--- /dev/null
+++ b/tests/specs/run/tls_starttls/localhost.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDajCCAlKgAwIBAgIJAOPyQVdy/UpPMA0GCSqGSIb3DQEBCwUAMCcxCzAJBgNV
+BAYTAlVTMRgwFgYDVQQDDA9FeGFtcGxlLVJvb3QtQ0EwIBcNMTkxMDIxMTYyODU4
+WhgPMjExODA5MjcxNjI4NThaMG0xCzAJBgNVBAYTAlVTMRIwEAYDVQQIDAlZb3Vy
+U3RhdGUxETAPBgNVBAcMCFlvdXJDaXR5MR0wGwYDVQQKDBRFeGFtcGxlLUNlcnRp
+ZmljYXRlczEYMBYGA1UEAwwPbG9jYWxob3N0LmxvY2FsMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAz9svjVdf5jihUBtofd84XKdb8dEHQRJfDNKaJ4Ar
+baqMHAdnqi/fWtlqEEMn8gweZ7+4hshECY5mnx4Hhy7IAbePDsTTbSm01dChhlxF
+uvd9QuvzvrqSjSq+v4Jlau+pQIhUzzV12dF5bFvrIrGWxCZp+W7lLDZI6Pd6Su+y
+ZIeiwrUaPMzdUePNf2hZI/IvWCUMCIyoqrrKHdHoPuvQCW17IyxsnFQJNbmN+Rtp
+BQilhtwvBbggCBWhHxEdiqBaZHDw6Zl+bU7ejx1mu9A95wpQ9SCL2cRkAlz2LDOy
+wznrTAwGcvqvFKxlV+3HsaD7rba4kCA1Ihp5mm/dS2k94QIDAQABo1EwTzAfBgNV
+HSMEGDAWgBTzut+pwwDfqmMYcI9KNWRDhxcIpTAJBgNVHRMEAjAAMAsGA1UdDwQE
+AwIE8DAUBgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQELBQADggEBAKVu
+vVpu5nPGAGn1SX4FQUcbn9Z5wgBkjnZxfJHJQX4sYIRlcirZviPHCZGPWex4VHC+
+lFMm+70YEN2uoe5jGrdgcugzx2Amc7/mLrsvvpMsaS0PlxNMcqhdM1WHbGjjdNln
+XICVITSKnB1fSGH6uo9CMCWw5kgPS9o4QWrLLkxnds3hoz7gVEUyi/6V65mcfFNA
+lof9iKcK9JsSHdBs35vpv7UKLX+96RM7Nm2Mu0yue5JiS79/zuMA/Kryxot4jv5z
+ecdWFl0eIyQBZmBzMw2zPUqkxEnXLiKjV8jutEg/4qovTOB6YiA41qbARXdzNA2V
+FYuchcTcWmnmVVRFyyU=
+-----END CERTIFICATE-----
diff --git a/tests/specs/run/tls_starttls/localhost.key b/tests/specs/run/tls_starttls/localhost.key
new file mode 100644
index 000000000..42774c977
--- /dev/null
+++ b/tests/specs/run/tls_starttls/localhost.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDP2y+NV1/mOKFQ
+G2h93zhcp1vx0QdBEl8M0pongCttqowcB2eqL99a2WoQQyfyDB5nv7iGyEQJjmaf
+HgeHLsgBt48OxNNtKbTV0KGGXEW6931C6/O+upKNKr6/gmVq76lAiFTPNXXZ0Xls
+W+sisZbEJmn5buUsNkjo93pK77Jkh6LCtRo8zN1R481/aFkj8i9YJQwIjKiqusod
+0eg+69AJbXsjLGycVAk1uY35G2kFCKWG3C8FuCAIFaEfER2KoFpkcPDpmX5tTt6P
+HWa70D3nClD1IIvZxGQCXPYsM7LDOetMDAZy+q8UrGVX7cexoPuttriQIDUiGnma
+b91LaT3hAgMBAAECggEBAJABfn+BQorBP1m9s3ZJmcXvmW7+7/SwYrQCkRS+4te2
+6h1dMAAj7K4HpUkhDeLPbJ1aoeCXjTPFuemRp4uL6Lvvzahgy059L7FXOyFYemMf
+pmQgDx5cKr6tF7yc/eDJrExuZ7urgTvouiRNxqmhuh+psZBDuXkZHwhwtQSH7uNg
+KBDKu0qWO73vFLcLckdGEU3+H9oIWs5xcvvOkWzyvHbRGFJSihgcRpPPHodF5xB9
+T/gZIoJHMmCbUMlWaSasUyNXTuvCnkvBDol8vXrMJCVzKZj9GpPDcIFdc08GSn4I
+pTdSNwzUcHbdERzdVU28Xt+t6W5rvp/4FWrssi4IzkUCgYEA//ZcEcBguRD4OFrx
+6wbSjzCcUW1NWhzA8uTOORZi4SvndcH1cU4S2wznuHNubU1XlrGwJX6PUGebmY/l
+53B5PJvStbVtZCVIxllR+ZVzRuL8wLodRHzlYH8GOzHwoa4ivSupkzl72ij1u/tI
+NMLGfYEKVdNd8zXIESUY88NszvsCgYEAz+MDp3xOhFaCe+CPv80A592cJcfzc8Al
++rahEOu+VdN2QBZf86PIf2Bfv/t0QvnRvs1z648TuH6h83YSggOAbmfHyd789jkq
+UWlktIaXbVn+VaHmPTcBWTg3ZTlvG+fiFCbZXiYhm+UUf1MDqZHdiifAoyVIjV/Z
+YhCNJo3q39MCgYEAknrpK5t9fstwUcfyA/9OhnVaL9suVjB4V0iLn+3ovlXCywgp
+ryLv9X3IKi2c9144jtu3I23vFCOGz3WjKzSZnQ7LogNmy9XudNxu5jcZ1mpWHPEl
+iKk1F2j6Juwoek5OQRX4oHFYKHwiTOa75r3Em9Q6Fu20KVgQ24bwZafj3/sCgYAy
+k0AoVw2jFIjaKl/Ogclen4OFjYek+XJD9Hpq62964d866Dafx5DXrFKfGkXGpZBp
+owI4pK5fjC9KU8dc6g0szwLEEgPowy+QbtuZL8VXTTWbD7A75E3nrs2LStXFLDzM
+OkdXqF801h6Oe1vAvUPwgItVJZTpEBCK0wwD/TLPEQKBgQDRkhlTtAoHW7W6STd0
+A/OWc0dxhzMurpxg0bLgCqUjw1ESGrSCGhffFn0IWa8sv19VWsZuBhTgjNatZsYB
+AhDs/6OosT/3nJoh2/t0hYDj1FBI0lPXWYD4pesuZ5yIMrmSaAOtIzp4BGY7ui8N
+wOqcq/jdiHj/MKEdqOXy3YAJrA==
+-----END PRIVATE KEY-----
diff --git a/tests/specs/run/tls_starttls/textproto.ts b/tests/specs/run/tls_starttls/textproto.ts
new file mode 100644
index 000000000..9e0f5f5f0
--- /dev/null
+++ b/tests/specs/run/tls_starttls/textproto.ts
@@ -0,0 +1,170 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/** **Deprecated**. Use `TextLineStream` from `std/steams` for line-by-line text reading instead.
+ *
+ * A reader for dealing with low level text based protocols.
+ *
+ * Based on
+ * [net/textproto](https://github.com/golang/go/tree/master/src/net/textproto).
+ *
+ * @deprecated (will be removed after 0.159.0) Use `TextLineStream` from `std/steams` for line-by-line text reading instead.
+ * @module
+ */
+
+import type { BufReader, ReadLineResult } from "@std/io/buf-reader";
+import { concat } from "@std/bytes/concat";
+
+// Constants created for DRY
+const CHAR_SPACE: number = " ".charCodeAt(0);
+const CHAR_TAB: number = "\t".charCodeAt(0);
+const CHAR_COLON: number = ":".charCodeAt(0);
+
+const WHITESPACES: Array<number> = [CHAR_SPACE, CHAR_TAB];
+
+const decoder = new TextDecoder();
+
+// FROM https://github.com/denoland/deno/blob/b34628a26ab0187a827aa4ebe256e23178e25d39/cli/js/web/headers.ts#L9
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/g;
+
+function str(buf: Uint8Array | null | undefined): string {
+ return !buf ? "" : decoder.decode(buf);
+}
+
+/**
+ * @deprecated (will be removed after 0.159.0) Use `TextLineStream` from `std/steams` for line-by-line text reading instead.
+ */
+export class TextProtoReader {
+ constructor(readonly r: BufReader) {}
+
+ /** readLine() reads a single line from the TextProtoReader,
+ * eliding the final \n or \r\n from the returned string.
+ */
+ async readLine(): Promise<string | null> {
+ const s = await this.readLineSlice();
+ return s === null ? null : str(s);
+ }
+
+ /** ReadMimeHeader reads a MIME-style header from r.
+ * The header is a sequence of possibly continued Key: Value lines
+ * ending in a blank line.
+ * The returned map m maps CanonicalMIMEHeaderKey(key) to a
+ * sequence of values in the same order encountered in the input.
+ *
+ * For example, consider this input:
+ *
+ * My-Key: Value 1
+ * Long-Key: Even
+ * Longer Value
+ * My-Key: Value 2
+ *
+ * Given that input, ReadMIMEHeader returns the map:
+ *
+ * map[string][]string{
+ * "My-Key": {"Value 1", "Value 2"},
+ * "Long-Key": {"Even Longer Value"},
+ * }
+ */
+ async readMimeHeader(): Promise<Headers | null> {
+ const m = new Headers();
+ let line: Uint8Array | undefined;
+
+ // The first line cannot start with a leading space.
+ let buf = await this.r.peek(1);
+ if (buf === null) {
+ return null;
+ } else if (WHITESPACES.includes(buf[0])) {
+ line = (await this.readLineSlice()) as Uint8Array;
+ }
+
+ buf = await this.r.peek(1);
+ if (buf === null) {
+ throw new Deno.errors.UnexpectedEof();
+ } else if (WHITESPACES.includes(buf[0])) {
+ throw new Deno.errors.InvalidData(
+ `malformed MIME header initial line: ${str(line)}`,
+ );
+ }
+
+ while (true) {
+ const kv = await this.readLineSlice(); // readContinuedLineSlice
+ if (kv === null) throw new Deno.errors.UnexpectedEof();
+ if (kv.byteLength === 0) return m;
+
+ // Key ends at first colon
+ let i = kv.indexOf(CHAR_COLON);
+ if (i < 0) {
+ throw new Deno.errors.InvalidData(
+ `malformed MIME header line: ${str(kv)}`,
+ );
+ }
+
+ //let key = canonicalMIMEHeaderKey(kv.subarray(0, endKey));
+ const key = str(kv.subarray(0, i));
+
+ // As per RFC 7230 field-name is a token,
+ // tokens consist of one or more chars.
+ // We could throw `Deno.errors.InvalidData` here,
+ // but better to be liberal in what we
+ // accept, so if we get an empty key, skip it.
+ if (key == "") {
+ continue;
+ }
+
+ // Skip initial spaces in value.
+ i++; // skip colon
+ while (
+ i < kv.byteLength &&
+ (WHITESPACES.includes(kv[i]))
+ ) {
+ i++;
+ }
+ const value = str(kv.subarray(i)).replace(
+ invalidHeaderCharRegex,
+ encodeURI,
+ );
+
+ // In case of invalid header we swallow the error
+ // example: "Audio Mode" => invalid due to space in the key
+ try {
+ m.append(key, value);
+ } catch {
+ // Pass
+ }
+ }
+ }
+
+ async readLineSlice(): Promise<Uint8Array | null> {
+ let line = new Uint8Array(0);
+ let r: ReadLineResult | null = null;
+
+ do {
+ r = await this.r.readLine();
+ // TODO(ry):
+ // This skipSpace() is definitely misplaced, but I don't know where it
+ // comes from nor how to fix it.
+
+ //TODO(SmashingQuasar): Kept skipSpace to preserve behavior but it should be looked into to check if it makes sense when this is used.
+
+ if (r !== null && this.skipSpace(r.line) !== 0) {
+ line = concat([line, r.line]);
+ }
+ } while (r !== null && r.more);
+
+ return r === null ? null : line;
+ }
+
+ skipSpace(l: Uint8Array): number {
+ let n = 0;
+
+ for (const val of l) {
+ if (!WHITESPACES.includes(val)) {
+ n++;
+ }
+ }
+
+ return n;
+ }
+}
diff --git a/tests/specs/run/tls_starttls/tls.out b/tests/specs/run/tls_starttls/tls.out
new file mode 100644
index 000000000..c8e8a135c
--- /dev/null
+++ b/tests/specs/run/tls_starttls/tls.out
@@ -0,0 +1 @@
+DONE
diff --git a/tests/specs/run/tls_starttls/tls_starttls.js b/tests/specs/run/tls_starttls/tls_starttls.js
new file mode 100644
index 000000000..cd5718ff5
--- /dev/null
+++ b/tests/specs/run/tls_starttls/tls_starttls.js
@@ -0,0 +1,64 @@
+import { assert, assertEquals } from "@std/assert";
+import { BufReader } from "@std/io/buf-reader";
+import { BufWriter } from "@std/io/buf-writer";
+import { TextProtoReader } from "./textproto.ts";
+
+const encoder = new TextEncoder();
+const decoder = new TextDecoder();
+
+const { promise, resolve } = Promise.withResolvers();
+const hostname = "localhost";
+const port = 3504;
+
+const listener = Deno.listenTls({
+ hostname,
+ port,
+ cert: Deno.readTextFileSync("./localhost.crt"),
+ key: Deno.readTextFileSync("./localhost.key"),
+});
+
+const response = encoder.encode(
+ "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n",
+);
+
+listener.accept().then(
+ async (conn) => {
+ assert(conn.remoteAddr != null);
+ assert(conn.localAddr != null);
+ await conn.write(response);
+ // TODO(bartlomieju): this might be a bug
+ setTimeout(() => {
+ conn.close();
+ resolve();
+ }, 0);
+ },
+);
+
+let conn = await Deno.connect({ hostname, port });
+conn = await Deno.startTls(conn, { hostname });
+const w = new BufWriter(conn);
+const r = new BufReader(conn);
+const body = `GET / HTTP/1.1\r\nHost: ${hostname}:${port}\r\n\r\n`;
+const writeResult = await w.write(encoder.encode(body));
+assertEquals(body.length, writeResult);
+await w.flush();
+const tpr = new TextProtoReader(r);
+const statusLine = await tpr.readLine();
+assert(statusLine !== null, `line must be read: ${String(statusLine)}`);
+const m = statusLine.match(/^(.+?) (.+?) (.+?)$/);
+assert(m !== null, "must be matched");
+const [_, proto, status, ok] = m;
+assertEquals(proto, "HTTP/1.1");
+assertEquals(status, "200");
+assertEquals(ok, "OK");
+const headers = await tpr.readMimeHeader();
+assert(headers !== null);
+const contentLength = parseInt(headers.get("content-length"));
+const bodyBuf = new Uint8Array(contentLength);
+await r.readFull(bodyBuf);
+assertEquals(decoder.decode(bodyBuf), "Hello World\n");
+conn.close();
+listener.close();
+await promise;
+
+console.log("DONE");
diff --git a/tests/specs/run/top_level_await/__test__.jsonc b/tests/specs/run/top_level_await/__test__.jsonc
new file mode 100644
index 000000000..25537db5f
--- /dev/null
+++ b/tests/specs/run/top_level_await/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read top_level_await/top_level_await.js",
+ "output": "top_level_await/top_level_await.out"
+}
diff --git a/tests/specs/run/top_level_await/hello.txt b/tests/specs/run/top_level_await/hello.txt
new file mode 100644
index 000000000..6769dd60b
--- /dev/null
+++ b/tests/specs/run/top_level_await/hello.txt
@@ -0,0 +1 @@
+Hello world! \ No newline at end of file
diff --git a/tests/testdata/run/top_level_await/circular.js b/tests/specs/run/top_level_await/top_level_await/circular.js
index ff2964b6a..ff2964b6a 100644
--- a/tests/testdata/run/top_level_await/circular.js
+++ b/tests/specs/run/top_level_await/top_level_await/circular.js
diff --git a/tests/testdata/run/top_level_await/circular.out b/tests/specs/run/top_level_await/top_level_await/circular.out
index c88978961..c88978961 100644
--- a/tests/testdata/run/top_level_await/circular.out
+++ b/tests/specs/run/top_level_await/top_level_await/circular.out
diff --git a/tests/specs/run/top_level_await/top_level_await/loop.js b/tests/specs/run/top_level_await/top_level_await/loop.js
new file mode 100644
index 000000000..f229e03f6
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/testdata/run/top_level_await/loop.out b/tests/specs/run/top_level_await/top_level_await/loop.out
index 1bdffbf66..1bdffbf66 100644
--- a/tests/testdata/run/top_level_await/loop.out
+++ b/tests/specs/run/top_level_await/top_level_await/loop.out
diff --git a/tests/testdata/run/top_level_await/nested.out b/tests/specs/run/top_level_await/top_level_await/nested.out
index 8a1218a10..8a1218a10 100644
--- a/tests/testdata/run/top_level_await/nested.out
+++ b/tests/specs/run/top_level_await/top_level_await/nested.out
diff --git a/tests/testdata/run/top_level_await/nested/a.js b/tests/specs/run/top_level_await/top_level_await/nested/a.js
index 74837d4ba..74837d4ba 100644
--- a/tests/testdata/run/top_level_await/nested/a.js
+++ b/tests/specs/run/top_level_await/top_level_await/nested/a.js
diff --git a/tests/testdata/run/top_level_await/nested/b.js b/tests/specs/run/top_level_await/top_level_await/nested/b.js
index 3bd241b50..3bd241b50 100644
--- a/tests/testdata/run/top_level_await/nested/b.js
+++ b/tests/specs/run/top_level_await/top_level_await/nested/b.js
diff --git a/tests/testdata/run/top_level_await/nested/main.js b/tests/specs/run/top_level_await/top_level_await/nested/main.js
index ed46a4717..ed46a4717 100644
--- a/tests/testdata/run/top_level_await/nested/main.js
+++ b/tests/specs/run/top_level_await/top_level_await/nested/main.js
diff --git a/tests/testdata/run/top_level_await/order.js b/tests/specs/run/top_level_await/top_level_await/order.js
index 30659cdfb..30659cdfb 100644
--- a/tests/testdata/run/top_level_await/order.js
+++ b/tests/specs/run/top_level_await/top_level_await/order.js
diff --git a/tests/testdata/run/top_level_await/order.out b/tests/specs/run/top_level_await/top_level_await/order.out
index 4cc27858c..4cc27858c 100644
--- a/tests/testdata/run/top_level_await/order.out
+++ b/tests/specs/run/top_level_await/top_level_await/order.out
diff --git a/tests/specs/run/top_level_await/top_level_await/tla/a.js b/tests/specs/run/top_level_await/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await/top_level_await/tla/b.js b/tests/specs/run/top_level_await/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await/top_level_await/tla/c.js b/tests/specs/run/top_level_await/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await/top_level_await/tla/d.js b/tests/specs/run/top_level_await/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await/top_level_await/tla/order.js b/tests/specs/run/top_level_await/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await/top_level_await/tla/parent.js b/tests/specs/run/top_level_await/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await/top_level_await/tla2/a.js b/tests/specs/run/top_level_await/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await/top_level_await/tla2/b.js b/tests/specs/run/top_level_await/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await/top_level_await/tla3/b.js b/tests/specs/run/top_level_await/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_await/top_level_await/top_level_await.js b/tests/specs/run/top_level_await/top_level_await/top_level_await.js
new file mode 100644
index 000000000..31c83caed
--- /dev/null
+++ b/tests/specs/run/top_level_await/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/testdata/run/top_level_await/top_level_await.out b/tests/specs/run/top_level_await/top_level_await/top_level_await.out
index 4b65d15fe..4b65d15fe 100644
--- a/tests/testdata/run/top_level_await/top_level_await.out
+++ b/tests/specs/run/top_level_await/top_level_await/top_level_await.out
diff --git a/tests/testdata/run/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await/top_level_await/top_level_await.ts
index 8d47ceb21..8d47ceb21 100644
--- a/tests/testdata/run/top_level_await/top_level_await.ts
+++ b/tests/specs/run/top_level_await/top_level_await/top_level_await.ts
diff --git a/tests/testdata/run/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await/top_level_await/top_level_for_await.js
index a330f6c71..a330f6c71 100644
--- a/tests/testdata/run/top_level_await/top_level_for_await.js
+++ b/tests/specs/run/top_level_await/top_level_await/top_level_for_await.js
diff --git a/tests/testdata/run/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await/top_level_await/top_level_for_await.out
index 4539bbf2d..4539bbf2d 100644
--- a/tests/testdata/run/top_level_await/top_level_for_await.out
+++ b/tests/specs/run/top_level_await/top_level_await/top_level_for_await.out
diff --git a/tests/testdata/run/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await/top_level_await/top_level_for_await.ts
index 9179322d7..9179322d7 100644
--- a/tests/testdata/run/top_level_await/top_level_for_await.ts
+++ b/tests/specs/run/top_level_await/top_level_await/top_level_for_await.ts
diff --git a/tests/testdata/run/top_level_await/unresolved.js b/tests/specs/run/top_level_await/top_level_await/unresolved.js
index 231a8cd63..231a8cd63 100644
--- a/tests/testdata/run/top_level_await/unresolved.js
+++ b/tests/specs/run/top_level_await/top_level_await/unresolved.js
diff --git a/tests/testdata/run/top_level_await/unresolved.out b/tests/specs/run/top_level_await/top_level_await/unresolved.out
index 1f4ea5d38..1f4ea5d38 100644
--- a/tests/testdata/run/top_level_await/unresolved.out
+++ b/tests/specs/run/top_level_await/top_level_await/unresolved.out
diff --git a/tests/specs/run/top_level_await_circular/__test__.jsonc b/tests/specs/run/top_level_await_circular/__test__.jsonc
new file mode 100644
index 000000000..3e236b210
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-read top_level_await/circular.js",
+ "output": "top_level_await/circular.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/circular.js b/tests/specs/run/top_level_await_circular/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/circular.out b/tests/specs/run/top_level_await_circular/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/loop.js b/tests/specs/run/top_level_await_circular/top_level_await/loop.js
new file mode 100644
index 000000000..f229e03f6
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/loop.out b/tests/specs/run/top_level_await_circular/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/nested.out b/tests/specs/run/top_level_await_circular/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/nested/a.js b/tests/specs/run/top_level_await_circular/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/nested/b.js b/tests/specs/run/top_level_await_circular/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/nested/main.js b/tests/specs/run/top_level_await_circular/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/order.js b/tests/specs/run/top_level_await_circular/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/order.out b/tests/specs/run/top_level_await_circular/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla/a.js b/tests/specs/run/top_level_await_circular/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla/b.js b/tests/specs/run/top_level_await_circular/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla/c.js b/tests/specs/run/top_level_await_circular/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla/d.js b/tests/specs/run/top_level_await_circular/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla/order.js b/tests/specs/run/top_level_await_circular/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla/parent.js b/tests/specs/run/top_level_await_circular/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla2/a.js b/tests/specs/run/top_level_await_circular/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla2/b.js b/tests/specs/run/top_level_await_circular/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla3/b.js b/tests/specs/run/top_level_await_circular/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await_circular/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/testdata/run/top_level_await/top_level_await.js b/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.js
index ea319ea12..ea319ea12 100644
--- a/tests/testdata/run/top_level_await/top_level_await.js
+++ b/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.js
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.out b/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/unresolved.js b/tests/specs/run/top_level_await_circular/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_await_circular/top_level_await/unresolved.out b/tests/specs/run/top_level_await_circular/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_await_circular/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_await_loop/__test__.jsonc b/tests/specs/run/top_level_await_loop/__test__.jsonc
new file mode 100644
index 000000000..b2f5c84c0
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read top_level_await/loop.js",
+ "output": "top_level_await/loop.out"
+}
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/circular.js b/tests/specs/run/top_level_await_loop/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/circular.out b/tests/specs/run/top_level_await_loop/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/loop.js b/tests/specs/run/top_level_await_loop/top_level_await/loop.js
new file mode 100644
index 000000000..f229e03f6
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/loop.out b/tests/specs/run/top_level_await_loop/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/nested.out b/tests/specs/run/top_level_await_loop/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/nested/a.js b/tests/specs/run/top_level_await_loop/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/nested/b.js b/tests/specs/run/top_level_await_loop/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/nested/main.js b/tests/specs/run/top_level_await_loop/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/order.js b/tests/specs/run/top_level_await_loop/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/order.out b/tests/specs/run/top_level_await_loop/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla/a.js b/tests/specs/run/top_level_await_loop/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla/b.js b/tests/specs/run/top_level_await_loop/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla/c.js b/tests/specs/run/top_level_await_loop/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla/d.js b/tests/specs/run/top_level_await_loop/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla/order.js b/tests/specs/run/top_level_await_loop/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla/parent.js b/tests/specs/run/top_level_await_loop/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla2/a.js b/tests/specs/run/top_level_await_loop/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla2/b.js b/tests/specs/run/top_level_await_loop/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla3/b.js b/tests/specs/run/top_level_await_loop/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await_loop/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.js b/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.out b/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/unresolved.js b/tests/specs/run/top_level_await_loop/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_await_loop/top_level_await/unresolved.out b/tests/specs/run/top_level_await_loop/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_await_loop/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_await_nested/__test__.jsonc b/tests/specs/run/top_level_await_nested/__test__.jsonc
new file mode 100644
index 000000000..376180ecd
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read top_level_await/nested/main.js",
+ "output": "top_level_await/nested.out"
+}
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/circular.js b/tests/specs/run/top_level_await_nested/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/circular.out b/tests/specs/run/top_level_await_nested/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/testdata/run/top_level_await/loop.js b/tests/specs/run/top_level_await_nested/top_level_await/loop.js
index 415db5ec7..415db5ec7 100644
--- a/tests/testdata/run/top_level_await/loop.js
+++ b/tests/specs/run/top_level_await_nested/top_level_await/loop.js
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/loop.out b/tests/specs/run/top_level_await_nested/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/nested.out b/tests/specs/run/top_level_await_nested/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/nested/a.js b/tests/specs/run/top_level_await_nested/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/nested/b.js b/tests/specs/run/top_level_await_nested/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/nested/main.js b/tests/specs/run/top_level_await_nested/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/order.js b/tests/specs/run/top_level_await_nested/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/order.out b/tests/specs/run/top_level_await_nested/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla/a.js b/tests/specs/run/top_level_await_nested/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla/b.js b/tests/specs/run/top_level_await_nested/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla/c.js b/tests/specs/run/top_level_await_nested/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla/d.js b/tests/specs/run/top_level_await_nested/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla/order.js b/tests/specs/run/top_level_await_nested/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla/parent.js b/tests/specs/run/top_level_await_nested/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla2/a.js b/tests/specs/run/top_level_await_nested/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla2/b.js b/tests/specs/run/top_level_await_nested/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla3/b.js b/tests/specs/run/top_level_await_nested/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await_nested/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.js b/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.out b/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/unresolved.js b/tests/specs/run/top_level_await_nested/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_await_nested/top_level_await/unresolved.out b/tests/specs/run/top_level_await_nested/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_await_nested/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_await_order/__test__.jsonc b/tests/specs/run/top_level_await_order/__test__.jsonc
new file mode 100644
index 000000000..65d00d607
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read top_level_await/order.js",
+ "output": "top_level_await/order.out"
+}
diff --git a/tests/specs/run/top_level_await_order/top_level_await/circular.js b/tests/specs/run/top_level_await_order/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_await_order/top_level_await/circular.out b/tests/specs/run/top_level_await_order/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_await_order/top_level_await/loop.js b/tests/specs/run/top_level_await_order/top_level_await/loop.js
new file mode 100644
index 000000000..415db5ec7
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./run/top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./run/top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_await_order/top_level_await/loop.out b/tests/specs/run/top_level_await_order/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_await_order/top_level_await/nested.out b/tests/specs/run/top_level_await_order/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_await_order/top_level_await/nested/a.js b/tests/specs/run/top_level_await_order/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_await_order/top_level_await/nested/b.js b/tests/specs/run/top_level_await_order/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_await_order/top_level_await/nested/main.js b/tests/specs/run/top_level_await_order/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_await_order/top_level_await/order.js b/tests/specs/run/top_level_await_order/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_await_order/top_level_await/order.out b/tests/specs/run/top_level_await_order/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla/a.js b/tests/specs/run/top_level_await_order/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla/b.js b/tests/specs/run/top_level_await_order/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla/c.js b/tests/specs/run/top_level_await_order/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla/d.js b/tests/specs/run/top_level_await_order/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla/order.js b/tests/specs/run/top_level_await_order/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla/parent.js b/tests/specs/run/top_level_await_order/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla2/a.js b/tests/specs/run/top_level_await_order/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla2/b.js b/tests/specs/run/top_level_await_order/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla3/b.js b/tests/specs/run/top_level_await_order/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await_order/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await_order/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_await_order/top_level_await/top_level_await.js b/tests/specs/run/top_level_await_order/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_order/top_level_await/top_level_await.out b/tests/specs/run/top_level_await_order/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_await_order/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await_order/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_order/top_level_await/unresolved.js b/tests/specs/run/top_level_await_order/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_await_order/top_level_await/unresolved.out b/tests/specs/run/top_level_await_order/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_await_order/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_await_ts/__test__.jsonc b/tests/specs/run/top_level_await_ts/__test__.jsonc
new file mode 100644
index 000000000..15f937df1
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --allow-read top_level_await/top_level_await.ts",
+ "output": "top_level_await/top_level_await.out"
+}
diff --git a/tests/specs/run/top_level_await_ts/hello.txt b/tests/specs/run/top_level_await_ts/hello.txt
new file mode 100644
index 000000000..6769dd60b
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/hello.txt
@@ -0,0 +1 @@
+Hello world! \ No newline at end of file
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/circular.js b/tests/specs/run/top_level_await_ts/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/circular.out b/tests/specs/run/top_level_await_ts/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/loop.js b/tests/specs/run/top_level_await_ts/top_level_await/loop.js
new file mode 100644
index 000000000..415db5ec7
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./run/top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./run/top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/loop.out b/tests/specs/run/top_level_await_ts/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/nested.out b/tests/specs/run/top_level_await_ts/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/nested/a.js b/tests/specs/run/top_level_await_ts/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/nested/b.js b/tests/specs/run/top_level_await_ts/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/nested/main.js b/tests/specs/run/top_level_await_ts/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/order.js b/tests/specs/run/top_level_await_ts/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/order.out b/tests/specs/run/top_level_await_ts/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla/a.js b/tests/specs/run/top_level_await_ts/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla/b.js b/tests/specs/run/top_level_await_ts/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla/c.js b/tests/specs/run/top_level_await_ts/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla/d.js b/tests/specs/run/top_level_await_ts/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla/order.js b/tests/specs/run/top_level_await_ts/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla/parent.js b/tests/specs/run/top_level_await_ts/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla2/a.js b/tests/specs/run/top_level_await_ts/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla2/b.js b/tests/specs/run/top_level_await_ts/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla3/b.js b/tests/specs/run/top_level_await_ts/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await_ts/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.js b/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.out b/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..48f66545a
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/unresolved.js b/tests/specs/run/top_level_await_ts/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_await_ts/top_level_await/unresolved.out b/tests/specs/run/top_level_await_ts/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_await_ts/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_await_unresolved/__test__.jsonc b/tests/specs/run/top_level_await_unresolved/__test__.jsonc
new file mode 100644
index 000000000..a92774c1b
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run top_level_await/unresolved.js",
+ "output": "top_level_await/unresolved.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/circular.js b/tests/specs/run/top_level_await_unresolved/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/circular.out b/tests/specs/run/top_level_await_unresolved/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/loop.js b/tests/specs/run/top_level_await_unresolved/top_level_await/loop.js
new file mode 100644
index 000000000..415db5ec7
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./run/top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./run/top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/loop.out b/tests/specs/run/top_level_await_unresolved/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/nested.out b/tests/specs/run/top_level_await_unresolved/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/nested/a.js b/tests/specs/run/top_level_await_unresolved/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/nested/b.js b/tests/specs/run/top_level_await_unresolved/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/nested/main.js b/tests/specs/run/top_level_await_unresolved/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/order.js b/tests/specs/run/top_level_await_unresolved/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/order.out b/tests/specs/run/top_level_await_unresolved/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla/a.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla/b.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla/c.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla/d.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla/order.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla/parent.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla2/a.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla2/b.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla3/b.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_await_unresolved/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.js b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.out b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.ts b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.js b/tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.out b/tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_await_unresolved/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_for_await/__test__.jsonc b/tests/specs/run/top_level_for_await/__test__.jsonc
new file mode 100644
index 000000000..198008560
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet top_level_await/top_level_for_await.js",
+ "output": "top_level_await/top_level_for_await.out"
+}
diff --git a/tests/specs/run/top_level_for_await/top_level_await/circular.js b/tests/specs/run/top_level_for_await/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_for_await/top_level_await/circular.out b/tests/specs/run/top_level_for_await/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_for_await/top_level_await/loop.js b/tests/specs/run/top_level_for_await/top_level_await/loop.js
new file mode 100644
index 000000000..415db5ec7
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./run/top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./run/top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_for_await/top_level_await/loop.out b/tests/specs/run/top_level_for_await/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_for_await/top_level_await/nested.out b/tests/specs/run/top_level_for_await/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_for_await/top_level_await/nested/a.js b/tests/specs/run/top_level_for_await/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_for_await/top_level_await/nested/b.js b/tests/specs/run/top_level_for_await/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_for_await/top_level_await/nested/main.js b/tests/specs/run/top_level_for_await/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_for_await/top_level_await/order.js b/tests/specs/run/top_level_for_await/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_for_await/top_level_await/order.out b/tests/specs/run/top_level_for_await/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla/a.js b/tests/specs/run/top_level_for_await/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla/b.js b/tests/specs/run/top_level_for_await/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla/c.js b/tests/specs/run/top_level_for_await/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla/d.js b/tests/specs/run/top_level_for_await/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla/order.js b/tests/specs/run/top_level_for_await/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla/parent.js b/tests/specs/run/top_level_for_await/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla2/a.js b/tests/specs/run/top_level_for_await/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla2/b.js b/tests/specs/run/top_level_for_await/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla3/b.js b/tests/specs/run/top_level_for_await/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_for_await/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_for_await/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_for_await/top_level_await/top_level_await.js b/tests/specs/run/top_level_for_await/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_for_await/top_level_await/top_level_await.out b/tests/specs/run/top_level_for_await/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_for_await/top_level_await/top_level_await.ts b/tests/specs/run/top_level_for_await/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_for_await/top_level_await/unresolved.js b/tests/specs/run/top_level_for_await/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_for_await/top_level_await/unresolved.out b/tests/specs/run/top_level_for_await/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_for_await/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/top_level_for_await_ts/__test__.jsonc b/tests/specs/run/top_level_for_await_ts/__test__.jsonc
new file mode 100644
index 000000000..22314e8e0
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet top_level_await/top_level_for_await.ts",
+ "output": "top_level_await/top_level_for_await.out"
+}
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/circular.js b/tests/specs/run/top_level_for_await_ts/top_level_await/circular.js
new file mode 100644
index 000000000..ff2964b6a
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/circular.js
@@ -0,0 +1,8 @@
+import { foo } from "./tla3/timeout_loop.js";
+
+export const collection = [];
+
+const mod = await import("./tla3/b.js");
+
+console.log("foo in main", foo);
+console.log("mod", mod);
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/circular.out b/tests/specs/run/top_level_for_await_ts/top_level_await/circular.out
new file mode 100644
index 000000000..c88978961
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/circular.out
@@ -0,0 +1,10 @@
+timeout loop 0
+timeout loop 1
+timeout loop 2
+timeout loop 3
+timeout loop 4
+timeout loop 5
+error: Top-level await promise never resolved
+const mod = await import("./tla3/b.js");
+ ^
+ at <anonymous> ([WILDCARD]/top_level_await/circular.js:5:13)
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/loop.js b/tests/specs/run/top_level_for_await_ts/top_level_await/loop.js
new file mode 100644
index 000000000..415db5ec7
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/loop.js
@@ -0,0 +1,20 @@
+const importsDir = Deno.readDirSync(
+ Deno.realPathSync("./run/top_level_await/tla2"),
+);
+
+const resolvedPaths = [];
+
+for (const { name } of importsDir) {
+ const filePath = Deno.realPathSync(`./run/top_level_await/tla2/${name}`);
+ resolvedPaths.push(filePath);
+}
+
+resolvedPaths.sort();
+
+for (const filePath of resolvedPaths) {
+ console.log("loading", filePath);
+ const mod = await import(`file://${filePath}`);
+ console.log("loaded", mod);
+}
+
+console.log("all loaded");
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/loop.out b/tests/specs/run/top_level_for_await_ts/top_level_await/loop.out
new file mode 100644
index 000000000..1bdffbf66
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/loop.out
@@ -0,0 +1,5 @@
+loading [WILDCARD]a.js
+loaded [Module: null prototype] { default: [class Foo] }
+loading [WILDCARD]b.js
+loaded [Module: null prototype] { default: [class Bar] }
+all loaded
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/nested.out b/tests/specs/run/top_level_for_await_ts/top_level_await/nested.out
new file mode 100644
index 000000000..8a1218a10
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/nested.out
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/nested/a.js b/tests/specs/run/top_level_for_await_ts/top_level_await/nested/a.js
new file mode 100644
index 000000000..74837d4ba
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/nested/a.js
@@ -0,0 +1,3 @@
+console.log(2);
+await import("./b.js");
+console.log(4);
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/nested/b.js b/tests/specs/run/top_level_for_await_ts/top_level_await/nested/b.js
new file mode 100644
index 000000000..3bd241b50
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/nested/b.js
@@ -0,0 +1 @@
+console.log(3);
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/nested/main.js b/tests/specs/run/top_level_for_await_ts/top_level_await/nested/main.js
new file mode 100644
index 000000000..ed46a4717
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/nested/main.js
@@ -0,0 +1,3 @@
+console.log(1);
+await import("./a.js");
+console.log(5);
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/order.js b/tests/specs/run/top_level_for_await_ts/top_level_await/order.js
new file mode 100644
index 000000000..30659cdfb
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/order.js
@@ -0,0 +1,21 @@
+// Ported from Node
+// https://github.com/nodejs/node/blob/54746bb763ebea0dc7e99d88ff4b379bcd680964/test/es-module/test-esm-tla.mjs
+
+const { default: order } = await import("./tla/parent.js");
+
+console.log("order", JSON.stringify(order));
+
+if (
+ !(
+ order[0] === "order" &&
+ order[1] === "b" &&
+ order[2] === "c" &&
+ order[3] === "d" &&
+ order[4] === "a" &&
+ order[5] === "parent"
+ )
+) {
+ throw new Error("TLA wrong order");
+}
+
+console.log("TLA order correct");
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/order.out b/tests/specs/run/top_level_for_await_ts/top_level_await/order.out
new file mode 100644
index 000000000..4cc27858c
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/order.out
@@ -0,0 +1,2 @@
+order ["order","b","c","d","a","parent"]
+TLA order correct
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla/a.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/a.js
new file mode 100644
index 000000000..c3ef3f7db
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/a.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("b");
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla/b.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/b.js
new file mode 100644
index 000000000..3271c92d8
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/b.js
@@ -0,0 +1,7 @@
+import order from "./order.js";
+
+await new Promise((resolve) => {
+ setTimeout(resolve, 200);
+});
+
+order.push("a");
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla/c.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/c.js
new file mode 100644
index 000000000..806eb0a8b
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/c.js
@@ -0,0 +1,3 @@
+import order from "./order.js";
+
+order.push("c");
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla/d.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/d.js
new file mode 100644
index 000000000..283ebf817
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/d.js
@@ -0,0 +1,8 @@
+import order from "./order.js";
+
+const end = Date.now() + 500;
+while (end < Date.now()) {
+ // pass
+}
+
+order.push("d");
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla/order.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/order.js
new file mode 100644
index 000000000..f213a562c
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/order.js
@@ -0,0 +1 @@
+export default ["order"];
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla/parent.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/parent.js
new file mode 100644
index 000000000..1ecc15463
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla/parent.js
@@ -0,0 +1,9 @@
+import order from "./order.js";
+import "./a.js";
+import "./b.js";
+import "./c.js";
+import "./d.js";
+
+order.push("parent");
+
+export default order;
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla2/a.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla2/a.js
new file mode 100644
index 000000000..d07bcb94d
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla2/a.js
@@ -0,0 +1,5 @@
+export default class Foo {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla2/b.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla2/b.js
new file mode 100644
index 000000000..68e357c1e
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla2/b.js
@@ -0,0 +1,5 @@
+export default class Bar {
+ constructor(message) {
+ this.message = message;
+ }
+}
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla3/b.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla3/b.js
new file mode 100644
index 000000000..d0349545e
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla3/b.js
@@ -0,0 +1,7 @@
+import { foo } from "./timeout_loop.js";
+import { collection } from "../circular.js";
+
+console.log("collection in b", collection);
+console.log("foo in b", foo);
+
+export const a = "a";
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/tla3/timeout_loop.js b/tests/specs/run/top_level_for_await_ts/top_level_await/tla3/timeout_loop.js
new file mode 100644
index 000000000..860e6cd2a
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/tla3/timeout_loop.js
@@ -0,0 +1,23 @@
+export const foo = "foo";
+
+export function delay(ms) {
+ return new Promise((res) =>
+ setTimeout(() => {
+ res();
+ }, ms)
+ );
+}
+
+let i = 0;
+
+async function timeoutLoop() {
+ await delay(1000);
+ console.log("timeout loop", i);
+ i++;
+ if (i > 5) {
+ return;
+ }
+ timeoutLoop();
+}
+
+timeoutLoop();
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.js b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.js
new file mode 100644
index 000000000..ea319ea12
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.js
@@ -0,0 +1,3 @@
+const buf = await Deno.readFile("./assets/hello.txt");
+const n = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.out b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.out
new file mode 100644
index 000000000..4b65d15fe
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.out
@@ -0,0 +1,3 @@
+Hello world!
+
+write 12
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.ts b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.ts
new file mode 100644
index 000000000..8d47ceb21
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_await.ts
@@ -0,0 +1,3 @@
+const buf: Uint8Array = await Deno.readFile("./assets/hello.txt");
+const n: number = await Deno.stdout.write(buf);
+console.log(`\n\nwrite ${n}`);
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.js b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.js
new file mode 100644
index 000000000..a330f6c71
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.js
@@ -0,0 +1,10 @@
+function* asyncGenerator() {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.out b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.out
new file mode 100644
index 000000000..4539bbf2d
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.out
@@ -0,0 +1,3 @@
+0
+1
+2
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.ts b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.ts
new file mode 100644
index 000000000..9179322d7
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/top_level_for_await.ts
@@ -0,0 +1,10 @@
+async function* asyncGenerator(): AsyncIterableIterator<number> {
+ let i = 0;
+ while (i < 3) {
+ yield i++;
+ }
+}
+
+for await (const num of asyncGenerator()) {
+ console.log(num);
+}
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.js b/tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.js
new file mode 100644
index 000000000..231a8cd63
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.js
@@ -0,0 +1 @@
+await new Promise(() => {});
diff --git a/tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.out b/tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.out
new file mode 100644
index 000000000..1f4ea5d38
--- /dev/null
+++ b/tests/specs/run/top_level_for_await_ts/top_level_await/unresolved.out
@@ -0,0 +1,4 @@
+error: Top-level await promise never resolved
+await new Promise(() => {});
+^
+ at <anonymous> ([WILDCARD]top_level_await/unresolved.js:1:1)
diff --git a/tests/specs/run/ts_decorators/__test__.jsonc b/tests/specs/run/ts_decorators/__test__.jsonc
new file mode 100644
index 000000000..96e7cdf30
--- /dev/null
+++ b/tests/specs/run/ts_decorators/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --check decorators/experimental/ts/main.ts",
+ "output": "decorators/experimental/ts/main.out"
+}
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/deno.json b/tests/specs/run/ts_decorators/decorators/experimental/deno.json
new file mode 100644
index 000000000..504cd646e
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/deno.json
@@ -0,0 +1,5 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true
+ }
+}
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/no_check/main.out b/tests/specs/run/ts_decorators/decorators/experimental/no_check/main.out
new file mode 100644
index 000000000..015f7076e
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/no_check/main.out
@@ -0,0 +1,3 @@
+a(): evaluated
+a(): called
+method
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/no_check/main.ts b/tests/specs/run/ts_decorators/decorators/experimental/no_check/main.ts
new file mode 100644
index 000000000..9f7ec550d
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/no_check/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("a(): evaluated");
+ return (
+ _target: any,
+ _propertyKey: string,
+ _descriptor: PropertyDescriptor,
+ ) => {
+ console.log("a(): called");
+ };
+}
+
+class B {
+ @a()
+ method() {
+ console.log("method");
+ }
+}
+
+const b = new B();
+b.method();
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/runtime/main.out b/tests/specs/run/ts_decorators/decorators/experimental/runtime/main.out
new file mode 100644
index 000000000..0fc1d4590
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/runtime/main.out
@@ -0,0 +1,7 @@
+@A evaluated
+@B evaluated
+@B called
+@A called
+fn() called from @A
+fn() called from @B
+C.test() called
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/runtime/main.ts b/tests/specs/run/ts_decorators/decorators/experimental/runtime/main.ts
new file mode 100644
index 000000000..40a26bbd4
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/runtime/main.ts
@@ -0,0 +1,42 @@
+// deno-lint-ignore-file
+function a() {
+ console.log("@A evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@A called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @A");
+ fn();
+ };
+ };
+}
+
+function b() {
+ console.log("@B evaluated");
+ return function (
+ target: any,
+ propertyKey: string,
+ descriptor: PropertyDescriptor,
+ ) {
+ console.log("@B called");
+ const fn = descriptor.value;
+ descriptor.value = function () {
+ console.log("fn() called from @B");
+ fn();
+ };
+ };
+}
+
+class C {
+ @a()
+ @b()
+ static test() {
+ console.log("C.test() called");
+ }
+}
+
+C.test();
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/ts/main.out b/tests/specs/run/ts_decorators/decorators/experimental/ts/main.out
new file mode 100644
index 000000000..ea64fbaa6
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/ts/main.out
@@ -0,0 +1,3 @@
+Warning experimentalDecorators compiler option is deprecated and may be removed at any time
+Check [WILDCARD]
+SomeClass { someField: "asdf" }
diff --git a/tests/specs/run/ts_decorators/decorators/experimental/ts/main.ts b/tests/specs/run/ts_decorators/decorators/experimental/ts/main.ts
new file mode 100644
index 000000000..95fba6cd4
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/experimental/ts/main.ts
@@ -0,0 +1,14 @@
+// deno-lint-ignore-file
+
+function Decorate() {
+ return function (constructor: any): any {
+ return class extends constructor {
+ protected someField: string = "asdf";
+ };
+ };
+}
+
+@Decorate()
+class SomeClass {}
+
+console.log(new SomeClass());
diff --git a/tests/specs/run/ts_decorators/decorators/tc39_proposal/main.out b/tests/specs/run/ts_decorators/decorators/tc39_proposal/main.out
new file mode 100644
index 000000000..39394952e
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/tc39_proposal/main.out
@@ -0,0 +1,3 @@
+starting m with arguments 1
+C.m 1
+ending m
diff --git a/tests/specs/run/ts_decorators/decorators/tc39_proposal/main.ts b/tests/specs/run/ts_decorators/decorators/tc39_proposal/main.ts
new file mode 100644
index 000000000..00c8a8502
--- /dev/null
+++ b/tests/specs/run/ts_decorators/decorators/tc39_proposal/main.ts
@@ -0,0 +1,21 @@
+// deno-lint-ignore no-explicit-any
+function logged(value: any, { kind, name }: { kind: string; name: string }) {
+ if (kind === "method") {
+ return function (...args: unknown[]) {
+ console.log(`starting ${name} with arguments ${args.join(", ")}`);
+ // @ts-ignore this has implicit any type
+ const ret = value.call(this, ...args);
+ console.log(`ending ${name}`);
+ return ret;
+ };
+ }
+}
+
+class C {
+ @logged
+ m(arg: number) {
+ console.log("C.m", arg);
+ }
+}
+
+new C().m(1);
diff --git a/tests/specs/run/ts_import_from_js/005_more_imports.ts b/tests/specs/run/ts_import_from_js/005_more_imports.ts
new file mode 100644
index 000000000..c69556be1
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/005_more_imports.ts
@@ -0,0 +1,11 @@
+import { printHello3, returnsFoo2, returnsHi } from "./mod1.ts";
+
+printHello3();
+
+if (returnsHi() !== "Hi") {
+ throw Error("Unexpected");
+}
+
+if (returnsFoo2() !== "Foo") {
+ throw Error("Unexpected");
+}
diff --git a/tests/specs/run/ts_import_from_js/__test__.jsonc b/tests/specs/run/ts_import_from_js/__test__.jsonc
new file mode 100644
index 000000000..de11873cb
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --quiet --reload ts_import_from_js/main.js",
+ "output": "ts_import_from_js/main.out"
+}
diff --git a/tests/specs/run/ts_import_from_js/mod1.ts b/tests/specs/run/ts_import_from_js/mod1.ts
new file mode 100644
index 000000000..5e58f432e
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/mod1.ts
@@ -0,0 +1,17 @@
+import { printHello2, returnsFoo } from "./subdir2/mod2.ts";
+
+export function returnsHi(): string {
+ return "Hi";
+}
+
+export function returnsFoo2(): string {
+ return returnsFoo();
+}
+
+export function printHello3() {
+ printHello2();
+}
+
+export function throwsError() {
+ throw Error("exception from mod1");
+}
diff --git a/tests/specs/run/ts_import_from_js/mod2.ts b/tests/specs/run/ts_import_from_js/mod2.ts
new file mode 100644
index 000000000..ce1adc0e8
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/mod2.ts
@@ -0,0 +1 @@
+export { printHello } from "./print_hello.ts";
diff --git a/tests/specs/run/ts_import_from_js/print_hello.ts b/tests/specs/run/ts_import_from_js/print_hello.ts
new file mode 100644
index 000000000..b9c0ad527
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/print_hello.ts
@@ -0,0 +1,3 @@
+export function printHello() {
+ console.log("Hello");
+}
diff --git a/tests/specs/run/ts_import_from_js/subdir2/dynamic_import.ts b/tests/specs/run/ts_import_from_js/subdir2/dynamic_import.ts
new file mode 100644
index 000000000..59beb64c3
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/subdir2/dynamic_import.ts
@@ -0,0 +1,4 @@
+(async () => {
+ const { printHello } = await import("../mod2.ts");
+ printHello();
+})();
diff --git a/tests/specs/run/ts_import_from_js/subdir2/mod2.ts b/tests/specs/run/ts_import_from_js/subdir2/mod2.ts
new file mode 100644
index 000000000..9071d0aeb
--- /dev/null
+++ b/tests/specs/run/ts_import_from_js/subdir2/mod2.ts
@@ -0,0 +1,9 @@
+import { printHello } from "../print_hello.ts";
+
+export function returnsFoo(): string {
+ return "Foo";
+}
+
+export function printHello2() {
+ printHello();
+}
diff --git a/tests/testdata/run/ts_import_from_js/deps.js b/tests/specs/run/ts_import_from_js/ts_import_from_js/deps.js
index 746b5cf6b..746b5cf6b 100644
--- a/tests/testdata/run/ts_import_from_js/deps.js
+++ b/tests/specs/run/ts_import_from_js/ts_import_from_js/deps.js
diff --git a/tests/testdata/run/ts_import_from_js/main.js b/tests/specs/run/ts_import_from_js/ts_import_from_js/main.js
index 32d6c29a1..32d6c29a1 100644
--- a/tests/testdata/run/ts_import_from_js/main.js
+++ b/tests/specs/run/ts_import_from_js/ts_import_from_js/main.js
diff --git a/tests/testdata/run/ts_import_from_js/main.out b/tests/specs/run/ts_import_from_js/ts_import_from_js/main.out
index e1d7a869f..e1d7a869f 100644
--- a/tests/testdata/run/ts_import_from_js/main.out
+++ b/tests/specs/run/ts_import_from_js/ts_import_from_js/main.out
diff --git a/tests/specs/run/ts_type_imports/__test__.jsonc b/tests/specs/run/ts_type_imports/__test__.jsonc
new file mode 100644
index 000000000..e9a925d1a
--- /dev/null
+++ b/tests/specs/run/ts_type_imports/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check ts_type_imports.ts",
+ "output": "ts_type_imports.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/ts_type_imports.ts b/tests/specs/run/ts_type_imports/ts_type_imports.ts
index 73c779156..73c779156 100644
--- a/tests/testdata/run/ts_type_imports.ts
+++ b/tests/specs/run/ts_type_imports/ts_type_imports.ts
diff --git a/tests/testdata/run/ts_type_imports.ts.out b/tests/specs/run/ts_type_imports/ts_type_imports.ts.out
index 3972d6a97..3972d6a97 100644
--- a/tests/testdata/run/ts_type_imports.ts.out
+++ b/tests/specs/run/ts_type_imports/ts_type_imports.ts.out
diff --git a/tests/specs/run/ts_type_imports/ts_type_imports_foo.ts b/tests/specs/run/ts_type_imports/ts_type_imports_foo.ts
new file mode 100644
index 000000000..db20773f6
--- /dev/null
+++ b/tests/specs/run/ts_type_imports/ts_type_imports_foo.ts
@@ -0,0 +1 @@
+export type Foo = Map<string, number>;
diff --git a/tests/specs/run/ts_type_only_import/__test__.jsonc b/tests/specs/run/ts_type_only_import/__test__.jsonc
new file mode 100644
index 000000000..977a6aba7
--- /dev/null
+++ b/tests/specs/run/ts_type_only_import/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --check ts_type_only_import.ts",
+ "output": "ts_type_only_import.ts.out"
+}
diff --git a/tests/specs/run/ts_type_only_import/ts_type_only_import.d.ts b/tests/specs/run/ts_type_only_import/ts_type_only_import.d.ts
new file mode 100644
index 000000000..d48e4b48a
--- /dev/null
+++ b/tests/specs/run/ts_type_only_import/ts_type_only_import.d.ts
@@ -0,0 +1,3 @@
+export interface HelloWorld {
+ a: string;
+}
diff --git a/tests/testdata/run/ts_type_only_import.ts b/tests/specs/run/ts_type_only_import/ts_type_only_import.ts
index 53e114373..53e114373 100644
--- a/tests/testdata/run/ts_type_only_import.ts
+++ b/tests/specs/run/ts_type_only_import/ts_type_only_import.ts
diff --git a/tests/testdata/run/ts_type_only_import.ts.out b/tests/specs/run/ts_type_only_import/ts_type_only_import.ts.out
index 42852cd26..42852cd26 100644
--- a/tests/testdata/run/ts_type_only_import.ts.out
+++ b/tests/specs/run/ts_type_only_import/ts_type_only_import.ts.out
diff --git a/tests/specs/run/ts_without_extension/__test__.jsonc b/tests/specs/run/ts_without_extension/__test__.jsonc
new file mode 100644
index 000000000..a6c713bf5
--- /dev/null
+++ b/tests/specs/run/ts_without_extension/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --ext ts --check ts_without_extension",
+ "output": "ts_without_extension.out",
+ "exitCode": 0
+}
diff --git a/tests/specs/run/ts_without_extension/ts_without_extension b/tests/specs/run/ts_without_extension/ts_without_extension
new file mode 100644
index 000000000..f10891d7a
--- /dev/null
+++ b/tests/specs/run/ts_without_extension/ts_without_extension
@@ -0,0 +1,3 @@
+interface Lollipop {}
+
+console.log("executing typescript with no extension");
diff --git a/tests/specs/run/ts_without_extension/ts_without_extension.out b/tests/specs/run/ts_without_extension/ts_without_extension.out
new file mode 100644
index 000000000..4f02dd4c3
--- /dev/null
+++ b/tests/specs/run/ts_without_extension/ts_without_extension.out
@@ -0,0 +1,2 @@
+Check [WILDCARD]/ts_without_extension
+executing typescript with no extension
diff --git a/tests/specs/run/tsx_imports/046_jsx_test.tsx b/tests/specs/run/tsx_imports/046_jsx_test.tsx
new file mode 100644
index 000000000..5ed3ff2fa
--- /dev/null
+++ b/tests/specs/run/tsx_imports/046_jsx_test.tsx
@@ -0,0 +1,14 @@
+declare global {
+ export namespace JSX {
+ interface IntrinsicElements {
+ [elemName: string]: any;
+ }
+ }
+}
+const React = {
+ createElement(factory: any, props: any, ...children: any[]) {
+ return { factory, props, children };
+ },
+};
+const View = () => <div class="deno">land</div>;
+console.log(<View />);
diff --git a/tests/specs/run/tsx_imports/__test__.jsonc b/tests/specs/run/tsx_imports/__test__.jsonc
new file mode 100644
index 000000000..2026804ad
--- /dev/null
+++ b/tests/specs/run/tsx_imports/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --check tsx_imports/tsx_imports.ts",
+ "output": "tsx_imports/tsx_imports.ts.out"
+}
diff --git a/tests/testdata/run/tsx_imports/Component.tsx b/tests/specs/run/tsx_imports/tsx_imports/Component.tsx
index c466a28ca..c466a28ca 100644
--- a/tests/testdata/run/tsx_imports/Component.tsx
+++ b/tests/specs/run/tsx_imports/tsx_imports/Component.tsx
diff --git a/tests/testdata/run/tsx_imports/tsx_imports.ts b/tests/specs/run/tsx_imports/tsx_imports/tsx_imports.ts
index 44ba10b7a..44ba10b7a 100644
--- a/tests/testdata/run/tsx_imports/tsx_imports.ts
+++ b/tests/specs/run/tsx_imports/tsx_imports/tsx_imports.ts
diff --git a/tests/testdata/run/tsx_imports/tsx_imports.ts.out b/tests/specs/run/tsx_imports/tsx_imports/tsx_imports.ts.out
index 1f8b10d32..1f8b10d32 100644
--- a/tests/testdata/run/tsx_imports/tsx_imports.ts.out
+++ b/tests/specs/run/tsx_imports/tsx_imports/tsx_imports.ts.out
diff --git a/tests/specs/run/type_definitions/__test__.jsonc b/tests/specs/run/type_definitions/__test__.jsonc
new file mode 100644
index 000000000..5030612a5
--- /dev/null
+++ b/tests/specs/run/type_definitions/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload type_definitions.ts",
+ "output": "type_definitions.ts.out"
+}
diff --git a/tests/specs/run/type_definitions/type_definitions.ts b/tests/specs/run/type_definitions/type_definitions.ts
new file mode 100644
index 000000000..0297c7e3d
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions.ts
@@ -0,0 +1,12 @@
+// deno-lint-ignore-file
+
+// @deno-types="../type_definitions/foo.d.ts"
+import { foo } from "./type_definitions/foo.js";
+// @deno-types="../type_definitions/fizz.d.ts"
+import "./type_definitions/fizz.js";
+
+import * as qat from "./type_definitions/qat.ts";
+
+console.log(foo);
+console.log(fizz);
+console.log(qat.qat);
diff --git a/tests/testdata/run/type_definitions.ts.out b/tests/specs/run/type_definitions/type_definitions.ts.out
index b4fa88c50..b4fa88c50 100644
--- a/tests/testdata/run/type_definitions.ts.out
+++ b/tests/specs/run/type_definitions/type_definitions.ts.out
diff --git a/tests/specs/run/type_definitions/type_definitions/bar.d.ts b/tests/specs/run/type_definitions/type_definitions/bar.d.ts
new file mode 100644
index 000000000..d43335dbb
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/bar.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="baz" />
+
+declare namespace bar {
+ export class Bar {
+ baz: string;
+ }
+}
diff --git a/tests/specs/run/type_definitions/type_definitions/bar.js b/tests/specs/run/type_definitions/type_definitions/bar.js
new file mode 100644
index 000000000..e9c2e5193
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/bar.js
@@ -0,0 +1,5 @@
+export class Bar {
+ constructor() {
+ this.baz = "baz";
+ }
+}
diff --git a/tests/specs/run/type_definitions/type_definitions/fizz.d.ts b/tests/specs/run/type_definitions/type_definitions/fizz.d.ts
new file mode 100644
index 000000000..34eb41b96
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/fizz.d.ts
@@ -0,0 +1,2 @@
+/** A global value. */
+declare const fizz: string;
diff --git a/tests/specs/run/type_definitions/type_definitions/fizz.js b/tests/specs/run/type_definitions/type_definitions/fizz.js
new file mode 100644
index 000000000..852162c94
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/fizz.js
@@ -0,0 +1 @@
+globalThis.fizz = "fizz";
diff --git a/tests/specs/run/type_definitions/type_definitions/foo.d.ts b/tests/specs/run/type_definitions/type_definitions/foo.d.ts
new file mode 100644
index 000000000..ce39201e1
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/foo.d.ts
@@ -0,0 +1,2 @@
+/** An exported value. */
+export const foo: string;
diff --git a/tests/specs/run/type_definitions/type_definitions/foo.js b/tests/specs/run/type_definitions/type_definitions/foo.js
new file mode 100644
index 000000000..61d366eb2
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/foo.js
@@ -0,0 +1 @@
+export const foo = "foo";
diff --git a/tests/specs/run/type_definitions/type_definitions/qat.ts b/tests/specs/run/type_definitions/type_definitions/qat.ts
new file mode 100644
index 000000000..6196c9d38
--- /dev/null
+++ b/tests/specs/run/type_definitions/type_definitions/qat.ts
@@ -0,0 +1 @@
+export const qat = "qat";
diff --git a/tests/specs/run/type_definitions_for_export/__test__.jsonc b/tests/specs/run/type_definitions_for_export/__test__.jsonc
new file mode 100644
index 000000000..cf32bc960
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --reload --check type_definitions_for_export.ts",
+ "output": "type_definitions_for_export.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/type_definitions_for_export/export_type_def.ts b/tests/specs/run/type_definitions_for_export/export_type_def.ts
new file mode 100644
index 000000000..e33b70a64
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/export_type_def.ts
@@ -0,0 +1,2 @@
+// @deno-types="./type_definitions/foo.d.ts"
+export { foo } from "./type_definitions/foo.js";
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/bar.d.ts b/tests/specs/run/type_definitions_for_export/type_definitions/bar.d.ts
new file mode 100644
index 000000000..d43335dbb
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/bar.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="baz" />
+
+declare namespace bar {
+ export class Bar {
+ baz: string;
+ }
+}
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/bar.js b/tests/specs/run/type_definitions_for_export/type_definitions/bar.js
new file mode 100644
index 000000000..e9c2e5193
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/bar.js
@@ -0,0 +1,5 @@
+export class Bar {
+ constructor() {
+ this.baz = "baz";
+ }
+}
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/fizz.d.ts b/tests/specs/run/type_definitions_for_export/type_definitions/fizz.d.ts
new file mode 100644
index 000000000..34eb41b96
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/fizz.d.ts
@@ -0,0 +1,2 @@
+/** A global value. */
+declare const fizz: string;
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/fizz.js b/tests/specs/run/type_definitions_for_export/type_definitions/fizz.js
new file mode 100644
index 000000000..852162c94
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/fizz.js
@@ -0,0 +1 @@
+globalThis.fizz = "fizz";
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/foo.d.ts b/tests/specs/run/type_definitions_for_export/type_definitions/foo.d.ts
new file mode 100644
index 000000000..ce39201e1
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/foo.d.ts
@@ -0,0 +1,2 @@
+/** An exported value. */
+export const foo: string;
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/foo.js b/tests/specs/run/type_definitions_for_export/type_definitions/foo.js
new file mode 100644
index 000000000..61d366eb2
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/foo.js
@@ -0,0 +1 @@
+export const foo = "foo";
diff --git a/tests/specs/run/type_definitions_for_export/type_definitions/qat.ts b/tests/specs/run/type_definitions_for_export/type_definitions/qat.ts
new file mode 100644
index 000000000..6196c9d38
--- /dev/null
+++ b/tests/specs/run/type_definitions_for_export/type_definitions/qat.ts
@@ -0,0 +1 @@
+export const qat = "qat";
diff --git a/tests/testdata/run/type_definitions_for_export.ts b/tests/specs/run/type_definitions_for_export/type_definitions_for_export.ts
index 1f17b4962..1f17b4962 100644
--- a/tests/testdata/run/type_definitions_for_export.ts
+++ b/tests/specs/run/type_definitions_for_export/type_definitions_for_export.ts
diff --git a/tests/testdata/run/type_definitions_for_export.ts.out b/tests/specs/run/type_definitions_for_export/type_definitions_for_export.ts.out
index 8f1240bc7..8f1240bc7 100644
--- a/tests/testdata/run/type_definitions_for_export.ts.out
+++ b/tests/specs/run/type_definitions_for_export/type_definitions_for_export.ts.out
diff --git a/tests/specs/run/type_directives_01/__test__.jsonc b/tests/specs/run/type_directives_01/__test__.jsonc
new file mode 100644
index 000000000..08826b776
--- /dev/null
+++ b/tests/specs/run/type_directives_01/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --check=all -L debug type_directives_01.ts",
+ "output": "type_directives_01.ts.out"
+}
diff --git a/tests/testdata/run/type_directives_01.ts b/tests/specs/run/type_directives_01/type_directives_01.ts
index 2129d90b4..2129d90b4 100644
--- a/tests/testdata/run/type_directives_01.ts
+++ b/tests/specs/run/type_directives_01/type_directives_01.ts
diff --git a/tests/testdata/run/type_directives_01.ts.out b/tests/specs/run/type_directives_01/type_directives_01.ts.out
index 466218a96..466218a96 100644
--- a/tests/testdata/run/type_directives_01.ts.out
+++ b/tests/specs/run/type_directives_01/type_directives_01.ts.out
diff --git a/tests/specs/run/type_directives_02/__test__.jsonc b/tests/specs/run/type_directives_02/__test__.jsonc
new file mode 100644
index 000000000..e731e393e
--- /dev/null
+++ b/tests/specs/run/type_directives_02/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --check=all -L debug type_directives_02.ts",
+ "output": "type_directives_02.ts.out"
+}
diff --git a/tests/specs/run/type_directives_02/type_directives_02.ts b/tests/specs/run/type_directives_02/type_directives_02.ts
new file mode 100644
index 000000000..f829c0cec
--- /dev/null
+++ b/tests/specs/run/type_directives_02/type_directives_02.ts
@@ -0,0 +1,3 @@
+import * as foo from "./type_reference.js";
+
+console.log(foo.foo);
diff --git a/tests/specs/run/type_directives_02/type_directives_02.ts.out b/tests/specs/run/type_directives_02/type_directives_02.ts.out
new file mode 100644
index 000000000..d9bd38150
--- /dev/null
+++ b/tests/specs/run/type_directives_02/type_directives_02.ts.out
@@ -0,0 +1,3 @@
+[WILDCARD]
+DEBUG TS - host.getSourceFile("file:///[WILDCARD]/type_reference.d.ts", Latest)
+[WILDCARD] \ No newline at end of file
diff --git a/tests/specs/run/type_directives_02/type_reference.d.ts b/tests/specs/run/type_directives_02/type_reference.d.ts
new file mode 100644
index 000000000..f9b8de5ed
--- /dev/null
+++ b/tests/specs/run/type_directives_02/type_reference.d.ts
@@ -0,0 +1 @@
+export const foo: "foo";
diff --git a/tests/specs/run/type_directives_02/type_reference.js b/tests/specs/run/type_directives_02/type_reference.js
new file mode 100644
index 000000000..917d89198
--- /dev/null
+++ b/tests/specs/run/type_directives_02/type_reference.js
@@ -0,0 +1,3 @@
+/// <reference types="./type_reference.d.ts" />
+
+export const foo = "foo";
diff --git a/tests/specs/run/type_headers_deno_types/__test__.jsonc b/tests/specs/run/type_headers_deno_types/__test__.jsonc
new file mode 100644
index 000000000..1a95fa2d4
--- /dev/null
+++ b/tests/specs/run/type_headers_deno_types/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-import --reload --check type_headers_deno_types.ts",
+ "output": "type_headers_deno_types.ts.out"
+}
diff --git a/tests/testdata/run/type_headers_deno_types.ts b/tests/specs/run/type_headers_deno_types/type_headers_deno_types.ts
index 197ac1801..197ac1801 100644
--- a/tests/testdata/run/type_headers_deno_types.ts
+++ b/tests/specs/run/type_headers_deno_types/type_headers_deno_types.ts
diff --git a/tests/testdata/run/type_headers_deno_types.ts.out b/tests/specs/run/type_headers_deno_types/type_headers_deno_types.ts.out
index 798f98311..798f98311 100644
--- a/tests/testdata/run/type_headers_deno_types.ts.out
+++ b/tests/specs/run/type_headers_deno_types/type_headers_deno_types.ts.out
diff --git a/tests/specs/run/unbuffered_stderr/__test__.jsonc b/tests/specs/run/unbuffered_stderr/__test__.jsonc
new file mode 100644
index 000000000..4b8a091f2
--- /dev/null
+++ b/tests/specs/run/unbuffered_stderr/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload unbuffered_stderr.ts",
+ "output": "unbuffered_stderr.ts.out"
+}
diff --git a/tests/testdata/run/unbuffered_stderr.ts b/tests/specs/run/unbuffered_stderr/unbuffered_stderr.ts
index 0f1d2a999..0f1d2a999 100644
--- a/tests/testdata/run/unbuffered_stderr.ts
+++ b/tests/specs/run/unbuffered_stderr/unbuffered_stderr.ts
diff --git a/tests/testdata/run/unbuffered_stderr.ts.out b/tests/specs/run/unbuffered_stderr/unbuffered_stderr.ts.out
index c1b0730e0..c1b0730e0 100644
--- a/tests/testdata/run/unbuffered_stderr.ts.out
+++ b/tests/specs/run/unbuffered_stderr/unbuffered_stderr.ts.out
diff --git a/tests/specs/run/unbuffered_stdout/__test__.jsonc b/tests/specs/run/unbuffered_stdout/__test__.jsonc
new file mode 100644
index 000000000..4225e9d0a
--- /dev/null
+++ b/tests/specs/run/unbuffered_stdout/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload unbuffered_stdout.ts",
+ "output": "unbuffered_stdout.ts.out"
+}
diff --git a/tests/testdata/run/unbuffered_stdout.ts b/tests/specs/run/unbuffered_stdout/unbuffered_stdout.ts
index 9f1e07a97..9f1e07a97 100644
--- a/tests/testdata/run/unbuffered_stdout.ts
+++ b/tests/specs/run/unbuffered_stdout/unbuffered_stdout.ts
diff --git a/tests/testdata/run/unbuffered_stdout.ts.out b/tests/specs/run/unbuffered_stdout/unbuffered_stdout.ts.out
index 2e65efe2a..2e65efe2a 100644
--- a/tests/testdata/run/unbuffered_stdout.ts.out
+++ b/tests/specs/run/unbuffered_stdout/unbuffered_stdout.ts.out
diff --git a/tests/specs/run/unhandled_rejection/__test__.jsonc b/tests/specs/run/unhandled_rejection/__test__.jsonc
new file mode 100644
index 000000000..3a2229206
--- /dev/null
+++ b/tests/specs/run/unhandled_rejection/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --check unhandled_rejection.ts",
+ "output": "unhandled_rejection.ts.out"
+}
diff --git a/tests/testdata/run/unhandled_rejection.ts b/tests/specs/run/unhandled_rejection/unhandled_rejection.ts
index 388583434..388583434 100644
--- a/tests/testdata/run/unhandled_rejection.ts
+++ b/tests/specs/run/unhandled_rejection/unhandled_rejection.ts
diff --git a/tests/specs/run/unhandled_rejection/unhandled_rejection.ts.out b/tests/specs/run/unhandled_rejection/unhandled_rejection.ts.out
new file mode 100644
index 000000000..fc5a3915f
--- /dev/null
+++ b/tests/specs/run/unhandled_rejection/unhandled_rejection.ts.out
@@ -0,0 +1,9 @@
+[WILDCARD]
+unhandled rejection at: Promise {
+ <rejected> Error: bar not available
+ at new Foo (file:///[WILDCARD]/unhandled_rejection.ts:8:20)
+ at file:///[WILDCARD]/unhandled_rejection.ts:12:1
+} reason: Error: bar not available
+ at new Foo (file:///[WILDCARD]/unhandled_rejection.ts:8:20)
+ at file:///[WILDCARD]/unhandled_rejection.ts:12:1
+unhandled rejection at: Promise { <rejected> undefined } reason: undefined
diff --git a/tests/specs/run/unhandled_rejection_dynamic_import/__test__.jsonc b/tests/specs/run/unhandled_rejection_dynamic_import/__test__.jsonc
new file mode 100644
index 000000000..6ca0d093b
--- /dev/null
+++ b/tests/specs/run/unhandled_rejection_dynamic_import/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-read unhandled_rejection_dynamic_import/main.ts",
+ "output": "unhandled_rejection_dynamic_import/main.ts.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts b/tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/import.ts
index b490f2c20..b490f2c20 100644
--- a/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts
+++ b/tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/import.ts
diff --git a/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts b/tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/main.ts
index 244d84467..244d84467 100644
--- a/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts
+++ b/tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/main.ts
diff --git a/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out b/tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/main.ts.out
index f44c6d2ff..f44c6d2ff 100644
--- a/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out
+++ b/tests/specs/run/unhandled_rejection_dynamic_import/unhandled_rejection_dynamic_import/main.ts.out
diff --git a/tests/specs/run/unhandled_rejection_dynamic_import2/__test__.jsonc b/tests/specs/run/unhandled_rejection_dynamic_import2/__test__.jsonc
new file mode 100644
index 000000000..a4e588f46
--- /dev/null
+++ b/tests/specs/run/unhandled_rejection_dynamic_import2/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --allow-read unhandled_rejection_dynamic_import2/main.ts",
+ "output": "unhandled_rejection_dynamic_import2/main.ts.out"
+}
diff --git a/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts b/tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/import.ts
index f84297afd..f84297afd 100644
--- a/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts
+++ b/tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/import.ts
diff --git a/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts b/tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/main.ts
index 3da2e1d19..3da2e1d19 100644
--- a/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts
+++ b/tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/main.ts
diff --git a/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out b/tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/main.ts.out
index 0a913a4b5..0a913a4b5 100644
--- a/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out
+++ b/tests/specs/run/unhandled_rejection_dynamic_import2/unhandled_rejection_dynamic_import2/main.ts.out
diff --git a/tests/specs/run/unhandled_rejection_sync_error/__test__.jsonc b/tests/specs/run/unhandled_rejection_sync_error/__test__.jsonc
new file mode 100644
index 000000000..3f09f9c36
--- /dev/null
+++ b/tests/specs/run/unhandled_rejection_sync_error/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --check unhandled_rejection_sync_error.ts",
+ "output": "unhandled_rejection_sync_error.ts.out"
+}
diff --git a/tests/testdata/run/unhandled_rejection_sync_error.ts b/tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts
index 0dabb1cb7..0dabb1cb7 100644
--- a/tests/testdata/run/unhandled_rejection_sync_error.ts
+++ b/tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts
diff --git a/tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts.out b/tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts.out
new file mode 100644
index 000000000..0c1115ef2
--- /dev/null
+++ b/tests/specs/run/unhandled_rejection_sync_error/unhandled_rejection_sync_error.ts.out
@@ -0,0 +1,6 @@
+[WILDCARD]
+unhandled rejection at: Promise {
+ <rejected> Error: boom!
+ at file:///[WILDCARD]unhandled_rejection_sync_error.ts:6:7
+} reason: Error: boom!
+ at file:///[WILDCARD]unhandled_rejection_sync_error.ts:6:7
diff --git a/tests/specs/run/unsafe_proto/__test__.jsonc b/tests/specs/run/unsafe_proto/__test__.jsonc
new file mode 100644
index 000000000..d1c608b51
--- /dev/null
+++ b/tests/specs/run/unsafe_proto/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run -A unsafe_proto/main.js",
+ "output": "unsafe_proto/main.out",
+ "exitCode": 0
+}
diff --git a/tests/testdata/run/unsafe_proto/main.js b/tests/specs/run/unsafe_proto/unsafe_proto/main.js
index eb95c55a0..eb95c55a0 100644
--- a/tests/testdata/run/unsafe_proto/main.js
+++ b/tests/specs/run/unsafe_proto/unsafe_proto/main.js
diff --git a/tests/testdata/run/unsafe_proto/main.out b/tests/specs/run/unsafe_proto/unsafe_proto/main.out
index 4b095fd0f..4b095fd0f 100644
--- a/tests/testdata/run/unsafe_proto/main.out
+++ b/tests/specs/run/unsafe_proto/unsafe_proto/main.out
diff --git a/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out b/tests/specs/run/unsafe_proto/unsafe_proto/main_with_unsafe_proto_flag.out
index bb101b641..bb101b641 100644
--- a/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out
+++ b/tests/specs/run/unsafe_proto/unsafe_proto/main_with_unsafe_proto_flag.out
diff --git a/tests/testdata/run/unsafe_proto/worker.js b/tests/specs/run/unsafe_proto/unsafe_proto/worker.js
index b22bc8713..b22bc8713 100644
--- a/tests/testdata/run/unsafe_proto/worker.js
+++ b/tests/specs/run/unsafe_proto/unsafe_proto/worker.js
diff --git a/tests/specs/run/unsafe_proto_flag/__test__.jsonc b/tests/specs/run/unsafe_proto_flag/__test__.jsonc
new file mode 100644
index 000000000..8bd2b56ff
--- /dev/null
+++ b/tests/specs/run/unsafe_proto_flag/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run -A --unstable-unsafe-proto unsafe_proto/main.js",
+ "output": "unsafe_proto/main_with_unsafe_proto_flag.out",
+ "exitCode": 0
+}
diff --git a/tests/specs/run/unsafe_proto_flag/unsafe_proto/main.js b/tests/specs/run/unsafe_proto_flag/unsafe_proto/main.js
new file mode 100644
index 000000000..eb95c55a0
--- /dev/null
+++ b/tests/specs/run/unsafe_proto_flag/unsafe_proto/main.js
@@ -0,0 +1,5 @@
+console.log(Object.hasOwn(Object.prototype, "__proto__"));
+
+new Worker(import.meta.resolve("./worker.js"), {
+ type: "module",
+});
diff --git a/tests/specs/run/unsafe_proto_flag/unsafe_proto/main.out b/tests/specs/run/unsafe_proto_flag/unsafe_proto/main.out
new file mode 100644
index 000000000..4b095fd0f
--- /dev/null
+++ b/tests/specs/run/unsafe_proto_flag/unsafe_proto/main.out
@@ -0,0 +1,2 @@
+false
+false
diff --git a/tests/specs/run/unsafe_proto_flag/unsafe_proto/main_with_unsafe_proto_flag.out b/tests/specs/run/unsafe_proto_flag/unsafe_proto/main_with_unsafe_proto_flag.out
new file mode 100644
index 000000000..bb101b641
--- /dev/null
+++ b/tests/specs/run/unsafe_proto_flag/unsafe_proto/main_with_unsafe_proto_flag.out
@@ -0,0 +1,2 @@
+true
+true
diff --git a/tests/specs/run/unsafe_proto_flag/unsafe_proto/worker.js b/tests/specs/run/unsafe_proto_flag/unsafe_proto/worker.js
new file mode 100644
index 000000000..b22bc8713
--- /dev/null
+++ b/tests/specs/run/unsafe_proto_flag/unsafe_proto/worker.js
@@ -0,0 +1,2 @@
+console.log(Object.hasOwn(Object.prototype, "__proto__"));
+close();
diff --git a/tests/specs/run/unstable_broadcast_channel_disabled/__test__.jsonc b/tests/specs/run/unstable_broadcast_channel_disabled/__test__.jsonc
new file mode 100644
index 000000000..fa12c9f91
--- /dev/null
+++ b/tests/specs/run/unstable_broadcast_channel_disabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read unstable_broadcast_channel.js",
+ "output": "unstable_broadcast_channel.disabled.out"
+}
diff --git a/tests/testdata/run/unstable_broadcast_channel.disabled.out b/tests/specs/run/unstable_broadcast_channel_disabled/unstable_broadcast_channel.disabled.out
index 775866352..775866352 100644
--- a/tests/testdata/run/unstable_broadcast_channel.disabled.out
+++ b/tests/specs/run/unstable_broadcast_channel_disabled/unstable_broadcast_channel.disabled.out
diff --git a/tests/testdata/run/unstable_broadcast_channel.js b/tests/specs/run/unstable_broadcast_channel_disabled/unstable_broadcast_channel.js
index b8576aa22..b8576aa22 100644
--- a/tests/testdata/run/unstable_broadcast_channel.js
+++ b/tests/specs/run/unstable_broadcast_channel_disabled/unstable_broadcast_channel.js
diff --git a/tests/specs/run/unstable_broadcast_channel_enabled/__test__.jsonc b/tests/specs/run/unstable_broadcast_channel_enabled/__test__.jsonc
new file mode 100644
index 000000000..f93c7785a
--- /dev/null
+++ b/tests/specs/run/unstable_broadcast_channel_enabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read --unstable-broadcast-channel unstable_broadcast_channel.js",
+ "output": "unstable_broadcast_channel.enabled.out"
+}
diff --git a/tests/testdata/run/unstable_broadcast_channel.enabled.out b/tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.enabled.out
index b3701ce44..b3701ce44 100644
--- a/tests/testdata/run/unstable_broadcast_channel.enabled.out
+++ b/tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.enabled.out
diff --git a/tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.js b/tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.js
new file mode 100644
index 000000000..b8576aa22
--- /dev/null
+++ b/tests/specs/run/unstable_broadcast_channel_enabled/unstable_broadcast_channel.js
@@ -0,0 +1,10 @@
+const scope = import.meta.url.slice(-7) === "#worker" ? "worker" : "main";
+
+console.log(scope, globalThis.BroadcastChannel);
+
+if (scope === "worker") {
+ postMessage("done");
+} else {
+ const worker = new Worker(`${import.meta.url}#worker`, { type: "module" });
+ worker.onmessage = () => Deno.exit(0);
+}
diff --git a/tests/specs/run/unstable_cron_disabled/__test__.jsonc b/tests/specs/run/unstable_cron_disabled/__test__.jsonc
new file mode 100644
index 000000000..be89db40b
--- /dev/null
+++ b/tests/specs/run/unstable_cron_disabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read unstable_cron.js",
+ "output": "unstable_cron.disabled.out"
+}
diff --git a/tests/testdata/run/unstable_cron.disabled.out b/tests/specs/run/unstable_cron_disabled/unstable_cron.disabled.out
index 775866352..775866352 100644
--- a/tests/testdata/run/unstable_cron.disabled.out
+++ b/tests/specs/run/unstable_cron_disabled/unstable_cron.disabled.out
diff --git a/tests/testdata/run/unstable_cron.js b/tests/specs/run/unstable_cron_disabled/unstable_cron.js
index 3114f6e55..3114f6e55 100644
--- a/tests/testdata/run/unstable_cron.js
+++ b/tests/specs/run/unstable_cron_disabled/unstable_cron.js
diff --git a/tests/specs/run/unstable_cron_enabled/__test__.jsonc b/tests/specs/run/unstable_cron_enabled/__test__.jsonc
new file mode 100644
index 000000000..07a37e3fe
--- /dev/null
+++ b/tests/specs/run/unstable_cron_enabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read --unstable-cron unstable_cron.js",
+ "output": "unstable_cron.enabled.out"
+}
diff --git a/tests/testdata/run/unstable_cron.enabled.out b/tests/specs/run/unstable_cron_enabled/unstable_cron.enabled.out
index d18304f1f..d18304f1f 100644
--- a/tests/testdata/run/unstable_cron.enabled.out
+++ b/tests/specs/run/unstable_cron_enabled/unstable_cron.enabled.out
diff --git a/tests/specs/run/unstable_cron_enabled/unstable_cron.js b/tests/specs/run/unstable_cron_enabled/unstable_cron.js
new file mode 100644
index 000000000..3114f6e55
--- /dev/null
+++ b/tests/specs/run/unstable_cron_enabled/unstable_cron.js
@@ -0,0 +1,10 @@
+const scope = import.meta.url.slice(-7) === "#worker" ? "worker" : "main";
+
+console.log(scope, Deno.cron);
+
+if (scope === "worker") {
+ postMessage("done");
+} else {
+ const worker = new Worker(`${import.meta.url}#worker`, { type: "module" });
+ worker.onmessage = () => Deno.exit(0);
+}
diff --git a/tests/specs/run/unstable_kv_disabled/__test__.jsonc b/tests/specs/run/unstable_kv_disabled/__test__.jsonc
new file mode 100644
index 000000000..6521c180d
--- /dev/null
+++ b/tests/specs/run/unstable_kv_disabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read unstable_kv.js",
+ "output": "unstable_kv.disabled.out"
+}
diff --git a/tests/testdata/run/unstable_kv.disabled.out b/tests/specs/run/unstable_kv_disabled/unstable_kv.disabled.out
index 0d8ac4410..0d8ac4410 100644
--- a/tests/testdata/run/unstable_kv.disabled.out
+++ b/tests/specs/run/unstable_kv_disabled/unstable_kv.disabled.out
diff --git a/tests/testdata/run/unstable_kv.js b/tests/specs/run/unstable_kv_disabled/unstable_kv.js
index 17c0e05aa..17c0e05aa 100644
--- a/tests/testdata/run/unstable_kv.js
+++ b/tests/specs/run/unstable_kv_disabled/unstable_kv.js
diff --git a/tests/specs/run/unstable_kv_enabled/__test__.jsonc b/tests/specs/run/unstable_kv_enabled/__test__.jsonc
new file mode 100644
index 000000000..6e9fea100
--- /dev/null
+++ b/tests/specs/run/unstable_kv_enabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read --unstable-kv unstable_kv.js",
+ "output": "unstable_kv.enabled.out"
+}
diff --git a/tests/testdata/run/unstable_kv.enabled.out b/tests/specs/run/unstable_kv_enabled/unstable_kv.enabled.out
index a1356cefc..a1356cefc 100644
--- a/tests/testdata/run/unstable_kv.enabled.out
+++ b/tests/specs/run/unstable_kv_enabled/unstable_kv.enabled.out
diff --git a/tests/specs/run/unstable_kv_enabled/unstable_kv.js b/tests/specs/run/unstable_kv_enabled/unstable_kv.js
new file mode 100644
index 000000000..17c0e05aa
--- /dev/null
+++ b/tests/specs/run/unstable_kv_enabled/unstable_kv.js
@@ -0,0 +1,14 @@
+const scope = import.meta.url.slice(-7) === "#worker" ? "worker" : "main";
+
+console.log(scope, Deno.AtomicOperation);
+console.log(scope, Deno.Kv);
+console.log(scope, Deno.KvListIterator);
+console.log(scope, Deno.KvU64);
+console.log(scope, Deno.openKv);
+
+if (scope === "worker") {
+ postMessage("done");
+} else {
+ const worker = new Worker(`${import.meta.url}#worker`, { type: "module" });
+ worker.onmessage = () => Deno.exit(0);
+}
diff --git a/tests/specs/run/unstable_net_disabled/__test__.jsonc b/tests/specs/run/unstable_net_disabled/__test__.jsonc
new file mode 100644
index 000000000..6bccb2ef6
--- /dev/null
+++ b/tests/specs/run/unstable_net_disabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read unstable_net.js",
+ "output": "unstable_net.disabled.out"
+}
diff --git a/tests/testdata/run/unstable_net.disabled.out b/tests/specs/run/unstable_net_disabled/unstable_net.disabled.out
index 3562f72fd..3562f72fd 100644
--- a/tests/testdata/run/unstable_net.disabled.out
+++ b/tests/specs/run/unstable_net_disabled/unstable_net.disabled.out
diff --git a/tests/testdata/run/unstable_net.js b/tests/specs/run/unstable_net_disabled/unstable_net.js
index 4492b202b..4492b202b 100644
--- a/tests/testdata/run/unstable_net.js
+++ b/tests/specs/run/unstable_net_disabled/unstable_net.js
diff --git a/tests/specs/run/unstable_net_enabled/__test__.jsonc b/tests/specs/run/unstable_net_enabled/__test__.jsonc
new file mode 100644
index 000000000..8e9696f44
--- /dev/null
+++ b/tests/specs/run/unstable_net_enabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read --unstable-net unstable_net.js",
+ "output": "unstable_net.enabled.out"
+}
diff --git a/tests/testdata/run/unstable_net.enabled.out b/tests/specs/run/unstable_net_enabled/unstable_net.enabled.out
index 8b86637f3..8b86637f3 100644
--- a/tests/testdata/run/unstable_net.enabled.out
+++ b/tests/specs/run/unstable_net_enabled/unstable_net.enabled.out
diff --git a/tests/specs/run/unstable_net_enabled/unstable_net.js b/tests/specs/run/unstable_net_enabled/unstable_net.js
new file mode 100644
index 000000000..4492b202b
--- /dev/null
+++ b/tests/specs/run/unstable_net_enabled/unstable_net.js
@@ -0,0 +1,11 @@
+const scope = import.meta.url.slice(-7) === "#worker" ? "worker" : "main";
+
+console.log(scope, Deno.listenDatagram);
+console.log(scope, globalThis.WebSocketStream);
+
+if (scope === "worker") {
+ postMessage("done");
+} else {
+ const worker = new Worker(`${import.meta.url}#worker`, { type: "module" });
+ worker.onmessage = () => Deno.exit(0);
+}
diff --git a/tests/specs/run/unstable_worker/__test__.jsonc b/tests/specs/run/unstable_worker/__test__.jsonc
new file mode 100644
index 000000000..7a6e9bfbe
--- /dev/null
+++ b/tests/specs/run/unstable_worker/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --reload --quiet --allow-read unstable_worker.ts",
+ "output": "unstable_worker.ts.out"
+}
diff --git a/tests/specs/run/unstable_worker/unstable_worker.ts b/tests/specs/run/unstable_worker/unstable_worker.ts
new file mode 100644
index 000000000..b0554c5b2
--- /dev/null
+++ b/tests/specs/run/unstable_worker/unstable_worker.ts
@@ -0,0 +1,6 @@
+const w = new Worker(
+ import.meta.resolve("./worker_unstable.ts"),
+ { type: "module", name: "Unstable Worker" },
+);
+
+w.postMessage({});
diff --git a/tests/testdata/run/unstable_worker.ts.out b/tests/specs/run/unstable_worker/unstable_worker.ts.out
index 182dc58a4..182dc58a4 100644
--- a/tests/testdata/run/unstable_worker.ts.out
+++ b/tests/specs/run/unstable_worker/unstable_worker.ts.out
diff --git a/tests/specs/run/unstable_worker/worker_unstable.ts b/tests/specs/run/unstable_worker/worker_unstable.ts
new file mode 100644
index 000000000..219f34e7b
--- /dev/null
+++ b/tests/specs/run/unstable_worker/worker_unstable.ts
@@ -0,0 +1,5 @@
+console.log(Deno.permissions.query);
+console.log(Deno.consoleSize);
+self.onmessage = () => {
+ self.close();
+};
diff --git a/tests/specs/run/unstable_worker_options_disabled/__test__.jsonc b/tests/specs/run/unstable_worker_options_disabled/__test__.jsonc
new file mode 100644
index 000000000..30087244e
--- /dev/null
+++ b/tests/specs/run/unstable_worker_options_disabled/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-read unstable_worker_options.js",
+ "output": "unstable_worker_options.disabled.out",
+ "exitCode": 70
+}
diff --git a/tests/testdata/run/unstable_worker_options.disabled.out b/tests/specs/run/unstable_worker_options_disabled/unstable_worker_options.disabled.out
index ba50ca539..ba50ca539 100644
--- a/tests/testdata/run/unstable_worker_options.disabled.out
+++ b/tests/specs/run/unstable_worker_options_disabled/unstable_worker_options.disabled.out
diff --git a/tests/testdata/run/unstable_worker_options.js b/tests/specs/run/unstable_worker_options_disabled/unstable_worker_options.js
index 213eb3ee6..213eb3ee6 100644
--- a/tests/testdata/run/unstable_worker_options.js
+++ b/tests/specs/run/unstable_worker_options_disabled/unstable_worker_options.js
diff --git a/tests/specs/run/unstable_worker_options_enabled/__test__.jsonc b/tests/specs/run/unstable_worker_options_enabled/__test__.jsonc
new file mode 100644
index 000000000..1d397c5f2
--- /dev/null
+++ b/tests/specs/run/unstable_worker_options_enabled/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read --unstable-worker-options unstable_worker_options.js",
+ "output": "unstable_worker_options.enabled.out"
+}
diff --git a/tests/testdata/run/unstable_worker_options.enabled.out b/tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.enabled.out
index 57a52b019..57a52b019 100644
--- a/tests/testdata/run/unstable_worker_options.enabled.out
+++ b/tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.enabled.out
diff --git a/tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.js b/tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.js
new file mode 100644
index 000000000..213eb3ee6
--- /dev/null
+++ b/tests/specs/run/unstable_worker_options_enabled/unstable_worker_options.js
@@ -0,0 +1,19 @@
+const scope = import.meta.url.slice(-7) === "#worker" ? "worker" : "main";
+
+new Worker(`data:application/javascript;base64,${btoa(`postMessage("ok");`)}`, {
+ type: "module",
+ deno: {
+ permissions: {
+ read: true,
+ },
+ },
+}).onmessage = ({ data }) => {
+ console.log(scope, data);
+
+ if (scope === "main") {
+ const worker = new Worker(`${import.meta.url}#worker`, { type: "module" });
+ worker.onmessage = () => Deno.exit(0);
+ } else {
+ postMessage("done");
+ }
+};
diff --git a/tests/specs/run/unsupported_dynamic_import_scheme/__test__.jsonc b/tests/specs/run/unsupported_dynamic_import_scheme/__test__.jsonc
new file mode 100644
index 000000000..7f71dceba
--- /dev/null
+++ b/tests/specs/run/unsupported_dynamic_import_scheme/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "eval import('xxx:')",
+ "output": "unsupported_dynamic_import_scheme.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/unsupported_dynamic_import_scheme.out b/tests/specs/run/unsupported_dynamic_import_scheme/unsupported_dynamic_import_scheme.out
index c708fced4..c708fced4 100644
--- a/tests/testdata/run/unsupported_dynamic_import_scheme.out
+++ b/tests/specs/run/unsupported_dynamic_import_scheme/unsupported_dynamic_import_scheme.out
diff --git a/tests/specs/run/v8_flags_env_run/__test__.jsonc b/tests/specs/run/v8_flags_env_run/__test__.jsonc
new file mode 100644
index 000000000..39ea666b8
--- /dev/null
+++ b/tests/specs/run/v8_flags_env_run/__test__.jsonc
@@ -0,0 +1,7 @@
+{
+ "args": "run v8_flags.js",
+ "output": "v8_flags.js.out",
+ "envs": {
+ "DENO_V8_FLAGS": "--expose-gc"
+ }
+}
diff --git a/tests/testdata/run/v8_flags.js b/tests/specs/run/v8_flags_env_run/v8_flags.js
index f7999c4af..f7999c4af 100644
--- a/tests/testdata/run/v8_flags.js
+++ b/tests/specs/run/v8_flags_env_run/v8_flags.js
diff --git a/tests/testdata/run/v8_flags.js.out b/tests/specs/run/v8_flags_env_run/v8_flags.js.out
index e2dbde096..e2dbde096 100644
--- a/tests/testdata/run/v8_flags.js.out
+++ b/tests/specs/run/v8_flags_env_run/v8_flags.js.out
diff --git a/tests/specs/run/v8_flags_run/__test__.jsonc b/tests/specs/run/v8_flags_run/__test__.jsonc
new file mode 100644
index 000000000..ff21fb8c5
--- /dev/null
+++ b/tests/specs/run/v8_flags_run/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --v8-flags=--expose-gc v8_flags.js",
+ "output": "v8_flags.js.out"
+}
diff --git a/tests/specs/run/v8_flags_run/v8_flags.js b/tests/specs/run/v8_flags_run/v8_flags.js
new file mode 100644
index 000000000..f7999c4af
--- /dev/null
+++ b/tests/specs/run/v8_flags_run/v8_flags.js
@@ -0,0 +1 @@
+console.log(typeof gc);
diff --git a/tests/specs/run/v8_flags_run/v8_flags.js.out b/tests/specs/run/v8_flags_run/v8_flags.js.out
new file mode 100644
index 000000000..e2dbde096
--- /dev/null
+++ b/tests/specs/run/v8_flags_run/v8_flags.js.out
@@ -0,0 +1 @@
+function
diff --git a/tests/specs/run/v8_flags_unrecognized/__test__.jsonc b/tests/specs/run/v8_flags_unrecognized/__test__.jsonc
new file mode 100644
index 000000000..93472d0d7
--- /dev/null
+++ b/tests/specs/run/v8_flags_unrecognized/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "repl --v8-flags=--foo,bar,--trace-gc,-baz",
+ "output": "v8_flags_unrecognized.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/v8_flags_unrecognized.out b/tests/specs/run/v8_flags_unrecognized/v8_flags_unrecognized.out
index 56e70f830..56e70f830 100644
--- a/tests/testdata/run/v8_flags_unrecognized.out
+++ b/tests/specs/run/v8_flags_unrecognized/v8_flags_unrecognized.out
diff --git a/tests/specs/run/v8_help/__test__.jsonc b/tests/specs/run/v8_help/__test__.jsonc
new file mode 100644
index 000000000..90cbeb274
--- /dev/null
+++ b/tests/specs/run/v8_help/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "repl --v8-flags=--help",
+ "output": "v8_help.out"
+}
diff --git a/tests/testdata/run/v8_help.out b/tests/specs/run/v8_help/v8_help.out
index 006d73557..006d73557 100644
--- a/tests/testdata/run/v8_help.out
+++ b/tests/specs/run/v8_help/v8_help.out
diff --git a/tests/specs/run/wasm/__test__.jsonc b/tests/specs/run/wasm/__test__.jsonc
new file mode 100644
index 000000000..a3c6f58b2
--- /dev/null
+++ b/tests/specs/run/wasm/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet wasm.ts",
+ "output": "wasm.ts.out"
+}
diff --git a/tests/testdata/run/wasm.ts b/tests/specs/run/wasm/wasm.ts
index 96b5fdffc..96b5fdffc 100644
--- a/tests/testdata/run/wasm.ts
+++ b/tests/specs/run/wasm/wasm.ts
diff --git a/tests/specs/run/wasm/wasm.ts.out b/tests/specs/run/wasm/wasm.ts.out
new file mode 100644
index 000000000..d81cc0710
--- /dev/null
+++ b/tests/specs/run/wasm/wasm.ts.out
@@ -0,0 +1 @@
+42
diff --git a/tests/specs/run/wasm_async/__test__.jsonc b/tests/specs/run/wasm_async/__test__.jsonc
new file mode 100644
index 000000000..583da86e0
--- /dev/null
+++ b/tests/specs/run/wasm_async/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run wasm_async.js",
+ "output": "wasm_async.out"
+}
diff --git a/tests/testdata/run/wasm_async.js b/tests/specs/run/wasm_async/wasm_async.js
index 837460ae9..837460ae9 100644
--- a/tests/testdata/run/wasm_async.js
+++ b/tests/specs/run/wasm_async/wasm_async.js
diff --git a/tests/testdata/run/wasm_async.out b/tests/specs/run/wasm_async/wasm_async.out
index 5cdf17de7..5cdf17de7 100644
--- a/tests/testdata/run/wasm_async.out
+++ b/tests/specs/run/wasm_async/wasm_async.out
diff --git a/tests/specs/run/wasm_shared/__test__.jsonc b/tests/specs/run/wasm_shared/__test__.jsonc
new file mode 100644
index 000000000..1b6ececa7
--- /dev/null
+++ b/tests/specs/run/wasm_shared/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet wasm_shared.ts",
+ "output": "wasm_shared.out"
+}
diff --git a/tests/specs/run/wasm_shared/wasm_shared.out b/tests/specs/run/wasm_shared/wasm_shared.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/specs/run/wasm_shared/wasm_shared.out
diff --git a/tests/testdata/run/wasm_shared.ts b/tests/specs/run/wasm_shared/wasm_shared.ts
index b713385d5..b713385d5 100644
--- a/tests/testdata/run/wasm_shared.ts
+++ b/tests/specs/run/wasm_shared/wasm_shared.ts
diff --git a/tests/specs/run/wasm_streaming_panic_test/__test__.jsonc b/tests/specs/run/wasm_streaming_panic_test/__test__.jsonc
new file mode 100644
index 000000000..e22e1f98a
--- /dev/null
+++ b/tests/specs/run/wasm_streaming_panic_test/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run wasm_streaming_panic_test.js",
+ "output": "wasm_streaming_panic_test.js.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/wasm_streaming_panic_test.js b/tests/specs/run/wasm_streaming_panic_test/wasm_streaming_panic_test.js
index ec017592f..ec017592f 100644
--- a/tests/testdata/run/wasm_streaming_panic_test.js
+++ b/tests/specs/run/wasm_streaming_panic_test/wasm_streaming_panic_test.js
diff --git a/tests/testdata/run/wasm_streaming_panic_test.js.out b/tests/specs/run/wasm_streaming_panic_test/wasm_streaming_panic_test.js.out
index 4ec523f1d..4ec523f1d 100644
--- a/tests/testdata/run/wasm_streaming_panic_test.js.out
+++ b/tests/specs/run/wasm_streaming_panic_test/wasm_streaming_panic_test.js.out
diff --git a/tests/specs/run/wasm_unreachable/__test__.jsonc b/tests/specs/run/wasm_unreachable/__test__.jsonc
new file mode 100644
index 000000000..cd6165629
--- /dev/null
+++ b/tests/specs/run/wasm_unreachable/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --allow-read wasm_unreachable.js",
+ "output": "wasm_unreachable.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/wasm_unreachable/unreachable.wasm b/tests/specs/run/wasm_unreachable/unreachable.wasm
new file mode 100644
index 000000000..a4110ee39
--- /dev/null
+++ b/tests/specs/run/wasm_unreachable/unreachable.wasm
Binary files differ
diff --git a/tests/specs/run/wasm_unreachable/wasm_unreachable.js b/tests/specs/run/wasm_unreachable/wasm_unreachable.js
new file mode 100644
index 000000000..36aab0d84
--- /dev/null
+++ b/tests/specs/run/wasm_unreachable/wasm_unreachable.js
@@ -0,0 +1,9 @@
+// WebAssembly module containing a single function with an unreachable instruction
+const binary = await Deno.readFile("./unreachable.wasm");
+
+const module = new WebAssembly.Module(binary);
+const instance = new WebAssembly.Instance(module);
+
+// Compare the stack trace with wasm_url.js, which compiles the WASM module with
+// streaming APIs.
+instance.exports.unreachable();
diff --git a/tests/testdata/run/wasm_unreachable.out b/tests/specs/run/wasm_unreachable/wasm_unreachable.out
index c213097ab..c213097ab 100644
--- a/tests/testdata/run/wasm_unreachable.out
+++ b/tests/specs/run/wasm_unreachable/wasm_unreachable.out
diff --git a/tests/specs/run/wasm_url/__test__.jsonc b/tests/specs/run/wasm_url/__test__.jsonc
new file mode 100644
index 000000000..a776527b1
--- /dev/null
+++ b/tests/specs/run/wasm_url/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --allow-net=localhost:4545 wasm_url.js",
+ "output": "wasm_url.out",
+ "exitCode": 1
+}
diff --git a/tests/testdata/run/wasm_url.js b/tests/specs/run/wasm_url/wasm_url.js
index 71686ef7e..71686ef7e 100644
--- a/tests/testdata/run/wasm_url.js
+++ b/tests/specs/run/wasm_url/wasm_url.js
diff --git a/tests/testdata/run/wasm_url.out b/tests/specs/run/wasm_url/wasm_url.out
index ae3bf491a..ae3bf491a 100644
--- a/tests/testdata/run/wasm_url.out
+++ b/tests/specs/run/wasm_url/wasm_url.out
diff --git a/tests/specs/run/weakref/__test__.jsonc b/tests/specs/run/weakref/__test__.jsonc
new file mode 100644
index 000000000..1a5808ec7
--- /dev/null
+++ b/tests/specs/run/weakref/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload weakref.ts",
+ "output": "weakref.ts.out"
+}
diff --git a/tests/testdata/run/weakref.ts b/tests/specs/run/weakref/weakref.ts
index 47c3985fe..47c3985fe 100644
--- a/tests/testdata/run/weakref.ts
+++ b/tests/specs/run/weakref/weakref.ts
diff --git a/tests/testdata/run/weakref.ts.out b/tests/specs/run/weakref/weakref.ts.out
index 32bafcf2d..32bafcf2d 100644
--- a/tests/testdata/run/weakref.ts.out
+++ b/tests/specs/run/weakref/weakref.ts.out
diff --git a/tests/specs/run/webstorage_serialization/__test__.jsonc b/tests/specs/run/webstorage_serialization/__test__.jsonc
new file mode 100644
index 000000000..4362a84b2
--- /dev/null
+++ b/tests/specs/run/webstorage_serialization/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run webstorage/serialization.ts",
+ "output": "webstorage/serialization.ts.out"
+}
diff --git a/tests/specs/run/webstorage_serialization/webstorage/config_a.jsonc b/tests/specs/run/webstorage_serialization/webstorage/config_a.jsonc
new file mode 100644
index 000000000..875cb6001
--- /dev/null
+++ b/tests/specs/run/webstorage_serialization/webstorage/config_a.jsonc
@@ -0,0 +1,3 @@
+{
+ "compilerOptions": {}
+}
diff --git a/tests/specs/run/webstorage_serialization/webstorage/config_b.jsonc b/tests/specs/run/webstorage_serialization/webstorage/config_b.jsonc
new file mode 100644
index 000000000..875cb6001
--- /dev/null
+++ b/tests/specs/run/webstorage_serialization/webstorage/config_b.jsonc
@@ -0,0 +1,3 @@
+{
+ "compilerOptions": {}
+}
diff --git a/tests/specs/run/webstorage_serialization/webstorage/fixture.ts b/tests/specs/run/webstorage_serialization/webstorage/fixture.ts
new file mode 100644
index 000000000..cf4bd9f1f
--- /dev/null
+++ b/tests/specs/run/webstorage_serialization/webstorage/fixture.ts
@@ -0,0 +1,2 @@
+import "./logger.ts";
+import "./setter.ts";
diff --git a/tests/specs/run/webstorage_serialization/webstorage/logger.ts b/tests/specs/run/webstorage_serialization/webstorage/logger.ts
new file mode 100644
index 000000000..feadd39eb
--- /dev/null
+++ b/tests/specs/run/webstorage_serialization/webstorage/logger.ts
@@ -0,0 +1 @@
+console.log(globalThis.localStorage);
diff --git a/tests/testdata/run/webstorage/serialization.ts b/tests/specs/run/webstorage_serialization/webstorage/serialization.ts
index f125331bb..f125331bb 100644
--- a/tests/testdata/run/webstorage/serialization.ts
+++ b/tests/specs/run/webstorage_serialization/webstorage/serialization.ts
diff --git a/tests/testdata/run/webstorage/serialization.ts.out b/tests/specs/run/webstorage_serialization/webstorage/serialization.ts.out
index 4d80032f0..4d80032f0 100644
--- a/tests/testdata/run/webstorage/serialization.ts.out
+++ b/tests/specs/run/webstorage_serialization/webstorage/serialization.ts.out
diff --git a/tests/specs/run/webstorage_serialization/webstorage/setter.ts b/tests/specs/run/webstorage_serialization/webstorage/setter.ts
new file mode 100644
index 000000000..cf5a7bfaf
--- /dev/null
+++ b/tests/specs/run/webstorage_serialization/webstorage/setter.ts
@@ -0,0 +1 @@
+globalThis.localStorage.setItem("hello", "deno");
diff --git a/tests/specs/run/worker_close_in_wasm_reactions/__test__.jsonc b/tests/specs/run/worker_close_in_wasm_reactions/__test__.jsonc
new file mode 100644
index 000000000..104b54756
--- /dev/null
+++ b/tests/specs/run/worker_close_in_wasm_reactions/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read worker_close_in_wasm_reactions.js",
+ "output": "worker_close_in_wasm_reactions.js.out"
+}
diff --git a/tests/specs/run/worker_close_in_wasm_reactions/close_in_wasm_reactions.js b/tests/specs/run/worker_close_in_wasm_reactions/close_in_wasm_reactions.js
new file mode 100644
index 000000000..abe573108
--- /dev/null
+++ b/tests/specs/run/worker_close_in_wasm_reactions/close_in_wasm_reactions.js
@@ -0,0 +1,21 @@
+// https://github.com/denoland/deno/issues/12263
+// Test for a panic that happens when a worker is closed in the reactions of a
+// WASM async operation.
+
+// The minimum valid wasm module, plus two additional zero bytes.
+const buffer = new Uint8Array([
+ 0x00,
+ 0x61,
+ 0x73,
+ 0x6D,
+ 0x01,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+]);
+WebAssembly.compile(buffer).catch((err) => {
+ console.log("Error:", err);
+ self.close();
+});
diff --git a/tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js b/tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js
new file mode 100644
index 000000000..828320a24
--- /dev/null
+++ b/tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js
@@ -0,0 +1,10 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+// https://github.com/denoland/deno/issues/12263
+// Test for a panic that happens when a worker is closed in the reactions of a
+// WASM async operation.
+
+new Worker(
+ import.meta.resolve("./close_in_wasm_reactions.js"),
+ { type: "module" },
+);
diff --git a/tests/testdata/run/worker_close_in_wasm_reactions.js.out b/tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js.out
index 904613dae..904613dae 100644
--- a/tests/testdata/run/worker_close_in_wasm_reactions.js.out
+++ b/tests/specs/run/worker_close_in_wasm_reactions/worker_close_in_wasm_reactions.js.out
diff --git a/tests/specs/run/worker_close_nested/__test__.jsonc b/tests/specs/run/worker_close_nested/__test__.jsonc
new file mode 100644
index 000000000..5cce107c7
--- /dev/null
+++ b/tests/specs/run/worker_close_nested/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read worker_close_nested.js",
+ "output": "worker_close_nested.js.out"
+}
diff --git a/tests/specs/run/worker_close_nested/close_nested_child.js b/tests/specs/run/worker_close_nested/close_nested_child.js
new file mode 100644
index 000000000..97980c689
--- /dev/null
+++ b/tests/specs/run/worker_close_nested/close_nested_child.js
@@ -0,0 +1,8 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+console.log("Starting the child worker");
+
+setTimeout(() => {
+ console.log("The child worker survived the death of the parent!!!");
+ Deno.exit(1);
+}, 2000);
diff --git a/tests/specs/run/worker_close_nested/close_nested_parent.js b/tests/specs/run/worker_close_nested/close_nested_parent.js
new file mode 100644
index 000000000..d1fe47553
--- /dev/null
+++ b/tests/specs/run/worker_close_nested/close_nested_parent.js
@@ -0,0 +1,13 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+console.log("Starting the parent worker");
+
+new Worker(
+ import.meta.resolve("./close_nested_child.js"),
+ { type: "module" },
+);
+
+self.addEventListener("message", () => {
+ console.log("Closing");
+ self.close();
+});
diff --git a/tests/specs/run/worker_close_nested/worker_close_nested.js b/tests/specs/run/worker_close_nested/worker_close_nested.js
new file mode 100644
index 000000000..8d9c88d1c
--- /dev/null
+++ b/tests/specs/run/worker_close_nested/worker_close_nested.js
@@ -0,0 +1,20 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+// Test that closing a worker which has living child workers will automatically
+// close the children.
+
+console.log("Starting the main thread");
+
+const worker = new Worker(
+ import.meta.resolve("./close_nested_parent.js"),
+ { type: "module" },
+);
+
+setTimeout(() => {
+ console.log("About to close");
+ worker.postMessage({});
+
+ // Keep the process running for another two seconds, to make sure there's no
+ // output from the child worker.
+ setTimeout(() => {}, 2000);
+}, 1000);
diff --git a/tests/testdata/run/worker_close_nested.js.out b/tests/specs/run/worker_close_nested/worker_close_nested.js.out
index 496bc6251..496bc6251 100644
--- a/tests/testdata/run/worker_close_nested.js.out
+++ b/tests/specs/run/worker_close_nested/worker_close_nested.js.out
diff --git a/tests/specs/run/worker_close_race/__test__.jsonc b/tests/specs/run/worker_close_race/__test__.jsonc
new file mode 100644
index 000000000..bdb9665f7
--- /dev/null
+++ b/tests/specs/run/worker_close_race/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read worker_close_race.js",
+ "output": "worker_close_race.js.out"
+}
diff --git a/tests/specs/run/worker_close_race/close_race_worker.js b/tests/specs/run/worker_close_race/close_race_worker.js
new file mode 100644
index 000000000..6964be34a
--- /dev/null
+++ b/tests/specs/run/worker_close_race/close_race_worker.js
@@ -0,0 +1,6 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+setTimeout(() => {
+ self.postMessage("");
+ self.close();
+}, 500);
diff --git a/tests/specs/run/worker_close_race/worker_close_race.js b/tests/specs/run/worker_close_race/worker_close_race.js
new file mode 100644
index 000000000..188cd9ed8
--- /dev/null
+++ b/tests/specs/run/worker_close_race/worker_close_race.js
@@ -0,0 +1,14 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+// https://github.com/denoland/deno/issues/11416
+// Test for a race condition between a worker's `close()` and the main thread's
+// `Worker.prototype.terminate()`.
+
+const worker = new Worker(
+ import.meta.resolve("./close_race_worker.js"),
+ { type: "module" },
+);
+
+worker.onmessage = () => {
+ worker.terminate();
+};
diff --git a/tests/specs/run/worker_close_race/worker_close_race.js.out b/tests/specs/run/worker_close_race/worker_close_race.js.out
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/specs/run/worker_close_race/worker_close_race.js.out
diff --git a/tests/specs/run/worker_drop_handle_race/__test__.jsonc b/tests/specs/run/worker_drop_handle_race/__test__.jsonc
new file mode 100644
index 000000000..cc600d5ef
--- /dev/null
+++ b/tests/specs/run/worker_drop_handle_race/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "args": "run --quiet --reload --allow-read worker_drop_handle_race.js",
+ "output": "worker_drop_handle_race.js.out",
+ "exitCode": 1
+}
diff --git a/tests/specs/run/worker_drop_handle_race/drop_handle_race.js b/tests/specs/run/worker_drop_handle_race/drop_handle_race.js
new file mode 100644
index 000000000..30676a600
--- /dev/null
+++ b/tests/specs/run/worker_drop_handle_race/drop_handle_race.js
@@ -0,0 +1,3 @@
+setTimeout(() => {
+ throw new Error();
+}, 1000);
diff --git a/tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js b/tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js
new file mode 100644
index 000000000..ef9bcbe07
--- /dev/null
+++ b/tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js
@@ -0,0 +1,12 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+// https://github.com/denoland/deno/issues/11342
+// Test for a panic that happens when the main thread's event loop finishes
+// running while the worker's event loop is still spinning.
+
+// The exception thrown in the worker will not terminate the worker, but it will
+// propagate to the main thread and cause it to exit.
+new Worker(
+ import.meta.resolve("./drop_handle_race.js"),
+ { type: "module" },
+);
diff --git a/tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js.out b/tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js.out
new file mode 100644
index 000000000..a1c2e30ad
--- /dev/null
+++ b/tests/specs/run/worker_drop_handle_race/worker_drop_handle_race.js.out
@@ -0,0 +1,7 @@
+error: Uncaught (in worker "") Error
+ throw new Error();
+ ^
+ at [WILDCARD]/drop_handle_race.js:2:9
+ at [WILDCARD]
+error: Uncaught (in promise) Error: Unhandled error in child worker.
+ at Worker.#pollControl [WILDCARD]
diff --git a/tests/specs/run/worker_drop_handle_race_terminate/__test__.jsonc b/tests/specs/run/worker_drop_handle_race_terminate/__test__.jsonc
new file mode 100644
index 000000000..e752074eb
--- /dev/null
+++ b/tests/specs/run/worker_drop_handle_race_terminate/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run worker_drop_handle_race_terminate.js",
+ "output": "worker_drop_handle_race_terminate.js.out"
+}
diff --git a/tests/testdata/run/worker_drop_handle_race_terminate.js b/tests/specs/run/worker_drop_handle_race_terminate/worker_drop_handle_race_terminate.js
index 7c4e0b109..7c4e0b109 100644
--- a/tests/testdata/run/worker_drop_handle_race_terminate.js
+++ b/tests/specs/run/worker_drop_handle_race_terminate/worker_drop_handle_race_terminate.js
diff --git a/tests/testdata/run/worker_drop_handle_race_terminate.js.out b/tests/specs/run/worker_drop_handle_race_terminate/worker_drop_handle_race_terminate.js.out
index 5ec1e7ff8..5ec1e7ff8 100644
--- a/tests/testdata/run/worker_drop_handle_race_terminate.js.out
+++ b/tests/specs/run/worker_drop_handle_race_terminate/worker_drop_handle_race_terminate.js.out
diff --git a/tests/specs/run/worker_event_handler_test/__test__.jsonc b/tests/specs/run/worker_event_handler_test/__test__.jsonc
new file mode 100644
index 000000000..c07fca97c
--- /dev/null
+++ b/tests/specs/run/worker_event_handler_test/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read worker_event_handler_test.js",
+ "output": "worker_event_handler_test.js.out"
+}
diff --git a/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js
new file mode 100644
index 000000000..91c5ba946
--- /dev/null
+++ b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js
@@ -0,0 +1,5 @@
+const w = new Worker(
+ import.meta.resolve("./worker_event_handlers.js"),
+ { type: "module" },
+);
+w.postMessage({});
diff --git a/tests/testdata/run/worker_event_handler_test.js.out b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out
index b3eed7f6c..b3eed7f6c 100644
--- a/tests/testdata/run/worker_event_handler_test.js.out
+++ b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out
diff --git a/tests/specs/run/worker_event_handler_test/worker_event_handlers.js b/tests/specs/run/worker_event_handler_test/worker_event_handlers.js
new file mode 100644
index 000000000..5e457cd2e
--- /dev/null
+++ b/tests/specs/run/worker_event_handler_test/worker_event_handlers.js
@@ -0,0 +1,26 @@
+self.onmessage = (evt) => {
+ console.log("Target from self.onmessage:", String(evt.target));
+};
+
+self.addEventListener("message", (evt) => {
+ console.log("Target from message event listener:", String(evt.target));
+
+ // Throw an error here so the global's error event will fire.
+ throw new Error("Some error message");
+});
+
+self.onerror = (...args) => {
+ // Take the last 100 characters so the filename doesn't get truncated
+ // depending on the dev's FS structure.
+ args = args.map((v) => typeof v == "string" ? v.slice(-100) : v);
+ console.log("Arguments from self.onerror:", args);
+ return true;
+};
+
+self.addEventListener("error", (evt) => {
+ // Returning true from self.onerror means that subsequent event listeners
+ // should see the event as canceled.
+ console.log("Is event canceled?:", evt.defaultPrevented);
+
+ self.close();
+});
diff --git a/tests/specs/run/worker_message_before_close/__test__.jsonc b/tests/specs/run/worker_message_before_close/__test__.jsonc
new file mode 100644
index 000000000..ae2d65b91
--- /dev/null
+++ b/tests/specs/run/worker_message_before_close/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload --allow-read worker_message_before_close.js",
+ "output": "worker_message_before_close.js.out"
+}
diff --git a/tests/specs/run/worker_message_before_close/message_before_close.js b/tests/specs/run/worker_message_before_close/message_before_close.js
new file mode 100644
index 000000000..9364b6d82
--- /dev/null
+++ b/tests/specs/run/worker_message_before_close/message_before_close.js
@@ -0,0 +1,4 @@
+onmessage = () => {
+ postMessage({});
+ close();
+};
diff --git a/tests/specs/run/worker_message_before_close/worker_message_before_close.js b/tests/specs/run/worker_message_before_close/worker_message_before_close.js
new file mode 100644
index 000000000..d613bd1ca
--- /dev/null
+++ b/tests/specs/run/worker_message_before_close/worker_message_before_close.js
@@ -0,0 +1,26 @@
+const messagesReceived = new Set();
+
+for (let i = 0; i < 4; i++) {
+ const worker = new Worker(
+ import.meta.resolve("./message_before_close.js"),
+ { type: "module", name: String(i) },
+ );
+
+ worker.addEventListener("message", () => {
+ messagesReceived.add(i);
+ if (messagesReceived.size == 4) {
+ console.log("received all 4 responses from the workers");
+ }
+ });
+
+ worker.postMessage({});
+}
+
+globalThis.addEventListener("unload", () => {
+ if (messagesReceived.size !== 4) {
+ console.log(
+ "received only %d responses from the workers",
+ messagesReceived.size,
+ );
+ }
+});
diff --git a/tests/testdata/run/worker_message_before_close.js.out b/tests/specs/run/worker_message_before_close/worker_message_before_close.js.out
index f91b7b4cb..f91b7b4cb 100644
--- a/tests/testdata/run/worker_message_before_close.js.out
+++ b/tests/specs/run/worker_message_before_close/worker_message_before_close.js.out
diff --git a/tests/testdata/run/005_more_imports.ts b/tests/testdata/run/005_more_imports.ts
deleted file mode 100644
index 6c96fac64..000000000
--- a/tests/testdata/run/005_more_imports.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { printHello3, returnsFoo2, returnsHi } from "../subdir/mod1.ts";
-
-printHello3();
-
-if (returnsHi() !== "Hi") {
- throw Error("Unexpected");
-}
-
-if (returnsFoo2() !== "Foo") {
- throw Error("Unexpected");
-}
diff --git a/tests/testdata/run/014_duplicate_import.ts b/tests/testdata/run/014_duplicate_import.ts
deleted file mode 100644
index c7dd881cf..000000000
--- a/tests/testdata/run/014_duplicate_import.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// with all the imports of the same module, the module should only be
-// instantiated once
-import "../subdir/auto_print_hello.ts";
-
-import "../subdir/auto_print_hello.ts";
-
-(async () => {
- await import("../subdir/auto_print_hello.ts");
-})();
diff --git a/tests/testdata/run/015_duplicate_parallel_import.js b/tests/testdata/run/015_duplicate_parallel_import.js
deleted file mode 100644
index 2fbe2c732..000000000
--- a/tests/testdata/run/015_duplicate_parallel_import.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Importing the same module in parallel, the module should only be
-// instantiated once.
-
-const promises = new Array(100)
- .fill(null)
- .map(() => import("../subdir/mod1.ts"));
-
-Promise.all(promises).then((imports) => {
- const mod = imports.reduce((first, cur) => {
- if (typeof first !== "object") {
- throw new Error("Expected an object.");
- }
- if (first !== cur) {
- throw new Error("More than one instance of the same module.");
- }
- return first;
- });
-
- mod.printHello3();
-});
diff --git a/tests/testdata/run/020_json_modules.ts b/tests/testdata/run/020_json_modules.ts
deleted file mode 100644
index b4ae60665..000000000
--- a/tests/testdata/run/020_json_modules.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import config from "../subdir/config.json";
-console.log(JSON.stringify(config));
diff --git a/tests/testdata/run/020_json_modules.ts.out b/tests/testdata/run/020_json_modules.ts.out
deleted file mode 100644
index 948901724..000000000
--- a/tests/testdata/run/020_json_modules.ts.out
+++ /dev/null
@@ -1,3 +0,0 @@
-error: Expected a JavaScript or TypeScript module, but identified a Json module. Consider importing Json modules with an import attribute with the type of "json".
- Specifier: [WILDCARD]/subdir/config.json
-[WILDCARD] \ No newline at end of file
diff --git a/tests/testdata/run/021_mjs_modules.ts b/tests/testdata/run/021_mjs_modules.ts
deleted file mode 100644
index 838cd2c38..000000000
--- a/tests/testdata/run/021_mjs_modules.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { isMod5 } from "../subdir/mod5.mjs";
-console.log(isMod5);
diff --git a/tests/testdata/run/035_cached_only_flag.out b/tests/testdata/run/035_cached_only_flag.out
deleted file mode 100644
index f677ec915..000000000
--- a/tests/testdata/run/035_cached_only_flag.out
+++ /dev/null
@@ -1 +0,0 @@
-error: Specifier not found in cache: "http://127.0.0.1:4545/run/019_media_types.ts", --cached-only is specified.
diff --git a/tests/testdata/run/042_dyn_import_evalcontext.ts b/tests/testdata/run/042_dyn_import_evalcontext.ts
deleted file mode 100644
index 386ae48ec..000000000
--- a/tests/testdata/run/042_dyn_import_evalcontext.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// @ts-expect-error "Deno[Deno.internal].core" is not a public interface
-Deno[Deno.internal].core.evalContext(
- "(async () => console.log(await import('./subdir/mod4.js')))()",
- new URL("..", import.meta.url).href,
-);
diff --git a/tests/testdata/run/044_bad_resource.ts b/tests/testdata/run/044_bad_resource.ts
deleted file mode 100644
index b956a3e3f..000000000
--- a/tests/testdata/run/044_bad_resource.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-const file = await Deno.open("./run/044_bad_resource.ts", { read: true });
-file.close();
-await file.seek(10, 0);
diff --git a/tests/testdata/run/052_no_remote_flag.out b/tests/testdata/run/052_no_remote_flag.out
deleted file mode 100644
index 2f5950ee8..000000000
--- a/tests/testdata/run/052_no_remote_flag.out
+++ /dev/null
@@ -1 +0,0 @@
-error: A remote specifier was requested: "http://127.0.0.1:4545/run/019_media_types.ts", but --no-remote is specified.
diff --git a/tests/testdata/run/byte_order_mark.ts b/tests/testdata/run/byte_order_mark.ts
deleted file mode 100644
index 40eb23c1d..000000000
--- a/tests/testdata/run/byte_order_mark.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import "./001_hello.js";
-// Note this file starts with special byte order mark <U+FEFF>
-// it's important that this file is a .ts typescript file which is passed to
-// deno through `--no-check` mode.
diff --git a/tests/testdata/run/config_json_import.ts b/tests/testdata/run/config_json_import.ts
deleted file mode 100644
index 7141f1495..000000000
--- a/tests/testdata/run/config_json_import.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import config from "../jsx/deno-jsx.json" with { type: "json" };
-console.log(config);
diff --git a/tests/testdata/run/error_002.ts b/tests/testdata/run/error_002.ts
deleted file mode 100644
index 5f8179bbe..000000000
--- a/tests/testdata/run/error_002.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { throwsError } from "../subdir/mod1.ts";
-
-function foo() {
- throwsError();
-}
-
-foo();
diff --git a/tests/testdata/run/error_002.ts.out b/tests/testdata/run/error_002.ts.out
deleted file mode 100644
index 9fec5d968..000000000
--- a/tests/testdata/run/error_002.ts.out
+++ /dev/null
@@ -1,6 +0,0 @@
-[WILDCARD]error: Uncaught (in promise) Error: exception from mod1
- throw Error("exception from mod1");
- ^
- at throwsError ([WILDCARD]/subdir/mod1.ts:16:9)
- at foo ([WILDCARD]/error_002.ts:4:3)
- at [WILDCARD]/error_002.ts:7:1
diff --git a/tests/testdata/run/error_014_catch_dynamic_import_error.js b/tests/testdata/run/error_014_catch_dynamic_import_error.js
deleted file mode 100644
index c58e54dcb..000000000
--- a/tests/testdata/run/error_014_catch_dynamic_import_error.js
+++ /dev/null
@@ -1,31 +0,0 @@
-(async () => {
- try {
- await import("does not exist");
- } catch (err) {
- console.log("Caught direct dynamic import error.");
- console.log(err);
- }
-
- try {
- await import("../subdir/indirect_import_error.js");
- } catch (err) {
- console.log("Caught indirect direct dynamic import error.");
- console.log(err);
- }
-
- try {
- await import("../subdir/throws.js");
- } catch (err) {
- console.log("Caught error thrown by dynamically imported module.");
- console.log(err);
- }
-
- try {
- await import("../subdir/indirect_throws.js");
- } catch (err) {
- console.log(
- "Caught error thrown indirectly by dynamically imported module.",
- );
- console.log(err);
- }
-})();
diff --git a/tests/testdata/run/error_014_catch_dynamic_import_error.js.out b/tests/testdata/run/error_014_catch_dynamic_import_error.js.out
deleted file mode 100644
index 868c97194..000000000
--- a/tests/testdata/run/error_014_catch_dynamic_import_error.js.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Caught direct dynamic import error.
-TypeError: Relative import path "does not exist" not prefixed with / or ./ or ../
- at [WILDCARD]/error_014_catch_dynamic_import_error.js:3:18
-
- at [WILDCARD]/error_014_catch_dynamic_import_error.js:3:5 {
- code: "ERR_MODULE_NOT_FOUND"
-}
-Caught indirect direct dynamic import error.
-TypeError: Relative import path "does not exist either" not prefixed with / or ./ or ../
- at [WILDCARD]/subdir/indirect_import_error.js:1:15
- at async [WILDCARD]/error_014_catch_dynamic_import_error.js:10:5 {
- code: "ERR_MODULE_NOT_FOUND"
-}
-Caught error thrown by dynamically imported module.
-Error: An error
- at [WILDCARD]/subdir/throws.js:6:7
-Caught error thrown indirectly by dynamically imported module.
-Error: An error
- at [WILDCARD]/subdir/throws.js:6:7
diff --git a/tests/testdata/run/error_015_dynamic_import_permissions.js b/tests/testdata/run/error_015_dynamic_import_permissions.js
deleted file mode 100644
index bdf423b59..000000000
--- a/tests/testdata/run/error_015_dynamic_import_permissions.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(async () => {
- await import("" + "http://example.com/subdir/mod4.js");
-})();
diff --git a/tests/testdata/run/error_015_dynamic_import_permissions.out b/tests/testdata/run/error_015_dynamic_import_permissions.out
deleted file mode 100644
index 15c26b425..000000000
--- a/tests/testdata/run/error_015_dynamic_import_permissions.out
+++ /dev/null
@@ -1,4 +0,0 @@
-error: Uncaught (in promise) TypeError: Requires import access to "example.com:80", run again with the --allow-import flag
- await import("" + "http://example.com/subdir/mod4.js");
- ^
- at async file://[WILDCARD]/error_015_dynamic_import_permissions.js:2:3
diff --git a/tests/testdata/run/error_no_check.ts b/tests/testdata/run/error_no_check.ts
deleted file mode 100644
index 2da01e639..000000000
--- a/tests/testdata/run/error_no_check.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { AnInterface, isAnInterface } from "../subdir/type_and_code.ts";
diff --git a/tests/testdata/run/error_no_check.ts.out b/tests/testdata/run/error_no_check.ts.out
deleted file mode 100644
index 78f478045..000000000
--- a/tests/testdata/run/error_no_check.ts.out
+++ /dev/null
@@ -1,2 +0,0 @@
-error: Uncaught SyntaxError: The requested module '../subdir/type_and_code.ts' does not provide an export named 'AnInterface'
-[WILDCARD] \ No newline at end of file
diff --git a/tests/testdata/run/error_type_definitions.ts b/tests/testdata/run/error_type_definitions.ts
deleted file mode 100644
index 86675cbaa..000000000
--- a/tests/testdata/run/error_type_definitions.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// @deno-types="../type_definitions/bar.d.ts"
-import { Bar } from "../type_definitions/bar.js";
-
-const bar = new Bar();
-console.log(bar);
diff --git a/tests/testdata/run/fix_dynamic_import_errors.js b/tests/testdata/run/fix_dynamic_import_errors.js
deleted file mode 100644
index 1d7be37e0..000000000
--- a/tests/testdata/run/fix_dynamic_import_errors.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("../dynamic_import/b.js").catch(() => {
- console.log("caught import error from b.js");
-});
-
-import("../dynamic_import/c.js").catch(() => {
- console.log("caught import error from c.js");
-});
diff --git a/tests/testdata/run/fix_emittable_skipped.js b/tests/testdata/run/fix_emittable_skipped.js
deleted file mode 100644
index a4ccc9efd..000000000
--- a/tests/testdata/run/fix_emittable_skipped.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/// <reference types="../subdir/emittable.d.ts" />
-
-import "../subdir/polyfill.ts";
-
-export const a = "a";
-
-console.log(globalThis.polyfill);
diff --git a/tests/testdata/run/fix_js_import_js.ts b/tests/testdata/run/fix_js_import_js.ts
deleted file mode 100644
index 0f01877cd..000000000
--- a/tests/testdata/run/fix_js_import_js.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { isMod4 } from "../subdir/mod6.js";
-
-console.log(isMod4);
diff --git a/tests/testdata/run/fix_js_imports.ts b/tests/testdata/run/fix_js_imports.ts
deleted file mode 100644
index 6ed13bae3..000000000
--- a/tests/testdata/run/fix_js_imports.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import * as amdLike from "../subdir/amd_like.js";
-
-console.log(amdLike);
diff --git a/tests/testdata/run/import_type.ts b/tests/testdata/run/import_type.ts
deleted file mode 100644
index 22c639cbc..000000000
--- a/tests/testdata/run/import_type.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { type B, create } from "../subdir/export_types.ts";
-
-const b: B = create();
-
-console.log(b);
diff --git a/tests/testdata/run/inline_js_source_map_2.js b/tests/testdata/run/inline_js_source_map_2.js
deleted file mode 100644
index d14d906b8..000000000
--- a/tests/testdata/run/inline_js_source_map_2.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-1 + 1;
-throw new Error("Hello world!");
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo0NTQ1L3J1bi9pbmxpbmVfanNfc291cmNlX21hcF8yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO0FBS0osTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUErQixDQUFDLENBQUMifQ== \ No newline at end of file
diff --git a/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js b/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js
deleted file mode 100644
index 7660cc229..000000000
--- a/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-
-throw new Error("Hello world!");
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo0NTQ1L3J1bi9pbmxpbmVfanNfc291cmNlX21hcF8yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIjErMTtcbmludGVyZmFjZSBUZXN0IHtcbiAgaGVsbG86IHN0cmluZztcbn1cblxudGhyb3cgbmV3IEVycm9yKFwiSGVsbG8gd29ybGQhXCIgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO0FBS0osTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUErQixDQUFDLENBQUMifQ== \ No newline at end of file
diff --git a/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js b/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js
deleted file mode 100644
index 887f02320..000000000
--- a/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-import "http://localhost:4545/run/inline_js_source_map.ts";
-throw new Error("Hello world!");
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo0NTQ1L3J1bi9pbmxpbmVfanNfc291cmNlX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsQ0FBQyxHQUFDLENBQUMsQ0FBQztBQUtKLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBK0IsQ0FBQyxDQUFDIn0= \ No newline at end of file
diff --git a/tests/testdata/run/issue13562.ts b/tests/testdata/run/issue13562.ts
deleted file mode 100644
index afbf69f99..000000000
--- a/tests/testdata/run/issue13562.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { printHello3 } from "../subdir/mod1.ts?q=.json";
-
-printHello3();
diff --git a/tests/testdata/run/jsx_precompile/no_pragma.out b/tests/testdata/run/jsx_precompile/no_pragma.out
deleted file mode 100644
index 437995923..000000000
--- a/tests/testdata/run/jsx_precompile/no_pragma.out
+++ /dev/null
@@ -1,3 +0,0 @@
-Download http://localhost:4545/jsx/jsx-precompile/index.ts
-Check file:///[WILDCARD]/run/jsx_precompile/no_pragma.tsx
-imported http://localhost:4545/jsx/jsx-precompile/index.ts
diff --git a/tests/testdata/run/lock_check_ok.json b/tests/testdata/run/lock_check_ok.json
deleted file mode 100644
index 94de0f630..000000000
--- a/tests/testdata/run/lock_check_ok.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "http://127.0.0.1:4545/subdir/print_hello.ts": "fa6692c8f9ff3fb107e773c3ece5274e9d08be282867a1e3ded1d9c00fcaa63c",
- "http://127.0.0.1:4545/run/003_relative_import.ts": "a1572e8fd2c2712b33f04aed2561505b5feb2c8696f1f2cded3de7127931b97e"
-}
diff --git a/tests/testdata/run/lock_v2_check_ok.json b/tests/testdata/run/lock_v2_check_ok.json
deleted file mode 100644
index 63bec862a..000000000
--- a/tests/testdata/run/lock_v2_check_ok.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": "2",
- "remote": {
- "http://127.0.0.1:4545/subdir/print_hello.ts": "fa6692c8f9ff3fb107e773c3ece5274e9d08be282867a1e3ded1d9c00fcaa63c",
- "http://127.0.0.1:4545/run/003_relative_import.ts": "a1572e8fd2c2712b33f04aed2561505b5feb2c8696f1f2cded3de7127931b97e"
- }
-}
diff --git a/tests/testdata/run/no_check_remote.ts.disabled.out b/tests/testdata/run/no_check_remote.ts.disabled.out
deleted file mode 100644
index 344264634..000000000
--- a/tests/testdata/run/no_check_remote.ts.disabled.out
+++ /dev/null
@@ -1,4 +0,0 @@
-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/tests/testdata/run/tls_connecttls.js b/tests/testdata/run/tls_connecttls.js
deleted file mode 100644
index 07b361f9c..000000000
--- a/tests/testdata/run/tls_connecttls.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { assert, assertEquals } from "@std/assert";
-import { BufReader, BufWriter } from "@std/io";
-import { TextProtoReader } from "./textproto.ts";
-
-const encoder = new TextEncoder();
-const decoder = new TextDecoder();
-
-const { promise, resolve } = Promise.withResolvers();
-const hostname = "localhost";
-const port = 3505;
-
-const listener = Deno.listenTls({
- hostname,
- port,
- cert: Deno.readTextFileSync("./tls/localhost.crt"),
- key: Deno.readTextFileSync("./tls/localhost.key"),
-});
-
-const response = encoder.encode(
- "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n",
-);
-
-listener.accept().then(
- async (conn) => {
- assert(conn.remoteAddr != null);
- assert(conn.localAddr != null);
- await conn.write(response);
- // TODO(bartlomieju): this might be a bug
- setTimeout(() => {
- conn.close();
- resolve();
- }, 0);
- },
-);
-
-const conn = await Deno.connectTls({
- hostname,
- port,
-});
-const w = new BufWriter(conn);
-const r = new BufReader(conn);
-const body = `GET / HTTP/1.1\r\nHost: ${hostname}:${port}\r\n\r\n`;
-const writeResult = await w.write(encoder.encode(body));
-assertEquals(body.length, writeResult);
-await w.flush();
-const tpr = new TextProtoReader(r);
-const statusLine = await tpr.readLine();
-assert(statusLine !== null, `line must be read: ${String(statusLine)}`);
-const m = statusLine.match(/^(.+?) (.+?) (.+?)$/);
-assert(m !== null, "must be matched");
-const [_, proto, status, ok] = m;
-assertEquals(proto, "HTTP/1.1");
-assertEquals(status, "200");
-assertEquals(ok, "OK");
-const headers = await tpr.readMimeHeader();
-assert(headers !== null);
-const contentLength = parseInt(headers.get("content-length"));
-const bodyBuf = new Uint8Array(contentLength);
-await r.readFull(bodyBuf);
-assertEquals(decoder.decode(bodyBuf), "Hello World\n");
-conn.close();
-listener.close();
-await promise;
-
-console.log("DONE");
diff --git a/tests/testdata/run/tls_starttls.js b/tests/testdata/run/tls_starttls.js
deleted file mode 100644
index 8e7ac03ee..000000000
--- a/tests/testdata/run/tls_starttls.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import { assert, assertEquals } from "@std/assert";
-import { BufReader } from "@std/io/buf-reader";
-import { BufWriter } from "@std/io/buf-writer";
-import { TextProtoReader } from "./textproto.ts";
-
-const encoder = new TextEncoder();
-const decoder = new TextDecoder();
-
-const { promise, resolve } = Promise.withResolvers();
-const hostname = "localhost";
-const port = 3504;
-
-const listener = Deno.listenTls({
- hostname,
- port,
- cert: Deno.readTextFileSync("./tls/localhost.crt"),
- key: Deno.readTextFileSync("./tls/localhost.key"),
-});
-
-const response = encoder.encode(
- "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n",
-);
-
-listener.accept().then(
- async (conn) => {
- assert(conn.remoteAddr != null);
- assert(conn.localAddr != null);
- await conn.write(response);
- // TODO(bartlomieju): this might be a bug
- setTimeout(() => {
- conn.close();
- resolve();
- }, 0);
- },
-);
-
-let conn = await Deno.connect({ hostname, port });
-conn = await Deno.startTls(conn, { hostname });
-const w = new BufWriter(conn);
-const r = new BufReader(conn);
-const body = `GET / HTTP/1.1\r\nHost: ${hostname}:${port}\r\n\r\n`;
-const writeResult = await w.write(encoder.encode(body));
-assertEquals(body.length, writeResult);
-await w.flush();
-const tpr = new TextProtoReader(r);
-const statusLine = await tpr.readLine();
-assert(statusLine !== null, `line must be read: ${String(statusLine)}`);
-const m = statusLine.match(/^(.+?) (.+?) (.+?)$/);
-assert(m !== null, "must be matched");
-const [_, proto, status, ok] = m;
-assertEquals(proto, "HTTP/1.1");
-assertEquals(status, "200");
-assertEquals(ok, "OK");
-const headers = await tpr.readMimeHeader();
-assert(headers !== null);
-const contentLength = parseInt(headers.get("content-length"));
-const bodyBuf = new Uint8Array(contentLength);
-await r.readFull(bodyBuf);
-assertEquals(decoder.decode(bodyBuf), "Hello World\n");
-conn.close();
-listener.close();
-await promise;
-
-console.log("DONE");
diff --git a/tests/testdata/run/type_definitions.ts b/tests/testdata/run/type_definitions.ts
deleted file mode 100644
index 594842721..000000000
--- a/tests/testdata/run/type_definitions.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-// deno-lint-ignore-file
-
-// @deno-types="../type_definitions/foo.d.ts"
-import { foo } from "../type_definitions/foo.js";
-// @deno-types="../type_definitions/fizz.d.ts"
-import "../type_definitions/fizz.js";
-
-import * as qat from "../type_definitions/qat.ts";
-
-console.log(foo);
-console.log(fizz);
-console.log(qat.qat);
diff --git a/tests/testdata/run/type_directives_02.ts b/tests/testdata/run/type_directives_02.ts
deleted file mode 100644
index 0c59346e2..000000000
--- a/tests/testdata/run/type_directives_02.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import * as foo from "../subdir/type_reference.js";
-
-console.log(foo.foo);
diff --git a/tests/testdata/run/type_directives_02.ts.out b/tests/testdata/run/type_directives_02.ts.out
deleted file mode 100644
index b064483b4..000000000
--- a/tests/testdata/run/type_directives_02.ts.out
+++ /dev/null
@@ -1,3 +0,0 @@
-[WILDCARD]
-DEBUG TS - host.getSourceFile("file:///[WILDCARD]/subdir/type_reference.d.ts", Latest)
-[WILDCARD] \ No newline at end of file
diff --git a/tests/testdata/run/unhandled_rejection.ts.out b/tests/testdata/run/unhandled_rejection.ts.out
deleted file mode 100644
index 6ab1667dc..000000000
--- a/tests/testdata/run/unhandled_rejection.ts.out
+++ /dev/null
@@ -1,9 +0,0 @@
-[WILDCARD]
-unhandled rejection at: Promise {
- <rejected> Error: bar not available
- at new Foo (file:///[WILDCARD]/testdata/run/unhandled_rejection.ts:8:20)
- at file:///[WILDCARD]/testdata/run/unhandled_rejection.ts:12:1
-} reason: Error: bar not available
- at new Foo (file:///[WILDCARD]/testdata/run/unhandled_rejection.ts:8:20)
- at file:///[WILDCARD]/testdata/run/unhandled_rejection.ts:12:1
-unhandled rejection at: Promise { <rejected> undefined } reason: undefined
diff --git a/tests/testdata/run/unhandled_rejection_sync_error.ts.out b/tests/testdata/run/unhandled_rejection_sync_error.ts.out
deleted file mode 100644
index e178373f0..000000000
--- a/tests/testdata/run/unhandled_rejection_sync_error.ts.out
+++ /dev/null
@@ -1,6 +0,0 @@
-[WILDCARD]
-unhandled rejection at: Promise {
- <rejected> Error: boom!
- at file:///[WILDCARD]testdata/run/unhandled_rejection_sync_error.ts:6:7
-} reason: Error: boom!
- at file:///[WILDCARD]testdata/run/unhandled_rejection_sync_error.ts:6:7
diff --git a/tests/testdata/run/unstable_worker.ts b/tests/testdata/run/unstable_worker.ts
deleted file mode 100644
index d111d2c7e..000000000
--- a/tests/testdata/run/unstable_worker.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-const w = new Worker(
- import.meta.resolve("../workers/worker_unstable.ts"),
- { type: "module", name: "Unstable Worker" },
-);
-
-w.postMessage({});
diff --git a/tests/testdata/run/wasm_unreachable.js b/tests/testdata/run/wasm_unreachable.js
deleted file mode 100644
index d6a4f59db..000000000
--- a/tests/testdata/run/wasm_unreachable.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// WebAssembly module containing a single function with an unreachable instruction
-const binary = await Deno.readFile("./assets/unreachable.wasm");
-
-const module = new WebAssembly.Module(binary);
-const instance = new WebAssembly.Instance(module);
-
-// Compare the stack trace with wasm_url.js, which compiles the WASM module with
-// streaming APIs.
-instance.exports.unreachable();
diff --git a/tests/testdata/run/with_config/no_auto_discovery.out b/tests/testdata/run/with_config/no_auto_discovery.out
deleted file mode 100644
index 59339ebe5..000000000
--- a/tests/testdata/run/with_config/no_auto_discovery.out
+++ /dev/null
@@ -1,4 +0,0 @@
-error: TS2584 [ERROR]: Cannot find name 'document'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.
- console.log(document);
- ~~~~~~~~
- at [WILDCARD]run/with_config/frontend_work.ts:2:15
diff --git a/tests/testdata/run/with_package_json/with_stop/main.out b/tests/testdata/run/with_package_json/with_stop/main.out
deleted file mode 100644
index 44098a2d8..000000000
--- a/tests/testdata/run/with_package_json/with_stop/main.out
+++ /dev/null
@@ -1,5 +0,0 @@
-[WILDCARD]Config file found at '[WILDCARD]with_package_json[WILDCARD]with_stop[WILDCARD]some[WILDCARD]nested[WILDCARD]deno.json'
-[WILDCARD]
-error: Relative import path "chalk" not prefixed with / or ./ or ../
- hint: If you want to use a JSR or npm package, try running `deno add jsr:chalk` or `deno add npm:chalk`
- at file:///[WILDCARD]with_package_json/with_stop/some/nested/dir/main.ts:3:19
diff --git a/tests/testdata/run/worker_close_in_wasm_reactions.js b/tests/testdata/run/worker_close_in_wasm_reactions.js
deleted file mode 100644
index 95f34e944..000000000
--- a/tests/testdata/run/worker_close_in_wasm_reactions.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-// https://github.com/denoland/deno/issues/12263
-// Test for a panic that happens when a worker is closed in the reactions of a
-// WASM async operation.
-
-new Worker(
- import.meta.resolve("../workers/close_in_wasm_reactions.js"),
- { type: "module" },
-);
diff --git a/tests/testdata/run/worker_close_nested.js b/tests/testdata/run/worker_close_nested.js
deleted file mode 100644
index 37b6ed9c9..000000000
--- a/tests/testdata/run/worker_close_nested.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-// Test that closing a worker which has living child workers will automatically
-// close the children.
-
-console.log("Starting the main thread");
-
-const worker = new Worker(
- import.meta.resolve("../workers/close_nested_parent.js"),
- { type: "module" },
-);
-
-setTimeout(() => {
- console.log("About to close");
- worker.postMessage({});
-
- // Keep the process running for another two seconds, to make sure there's no
- // output from the child worker.
- setTimeout(() => {}, 2000);
-}, 1000);
diff --git a/tests/testdata/run/worker_close_race.js b/tests/testdata/run/worker_close_race.js
deleted file mode 100644
index 1da832425..000000000
--- a/tests/testdata/run/worker_close_race.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-// https://github.com/denoland/deno/issues/11416
-// Test for a race condition between a worker's `close()` and the main thread's
-// `Worker.prototype.terminate()`.
-
-const worker = new Worker(
- import.meta.resolve("../workers/close_race_worker.js"),
- { type: "module" },
-);
-
-worker.onmessage = () => {
- worker.terminate();
-};
diff --git a/tests/testdata/run/worker_drop_handle_race.js b/tests/testdata/run/worker_drop_handle_race.js
deleted file mode 100644
index 731a36964..000000000
--- a/tests/testdata/run/worker_drop_handle_race.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-// https://github.com/denoland/deno/issues/11342
-// Test for a panic that happens when the main thread's event loop finishes
-// running while the worker's event loop is still spinning.
-
-// The exception thrown in the worker will not terminate the worker, but it will
-// propagate to the main thread and cause it to exit.
-new Worker(
- import.meta.resolve("../workers/drop_handle_race.js"),
- { type: "module" },
-);
diff --git a/tests/testdata/run/worker_drop_handle_race.js.out b/tests/testdata/run/worker_drop_handle_race.js.out
deleted file mode 100644
index 0820f164e..000000000
--- a/tests/testdata/run/worker_drop_handle_race.js.out
+++ /dev/null
@@ -1,7 +0,0 @@
-error: Uncaught (in worker "") Error
- throw new Error();
- ^
- at [WILDCARD]/workers/drop_handle_race.js:2:9
- at [WILDCARD]
-error: Uncaught (in promise) Error: Unhandled error in child worker.
- at Worker.#pollControl [WILDCARD]
diff --git a/tests/testdata/run/worker_event_handler_test.js b/tests/testdata/run/worker_event_handler_test.js
deleted file mode 100644
index a91b0ec0b..000000000
--- a/tests/testdata/run/worker_event_handler_test.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const w = new Worker(
- import.meta.resolve("../workers/worker_event_handlers.js"),
- { type: "module" },
-);
-w.postMessage({});
diff --git a/tests/testdata/run/worker_message_before_close.js b/tests/testdata/run/worker_message_before_close.js
deleted file mode 100644
index 569388b9b..000000000
--- a/tests/testdata/run/worker_message_before_close.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const messagesReceived = new Set();
-
-for (let i = 0; i < 4; i++) {
- const worker = new Worker(
- import.meta.resolve("../workers/message_before_close.js"),
- { type: "module", name: String(i) },
- );
-
- worker.addEventListener("message", () => {
- messagesReceived.add(i);
- if (messagesReceived.size == 4) {
- console.log("received all 4 responses from the workers");
- }
- });
-
- worker.postMessage({});
-}
-
-globalThis.addEventListener("unload", () => {
- if (messagesReceived.size !== 4) {
- console.log(
- "received only %d responses from the workers",
- messagesReceived.size,
- );
- }
-});
diff --git a/tools/lint.js b/tools/lint.js
index b591cae0b..cc595c2b1 100755
--- a/tools/lint.js
+++ b/tools/lint.js
@@ -219,7 +219,7 @@ async function ensureNoNewITests() {
"pm_tests.rs": 0,
"publish_tests.rs": 0,
"repl_tests.rs": 0,
- "run_tests.rs": 331,
+ "run_tests.rs": 24,
"shared_library_tests.rs": 0,
"task_tests.rs": 2,
"test_tests.rs": 0,