diff options
-rw-r--r-- | .dprint.json | 30 | ||||
-rw-r--r-- | .gitattributes | 6 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | cli/Cargo.toml | 2 | ||||
-rw-r--r-- | cli/bench/main.rs | 35 | ||||
-rw-r--r-- | cli/tests/config/deno.json | 5 | ||||
-rw-r--r-- | cli/tests/integration/compile_tests.rs | 1180 | ||||
-rw-r--r-- | cli/tests/integration/js_unit_tests.rs | 201 | ||||
-rw-r--r-- | cli/tests/integration/node_compat_tests.rs | 31 | ||||
-rw-r--r-- | cli/tests/integration/node_unit_tests.rs | 207 | ||||
-rw-r--r-- | cli/tests/node_compat/deno.json | 5 | ||||
-rw-r--r-- | cli/tests/node_compat/test/fixtures/child-process-spawn-node.js | 14 | ||||
-rw-r--r-- | cli/tests/testdata/bench/allow_all.ts | 43 | ||||
-rw-r--r-- | cli/tests/testdata/bench/allow_none.ts | 23 | ||||
-rw-r--r-- | cli/tests/testdata/cat.ts | 10 | ||||
-rw-r--r-- | cli/tests/testdata/cert/listen_tls_alpn_fail.ts | 20 | ||||
-rw-r--r-- | cli/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts | 18 | ||||
-rw-r--r-- | cli/tests/testdata/compile/standalone_follow_redirects_2.js | 5 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts | 11 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_tests_included/foo.test.js | 6 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_tests_included/foo.test.mts | 6 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_tests_included/foo.test.ts | 6 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_transpiled_lines/index.ts | 3 | ||||
-rw-r--r-- | cli/tests/testdata/echo_server.ts | 12 | ||||
-rw-r--r-- | cli/tests/testdata/run/045_proxy_test.ts | 121 | ||||
-rw-r--r-- | cli/tests/testdata/run/import_meta/main.ts | 52 | ||||
-rw-r--r-- | cli/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled | 2 | ||||
-rw-r--r-- | cli/tests/testdata/run/onload/imported.ts | 13 | ||||
-rw-r--r-- | cli/tests/testdata/run/onload/main.ts | 34 | ||||
-rw-r--r-- | cli/tests/testdata/run/onload/nest_imported.ts | 12 | ||||
-rw-r--r-- | cli/tests/testdata/run/textproto.ts | 173 | ||||
-rw-r--r-- | cli/tests/testdata/run/tls_connecttls.js | 66 | ||||
-rw-r--r-- | cli/tests/testdata/run/tls_starttls.js | 65 | ||||
-rw-r--r-- | cli/tests/testdata/run/websocket_server_idletimeout.ts | 25 | ||||
-rw-r--r-- | cli/tests/testdata/test/allow_all.ts | 43 | ||||
-rw-r--r-- | cli/tests/testdata/test/allow_none.ts | 23 | ||||
-rw-r--r-- | cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out | 19 | ||||
-rw-r--r-- | cli/tests/testdata/test/ops_sanitizer_missing_details.ts | 10 | ||||
-rw-r--r-- | cli/tests/testdata/test/ops_sanitizer_step_leak.out | 10 | ||||
-rw-r--r-- | cli/tests/testdata/workers/deno_worker.ts | 16 | ||||
-rw-r--r-- | cli/tests/unit/fetch_test.ts | 2071 | ||||
-rw-r--r-- | cli/tests/unit/files_test.ts | 1095 | ||||
-rw-r--r-- | cli/tests/unit/flock_test.ts | 197 | ||||
-rw-r--r-- | cli/tests/unit/http_test.ts | 2801 | ||||
-rw-r--r-- | cli/tests/unit/net_test.ts | 1274 | ||||
-rw-r--r-- | cli/tests/unit/read_dir_test.ts | 113 | ||||
-rw-r--r-- | cli/tests/unit/read_file_test.ts | 182 | ||||
-rw-r--r-- | cli/tests/unit/read_text_file_test.ts | 208 | ||||
-rw-r--r-- | cli/tests/unit/real_path_test.ts | 114 | ||||
-rw-r--r-- | cli/tests/unit/resources_test.ts | 55 | ||||
-rw-r--r-- | cli/tests/unit/serve_test.ts | 3932 | ||||
-rw-r--r-- | cli/tests/unit/stat_test.ts | 342 | ||||
-rw-r--r-- | cli/tests/unit/tls_test.ts | 1546 | ||||
-rw-r--r-- | cli/tests/unit/tty_test.ts | 32 | ||||
-rw-r--r-- | cli/tests/unit/webcrypto_test.ts | 2047 | ||||
-rw-r--r-- | cli/tests/unit/webgpu_test.ts | 267 | ||||
-rw-r--r-- | cli/tests/unit/websocket_test.ts | 738 | ||||
-rw-r--r-- | cli/tests/unit_node/fs_test.ts | 116 | ||||
-rw-r--r-- | cli/tests/unit_node/http_test.ts | 940 | ||||
-rw-r--r-- | cli/tests/unit_node/module_test.ts | 72 | ||||
-rw-r--r-- | test_util/src/lib.rs | 2 | ||||
-rw-r--r-- | test_util/src/servers/mod.rs | 6 | ||||
-rw-r--r-- | tests/Cargo.toml (renamed from cli/tests/Cargo.toml) | 0 | ||||
-rw-r--r-- | tests/config/deno.json | 5 | ||||
-rw-r--r-- | tests/integration/bench_tests.rs (renamed from cli/tests/integration/bench_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/bundle_tests.rs (renamed from cli/tests/integration/bundle_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/cache_tests.rs (renamed from cli/tests/integration/cache_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/cert_tests.rs (renamed from cli/tests/integration/cert_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/check_tests.rs (renamed from cli/tests/integration/check_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/compile_tests.rs | 1180 | ||||
-rw-r--r-- | tests/integration/coverage_tests.rs (renamed from cli/tests/integration/coverage_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/doc_tests.rs (renamed from cli/tests/integration/doc_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/eval_tests.rs (renamed from cli/tests/integration/eval_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/flags_tests.rs (renamed from cli/tests/integration/flags_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/fmt_tests.rs (renamed from cli/tests/integration/fmt_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/info_tests.rs (renamed from cli/tests/integration/info_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/init_tests.rs (renamed from cli/tests/integration/init_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/inspector_tests.rs (renamed from cli/tests/integration/inspector_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/install_tests.rs (renamed from cli/tests/integration/install_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/js_unit_tests.rs | 201 | ||||
-rw-r--r-- | tests/integration/jsr_tests.rs (renamed from cli/tests/integration/jsr_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/jupyter_tests.rs (renamed from cli/tests/integration/jupyter_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/lint_tests.rs (renamed from cli/tests/integration/lint_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/lsp_tests.rs (renamed from cli/tests/integration/lsp_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/mod.rs (renamed from cli/tests/integration/mod.rs) | 0 | ||||
-rw-r--r-- | tests/integration/node_compat_tests.rs | 31 | ||||
-rw-r--r-- | tests/integration/node_unit_tests.rs | 207 | ||||
-rw-r--r-- | tests/integration/npm_tests.rs (renamed from cli/tests/integration/npm_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/publish_tests.rs (renamed from cli/tests/integration/publish_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/repl_tests.rs (renamed from cli/tests/integration/repl_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/run_tests.rs (renamed from cli/tests/integration/run_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/shared_library_tests.rs (renamed from cli/tests/integration/shared_library_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/task_tests.rs (renamed from cli/tests/integration/task_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/test_tests.rs (renamed from cli/tests/integration/test_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/upgrade_tests.rs (renamed from cli/tests/integration/upgrade_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/vendor_tests.rs (renamed from cli/tests/integration/vendor_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/watcher_tests.rs (renamed from cli/tests/integration/watcher_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration/worker_tests.rs (renamed from cli/tests/integration/worker_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration_tests.rs (renamed from cli/tests/integration_tests.rs) | 0 | ||||
-rw-r--r-- | tests/integration_tests_runner.rs (renamed from cli/tests/integration_tests_runner.rs) | 0 | ||||
-rw-r--r-- | tests/lib.rs (renamed from cli/tests/lib.rs) | 0 | ||||
-rw-r--r-- | tests/node_compat/common.ts (renamed from cli/tests/node_compat/common.ts) | 0 | ||||
-rw-r--r-- | tests/node_compat/config.jsonc (renamed from cli/tests/node_compat/config.jsonc) | 0 | ||||
-rw-r--r-- | tests/node_compat/deno.json | 5 | ||||
-rw-r--r-- | tests/node_compat/polyfill_globals.js (renamed from cli/tests/node_compat/polyfill_globals.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/runner.ts (renamed from cli/tests/node_compat/runner.ts) | 0 | ||||
-rw-r--r-- | tests/node_compat/test.ts (renamed from cli/tests/node_compat/test.ts) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/child_process.js (renamed from cli/tests/node_compat/test/common/child_process.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/countdown.js (renamed from cli/tests/node_compat/test/common/countdown.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/dns.js (renamed from cli/tests/node_compat/test/common/dns.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/duplexpair.js (renamed from cli/tests/node_compat/test/common/duplexpair.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/fixtures.js (renamed from cli/tests/node_compat/test/common/fixtures.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/hijackstdio.js (renamed from cli/tests/node_compat/test/common/hijackstdio.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/index.js (renamed from cli/tests/node_compat/test/common/index.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/index.mjs (renamed from cli/tests/node_compat/test/common/index.mjs) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/internet.js (renamed from cli/tests/node_compat/test/common/internet.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/package.json (renamed from cli/tests/node_compat/test/common/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/common/tmpdir.js (renamed from cli/tests/node_compat/test/common/tmpdir.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/GH-1899-output.js (renamed from cli/tests/node_compat/test/fixtures/GH-1899-output.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/a.js (renamed from cli/tests/node_compat/test/fixtures/a.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/child-process-spawn-node.js | 14 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/child_process_should_emit_error.js (renamed from cli/tests/node_compat/test/fixtures/child_process_should_emit_error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/echo.js (renamed from cli/tests/node_compat/test/fixtures/echo.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/elipses.txt (renamed from cli/tests/node_compat/test/fixtures/elipses.txt) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/empty.txt (renamed from cli/tests/node_compat/test/fixtures/empty.txt) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/exit.js (renamed from cli/tests/node_compat/test/fixtures/exit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/keys/agent1-cert.pem (renamed from cli/tests/node_compat/test/fixtures/keys/agent1-cert.pem) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/keys/agent1-key.pem (renamed from cli/tests/node_compat/test/fixtures/keys/agent1-key.pem) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/keys/ca1-cert.pem (renamed from cli/tests/node_compat/test/fixtures/keys/ca1-cert.pem) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/loop.js (renamed from cli/tests/node_compat/test/fixtures/loop.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/package.json (renamed from cli/tests/node_compat/test/fixtures/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/print-chars.js (renamed from cli/tests/node_compat/test/fixtures/print-chars.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/fixtures/x.txt (renamed from cli/tests/node_compat/test/fixtures/x.txt) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/package.json (renamed from cli/tests/node_compat/test/internet/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-any.js (renamed from cli/tests/node_compat/test/internet/test-dns-any.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-idna2008.js (renamed from cli/tests/node_compat/test/internet/test-dns-idna2008.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-ipv4.js (renamed from cli/tests/node_compat/test/internet/test-dns-ipv4.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-ipv6.js (renamed from cli/tests/node_compat/test/internet/test-dns-ipv6.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-lookup.js (renamed from cli/tests/node_compat/test/internet/test-dns-lookup.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-promises-resolve.js (renamed from cli/tests/node_compat/test/internet/test-dns-promises-resolve.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-regress-6244.js (renamed from cli/tests/node_compat/test/internet/test-dns-regress-6244.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js (renamed from cli/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-dns.js (renamed from cli/tests/node_compat/test/internet/test-dns.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/internet/test-http-https-default-ports.js (renamed from cli/tests/node_compat/test/internet/test-http-https-default-ports.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/package.json (renamed from cli/tests/node_compat/test/parallel/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-assert-async.js (renamed from cli/tests/node_compat/test/parallel/test-assert-async.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-assert-fail.js (renamed from cli/tests/node_compat/test/parallel/test-assert-fail.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-assert-strict-exists.js (renamed from cli/tests/node_compat/test/parallel/test-assert-strict-exists.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-assert.js (renamed from cli/tests/node_compat/test/parallel/test-assert.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-bad-unicode.js (renamed from cli/tests/node_compat/test/parallel/test-bad-unicode.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-btoa-atob.js (renamed from cli/tests/node_compat/test/parallel/test-btoa-atob.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-alloc.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-alloc.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-arraybuffer.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-arraybuffer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-ascii.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-ascii.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-badhex.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-badhex.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-bigint64.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-bigint64.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-bytelength.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-bytelength.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-compare-offset.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-compare-offset.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-concat.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-concat.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-constants.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-constants.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-copy.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-copy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-equals.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-equals.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-fakes.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-fakes.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-from.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-from.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-includes.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-includes.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-indexof.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-indexof.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-inheritance.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-inheritance.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-isencoding.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-isencoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-iterator.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-iterator.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-new.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-new.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-over-max-length.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-over-max-length.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-parent-property.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-parent-property.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-read.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-read.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-readdouble.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-readdouble.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-readfloat.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-readfloat.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-readint.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-readint.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-readuint.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-readuint.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-safe-unsafe.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-slice.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-slice.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-slow.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-slow.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-swap.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-swap.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-tojson.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-tojson.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-tostring-range.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-tostring-range.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-tostring.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-tostring.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-writedouble.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-writedouble.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-writefloat.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-writefloat.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-writeint.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-writeint.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-writeuint.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-writeuint.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-buffer-zero-fill.js (renamed from cli/tests/node_compat/test/parallel/test-buffer-zero-fill.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-default-options.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-default-options.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-double-pipe.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-double-pipe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-abortcontroller-promisified.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-abortcontroller-promisified.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-cwd.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-cwd.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-env.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-env.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-error.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-maxbuf.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-maxbuf.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-std-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-std-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exec-timeout-not-expired.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exec-timeout-not-expired.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-execfile.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-execfile.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-execsync-maxbuf.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-execsync-maxbuf.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-exit-code.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-exit-code.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-flush-stdio.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-flush-stdio.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-fork-ref.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-fork-ref.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-fork-ref2.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-fork-ref2.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-ipc.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-ipc.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-kill.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-kill.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-set-blocking.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-set-blocking.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawn-args.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawn-args.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawn-event.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawn-event.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawnsync-args.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawnsync-env.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-spawnsync.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-spawnsync.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-stdio-inherit.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-child-process-stdout-flush.js (renamed from cli/tests/node_compat/test/parallel/test-child-process-stdout-flush.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-async-write-error.js (renamed from cli/tests/node_compat/test/parallel/test-console-async-write-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-group.js (renamed from cli/tests/node_compat/test/parallel/test-console-group.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-instance.js (renamed from cli/tests/node_compat/test/parallel/test-console-instance.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js (renamed from cli/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-log-throw-primitive.js (renamed from cli/tests/node_compat/test/parallel/test-console-log-throw-primitive.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js (renamed from cli/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-sync-write-error.js (renamed from cli/tests/node_compat/test/parallel/test-console-sync-write-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-table.js (renamed from cli/tests/node_compat/test/parallel/test-console-table.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-console-tty-colors.js (renamed from cli/tests/node_compat/test/parallel/test-console-tty-colors.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-dh-shared.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-dh-shared.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-dh.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-dh.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-hkdf.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-hkdf.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-hmac.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-hmac.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-prime.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-prime.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-secret-keygen.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-secret-keygen.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-stream.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-stream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-update-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-update-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-crypto-x509.js (renamed from cli/tests/node_compat/test/parallel/test-crypto-x509.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-close-during-bind.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-close-during-bind.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-close-signal.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-close-signal.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-custom-lookup.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-custom-lookup.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-ipv6only.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-ipv6only.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-send-cb-quelches-error.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-send-cb-quelches-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dgram-udp6-link-local-address.js (renamed from cli/tests/node_compat/test/parallel/test-dgram-udp6-link-local-address.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js (renamed from cli/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js (renamed from cli/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js (renamed from cli/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js (renamed from cli/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-diagnostics-channel-udp.js (renamed from cli/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns-lookup.js (renamed from cli/tests/node_compat/test/parallel/test-dns-lookup.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns-memory-error.js (renamed from cli/tests/node_compat/test/parallel/test-dns-memory-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns-promises-exists.js (renamed from cli/tests/node_compat/test/parallel/test-dns-promises-exists.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns-resolveany.js (renamed from cli/tests/node_compat/test/parallel/test-dns-resolveany.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js (renamed from cli/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns-setservers-type-check.js (renamed from cli/tests/node_compat/test/parallel/test-dns-setservers-type-check.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-dns.js (renamed from cli/tests/node_compat/test/parallel/test-dns.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-eval-strict-referenceerror.js (renamed from cli/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-eval.js (renamed from cli/tests/node_compat/test/parallel/test-eval.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-add-listeners.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-emit-context.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-emit-context.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-error-monitor.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-errors.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-errors.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-listener-count.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-listener-count.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-listeners.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-listeners.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-max-listeners.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-max-listeners.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-method-names.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-method-names.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-no-error-provided-to-error-event.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-no-error-provided-to-error-event.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-num-args.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-num-args.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-once.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-once.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-prepend.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-prepend.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-special-event-names.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-subclass.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-subclass.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-event-emitter-symbols.js (renamed from cli/tests/node_compat/test/parallel/test-event-emitter-symbols.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-events-list.js (renamed from cli/tests/node_compat/test/parallel/test-events-list.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-events-on-async-iterator.js (renamed from cli/tests/node_compat/test/parallel/test-events-on-async-iterator.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-events-once.js (renamed from cli/tests/node_compat/test/parallel/test-events-once.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js (renamed from cli/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-eventtarget-brandcheck.js (renamed from cli/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-exception-handler.js (renamed from cli/tests/node_compat/test/parallel/test-exception-handler.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-exception-handler2.js (renamed from cli/tests/node_compat/test/parallel/test-exception-handler2.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-file-read-noexist.js (renamed from cli/tests/node_compat/test/parallel/test-file-read-noexist.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-file-write-stream.js (renamed from cli/tests/node_compat/test/parallel/test-file-write-stream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-file-write-stream2.js (renamed from cli/tests/node_compat/test/parallel/test-file-write-stream2.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-file-write-stream3.js (renamed from cli/tests/node_compat/test/parallel/test-file-write-stream3.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-file-write-stream4.js (renamed from cli/tests/node_compat/test/parallel/test-file-write-stream4.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-access.js (renamed from cli/tests/node_compat/test/parallel/test-fs-access.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-append-file-sync.js (renamed from cli/tests/node_compat/test/parallel/test-fs-append-file-sync.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-append-file.js (renamed from cli/tests/node_compat/test/parallel/test-fs-append-file.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-chmod-mask.js (renamed from cli/tests/node_compat/test/parallel/test-fs-chmod-mask.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-chmod.js (renamed from cli/tests/node_compat/test/parallel/test-fs-chmod.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-chown-type-check.js (renamed from cli/tests/node_compat/test/parallel/test-fs-chown-type-check.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-copyfile.js (renamed from cli/tests/node_compat/test/parallel/test-fs-copyfile.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-empty-readStream.js (renamed from cli/tests/node_compat/test/parallel/test-fs-empty-readStream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-mkdir.js (renamed from cli/tests/node_compat/test/parallel/test-fs-mkdir.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-open-flags.js (renamed from cli/tests/node_compat/test/parallel/test-fs-open-flags.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-open-mode-mask.js (renamed from cli/tests/node_compat/test/parallel/test-fs-open-mode-mask.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-open-no-close.js (renamed from cli/tests/node_compat/test/parallel/test-fs-open-no-close.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-open-numeric-flags.js (renamed from cli/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-open.js (renamed from cli/tests/node_compat/test/parallel/test-fs-open.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-opendir.js (renamed from cli/tests/node_compat/test/parallel/test-fs-opendir.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-double-close.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-fd.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-fd.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-inherit.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-resume.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-resume.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-stream.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-stream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-type.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-type.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read-zero-length.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read-zero-length.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-read.js (renamed from cli/tests/node_compat/test/parallel/test-fs-read.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js (renamed from cli/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-readdir.js (renamed from cli/tests/node_compat/test/parallel/test-fs-readdir.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-readfile-empty.js (renamed from cli/tests/node_compat/test/parallel/test-fs-readfile-empty.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-realpath-native.js (renamed from cli/tests/node_compat/test/parallel/test-fs-realpath-native.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-recursive.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-rmdir-type-check.js (renamed from cli/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-watchfile.js (renamed from cli/tests/node_compat/test/parallel/test-fs-watchfile.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-buffer.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-buffer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-file-buffer.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-file-buffer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-file-sync.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-file-sync.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-file.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-file.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-no-fd.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-no-fd.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream-double-close.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream-end.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream-fs.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream-fs.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-stream.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-stream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write-sync.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write-sync.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-write.js (renamed from cli/tests/node_compat/test/parallel/test-fs-write.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-fs-writev-sync.js (renamed from cli/tests/node_compat/test/parallel/test-fs-writev-sync.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-handle-wrap-close-abort.js (renamed from cli/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-agent-getname.js (renamed from cli/tests/node_compat/test/parallel/test-http-agent-getname.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-client-get-url.js (renamed from cli/tests/node_compat/test/parallel/test-http-client-get-url.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-client-read-in-error.js (renamed from cli/tests/node_compat/test/parallel/test-http-client-read-in-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-localaddress.js (renamed from cli/tests/node_compat/test/parallel/test-http-localaddress.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js (renamed from cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js (renamed from cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js (renamed from cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js (renamed from cli/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-outgoing-settimeout.js (renamed from cli/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-auth-with-header-in-request.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-auth-with-header-in-request.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-auth.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-auth.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-basic.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-basic.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-https.request.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-https.request.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-path.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-path.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-post.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-post.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-http-url.parse-search.js (renamed from cli/tests/node_compat/test/parallel/test-http-url.parse-search.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-access-byteswritten.js (renamed from cli/tests/node_compat/test/parallel/test-net-access-byteswritten.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js (renamed from cli/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-better-error-messages-path.js (renamed from cli/tests/node_compat/test/parallel/test-net-better-error-messages-path.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js (renamed from cli/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-after-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-after-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-buffer.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-buffer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-buffer2.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-buffer2.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-immediate-finish.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-connect-no-arg.js (renamed from cli/tests/node_compat/test/parallel/test-net-connect-no-arg.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-dns-error.js (renamed from cli/tests/node_compat/test/parallel/test-net-dns-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-during-close.js (renamed from cli/tests/node_compat/test/parallel/test-net-during-close.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-end-close.js (renamed from cli/tests/node_compat/test/parallel/test-net-end-close.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-end-without-connect.js (renamed from cli/tests/node_compat/test/parallel/test-net-end-without-connect.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-isip.js (renamed from cli/tests/node_compat/test/parallel/test-net-isip.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-isipv4.js (renamed from cli/tests/node_compat/test/parallel/test-net-isipv4.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-isipv6.js (renamed from cli/tests/node_compat/test/parallel/test-net-isipv6.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js (renamed from cli/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-listen-close-server.js (renamed from cli/tests/node_compat/test/parallel/test-net-listen-close-server.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-listen-invalid-port.js (renamed from cli/tests/node_compat/test/parallel/test-net-listen-invalid-port.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-listening.js (renamed from cli/tests/node_compat/test/parallel/test-net-listening.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-localerror.js (renamed from cli/tests/node_compat/test/parallel/test-net-localerror.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-options-lookup.js (renamed from cli/tests/node_compat/test/parallel/test-net-options-lookup.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-pipe-connect-errors.js (renamed from cli/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-call-listen-multiple-times.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-call-listen-multiple-times.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-listen-options-signal.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-listen-options.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-listen-options.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-listen-path.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-listen-path.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-options.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-options.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-try-ports.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-try-ports.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-unref-persistent.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-unref-persistent.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-server-unref.js (renamed from cli/tests/node_compat/test/parallel/test-net-server-unref.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-socket-destroy-twice.js (renamed from cli/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js (renamed from cli/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-socket-timeout.js (renamed from cli/tests/node_compat/test/parallel/test-net-socket-timeout.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-timeout-no-handle.js (renamed from cli/tests/node_compat/test/parallel/test-net-timeout-no-handle.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-net-write-arguments.js (renamed from cli/tests/node_compat/test/parallel/test-net-write-arguments.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick-ordering.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick-ordering.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick-ordering2.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick-ordering2.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick-when-exiting.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick-when-exiting.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-next-tick.js (renamed from cli/tests/node_compat/test/parallel/test-next-tick.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-nodeeventtarget.js (renamed from cli/tests/node_compat/test/parallel/test-nodeeventtarget.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-os.js (renamed from cli/tests/node_compat/test/parallel/test-os.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-outgoing-message-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-outgoing-message-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-outgoing-message-pipe.js (renamed from cli/tests/node_compat/test/parallel/test-outgoing-message-pipe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-parse-args.mjs (renamed from cli/tests/node_compat/test/parallel/test-parse-args.mjs) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-basename.js (renamed from cli/tests/node_compat/test/parallel/test-path-basename.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-dirname.js (renamed from cli/tests/node_compat/test/parallel/test-path-dirname.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-extname.js (renamed from cli/tests/node_compat/test/parallel/test-path-extname.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-isabsolute.js (renamed from cli/tests/node_compat/test/parallel/test-path-isabsolute.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-join.js (renamed from cli/tests/node_compat/test/parallel/test-path-join.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-makelong.js (renamed from cli/tests/node_compat/test/parallel/test-path-makelong.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-normalize.js (renamed from cli/tests/node_compat/test/parallel/test-path-normalize.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-parse-format.js (renamed from cli/tests/node_compat/test/parallel/test-path-parse-format.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-posix-exists.js (renamed from cli/tests/node_compat/test/parallel/test-path-posix-exists.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-relative.js (renamed from cli/tests/node_compat/test/parallel/test-path-relative.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-resolve.js (renamed from cli/tests/node_compat/test/parallel/test-path-resolve.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-win32-exists.js (renamed from cli/tests/node_compat/test/parallel/test-path-win32-exists.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path-zero-length-strings.js (renamed from cli/tests/node_compat/test/parallel/test-path-zero-length-strings.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-path.js (renamed from cli/tests/node_compat/test/parallel/test-path.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-beforeexit.js (renamed from cli/tests/node_compat/test/parallel/test-process-beforeexit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js (renamed from cli/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-env-allowed-flags.js (renamed from cli/tests/node_compat/test/parallel/test-process-env-allowed-flags.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-exit-from-before-exit.js (renamed from cli/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-exit-handler.js (renamed from cli/tests/node_compat/test/parallel/test-process-exit-handler.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-exit-recursive.js (renamed from cli/tests/node_compat/test/parallel/test-process-exit-recursive.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-exit.js (renamed from cli/tests/node_compat/test/parallel/test-process-exit.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-kill-pid.js (renamed from cli/tests/node_compat/test/parallel/test-process-kill-pid.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-process-uptime.js (renamed from cli/tests/node_compat/test/parallel/test-process-uptime.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-promise-unhandled-silent.js (renamed from cli/tests/node_compat/test/parallel/test-promise-unhandled-silent.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js (renamed from cli/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-querystring-escape.js (renamed from cli/tests/node_compat/test/parallel/test-querystring-escape.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js (renamed from cli/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-querystring-multichar-separator.js (renamed from cli/tests/node_compat/test/parallel/test-querystring-multichar-separator.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-querystring.js (renamed from cli/tests/node_compat/test/parallel/test-querystring.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-emit-keypress-events.js (renamed from cli/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js (renamed from cli/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-interface.js (renamed from cli/tests/node_compat/test/parallel/test-readline-interface.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-keys.js (renamed from cli/tests/node_compat/test/parallel/test-readline-keys.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-position.js (renamed from cli/tests/node_compat/test/parallel/test-readline-position.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-reopen.js (renamed from cli/tests/node_compat/test/parallel/test-readline-reopen.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-set-raw-mode.js (renamed from cli/tests/node_compat/test/parallel/test-readline-set-raw-mode.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline-undefined-columns.js (renamed from cli/tests/node_compat/test/parallel/test-readline-undefined-columns.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-readline.js (renamed from cli/tests/node_compat/test/parallel/test-readline.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stdin-from-file-spawn.js (renamed from cli/tests/node_compat/test/parallel/test-stdin-from-file-spawn.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-add-abort-signal.js (renamed from cli/tests/node_compat/test/parallel/test-stream-add-abort-signal.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-aliases-legacy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-aliases-legacy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-auto-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-auto-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js (renamed from cli/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-backpressure.js (renamed from cli/tests/node_compat/test/parallel/test-stream-backpressure.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-big-packet.js (renamed from cli/tests/node_compat/test/parallel/test-stream-big-packet.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-big-push.js (renamed from cli/tests/node_compat/test/parallel/test-stream-big-push.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-buffer-list.js (renamed from cli/tests/node_compat/test/parallel/test-stream-buffer-list.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-construct.js (renamed from cli/tests/node_compat/test/parallel/test-stream-construct.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-destroy-event-order.js (renamed from cli/tests/node_compat/test/parallel/test-stream-destroy-event-order.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex-from.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex-from.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex-props.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex-props.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex-readable-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-duplex.js (renamed from cli/tests/node_compat/test/parallel/test-stream-duplex.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-end-paused.js (renamed from cli/tests/node_compat/test/parallel/test-stream-end-paused.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-error-once.js (renamed from cli/tests/node_compat/test/parallel/test-stream-error-once.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-events-prepend.js (renamed from cli/tests/node_compat/test/parallel/test-stream-events-prepend.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-inheritance.js (renamed from cli/tests/node_compat/test/parallel/test-stream-inheritance.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-ispaused.js (renamed from cli/tests/node_compat/test/parallel/test-stream-ispaused.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-objectmode-undefined.js (renamed from cli/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-once-readable-pipe.js (renamed from cli/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-after-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-after-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-await-drain.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-cleanup.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-error-handling.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-event.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-event.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-flow.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-flow.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-needDrain.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js (renamed from cli/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-push-strings.js (renamed from cli/tests/node_compat/test/parallel/test-stream-push-strings.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-aborted.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-aborted.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-data.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-data.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-didRead.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-didRead.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-ended.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-ended.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-error-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-error-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-event.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-event.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-hwm-0.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-infinite-read.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-needReadable.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-needReadable.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-next-no-null.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-readable.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-readable.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-unshift.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-unshift.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-readableListening-state.js (renamed from cli/tests/node_compat/test/parallel/test-stream-readableListening-state.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-callback-twice.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-final-sync.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-final-sync.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-final.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-final.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-flush-data.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-flush-data.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-split-highwatermark.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-split-highwatermark.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-transform-split-objectmode.js (renamed from cli/tests/node_compat/test/parallel/test-stream-transform-split-objectmode.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-uint8array.js (renamed from cli/tests/node_compat/test/parallel/test-stream-uint8array.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-unpipe-event.js (renamed from cli/tests/node_compat/test/parallel/test-stream-unpipe-event.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js (renamed from cli/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-unshift-read-race.js (renamed from cli/tests/node_compat/test/parallel/test-stream-unshift-read-race.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-end-multiple.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-ended-state.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-ended-state.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-finished-state.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-finished-state.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-finished.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-finished.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-null.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-null.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-properties.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-properties.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-writable.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-writable.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-write-error.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-write-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writableState-ending.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writableState-ending.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-write-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream-write-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-write-drain.js (renamed from cli/tests/node_compat/test/parallel/test-stream-write-drain.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-write-final.js (renamed from cli/tests/node_compat/test/parallel/test-stream-write-final.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream-writev.js (renamed from cli/tests/node_compat/test/parallel/test-stream-writev.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-basic.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-basic.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-compatibility.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-compatibility.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-decode-partial.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-decode-partial.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-finish-pipe.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-finish-pipe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-large-read-stall.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-large-read-stall.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-objects.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-objects.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-push.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-push.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-read-sync-stack.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-from-list.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-from-list.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-readable-wrap.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-readable-wrap.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-set-encoding.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-set-encoding.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-transform.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-transform.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-unpipe-drain.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-unpipe-leak.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream2-writable.js (renamed from cli/tests/node_compat/test/parallel/test-stream2-writable.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream3-cork-end.js (renamed from cli/tests/node_compat/test/parallel/test-stream3-cork-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream3-cork-uncork.js (renamed from cli/tests/node_compat/test/parallel/test-stream3-cork-uncork.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-stream3-pause-then-read.js (renamed from cli/tests/node_compat/test/parallel/test-stream3-pause-then-read.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-streams-highwatermark.js (renamed from cli/tests/node_compat/test/parallel/test-streams-highwatermark.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-api-refs.js (renamed from cli/tests/node_compat/test/parallel/test-timers-api-refs.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-args.js (renamed from cli/tests/node_compat/test/parallel/test-timers-args.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js (renamed from cli/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js (renamed from cli/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js (renamed from cli/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-clearImmediate.js (renamed from cli/tests/node_compat/test/parallel/test-timers-clearImmediate.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-interval-throw.js (renamed from cli/tests/node_compat/test/parallel/test-timers-interval-throw.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-non-integer-delay.js (renamed from cli/tests/node_compat/test/parallel/test-timers-non-integer-delay.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-refresh.js (renamed from cli/tests/node_compat/test/parallel/test-timers-refresh.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js (renamed from cli/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js (renamed from cli/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-uncaught-exception.js (renamed from cli/tests/node_compat/test/parallel/test-timers-uncaught-exception.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js (renamed from cli/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-user-call.js (renamed from cli/tests/node_compat/test/parallel/test-timers-user-call.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-timers-zero-timeout.js (renamed from cli/tests/node_compat/test/parallel/test-timers-zero-timeout.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-tty-stdin-end.js (renamed from cli/tests/node_compat/test/parallel/test-tty-stdin-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js (renamed from cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-domain-ascii-unicode.js (renamed from cli/tests/node_compat/test/parallel/test-url-domain-ascii-unicode.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-fileurltopath.js (renamed from cli/tests/node_compat/test/parallel/test-url-fileurltopath.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-format-invalid-input.js (renamed from cli/tests/node_compat/test/parallel/test-url-format-invalid-input.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-format-whatwg.js (renamed from cli/tests/node_compat/test/parallel/test-url-format-whatwg.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-format.js (renamed from cli/tests/node_compat/test/parallel/test-url-format.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-parse-invalid-input.js (renamed from cli/tests/node_compat/test/parallel/test-url-parse-invalid-input.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-parse-query.js (renamed from cli/tests/node_compat/test/parallel/test-url-parse-query.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-pathtofileurl.js (renamed from cli/tests/node_compat/test/parallel/test-url-pathtofileurl.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-relative.js (renamed from cli/tests/node_compat/test/parallel/test-url-relative.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-url-urltooptions.js (renamed from cli/tests/node_compat/test/parallel/test-url-urltooptions.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js (renamed from cli/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-deprecate.js (renamed from cli/tests/node_compat/test/parallel/test-util-deprecate.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-format.js (renamed from cli/tests/node_compat/test/parallel/test-util-format.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-inherits.js (renamed from cli/tests/node_compat/test/parallel/test-util-inherits.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-inspect-long-running.js (renamed from cli/tests/node_compat/test/parallel/test-util-inspect-long-running.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-inspect-namespace.js (renamed from cli/tests/node_compat/test/parallel/test-util-inspect-namespace.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-inspect-proxy.js (renamed from cli/tests/node_compat/test/parallel/test-util-inspect-proxy.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-inspect.js (renamed from cli/tests/node_compat/test/parallel/test-util-inspect.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-isDeepStrictEqual.js (renamed from cli/tests/node_compat/test/parallel/test-util-isDeepStrictEqual.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-promisify.js (renamed from cli/tests/node_compat/test/parallel/test-util-promisify.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-types-exists.js (renamed from cli/tests/node_compat/test/parallel/test-util-types-exists.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util-types.js (renamed from cli/tests/node_compat/test/parallel/test-util-types.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-util.js (renamed from cli/tests/node_compat/test/parallel/test-util.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-vm-new-script-this-context.js (renamed from cli/tests/node_compat/test/parallel/test-vm-new-script-this-context.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-vm-static-this.js (renamed from cli/tests/node_compat/test/parallel/test-vm-static-this.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-webcrypto-sign-verify.js (renamed from cli/tests/node_compat/test/parallel/test-webcrypto-sign-verify.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-events-customevent.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-events-customevent.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-url-custom-global.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-whatwg-url-properties.js (renamed from cli/tests/node_compat/test/parallel/test-whatwg-url-properties.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-close-after-error.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-close-after-error.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-close-after-write.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-close-after-write.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-convenience-methods.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-convenience-methods.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-destroy-pipe.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-empty-buffer.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-empty-buffer.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-from-string.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-from-string.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-invalid-input.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-invalid-input.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-no-stream.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-no-stream.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-sync-no-event.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-sync-no-event.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-truncated.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-truncated.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-unzip-one-byte-chunks.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-unzip-one-byte-chunks.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-write-after-end.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-write-after-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-write-after-flush.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-write-after-flush.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-zero-byte.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-zero-byte.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/parallel/test-zlib-zero-windowBits.js (renamed from cli/tests/node_compat/test/parallel/test-zlib-zero-windowBits.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/console-dumb-tty.js (renamed from cli/tests/node_compat/test/pseudo-tty/console-dumb-tty.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/console_colors.js (renamed from cli/tests/node_compat/test/pseudo-tty/console_colors.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/no_dropped_stdio.js (renamed from cli/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js (renamed from cli/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/package.json (renamed from cli/tests/node_compat/test/pseudo-tty/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js (renamed from cli/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js (renamed from cli/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js (renamed from cli/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js (renamed from cli/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/pummel/package.json (renamed from cli/tests/node_compat/test/pummel/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/sequential/package.json (renamed from cli/tests/node_compat/test/sequential/package.json) | 0 | ||||
-rw-r--r-- | tests/node_compat/test/sequential/test-child-process-exit.js (renamed from cli/tests/node_compat/test/sequential/test-child-process-exit.js) | 0 | ||||
-rw-r--r-- | tests/testdata/allow_run_allowlist_resolution.ts (renamed from cli/tests/testdata/allow_run_allowlist_resolution.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/allow_run_allowlist_resolution.ts.out (renamed from cli/tests/testdata/allow_run_allowlist_resolution.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/assets/DenoWinRunner.cs (renamed from cli/tests/testdata/assets/DenoWinRunner.cs) | 0 | ||||
-rw-r--r-- | tests/testdata/assets/DenoWinRunner.ps1 (renamed from cli/tests/testdata/assets/DenoWinRunner.ps1) | 0 | ||||
-rw-r--r-- | tests/testdata/assets/deno_dom_0.1.3-alpha2.wasm (renamed from cli/tests/testdata/assets/deno_dom_0.1.3-alpha2.wasm) | bin | 616631 -> 616631 bytes | |||
-rw-r--r-- | tests/testdata/assets/fixture.json (renamed from cli/tests/testdata/assets/fixture.json) | 0 | ||||
-rw-r--r-- | tests/testdata/assets/hello.txt (renamed from cli/tests/testdata/assets/hello.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/assets/lock_target.txt (renamed from cli/tests/testdata/assets/lock_target.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/assets/unreachable.wasm (renamed from cli/tests/testdata/assets/unreachable.wasm) | bin | 42 -> 42 bytes | |||
-rw-r--r-- | tests/testdata/bench/allow_all.out (renamed from cli/tests/testdata/bench/allow_all.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/allow_all.ts | 43 | ||||
-rw-r--r-- | tests/testdata/bench/allow_none.out (renamed from cli/tests/testdata/bench/allow_none.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/allow_none.ts | 23 | ||||
-rw-r--r-- | tests/testdata/bench/before_unload_prevent_default.out (renamed from cli/tests/testdata/bench/before_unload_prevent_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/before_unload_prevent_default.ts (renamed from cli/tests/testdata/bench/before_unload_prevent_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/bench_formatting.out (renamed from cli/tests/testdata/bench/bench_formatting.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/bench_formatting.ts (renamed from cli/tests/testdata/bench/bench_formatting.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/check_local_by_default.out (renamed from cli/tests/testdata/bench/check_local_by_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/check_local_by_default.ts (renamed from cli/tests/testdata/bench/check_local_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/check_local_by_default2.out (renamed from cli/tests/testdata/bench/check_local_by_default2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/check_local_by_default2.ts (renamed from cli/tests/testdata/bench/check_local_by_default2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/clear_timeout.out (renamed from cli/tests/testdata/bench/clear_timeout.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/clear_timeout.ts (renamed from cli/tests/testdata/bench/clear_timeout.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect.out (renamed from cli/tests/testdata/bench/collect.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/bench.ts (renamed from cli/tests/testdata/bench/collect/bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/deno.jsonc (renamed from cli/tests/testdata/bench/collect/deno.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/deno.malformed.jsonc (renamed from cli/tests/testdata/bench/collect/deno.malformed.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/deno2.jsonc (renamed from cli/tests/testdata/bench/collect/deno2.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/ignore/bench.ts (renamed from cli/tests/testdata/bench/collect/ignore/bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/include/2_bench.ts (renamed from cli/tests/testdata/bench/collect/include/2_bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect/include/bench.ts (renamed from cli/tests/testdata/bench/collect/include/bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect2.out (renamed from cli/tests/testdata/bench/collect2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/collect_with_malformed_config.out (renamed from cli/tests/testdata/bench/collect_with_malformed_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/exit_sanitizer.out (renamed from cli/tests/testdata/bench/exit_sanitizer.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/exit_sanitizer.ts (renamed from cli/tests/testdata/bench/exit_sanitizer.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/explicit_start_and_end.out (renamed from cli/tests/testdata/bench/explicit_start_and_end.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/explicit_start_and_end.ts (renamed from cli/tests/testdata/bench/explicit_start_and_end.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/explicit_start_and_end_low_precision.out (renamed from cli/tests/testdata/bench/explicit_start_and_end_low_precision.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/explicit_start_and_end_low_precision.ts (renamed from cli/tests/testdata/bench/explicit_start_and_end_low_precision.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/fail.out (renamed from cli/tests/testdata/bench/fail.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/fail.ts (renamed from cli/tests/testdata/bench/fail.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/file_protocol.out (renamed from cli/tests/testdata/bench/file_protocol.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/file_protocol.ts (renamed from cli/tests/testdata/bench/file_protocol.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/filter.out (renamed from cli/tests/testdata/bench/filter.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/filter/a_bench.ts (renamed from cli/tests/testdata/bench/filter/a_bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/filter/b_bench.ts (renamed from cli/tests/testdata/bench/filter/b_bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/filter/c_bench.ts (renamed from cli/tests/testdata/bench/filter/c_bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/finally_timeout.out (renamed from cli/tests/testdata/bench/finally_timeout.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/finally_timeout.ts (renamed from cli/tests/testdata/bench/finally_timeout.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/group_baseline.out (renamed from cli/tests/testdata/bench/group_baseline.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/group_baseline.ts (renamed from cli/tests/testdata/bench/group_baseline.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/ignore.out (renamed from cli/tests/testdata/bench/ignore.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/ignore.ts (renamed from cli/tests/testdata/bench/ignore.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/ignore_permissions.out (renamed from cli/tests/testdata/bench/ignore_permissions.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/ignore_permissions.ts (renamed from cli/tests/testdata/bench/ignore_permissions.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/interval.out (renamed from cli/tests/testdata/bench/interval.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/interval.ts (renamed from cli/tests/testdata/bench/interval.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/load_unload.out (renamed from cli/tests/testdata/bench/load_unload.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/load_unload.ts (renamed from cli/tests/testdata/bench/load_unload.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/meta.out (renamed from cli/tests/testdata/bench/meta.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/meta.ts (renamed from cli/tests/testdata/bench/meta.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/multifile_summary.out (renamed from cli/tests/testdata/bench/multifile_summary.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/multiple_group.ts (renamed from cli/tests/testdata/bench/multiple_group.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_check.out (renamed from cli/tests/testdata/bench/no_check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_check.ts (renamed from cli/tests/testdata/bench/no_check.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_color.ts (renamed from cli/tests/testdata/bench/no_color.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_prompt_by_default.out (renamed from cli/tests/testdata/bench/no_prompt_by_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_prompt_by_default.ts (renamed from cli/tests/testdata/bench/no_prompt_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_prompt_with_denied_perms.out (renamed from cli/tests/testdata/bench/no_prompt_with_denied_perms.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_prompt_with_denied_perms.ts (renamed from cli/tests/testdata/bench/no_prompt_with_denied_perms.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_run.out (renamed from cli/tests/testdata/bench/no_run.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/no_run.ts (renamed from cli/tests/testdata/bench/no_run.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/only.out (renamed from cli/tests/testdata/bench/only.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/only.ts (renamed from cli/tests/testdata/bench/only.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/overloads.out (renamed from cli/tests/testdata/bench/overloads.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/overloads.ts (renamed from cli/tests/testdata/bench/overloads.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/pass.json.out (renamed from cli/tests/testdata/bench/pass.json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/pass.out (renamed from cli/tests/testdata/bench/pass.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/pass.ts (renamed from cli/tests/testdata/bench/pass.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/quiet.out (renamed from cli/tests/testdata/bench/quiet.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/quiet.ts (renamed from cli/tests/testdata/bench/quiet.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/recursive_permissions_pledge.js (renamed from cli/tests/testdata/bench/recursive_permissions_pledge.js) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/unhandled_rejection.out (renamed from cli/tests/testdata/bench/unhandled_rejection.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/unhandled_rejection.ts (renamed from cli/tests/testdata/bench/unhandled_rejection.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/unresolved_promise.out (renamed from cli/tests/testdata/bench/unresolved_promise.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bench/unresolved_promise.ts (renamed from cli/tests/testdata/bench/unresolved_promise.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/benches/response_string_perf.js (renamed from cli/tests/testdata/benches/response_string_perf.js) | 0 | ||||
-rw-r--r-- | tests/testdata/benches/text_decoder_perf.js (renamed from cli/tests/testdata/benches/text_decoder_perf.js) | 0 | ||||
-rw-r--r-- | tests/testdata/benches/text_encoder_into_perf.js (renamed from cli/tests/testdata/benches/text_encoder_into_perf.js) | 0 | ||||
-rw-r--r-- | tests/testdata/benches/text_encoder_perf.js (renamed from cli/tests/testdata/benches/text_encoder_perf.js) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/bare_imports/error_with_bare_import.ts (renamed from cli/tests/testdata/bundle/bare_imports/error_with_bare_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/bare_imports/error_with_bare_import.ts.out (renamed from cli/tests/testdata/bundle/bare_imports/error_with_bare_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/bundle.test.out (renamed from cli/tests/testdata/bundle/bundle.test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/check_local_by_default/no_errors.out (renamed from cli/tests/testdata/bundle/check_local_by_default/no_errors.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/check_local_by_default/no_errors.ts (renamed from cli/tests/testdata/bundle/check_local_by_default/no_errors.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/check_local_by_default/type_error.out (renamed from cli/tests/testdata/bundle/check_local_by_default/type_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/check_local_by_default/type_error.ts (renamed from cli/tests/testdata/bundle/check_local_by_default/type_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/decorators/ts_decorators.out (renamed from cli/tests/testdata/bundle/decorators/ts_decorators.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/decorators/ts_decorators.ts (renamed from cli/tests/testdata/bundle/decorators/ts_decorators.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/dynamic_import.ts (renamed from cli/tests/testdata/bundle/dynamic_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_extensions/js_without_extension.out (renamed from cli/tests/testdata/bundle/file_extensions/js_without_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_extensions/ts_without_extension.out (renamed from cli/tests/testdata/bundle/file_extensions/ts_without_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture01.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture01.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture02.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture02.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture03.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture03.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture04.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture04.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture05.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture05.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture06.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture06.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture07.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture07.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture08.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture08.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture09.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture09.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture10.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture10.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture11.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture11.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture12.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture12.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture13.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture13.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture14.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture14.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture15.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture15.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture16.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture16.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-fixture16_2.ts (renamed from cli/tests/testdata/bundle/file_tests-fixture16_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-a.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-b.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-c.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-c.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-d.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-e.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-e.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-f.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-f.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-g.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-g.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-h.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-h.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-i.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-i.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-j.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-j.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-k.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-k.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-l.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-l.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-m.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-m.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-n.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-n.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-o.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-o.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-p.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-p.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/file_tests-subdir-q.ts (renamed from cli/tests/testdata/bundle/file_tests-subdir-q.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture01.out (renamed from cli/tests/testdata/bundle/fixture01.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture02.out (renamed from cli/tests/testdata/bundle/fixture02.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture03.out (renamed from cli/tests/testdata/bundle/fixture03.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture04.out (renamed from cli/tests/testdata/bundle/fixture04.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture05.out (renamed from cli/tests/testdata/bundle/fixture05.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture06.out (renamed from cli/tests/testdata/bundle/fixture06.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture07.out (renamed from cli/tests/testdata/bundle/fixture07.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture08.out (renamed from cli/tests/testdata/bundle/fixture08.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture09.out (renamed from cli/tests/testdata/bundle/fixture09.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture10.out (renamed from cli/tests/testdata/bundle/fixture10.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture11.out (renamed from cli/tests/testdata/bundle/fixture11.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture12.out (renamed from cli/tests/testdata/bundle/fixture12.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture13.out (renamed from cli/tests/testdata/bundle/fixture13.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture14.out (renamed from cli/tests/testdata/bundle/fixture14.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture15.out (renamed from cli/tests/testdata/bundle/fixture15.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/fixture16.out (renamed from cli/tests/testdata/bundle/fixture16.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/https_deno.land-x-lib-a.ts (renamed from cli/tests/testdata/bundle/https_deno.land-x-lib-a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/https_deno.land-x-lib-b.js (renamed from cli/tests/testdata/bundle/https_deno.land-x-lib-b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/https_deno.land-x-lib-c.d.ts (renamed from cli/tests/testdata/bundle/https_deno.land-x-lib-c.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/https_deno.land-x-lib-c.js (renamed from cli/tests/testdata/bundle/https_deno.land-x-lib-c.js) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/https_deno.land-x-lib-mod.d.ts (renamed from cli/tests/testdata/bundle/https_deno.land-x-lib-mod.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/https_deno.land-x-lib-mod.js (renamed from cli/tests/testdata/bundle/https_deno.land-x-lib-mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/ignore_directives.test.out (renamed from cli/tests/testdata/bundle/ignore_directives.test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/import_map/import_map.json (renamed from cli/tests/testdata/bundle/import_map/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/import_map/main.ts (renamed from cli/tests/testdata/bundle/import_map/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/jsx.out (renamed from cli/tests/testdata/bundle/jsx.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/lockfile/check_error.json (renamed from cli/tests/testdata/bundle/lockfile/check_error.json) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/lockfile/check_error.out (renamed from cli/tests/testdata/bundle/lockfile/check_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/bundle/shebang_file.bundle.out (renamed from cli/tests/testdata/bundle/shebang_file.bundle.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/036_import_map_fetch.out (renamed from cli/tests/testdata/cache/036_import_map_fetch.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/037_fetch_multiple.out (renamed from cli/tests/testdata/cache/037_fetch_multiple.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/095_cache_with_bare_import.ts (renamed from cli/tests/testdata/cache/095_cache_with_bare_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/095_cache_with_bare_import.ts.out (renamed from cli/tests/testdata/cache/095_cache_with_bare_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/cache_extensionless.out (renamed from cli/tests/testdata/cache/cache_extensionless.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/cache_random_extension.out (renamed from cli/tests/testdata/cache/cache_random_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/check_local_by_default.out (renamed from cli/tests/testdata/cache/check_local_by_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/check_local_by_default.ts (renamed from cli/tests/testdata/cache/check_local_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/check_local_by_default2.out (renamed from cli/tests/testdata/cache/check_local_by_default2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/check_local_by_default2.ts (renamed from cli/tests/testdata/cache/check_local_by_default2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/ignore_require.js (renamed from cli/tests/testdata/cache/ignore_require.js) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/json_import/main.ts (renamed from cli/tests/testdata/cache/json_import/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/json_import/test.json (renamed from cli/tests/testdata/cache/json_import/test.json) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/performance_stats.out (renamed from cli/tests/testdata/cache/performance_stats.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cache/redirect_cache.out (renamed from cli/tests/testdata/cache/redirect_cache.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cat.ts | 10 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_info.ts (renamed from cli/tests/testdata/cert/cafile_info.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_info.ts.out (renamed from cli/tests/testdata/cert/cafile_info.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_ts_fetch.ts (renamed from cli/tests/testdata/cert/cafile_ts_fetch.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_ts_fetch.ts.out (renamed from cli/tests/testdata/cert/cafile_ts_fetch.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_ts_fetch_unsafe_ssl.ts.out (renamed from cli/tests/testdata/cert/cafile_ts_fetch_unsafe_ssl.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_url_imports.ts (renamed from cli/tests/testdata/cert/cafile_url_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_url_imports.ts.out (renamed from cli/tests/testdata/cert/cafile_url_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/cafile_url_imports_unsafe_ssl.ts.out (renamed from cli/tests/testdata/cert/cafile_url_imports_unsafe_ssl.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/deno_land_unsafe_ssl.ts (renamed from cli/tests/testdata/cert/deno_land_unsafe_ssl.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/deno_land_unsafe_ssl.ts.out (renamed from cli/tests/testdata/cert/deno_land_unsafe_ssl.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/ip_address_unsafe_ssl.ts (renamed from cli/tests/testdata/cert/ip_address_unsafe_ssl.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/ip_address_unsafe_ssl.ts.out (renamed from cli/tests/testdata/cert/ip_address_unsafe_ssl.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/listen_tls_alpn.ts (renamed from cli/tests/testdata/cert/listen_tls_alpn.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/cert/listen_tls_alpn_fail.ts | 20 | ||||
-rw-r--r-- | tests/testdata/cert/localhost_unsafe_ssl.ts.out (renamed from cli/tests/testdata/cert/localhost_unsafe_ssl.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/all/check_all.out (renamed from cli/tests/testdata/check/all/check_all.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/all/check_all.ts (renamed from cli/tests/testdata/check/all/check_all.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/broadcast_channel.ts (renamed from cli/tests/testdata/check/broadcast_channel.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/cache_config_on_off/deno.json (renamed from cli/tests/testdata/check/cache_config_on_off/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/cache_config_on_off/main.ts (renamed from cli/tests/testdata/check/cache_config_on_off/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/declaration_header_file_with_no_exports.ts (renamed from cli/tests/testdata/check/declaration_header_file_with_no_exports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/declaration_header_file_with_no_exports_js.d.ts (renamed from cli/tests/testdata/check/declaration_header_file_with_no_exports_js.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/declaration_header_file_with_no_exports_js.js (renamed from cli/tests/testdata/check/declaration_header_file_with_no_exports_js.js) | 0 | ||||
-rw-r--r-- | tests/testdata/check/deno_not_found/main.out (renamed from cli/tests/testdata/check/deno_not_found/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/deno_not_found/main.ts (renamed from cli/tests/testdata/check/deno_not_found/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/dts/check_dts.d.ts (renamed from cli/tests/testdata/check/dts/check_dts.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/dts/check_dts.out (renamed from cli/tests/testdata/check/dts/check_dts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/exclude_option/deno.exclude_dir.json (renamed from cli/tests/testdata/check/exclude_option/deno.exclude_dir.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/exclude_option/deno.exclude_glob.json (renamed from cli/tests/testdata/check/exclude_option/deno.exclude_glob.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/exclude_option/deno.json (renamed from cli/tests/testdata/check/exclude_option/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/exclude_option/exclude_option.ts.error.out (renamed from cli/tests/testdata/check/exclude_option/exclude_option.ts.error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/exclude_option/ignored/index.ts (renamed from cli/tests/testdata/check/exclude_option/ignored/index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/exclude_option/index.ts (renamed from cli/tests/testdata/check/exclude_option/index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/excluded_file_specified/check.out (renamed from cli/tests/testdata/check/excluded_file_specified/check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/excluded_file_specified/deno.json (renamed from cli/tests/testdata/check/excluded_file_specified/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/excluded_file_specified/lib/types.d.ts (renamed from cli/tests/testdata/check/excluded_file_specified/lib/types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/export_equals_declaration_file/main.ts (renamed from cli/tests/testdata/check/export_equals_declaration_file/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/export_equals_declaration_file/other.d.ts (renamed from cli/tests/testdata/check/export_equals_declaration_file/other.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/export_equals_declaration_file/other.js (renamed from cli/tests/testdata/check/export_equals_declaration_file/other.js) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsx_not_checked/main.jsx (renamed from cli/tests/testdata/check/jsx_not_checked/main.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsx_not_checked/main.out (renamed from cli/tests/testdata/check/jsx_not_checked/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsx_not_checked/other.ts (renamed from cli/tests/testdata/check/jsx_not_checked/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsximportsource_importmap_config/deno.json (renamed from cli/tests/testdata/check/jsximportsource_importmap_config/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsximportsource_importmap_config/import_map.json (renamed from cli/tests/testdata/check/jsximportsource_importmap_config/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsximportsource_importmap_config/jsx_runtime.ts (renamed from cli/tests/testdata/check/jsximportsource_importmap_config/jsx_runtime.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsximportsource_importmap_config/main.bundle.js (renamed from cli/tests/testdata/check/jsximportsource_importmap_config/main.bundle.js) | 0 | ||||
-rw-r--r-- | tests/testdata/check/jsximportsource_importmap_config/main.tsx (renamed from cli/tests/testdata/check/jsximportsource_importmap_config/main.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/check/module_detection_force.ts (renamed from cli/tests/testdata/check/module_detection_force.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/module_detection_force/import.ts (renamed from cli/tests/testdata/check/module_detection_force/import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/module_detection_force/main.ts (renamed from cli/tests/testdata/check/module_detection_force/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/no_error_truncation/deno.json (renamed from cli/tests/testdata/check/no_error_truncation/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/no_error_truncation/main.out (renamed from cli/tests/testdata/check/no_error_truncation/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/no_error_truncation/main.ts (renamed from cli/tests/testdata/check/no_error_truncation/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/node_builtin_modules/mod.js (renamed from cli/tests/testdata/check/node_builtin_modules/mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/check/node_builtin_modules/mod.js.out (renamed from cli/tests/testdata/check/node_builtin_modules/mod.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/node_builtin_modules/mod.ts (renamed from cli/tests/testdata/check/node_builtin_modules/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/node_builtin_modules/mod.ts.out (renamed from cli/tests/testdata/check/node_builtin_modules/mod.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/npm_install_diagnostics/main.out (renamed from cli/tests/testdata/check/npm_install_diagnostics/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/npm_install_diagnostics/main.ts (renamed from cli/tests/testdata/check/npm_install_diagnostics/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/response_json.ts (renamed from cli/tests/testdata/check/response_json.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/types_dts/deno.json (renamed from cli/tests/testdata/check/types_dts/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/check/types_dts/main.out (renamed from cli/tests/testdata/check/types_dts/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/check/types_dts/main.ts (renamed from cli/tests/testdata/check/types_dts/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/check/types_dts/types.d.ts (renamed from cli/tests/testdata/check/types_dts/types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/data.json (renamed from cli/tests/testdata/commonjs/data.json) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/example.js (renamed from cli/tests/testdata/commonjs/example.js) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/colorette/index.cjs (renamed from cli/tests/testdata/commonjs/node_modules/colorette/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/colorette/index.js (renamed from cli/tests/testdata/commonjs/node_modules/colorette/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/colorette/package.json (renamed from cli/tests/testdata/commonjs/node_modules/colorette/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/imports_exports/import_export.js (renamed from cli/tests/testdata/commonjs/node_modules/imports_exports/import_export.js) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/imports_exports/import_polyfill.js (renamed from cli/tests/testdata/commonjs/node_modules/imports_exports/import_polyfill.js) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/imports_exports/package.json (renamed from cli/tests/testdata/commonjs/node_modules/imports_exports/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/imports_exports/require_export.cjs (renamed from cli/tests/testdata/commonjs/node_modules/imports_exports/require_export.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/imports_exports/require_polyfill.js (renamed from cli/tests/testdata/commonjs/node_modules/imports_exports/require_polyfill.js) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/left-pad/README.md (renamed from cli/tests/testdata/commonjs/node_modules/left-pad/README.md) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/left-pad/index.js (renamed from cli/tests/testdata/commonjs/node_modules/left-pad/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/node_modules/left-pad/package.json (renamed from cli/tests/testdata/commonjs/node_modules/left-pad/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/commonjs/package.json (renamed from cli/tests/testdata/commonjs/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/args.ts (renamed from cli/tests/testdata/compile/args.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/check_local_by_default.ts (renamed from cli/tests/testdata/compile/check_local_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/check_local_by_default2.ts (renamed from cli/tests/testdata/compile/check_local_by_default2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports/import1.ts (renamed from cli/tests/testdata/compile/dynamic_imports/import1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports/import2.ts (renamed from cli/tests/testdata/compile/dynamic_imports/import2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports/import_path (renamed from cli/tests/testdata/compile/dynamic_imports/import_path) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports/main.out (renamed from cli/tests/testdata/compile/dynamic_imports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports/main.ts (renamed from cli/tests/testdata/compile/dynamic_imports/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports/main_unanalyzable.ts | 18 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports_tmp_lit/main.info.out (renamed from cli/tests/testdata/compile/dynamic_imports_tmp_lit/main.info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports_tmp_lit/main.js (renamed from cli/tests/testdata/compile/dynamic_imports_tmp_lit/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports_tmp_lit/other/data.json (renamed from cli/tests/testdata/compile/dynamic_imports_tmp_lit/other/data.json) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports_tmp_lit/other/sub/data2.json (renamed from cli/tests/testdata/compile/dynamic_imports_tmp_lit/other/sub/data2.json) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports_tmp_lit/sub/a.js (renamed from cli/tests/testdata/compile/dynamic_imports_tmp_lit/sub/a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/dynamic_imports_tmp_lit/sub/b.ts (renamed from cli/tests/testdata/compile/dynamic_imports_tmp_lit/sub/b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/node_modules_symlink_outside/main.out (renamed from cli/tests/testdata/compile/node_modules_symlink_outside/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/node_modules_symlink_outside/main.ts (renamed from cli/tests/testdata/compile/node_modules_symlink_outside/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/node_modules_symlink_outside/main_compile_file.out (renamed from cli/tests/testdata/compile/node_modules_symlink_outside/main_compile_file.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/node_modules_symlink_outside/main_compile_folder.out (renamed from cli/tests/testdata/compile/node_modules_symlink_outside/main_compile_folder.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/npm_fs/main.out (renamed from cli/tests/testdata/compile/npm_fs/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/npm_fs/main.ts (renamed from cli/tests/testdata/compile/npm_fs/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_error.ts (renamed from cli/tests/testdata/compile/standalone_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_error_module_with_imports_1.ts (renamed from cli/tests/testdata/compile/standalone_error_module_with_imports_1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_error_module_with_imports_2.ts (renamed from cli/tests/testdata/compile/standalone_error_module_with_imports_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_follow_redirects.ts (renamed from cli/tests/testdata/compile/standalone_follow_redirects.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_follow_redirects_2.js | 5 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_import_datauri.ts (renamed from cli/tests/testdata/compile/standalone_import_datauri.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_import_map.json (renamed from cli/tests/testdata/compile/standalone_import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_import_map.ts (renamed from cli/tests/testdata/compile/standalone_import_map.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_import_map_config.json (renamed from cli/tests/testdata/compile/standalone_import_map_config.json) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/standalone_runtime_flags.ts (renamed from cli/tests/testdata/compile/standalone_runtime_flags.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/unstable_features.ts (renamed from cli/tests/testdata/compile/unstable_features.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/vfs_implicit_read_permission/main.out (renamed from cli/tests/testdata/compile/vfs_implicit_read_permission/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/vfs_implicit_read_permission/main.ts (renamed from cli/tests/testdata/compile/vfs_implicit_read_permission/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/workers/basic.out (renamed from cli/tests/testdata/compile/workers/basic.out) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/workers/basic.ts (renamed from cli/tests/testdata/compile/workers/basic.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/workers/not_in_module_map.ts (renamed from cli/tests/testdata/compile/workers/not_in_module_map.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/compile/workers/worker.ts (renamed from cli/tests/testdata/compile/workers/worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/branch.ts (renamed from cli/tests/testdata/coverage/branch.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/branch_expected.lcov (renamed from cli/tests/testdata/coverage/branch_expected.lcov) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/branch_expected.out (renamed from cli/tests/testdata/coverage/branch_expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/branch_test.ts (renamed from cli/tests/testdata/coverage/branch_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/complex.ts (renamed from cli/tests/testdata/coverage/complex.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/complex_expected.lcov (renamed from cli/tests/testdata/coverage/complex_expected.lcov) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/complex_expected.out (renamed from cli/tests/testdata/coverage/complex_expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/complex_test.ts (renamed from cli/tests/testdata/coverage/complex_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/doesnt_exist.out (renamed from cli/tests/testdata/coverage/doesnt_exist.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/final_blankline.js (renamed from cli/tests/testdata/coverage/final_blankline.js) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/final_blankline_expected.lcov (renamed from cli/tests/testdata/coverage/final_blankline_expected.lcov) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/final_blankline_expected.out (renamed from cli/tests/testdata/coverage/final_blankline_expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/final_blankline_test.js (renamed from cli/tests/testdata/coverage/final_blankline_test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/invalid_cache/mod.test.ts (renamed from cli/tests/testdata/coverage/invalid_cache/mod.test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/invalid_cache/mod_after.ts (renamed from cli/tests/testdata/coverage/invalid_cache/mod_after.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/invalid_cache/mod_before.ts (renamed from cli/tests/testdata/coverage/invalid_cache/mod_before.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multifile/a_test.js (renamed from cli/tests/testdata/coverage/multifile/a_test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multifile/b_test.js (renamed from cli/tests/testdata/coverage/multifile/b_test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multifile/expected.lcov (renamed from cli/tests/testdata/coverage/multifile/expected.lcov) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multifile/expected.out (renamed from cli/tests/testdata/coverage/multifile/expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multifile/mod.js (renamed from cli/tests/testdata/coverage/multifile/mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multisource/bar.ts (renamed from cli/tests/testdata/coverage/multisource/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multisource/baz/quux.ts (renamed from cli/tests/testdata/coverage/multisource/baz/quux.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multisource/baz/qux.ts (renamed from cli/tests/testdata/coverage/multisource/baz/qux.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multisource/foo.ts (renamed from cli/tests/testdata/coverage/multisource/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/multisource/test.ts (renamed from cli/tests/testdata/coverage/multisource/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_internal_code_test.ts (renamed from cli/tests/testdata/coverage/no_internal_code_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_internal_node_code_test.ts (renamed from cli/tests/testdata/coverage/no_internal_node_code_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_npm_coverage/expected.out (renamed from cli/tests/testdata/coverage/no_npm_coverage/expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts (renamed from cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts (renamed from cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_snaps_included/__snapshots__/no_snaps_included_test.ts.snap (renamed from cli/tests/testdata/coverage/no_snaps_included/__snapshots__/no_snaps_included_test.ts.snap) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_snaps_included/expected.out (renamed from cli/tests/testdata/coverage/no_snaps_included/expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_snaps_included/no_snaps_included.ts (renamed from cli/tests/testdata/coverage/no_snaps_included/no_snaps_included.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts | 11 | ||||
-rw-r--r-- | tests/testdata/coverage/no_tests_included/expected.out (renamed from cli/tests/testdata/coverage/no_tests_included/expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_tests_included/foo.test.js | 6 | ||||
-rw-r--r-- | tests/testdata/coverage/no_tests_included/foo.test.mts | 6 | ||||
-rw-r--r-- | tests/testdata/coverage/no_tests_included/foo.test.ts | 6 | ||||
-rw-r--r-- | tests/testdata/coverage/no_tests_included/foo.ts (renamed from cli/tests/testdata/coverage/no_tests_included/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_transpiled_lines/expected.lcov (renamed from cli/tests/testdata/coverage/no_transpiled_lines/expected.lcov) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_transpiled_lines/expected.out (renamed from cli/tests/testdata/coverage/no_transpiled_lines/expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_transpiled_lines/index.ts | 3 | ||||
-rw-r--r-- | tests/testdata/coverage/no_transpiled_lines/interface.ts (renamed from cli/tests/testdata/coverage/no_transpiled_lines/interface.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/coverage/no_transpiled_lines/repro_test.ts (renamed from cli/tests/testdata/coverage/no_transpiled_lines/repro_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts (renamed from cli/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts.out (renamed from cli/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/deno_doc.ts (renamed from cli/tests/testdata/doc/deno_doc.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/deno_doc2.ts (renamed from cli/tests/testdata/doc/deno_doc2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/deno_doc_builtin.out (renamed from cli/tests/testdata/doc/deno_doc_builtin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/import_map.json (renamed from cli/tests/testdata/doc/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/invalid_url.out (renamed from cli/tests/testdata/doc/invalid_url.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/lint_success.out (renamed from cli/tests/testdata/doc/lint_success.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/lint_success.ts (renamed from cli/tests/testdata/doc/lint_success.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/lint_success_html.out (renamed from cli/tests/testdata/doc/lint_success_html.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/lint_success_json.out (renamed from cli/tests/testdata/doc/lint_success_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/module/fun.js (renamed from cli/tests/testdata/doc/module/fun.js) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/referenced_private_types.out (renamed from cli/tests/testdata/doc/referenced_private_types.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/referenced_private_types.ts (renamed from cli/tests/testdata/doc/referenced_private_types.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/referenced_private_types_fixed.out (renamed from cli/tests/testdata/doc/referenced_private_types_fixed.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/referenced_private_types_fixed.ts (renamed from cli/tests/testdata/doc/referenced_private_types_fixed.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/referenced_private_types_lint.out (renamed from cli/tests/testdata/doc/referenced_private_types_lint.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/types_header.out (renamed from cli/tests/testdata/doc/types_header.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/types_header.ts (renamed from cli/tests/testdata/doc/types_header.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/types_hint.out (renamed from cli/tests/testdata/doc/types_hint.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/types_hint.ts (renamed from cli/tests/testdata/doc/types_hint.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/types_ref.js (renamed from cli/tests/testdata/doc/types_ref.js) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/types_ref.out (renamed from cli/tests/testdata/doc/types_ref.out) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/use_import_map.js (renamed from cli/tests/testdata/doc/use_import_map.js) | 0 | ||||
-rw-r--r-- | tests/testdata/doc/use_import_map.out (renamed from cli/tests/testdata/doc/use_import_map.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/b.js (renamed from cli/tests/testdata/dynamic_import/b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/c.js (renamed from cli/tests/testdata/dynamic_import/c.js) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/empty_1.ts (renamed from cli/tests/testdata/dynamic_import/empty_1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/empty_2.ts (renamed from cli/tests/testdata/dynamic_import/empty_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_blob_local.ts (renamed from cli/tests/testdata/dynamic_import/permissions_blob_local.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_blob_local.ts.out (renamed from cli/tests/testdata/dynamic_import/permissions_blob_local.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_blob_remote.ts (renamed from cli/tests/testdata/dynamic_import/permissions_blob_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_blob_remote.ts.out (renamed from cli/tests/testdata/dynamic_import/permissions_blob_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_data_local.ts (renamed from cli/tests/testdata/dynamic_import/permissions_data_local.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_data_local.ts.out (renamed from cli/tests/testdata/dynamic_import/permissions_data_local.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_data_remote.ts (renamed from cli/tests/testdata/dynamic_import/permissions_data_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_data_remote.ts.out (renamed from cli/tests/testdata/dynamic_import/permissions_data_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_remote_remote.ts (renamed from cli/tests/testdata/dynamic_import/permissions_remote_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/permissions_remote_remote.ts.out (renamed from cli/tests/testdata/dynamic_import/permissions_remote_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/static_analysis_no_permissions.ts (renamed from cli/tests/testdata/dynamic_import/static_analysis_no_permissions.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/static_analysis_no_permissions.ts.out (renamed from cli/tests/testdata/dynamic_import/static_analysis_no_permissions.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/dynamic_import/static_remote.ts (renamed from cli/tests/testdata/dynamic_import/static_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/echo.ts (renamed from cli/tests/testdata/echo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/echo_server.ts | 12 | ||||
-rw-r--r-- | tests/testdata/encoding/utf-16be.ts (renamed from cli/tests/testdata/encoding/utf-16be.ts) | bin | 58 -> 58 bytes | |||
-rw-r--r-- | tests/testdata/encoding/utf-16le.ts (renamed from cli/tests/testdata/encoding/utf-16le.ts) | bin | 58 -> 58 bytes | |||
-rw-r--r-- | tests/testdata/encoding/utf-8.ts (renamed from cli/tests/testdata/encoding/utf-8.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/encoding/windows-1255 (renamed from cli/tests/testdata/encoding/windows-1255) | 0 | ||||
-rw-r--r-- | tests/testdata/env (renamed from cli/tests/testdata/env) | 0 | ||||
-rw-r--r-- | tests/testdata/error_cause_recursive_aggregate.ts (renamed from cli/tests/testdata/error_cause_recursive_aggregate.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/error_cause_recursive_aggregate.ts.out (renamed from cli/tests/testdata/error_cause_recursive_aggregate.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/error_cause_recursive_tail.ts (renamed from cli/tests/testdata/error_cause_recursive_tail.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/error_cause_recursive_tail.ts.out (renamed from cli/tests/testdata/error_cause_recursive_tail.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/eval/check_local_by_default.out (renamed from cli/tests/testdata/eval/check_local_by_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/eval/check_local_by_default2.out (renamed from cli/tests/testdata/eval/check_local_by_default2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/eval/check_local_by_default2.ts (renamed from cli/tests/testdata/eval/check_local_by_default2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/eval/dyn_import_eval.out (renamed from cli/tests/testdata/eval/dyn_import_eval.out) | 0 | ||||
-rw-r--r-- | tests/testdata/eval/env_file_missing.out (renamed from cli/tests/testdata/eval/env_file_missing.out) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/js_without_extension (renamed from cli/tests/testdata/file_extensions/js_without_extension) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/js_without_extension.out (renamed from cli/tests/testdata/file_extensions/js_without_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/ts_with_extension.out (renamed from cli/tests/testdata/file_extensions/ts_with_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/ts_with_extension.ts (renamed from cli/tests/testdata/file_extensions/ts_with_extension.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/ts_with_js_extension.js (renamed from cli/tests/testdata/file_extensions/ts_with_js_extension.js) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/ts_with_js_extension.out (renamed from cli/tests/testdata/file_extensions/ts_with_js_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/ts_without_extension (renamed from cli/tests/testdata/file_extensions/ts_without_extension) | 0 | ||||
-rw-r--r-- | tests/testdata/file_extensions/ts_without_extension.out (renamed from cli/tests/testdata/file_extensions/ts_without_extension.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted.ipynb (renamed from cli/tests/testdata/fmt/badly_formatted.ipynb) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted.json (renamed from cli/tests/testdata/fmt/badly_formatted.json) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted.md (renamed from cli/tests/testdata/fmt/badly_formatted.md) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted.mjs (renamed from cli/tests/testdata/fmt/badly_formatted.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted_fixed.ipynb (renamed from cli/tests/testdata/fmt/badly_formatted_fixed.ipynb) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted_fixed.js (renamed from cli/tests/testdata/fmt/badly_formatted_fixed.js) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted_fixed.json (renamed from cli/tests/testdata/fmt/badly_formatted_fixed.json) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/badly_formatted_fixed.md (renamed from cli/tests/testdata/fmt/badly_formatted_fixed.md) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/deno.glob.json (renamed from cli/tests/testdata/fmt/deno.glob.json) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/deno.malformed.jsonc (renamed from cli/tests/testdata/fmt/deno.malformed.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/deno.malformed2.jsonc (renamed from cli/tests/testdata/fmt/deno.malformed2.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/expected_fmt_check_formatted_files.out (renamed from cli/tests/testdata/fmt/expected_fmt_check_formatted_files.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/expected_fmt_check_ignore.out (renamed from cli/tests/testdata/fmt/expected_fmt_check_ignore.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/expected_fmt_check_verbose_formatted_files.out (renamed from cli/tests/testdata/fmt/expected_fmt_check_verbose_formatted_files.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_check_parse_error.out (renamed from cli/tests/testdata/fmt/fmt_check_parse_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_with_config.out (renamed from cli/tests/testdata/fmt/fmt_with_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_with_config_and_flags.out (renamed from cli/tests/testdata/fmt/fmt_with_config_and_flags.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_with_config_default.out (renamed from cli/tests/testdata/fmt/fmt_with_config_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_with_deprecated_config.out (renamed from cli/tests/testdata/fmt/fmt_with_deprecated_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_with_malformed_config.out (renamed from cli/tests/testdata/fmt/fmt_with_malformed_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/fmt_with_malformed_config2.out (renamed from cli/tests/testdata/fmt/fmt_with_malformed_config2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/data/tes.ts (renamed from cli/tests/testdata/fmt/glob/data/tes.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/data/test1.js (renamed from cli/tests/testdata/fmt/glob/data/test1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/data/test1.ts (renamed from cli/tests/testdata/fmt/glob/data/test1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/data/test12.ts (renamed from cli/tests/testdata/fmt/glob/data/test12.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/fizz/bar.ts (renamed from cli/tests/testdata/fmt/glob/nested/fizz/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/fizz/bazz.ts (renamed from cli/tests/testdata/fmt/glob/nested/fizz/bazz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/fizz/fizz.ts (renamed from cli/tests/testdata/fmt/glob/nested/fizz/fizz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/fizz/foo.ts (renamed from cli/tests/testdata/fmt/glob/nested/fizz/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/foo/bar.ts (renamed from cli/tests/testdata/fmt/glob/nested/foo/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/foo/bazz.ts (renamed from cli/tests/testdata/fmt/glob/nested/foo/bazz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/foo/fizz.ts (renamed from cli/tests/testdata/fmt/glob/nested/foo/fizz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/nested/foo/foo.ts (renamed from cli/tests/testdata/fmt/glob/nested/foo/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/glob/pages/[id].ts (renamed from cli/tests/testdata/fmt/glob/pages/[id].ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/invalid_data.json (renamed from cli/tests/testdata/fmt/invalid_data.json) | bin | 51200 -> 51200 bytes | |||
-rw-r--r-- | tests/testdata/fmt/invalid_data.out (renamed from cli/tests/testdata/fmt/invalid_data.out) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/parse_error/parse_error.ts (renamed from cli/tests/testdata/fmt/parse_error/parse_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/regular/formatted1.js (renamed from cli/tests/testdata/fmt/regular/formatted1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/regular/formatted2.ts (renamed from cli/tests/testdata/fmt/regular/formatted2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/regular/formatted3.markdown (renamed from cli/tests/testdata/fmt/regular/formatted3.markdown) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/regular/formatted4.jsonc (renamed from cli/tests/testdata/fmt/regular/formatted4.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/with_config/deno.deprecated.jsonc (renamed from cli/tests/testdata/fmt/with_config/deno.deprecated.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/with_config/deno.jsonc (renamed from cli/tests/testdata/fmt/with_config/deno.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/with_config/subdir/a.ts (renamed from cli/tests/testdata/fmt/with_config/subdir/a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/with_config/subdir/b.ts (renamed from cli/tests/testdata/fmt/with_config/subdir/b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/fmt/with_config/subdir/c.md (renamed from cli/tests/testdata/fmt/with_config/subdir/c.md) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/data.json (renamed from cli/tests/testdata/import_attributes/data.json) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/dynamic_error.out (renamed from cli/tests/testdata/import_attributes/dynamic_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/dynamic_error.ts (renamed from cli/tests/testdata/import_attributes/dynamic_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/dynamic_import.out (renamed from cli/tests/testdata/import_attributes/dynamic_import.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/dynamic_import.ts (renamed from cli/tests/testdata/import_attributes/dynamic_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/json_with_shebang.json (renamed from cli/tests/testdata/import_attributes/json_with_shebang.json) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/json_with_shebang.ts (renamed from cli/tests/testdata/import_attributes/json_with_shebang.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/json_with_shebang.ts.out (renamed from cli/tests/testdata/import_attributes/json_with_shebang.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_error.out (renamed from cli/tests/testdata/import_attributes/static_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_error.ts (renamed from cli/tests/testdata/import_attributes/static_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_export.out (renamed from cli/tests/testdata/import_attributes/static_export.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_export.ts (renamed from cli/tests/testdata/import_attributes/static_export.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_import.out (renamed from cli/tests/testdata/import_attributes/static_import.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_import.ts (renamed from cli/tests/testdata/import_attributes/static_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/static_reexport.ts (renamed from cli/tests/testdata/import_attributes/static_reexport.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/type_check.out (renamed from cli/tests/testdata/import_attributes/type_check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/import_attributes/type_check.ts (renamed from cli/tests/testdata/import_attributes/type_check.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/config.json (renamed from cli/tests/testdata/import_maps/config.json) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/import_map.json (renamed from cli/tests/testdata/import_maps/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/import_map_invalid.json (renamed from cli/tests/testdata/import_maps/import_map_invalid.json) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/import_map_remote.json (renamed from cli/tests/testdata/import_maps/import_map_remote.json) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/lodash/lodash.ts (renamed from cli/tests/testdata/import_maps/lodash/lodash.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/lodash/other_file.ts (renamed from cli/tests/testdata/import_maps/lodash/other_file.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/moment/moment.ts (renamed from cli/tests/testdata/import_maps/moment/moment.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/moment/other_file.ts (renamed from cli/tests/testdata/import_maps/moment/other_file.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/print_hello.ts (renamed from cli/tests/testdata/import_maps/print_hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/scope/scoped.ts (renamed from cli/tests/testdata/import_maps/scope/scoped.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/scoped_moment.ts (renamed from cli/tests/testdata/import_maps/scoped_moment.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/test.ts (renamed from cli/tests/testdata/import_maps/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/test_remote.ts (renamed from cli/tests/testdata/import_maps/test_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/import_maps/vue.ts (renamed from cli/tests/testdata/import_maps/vue.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/031_info_ts_error.out (renamed from cli/tests/testdata/info/031_info_ts_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/031_info_ts_error.ts (renamed from cli/tests/testdata/info/031_info_ts_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/041_info_flag.out (renamed from cli/tests/testdata/info/041_info_flag.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/041_info_flag_location.out (renamed from cli/tests/testdata/info/041_info_flag_location.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/049_info_flag_script_jsx.out (renamed from cli/tests/testdata/info/049_info_flag_script_jsx.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/054_info_local_imports.out (renamed from cli/tests/testdata/info/054_info_local_imports.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/065_import_map_info.out (renamed from cli/tests/testdata/info/065_import_map_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/076_info_json_deps_order.out (renamed from cli/tests/testdata/info/076_info_json_deps_order.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/076_info_json_deps_order.ts (renamed from cli/tests/testdata/info/076_info_json_deps_order.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/data_null_error/data_null_error.out (renamed from cli/tests/testdata/info/data_null_error/data_null_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/data_null_error/mod.ts (renamed from cli/tests/testdata/info/data_null_error/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/data_null_error/types.d.ts (renamed from cli/tests/testdata/info/data_null_error/types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/error_009_missing_js_module.js (renamed from cli/tests/testdata/info/error_009_missing_js_module.js) | 0 | ||||
-rw-r--r-- | tests/testdata/info/error_009_missing_js_module.js.out (renamed from cli/tests/testdata/info/error_009_missing_js_module.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_json.out (renamed from cli/tests/testdata/info/info_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_json_location.out (renamed from cli/tests/testdata/info/info_json_location.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_missing_module.out (renamed from cli/tests/testdata/info/info_missing_module.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_recursive_imports_test.out (renamed from cli/tests/testdata/info/info_recursive_imports_test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_recursive_imports_test.ts (renamed from cli/tests/testdata/info/info_recursive_imports_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_type_import.out (renamed from cli/tests/testdata/info/info_type_import.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/info_type_import.ts (renamed from cli/tests/testdata/info/info_type_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/json_output/main.out (renamed from cli/tests/testdata/info/json_output/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/json_output/main.ts (renamed from cli/tests/testdata/info/json_output/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/multiple_imports.out (renamed from cli/tests/testdata/info/multiple_imports.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/recursive_imports/A.ts (renamed from cli/tests/testdata/info/recursive_imports/A.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/recursive_imports/B.ts (renamed from cli/tests/testdata/info/recursive_imports/B.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/recursive_imports/C.ts (renamed from cli/tests/testdata/info/recursive_imports/C.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/recursive_imports/common.ts (renamed from cli/tests/testdata/info/recursive_imports/common.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/types_header.out (renamed from cli/tests/testdata/info/types_header.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_config/deno-override.json (renamed from cli/tests/testdata/info/with_config/deno-override.json) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_config/deno.json (renamed from cli/tests/testdata/info/with_config/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_config/import_map.json (renamed from cli/tests/testdata/info/with_config/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_config/test.ts (renamed from cli/tests/testdata/info/with_config/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_config/with_config.out (renamed from cli/tests/testdata/info/with_config/with_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_import_map/deno.json (renamed from cli/tests/testdata/info/with_import_map/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_import_map/deno.lock (renamed from cli/tests/testdata/info/with_import_map/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_import_map/main.tsx (renamed from cli/tests/testdata/info/with_import_map/main.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/info/with_import_map/with_import_map.out (renamed from cli/tests/testdata/info/with_import_map/with_import_map.out) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/bar.js (renamed from cli/tests/testdata/inspector/bar.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/error_with_npm_import.js (renamed from cli/tests/testdata/inspector/error_with_npm_import.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/foo.ts (renamed from cli/tests/testdata/inspector/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/inspect_wait.js (renamed from cli/tests/testdata/inspector/inspect_wait.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/inspector1.js (renamed from cli/tests/testdata/inspector/inspector1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/inspector2.js (renamed from cli/tests/testdata/inspector/inspector2.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/inspector3.js (renamed from cli/tests/testdata/inspector/inspector3.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/inspector4.js (renamed from cli/tests/testdata/inspector/inspector4.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/inspector_test.js (renamed from cli/tests/testdata/inspector/inspector_test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/memory.js (renamed from cli/tests/testdata/inspector/memory.js) | 0 | ||||
-rw-r--r-- | tests/testdata/inspector/test.ts (renamed from cli/tests/testdata/inspector/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/install/check_local_by_default.ts (renamed from cli/tests/testdata/install/check_local_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/install/check_local_by_default2.ts (renamed from cli/tests/testdata/install/check_local_by_default2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/deps/main.out (renamed from cli/tests/testdata/jsr/deps/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/deps/main.ts (renamed from cli/tests/testdata/jsr/deps/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/deps/main_info.out (renamed from cli/tests/testdata/jsr/deps/main_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/module_graph/main.out (renamed from cli/tests/testdata/jsr/module_graph/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/module_graph/main.ts (renamed from cli/tests/testdata/jsr/module_graph/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/module_graph/main_info.out (renamed from cli/tests/testdata/jsr/module_graph/main_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/no_module_graph/main.out (renamed from cli/tests/testdata/jsr/no_module_graph/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/no_module_graph/main.ts (renamed from cli/tests/testdata/jsr/no_module_graph/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/no_module_graph/main_info.out (renamed from cli/tests/testdata/jsr/no_module_graph/main_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/no_module_graph/multiple.out (renamed from cli/tests/testdata/jsr/no_module_graph/multiple.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/no_module_graph/multiple.ts (renamed from cli/tests/testdata/jsr/no_module_graph/multiple.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/add/1.0.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/add/1.0.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/add/1.0.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/add/1.0.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/add/meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/add/meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/deps/1.0.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/deps/1.0.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/deps/1.0.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/deps/1.0.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/deps/meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/deps/meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/other.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/module_graph/1.4.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/module_graph/meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/module_graph/meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/TestClass.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/TestClass.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/TestClass.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/TestClass.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/TestClass.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/TestClass.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/no_module_graph/meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/no_module_graph/meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/subset_type_graph/meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0/mod.ts (renamed from cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0_meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0_meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/meta.json (renamed from cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/meta.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/subset_type_graph/main.check.out (renamed from cli/tests/testdata/jsr/subset_type_graph/main.check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/subset_type_graph/main.ts (renamed from cli/tests/testdata/jsr/subset_type_graph/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/version_not_found/main.out (renamed from cli/tests/testdata/jsr/version_not_found/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jsr/version_not_found/main.ts (renamed from cli/tests/testdata/jsr/version_not_found/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsx-error.jsonc (renamed from cli/tests/testdata/jsx/deno-jsx-error.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsx-import-map.jsonc (renamed from cli/tests/testdata/jsx/deno-jsx-import-map.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsx-precompile.jsonc (renamed from cli/tests/testdata/jsx/deno-jsx-precompile.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsx.json (renamed from cli/tests/testdata/jsx/deno-jsx.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsx.jsonc (renamed from cli/tests/testdata/jsx/deno-jsx.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsxdev-import-map.jsonc (renamed from cli/tests/testdata/jsx/deno-jsxdev-import-map.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno-jsxdev.jsonc (renamed from cli/tests/testdata/jsx/deno-jsxdev.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/deno.lock (renamed from cli/tests/testdata/jsx/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/import-map-scoped.json (renamed from cli/tests/testdata/jsx/import-map-scoped.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/import-map.json (renamed from cli/tests/testdata/jsx/import-map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/jsx-dev-runtime/index.ts (renamed from cli/tests/testdata/jsx/jsx-dev-runtime/index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/jsx-precompile/index.ts (renamed from cli/tests/testdata/jsx/jsx-precompile/index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jsx/jsx-runtime/index.ts (renamed from cli/tests/testdata/jsx/jsx-runtime/index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/jupyter/install_command_not_exists.out (renamed from cli/tests/testdata/jupyter/install_command_not_exists.out) | 0 | ||||
-rw-r--r-- | tests/testdata/jupyter/integration_test.ipynb (renamed from cli/tests/testdata/jupyter/integration_test.ipynb) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/Deno.compact.format.jsonc (renamed from cli/tests/testdata/lint/Deno.compact.format.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/Deno.jsonc (renamed from cli/tests/testdata/lint/Deno.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/Deno.malformed.jsonc (renamed from cli/tests/testdata/lint/Deno.malformed.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/Deno.malformed2.jsonc (renamed from cli/tests/testdata/lint/Deno.malformed2.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/Deno.no_tags.jsonc (renamed from cli/tests/testdata/lint/Deno.no_tags.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/deno.glob.json (renamed from cli/tests/testdata/lint/deno.glob.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected.out (renamed from cli/tests/testdata/lint/expected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_compact.out (renamed from cli/tests/testdata/lint/expected_compact.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_from_stdin.out (renamed from cli/tests/testdata/lint/expected_from_stdin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_from_stdin_json.out (renamed from cli/tests/testdata/lint/expected_from_stdin_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_glob.out (renamed from cli/tests/testdata/lint/expected_glob.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_ignore.out (renamed from cli/tests/testdata/lint/expected_ignore.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_json.out (renamed from cli/tests/testdata/lint/expected_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_quiet.out (renamed from cli/tests/testdata/lint/expected_quiet.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_rules.out (renamed from cli/tests/testdata/lint/expected_rules.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/expected_verbose.out (renamed from cli/tests/testdata/lint/expected_verbose.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/data/tes.ts (renamed from cli/tests/testdata/lint/glob/data/tes.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/data/test1.js (renamed from cli/tests/testdata/lint/glob/data/test1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/data/test1.ts (renamed from cli/tests/testdata/lint/glob/data/test1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/data/test12.ts (renamed from cli/tests/testdata/lint/glob/data/test12.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/fizz/bar.ts (renamed from cli/tests/testdata/lint/glob/nested/fizz/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/fizz/bazz.ts (renamed from cli/tests/testdata/lint/glob/nested/fizz/bazz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/fizz/fizz.ts (renamed from cli/tests/testdata/lint/glob/nested/fizz/fizz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/fizz/foo.ts (renamed from cli/tests/testdata/lint/glob/nested/fizz/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/foo/bar.ts (renamed from cli/tests/testdata/lint/glob/nested/foo/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/foo/bazz.ts (renamed from cli/tests/testdata/lint/glob/nested/foo/bazz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/foo/fizz.ts (renamed from cli/tests/testdata/lint/glob/nested/foo/fizz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/nested/foo/foo.ts (renamed from cli/tests/testdata/lint/glob/nested/foo/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/glob/pages/[id].ts (renamed from cli/tests/testdata/lint/glob/pages/[id].ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/watch/badly_linted.js (renamed from cli/tests/testdata/lint/watch/badly_linted.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/watch/badly_linted.js.out (renamed from cli/tests/testdata/lint/watch/badly_linted.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/watch/badly_linted_fixed1.js (renamed from cli/tests/testdata/lint/watch/badly_linted_fixed1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/watch/badly_linted_fixed1.js.out (renamed from cli/tests/testdata/lint/watch/badly_linted_fixed1.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/watch/badly_linted_fixed2.js (renamed from cli/tests/testdata/lint/watch/badly_linted_fixed2.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/watch/badly_linted_fixed2.js.out (renamed from cli/tests/testdata/lint/watch/badly_linted_fixed2.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_config.out (renamed from cli/tests/testdata/lint/with_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_config/a.ts (renamed from cli/tests/testdata/lint/with_config/a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_config/b.ts (renamed from cli/tests/testdata/lint/with_config/b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_config_and_flags.out (renamed from cli/tests/testdata/lint/with_config_and_flags.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_config_without_tags.out (renamed from cli/tests/testdata/lint/with_config_without_tags.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_malformed_config.out (renamed from cli/tests/testdata/lint/with_malformed_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_malformed_config2.out (renamed from cli/tests/testdata/lint/with_malformed_config2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_report_config_compact.out (renamed from cli/tests/testdata/lint/with_report_config_compact.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/with_report_config_override.out (renamed from cli/tests/testdata/lint/with_report_config_override.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/without_config/file1.js (renamed from cli/tests/testdata/lint/without_config/file1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/without_config/file2.ts (renamed from cli/tests/testdata/lint/without_config/file2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/without_config/ignored_file.ts (renamed from cli/tests/testdata/lint/without_config/ignored_file.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lint/without_config/malformed.js (renamed from cli/tests/testdata/lint/without_config/malformed.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/bench.nolock.out (renamed from cli/tests/testdata/lockfile/basic/bench.nolock.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/deno.json (renamed from cli/tests/testdata/lockfile/basic/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/deno.lock (renamed from cli/tests/testdata/lockfile/basic/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/doc.nolock.out (renamed from cli/tests/testdata/lockfile/basic/doc.nolock.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/fail.out (renamed from cli/tests/testdata/lockfile/basic/fail.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/info.nolock.out (renamed from cli/tests/testdata/lockfile/basic/info.nolock.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/main.bench.ts (renamed from cli/tests/testdata/lockfile/basic/main.bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/main.test.ts (renamed from cli/tests/testdata/lockfile/basic/main.test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/main.ts (renamed from cli/tests/testdata/lockfile/basic/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/mod.ts (renamed from cli/tests/testdata/lockfile/basic/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/basic/test.nolock.out (renamed from cli/tests/testdata/lockfile/basic/test.nolock.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/no_dts/deno.lock.out (renamed from cli/tests/testdata/lockfile/no_dts/deno.lock.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/no_dts/main.cache.out (renamed from cli/tests/testdata/lockfile/no_dts/main.cache.out) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/no_dts/main.ts (renamed from cli/tests/testdata/lockfile/no_dts/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/no_dts/mod.d.ts (renamed from cli/tests/testdata/lockfile/no_dts/mod.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/lockfile/no_dts/mod.js (renamed from cli/tests/testdata/lockfile/no_dts/mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/deno.import_map.jsonc (renamed from cli/tests/testdata/lsp/deno.import_map.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/deno.lint.exclude.jsonc (renamed from cli/tests/testdata/lsp/deno.lint.exclude.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/diagnostics_deno_types.json (renamed from cli/tests/testdata/lsp/diagnostics_deno_types.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/import-map.json (renamed from cli/tests/testdata/lsp/import-map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/large_file.txt (renamed from cli/tests/testdata/lsp/large_file.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_latest_.json (renamed from cli/tests/testdata/lsp/registries/a_latest_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_v1.0.0_.json (renamed from cli/tests/testdata/lsp/registries/a_v1.0.0_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_v1.0.0_b.json (renamed from cli/tests/testdata/lsp/registries/a_v1.0.0_b.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_v1.0.1_.json (renamed from cli/tests/testdata/lsp/registries/a_v1.0.1_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_v2.0.0_.json (renamed from cli/tests/testdata/lsp/registries/a_v2.0.0_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_versions_.json (renamed from cli/tests/testdata/lsp/registries/a_versions_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/a_versions_v1..json (renamed from cli/tests/testdata/lsp/registries/a_versions_v1..json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/b_latest_.json (renamed from cli/tests/testdata/lsp/registries/b_latest_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/b_v0.0.1_.json (renamed from cli/tests/testdata/lsp/registries/b_v0.0.1_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/b_v0.0.2_.json (renamed from cli/tests/testdata/lsp/registries/b_v0.0.2_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/b_v0.0.3_.json (renamed from cli/tests/testdata/lsp/registries/b_v0.0.3_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/b_versions_.json (renamed from cli/tests/testdata/lsp/registries/b_versions_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/cde_tags.json (renamed from cli/tests/testdata/lsp/registries/cde_tags.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/cdef_tags.json (renamed from cli/tests/testdata/lsp/registries/cdef_tags.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/complex.json (renamed from cli/tests/testdata/lsp/registries/complex.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/complex_efg.json (renamed from cli/tests/testdata/lsp/registries/complex_efg.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/complex_efg_0.2.0.json (renamed from cli/tests/testdata/lsp/registries/complex_efg_0.2.0.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/def_tags.json (renamed from cli/tests/testdata/lsp/registries/def_tags.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/deno-import-intellisense-complex.json (renamed from cli/tests/testdata/lsp/registries/deno-import-intellisense-complex.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/deno-import-intellisense-key-first.json (renamed from cli/tests/testdata/lsp/registries/deno-import-intellisense-key-first.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/deno-import-intellisense.json (renamed from cli/tests/testdata/lsp/registries/deno-import-intellisense.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/doc_a.json (renamed from cli/tests/testdata/lsp/registries/doc_a.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/doc_a_latest_mod.ts.json (renamed from cli/tests/testdata/lsp/registries/doc_a_latest_mod.ts.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/key_first.json (renamed from cli/tests/testdata/lsp/registries/key_first.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/modules_.json (renamed from cli/tests/testdata/lsp/registries/modules_.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/registries/modules_a.json (renamed from cli/tests/testdata/lsp/registries/modules_a.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/types.tsconfig.json (renamed from cli/tests/testdata/lsp/types.tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/lsp/x_deno_warning_redirect.js (renamed from cli/tests/testdata/lsp/x_deno_warning_redirect.js) | 0 | ||||
-rw-r--r-- | tests/testdata/malformed_config/deno.json (renamed from cli/tests/testdata/malformed_config/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-a.mjs (renamed from cli/tests/testdata/module_graph/file_tests-a.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-b-mod.js (renamed from cli/tests/testdata/module_graph/file_tests-b-mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-b.ts (renamed from cli/tests/testdata/module_graph/file_tests-b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-c-mod.ts (renamed from cli/tests/testdata/module_graph/file_tests-c-mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-checkwithconfig.ts (renamed from cli/tests/testdata/module_graph/file_tests-checkwithconfig.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-diag.ts (renamed from cli/tests/testdata/module_graph/file_tests-diag.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-dynamicimport.ts (renamed from cli/tests/testdata/module_graph/file_tests-dynamicimport.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-importjson.ts (renamed from cli/tests/testdata/module_graph/file_tests-importjson.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-importremap.ts (renamed from cli/tests/testdata/module_graph/file_tests-importremap.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-main.ts (renamed from cli/tests/testdata/module_graph/file_tests-main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_tests-some.json (renamed from cli/tests/testdata/module_graph/file_tests-some.json) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_typesref.d.ts (renamed from cli/tests/testdata/module_graph/file_typesref.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/file_typesref.js (renamed from cli/tests/testdata/module_graph/file_typesref.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-std-http-server.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-std-http-server.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-a-mod.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-a-mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-a.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-import_map.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-import_map.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-jquery.js (renamed from cli/tests/testdata/module_graph/https_deno.land-x-jquery.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-lib-a.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-lib-a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-lib-b.js (renamed from cli/tests/testdata/module_graph/https_deno.land-x-lib-b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-lib-c.d.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-lib-c.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-lib-c.js (renamed from cli/tests/testdata/module_graph/https_deno.land-x-lib-c.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-lib-mod.d.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-lib-mod.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-lib-mod.js (renamed from cli/tests/testdata/module_graph/https_deno.land-x-lib-mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-mod.ts (renamed from cli/tests/testdata/module_graph/https_deno.land-x-mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_deno.land-x-transpile.tsx (renamed from cli/tests/testdata/module_graph/https_deno.land-x-transpile.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/https_unpkg.com-lodash-index.js (renamed from cli/tests/testdata/module_graph/https_unpkg.com-lodash-index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/lockfile.json (renamed from cli/tests/testdata/module_graph/lockfile.json) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/lockfile_fail.json (renamed from cli/tests/testdata/module_graph/lockfile_fail.json) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/tsconfig.json (renamed from cli/tests/testdata/module_graph/tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/module_graph/tsconfig_01.json (renamed from cli/tests/testdata/module_graph/tsconfig_01.json) | 0 | ||||
-rw-r--r-- | tests/testdata/navigator_language.ts (renamed from cli/tests/testdata/navigator_language.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/navigator_languages.ts (renamed from cli/tests/testdata/navigator_languages.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/node/rejection_handled_web_process.ts (renamed from cli/tests/testdata/node/rejection_handled_web_process.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/node/rejection_handled_web_process.ts.out (renamed from cli/tests/testdata/node/rejection_handled_web_process.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/node/require_esm_error/esm.js (renamed from cli/tests/testdata/node/require_esm_error/esm.js) | 0 | ||||
-rw-r--r-- | tests/testdata/node/require_esm_error/main.out (renamed from cli/tests/testdata/node/require_esm_error/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/node/require_esm_error/main.ts (renamed from cli/tests/testdata/node/require_esm_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/node/test.js (renamed from cli/tests/testdata/node/test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/node/test.out (renamed from cli/tests/testdata/node/test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/node/unhandled_rejection_web.ts (renamed from cli/tests/testdata/node/unhandled_rejection_web.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/node/unhandled_rejection_web.ts.out (renamed from cli/tests/testdata/node/unhandled_rejection_web.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/node/unhandled_rejection_web_process.ts (renamed from cli/tests/testdata/node/unhandled_rejection_web_process.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/node/unhandled_rejection_web_process.ts.out (renamed from cli/tests/testdata/node/unhandled_rejection_web_process.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/README.md (renamed from cli/tests/testdata/npm/README.md) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/binary_package/main.js (renamed from cli/tests/testdata/npm/binary_package/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/builtin_module_module/main.js (renamed from cli/tests/testdata/npm/builtin_module_module/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/builtin_module_module/main.out (renamed from cli/tests/testdata/npm/builtin_module_module/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cached_only/main.out (renamed from cli/tests/testdata/npm/cached_only/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cached_only/main.ts (renamed from cli/tests/testdata/npm/cached_only/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cached_only_after_first_run/main1.ts (renamed from cli/tests/testdata/npm/cached_only_after_first_run/main1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cached_only_after_first_run/main2.ts (renamed from cli/tests/testdata/npm/cached_only_after_first_run/main2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/check_errors/main.ts (renamed from cli/tests/testdata/npm/check_errors/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/check_errors/main_all.out (renamed from cli/tests/testdata/npm/check_errors/main_all.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/check_errors/main_local.out (renamed from cli/tests/testdata/npm/check_errors/main_local.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/child_process_fork_test/main.out (renamed from cli/tests/testdata/npm/child_process_fork_test/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/child_process_fork_test/main.ts (renamed from cli/tests/testdata/npm/child_process_fork_test/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs-invalid-name-exports/main.out (renamed from cli/tests/testdata/npm/cjs-invalid-name-exports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs-invalid-name-exports/main.ts (renamed from cli/tests/testdata/npm/cjs-invalid-name-exports/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_local_global_decls/main.out (renamed from cli/tests/testdata/npm/cjs_local_global_decls/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_local_global_decls/main.ts (renamed from cli/tests/testdata/npm/cjs_local_global_decls/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_module_export_assignment/main.out (renamed from cli/tests/testdata/npm/cjs_module_export_assignment/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_module_export_assignment/main.ts (renamed from cli/tests/testdata/npm/cjs_module_export_assignment/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_module_export_assignment_number/main.out (renamed from cli/tests/testdata/npm/cjs_module_export_assignment_number/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_module_export_assignment_number/main.ts (renamed from cli/tests/testdata/npm/cjs_module_export_assignment_number/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_reexport_collision/main.out (renamed from cli/tests/testdata/npm/cjs_reexport_collision/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_reexport_collision/main.ts (renamed from cli/tests/testdata/npm/cjs_reexport_collision/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_require_esm_error/main.out (renamed from cli/tests/testdata/npm/cjs_require_esm_error/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_require_esm_error/main.ts (renamed from cli/tests/testdata/npm/cjs_require_esm_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_require_esm_mjs_error/main.out (renamed from cli/tests/testdata/npm/cjs_require_esm_mjs_error/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_require_esm_mjs_error/main.ts (renamed from cli/tests/testdata/npm/cjs_require_esm_mjs_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_sub_path/main.js (renamed from cli/tests/testdata/npm/cjs_sub_path/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_sub_path/main.out (renamed from cli/tests/testdata/npm/cjs_sub_path/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_this_in_exports/main.js (renamed from cli/tests/testdata/npm/cjs_this_in_exports/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_this_in_exports/main.out (renamed from cli/tests/testdata/npm/cjs_this_in_exports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_with_deps/main.js (renamed from cli/tests/testdata/npm/cjs_with_deps/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_with_deps/main.out (renamed from cli/tests/testdata/npm/cjs_with_deps/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_with_deps/main_info.out (renamed from cli/tests/testdata/npm/cjs_with_deps/main_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_with_deps/main_info_json.out (renamed from cli/tests/testdata/npm/cjs_with_deps/main_info_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_with_deps/main_node_modules.out (renamed from cli/tests/testdata/npm/cjs_with_deps/main_node_modules.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_yargs/main.js (renamed from cli/tests/testdata/npm/cjs_yargs/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/cjs_yargs/main.out (renamed from cli/tests/testdata/npm/cjs_yargs/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/compare_globals/main.out (renamed from cli/tests/testdata/npm/compare_globals/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/compare_globals/main.ts (renamed from cli/tests/testdata/npm/compare_globals/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/conditional_exports/main.js (renamed from cli/tests/testdata/npm/conditional_exports/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/conditional_exports/main.out (renamed from cli/tests/testdata/npm/conditional_exports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/conditional_exports/main_node_modules.out (renamed from cli/tests/testdata/npm/conditional_exports/main_node_modules.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/create_require/main.out (renamed from cli/tests/testdata/npm/create_require/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/create_require/main.ts (renamed from cli/tests/testdata/npm/create_require/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/d_ext/main.out (renamed from cli/tests/testdata/npm/d_ext/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/d_ext/main.ts (renamed from cli/tests/testdata/npm/d_ext/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_cache.out (renamed from cli/tests/testdata/npm/deno_cache.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_cjs.out (renamed from cli/tests/testdata/npm/deno_run_cjs.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_cowsay.out (renamed from cli/tests/testdata/npm/deno_run_cowsay.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_cowsay_no_permissions.out (renamed from cli/tests/testdata/npm/deno_run_cowsay_no_permissions.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_cowthink.out (renamed from cli/tests/testdata/npm/deno_run_cowthink.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_esm.out (renamed from cli/tests/testdata/npm/deno_run_esm.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_no_bin_entrypoint.out (renamed from cli/tests/testdata/npm/deno_run_no_bin_entrypoint.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_no_bin_entrypoint_non_existent_subpath.out (renamed from cli/tests/testdata/npm/deno_run_no_bin_entrypoint_non_existent_subpath.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_no_ext.out (renamed from cli/tests/testdata/npm/deno_run_no_ext.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_non_existent.out (renamed from cli/tests/testdata/npm/deno_run_non_existent.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/deno_run_special_chars_in_bin_name.out (renamed from cli/tests/testdata/npm/deno_run_special_chars_in_bin_name.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/different_nested_dep/main.js (renamed from cli/tests/testdata/npm/different_nested_dep/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/different_nested_dep/main.out (renamed from cli/tests/testdata/npm/different_nested_dep/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/different_nested_dep/package.json (renamed from cli/tests/testdata/npm/different_nested_dep/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/directory_import/folder_index_js.out (renamed from cli/tests/testdata/npm/directory_import/folder_index_js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/directory_import/folder_index_js.ts (renamed from cli/tests/testdata/npm/directory_import/folder_index_js.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/directory_import/folder_no_index.out (renamed from cli/tests/testdata/npm/directory_import/folder_no_index.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/directory_import/folder_no_index.ts (renamed from cli/tests/testdata/npm/directory_import/folder_no_index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dual_cjs_esm/main.out (renamed from cli/tests/testdata/npm/dual_cjs_esm/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dual_cjs_esm/main.ts (renamed from cli/tests/testdata/npm/dual_cjs_esm/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import/main.out (renamed from cli/tests/testdata/npm/dynamic_import/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import/main.ts (renamed from cli/tests/testdata/npm/dynamic_import/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import/other.ts (renamed from cli/tests/testdata/npm/dynamic_import/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_deno_ts_from_npm/add.ts (renamed from cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/add.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.out (renamed from cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.ts (renamed from cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_deno_ts_from_npm/subtract.mts (renamed from cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/subtract.mts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_invalid_package_name/main.out (renamed from cli/tests/testdata/npm/dynamic_import_invalid_package_name/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_invalid_package_name/main.ts (renamed from cli/tests/testdata/npm/dynamic_import_invalid_package_name/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_json/main.js (renamed from cli/tests/testdata/npm/dynamic_import_json/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_json/main.out (renamed from cli/tests/testdata/npm/dynamic_import_json/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_reload_same_package/main.out (renamed from cli/tests/testdata/npm/dynamic_import_reload_same_package/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_reload_same_package/main.ts (renamed from cli/tests/testdata/npm/dynamic_import_reload_same_package/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/dynamic_import_reload_same_package/other.ts (renamed from cli/tests/testdata/npm/dynamic_import_reload_same_package/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/env_var_re_export/main.js (renamed from cli/tests/testdata/npm/env_var_re_export/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/error_version_after_subpath/main.js (renamed from cli/tests/testdata/npm/error_version_after_subpath/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/error_version_after_subpath/main.out (renamed from cli/tests/testdata/npm/error_version_after_subpath/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/esm/main.js (renamed from cli/tests/testdata/npm/esm/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/esm/main.out (renamed from cli/tests/testdata/npm/esm/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/esm/test.js (renamed from cli/tests/testdata/npm/esm/test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/esm/test.out (renamed from cli/tests/testdata/npm/esm/test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/esm_import_cjs_default/main.out (renamed from cli/tests/testdata/npm/esm_import_cjs_default/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/esm_import_cjs_default/main.ts (renamed from cli/tests/testdata/npm/esm_import_cjs_default/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/file_dts_dmts_dcts/main.out (renamed from cli/tests/testdata/npm/file_dts_dmts_dcts/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/file_dts_dmts_dcts/main.ts (renamed from cli/tests/testdata/npm/file_dts_dmts_dcts/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/import_json/main.js (renamed from cli/tests/testdata/npm/import_json/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/import_json/main.out (renamed from cli/tests/testdata/npm/import_json/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/import_map/import_map.json (renamed from cli/tests/testdata/npm/import_map/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/import_map/main.js (renamed from cli/tests/testdata/npm/import_map/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/import_map/main.out (renamed from cli/tests/testdata/npm/import_map/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/import_not_defined.js (renamed from cli/tests/testdata/npm/imports_package_json/import_not_defined.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/import_not_defined.out (renamed from cli/tests/testdata/npm/imports_package_json/import_not_defined.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/main.js (renamed from cli/tests/testdata/npm/imports_package_json/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/main.out (renamed from cli/tests/testdata/npm/imports_package_json/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/package.json (renamed from cli/tests/testdata/npm/imports_package_json/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/sub_path_import_not_defined.js (renamed from cli/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/imports_package_json/sub_path_import_not_defined.out (renamed from cli/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/info/chalk.out (renamed from cli/tests/testdata/npm/info/chalk.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/info/chalk_json.out (renamed from cli/tests/testdata/npm/info/chalk_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/invalid_package_name/main.js (renamed from cli/tests/testdata/npm/invalid_package_name/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/invalid_package_name/main.out (renamed from cli/tests/testdata/npm/invalid_package_name/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/local_dir_resolves_symlinks/index.js (renamed from cli/tests/testdata/npm/local_dir_resolves_symlinks/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/local_dir_resolves_symlinks/index.out (renamed from cli/tests/testdata/npm/local_dir_resolves_symlinks/index.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/local_dir_resolves_symlinks/package.json (renamed from cli/tests/testdata/npm/local_dir_resolves_symlinks/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/lock_file/lock.json (renamed from cli/tests/testdata/npm/lock_file/lock.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/lock_file/main.js (renamed from cli/tests/testdata/npm/lock_file/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/lock_file/main.out (renamed from cli/tests/testdata/npm/lock_file/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/mixed_case_package_name/global.out (renamed from cli/tests/testdata/npm/mixed_case_package_name/global.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/mixed_case_package_name/global.ts (renamed from cli/tests/testdata/npm/mixed_case_package_name/global.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/mixed_case_package_name/local.out (renamed from cli/tests/testdata/npm/mixed_case_package_name/local.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/mixed_case_package_name/local.ts (renamed from cli/tests/testdata/npm/mixed_case_package_name/local.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/no_npm_after_first_run/main1.ts (renamed from cli/tests/testdata/npm/no_npm_after_first_run/main1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/no_types_cjs/main.ts (renamed from cli/tests/testdata/npm/no_types_cjs/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/no_types_in_conditional_exports/main.out (renamed from cli/tests/testdata/npm/no_types_in_conditional_exports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/no_types_in_conditional_exports/main.ts (renamed from cli/tests/testdata/npm/no_types_in_conditional_exports/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/node_modules_deno_node_modules/main.out (renamed from cli/tests/testdata/npm/node_modules_deno_node_modules/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/node_modules_deno_node_modules/main.ts (renamed from cli/tests/testdata/npm/node_modules_deno_node_modules/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/node_modules_import/main.out (renamed from cli/tests/testdata/npm/node_modules_import/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/node_modules_import/main.ts (renamed from cli/tests/testdata/npm/node_modules_import/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/node_modules_import/main_check.out (renamed from cli/tests/testdata/npm/node_modules_import/main_check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/node_modules_import/package.json (renamed from cli/tests/testdata/npm/node_modules_import/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/nonexistent_file/main.js (renamed from cli/tests/testdata/npm/nonexistent_file/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/nonexistent_file/main.out (renamed from cli/tests/testdata/npm/nonexistent_file/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/peer_deps_with_copied_folders/main.out (renamed from cli/tests/testdata/npm/peer_deps_with_copied_folders/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/peer_deps_with_copied_folders/main.ts (renamed from cli/tests/testdata/npm/peer_deps_with_copied_folders/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/peer_deps_with_copied_folders/main_info.out (renamed from cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out (renamed from cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules.out (renamed from cli/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules_reload.out (renamed from cli/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules_reload.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/permissions_outside_package/foo/config.js (renamed from cli/tests/testdata/npm/permissions_outside_package/foo/config.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/permissions_outside_package/foo/package.json (renamed from cli/tests/testdata/npm/permissions_outside_package/foo/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/permissions_outside_package/main.out (renamed from cli/tests/testdata/npm/permissions_outside_package/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/permissions_outside_package/main.ts (renamed from cli/tests/testdata/npm/permissions_outside_package/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@babel/parser/parser-7.19.0.tgz (renamed from cli/tests/testdata/npm/registry/@babel/parser/parser-7.19.0.tgz) | bin | 444189 -> 444189 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@babel/parser/registry.json (renamed from cli/tests/testdata/npm/registry/@babel/parser/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/0.5.0/cli.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/bin/0.5.0/cli.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/0.5.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/bin/0.5.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/0.6.0/cli-cjs.js (renamed from cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli-cjs.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/0.6.0/cli.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/0.6.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-cjs.js (renamed from cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-cjs.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-no-ext (renamed from cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-no-ext) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/1.0.0/cli.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/bin/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/binary-package/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/lib.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/lib.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/forked_path.js (renamed from cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/forked_path.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/other.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/other.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/other_file.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/other_file.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/my_es_module.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/my_es_module.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm_mjs.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm_mjs.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/require_mjs.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/require_mjs.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/other.service.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/other.service.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/tslib.js (renamed from cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/tslib.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/cjs/index.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/cjs/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/bar.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/bar.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/foo.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/m.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/m.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/foo.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/cjs/index.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/cjs/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/bar.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/bar.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/foo.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/create-require/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/create-require/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/create-require/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/create-require/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/d-ext/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/d-ext/1.0.0/types.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/main.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/main.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.cts (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.cts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.mts (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.mts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/dev.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/dev.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/index.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/prod.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/prod.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.d.mts (renamed from cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.d.mts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/other.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/other.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/index.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/index.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/local.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/local.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.cts (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.cts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.mts (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.mts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.js (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/globals/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/globals/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/globals/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/hi.js (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/hi.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/import_not_defined.js (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/import_not_defined.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/main.js (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/bye.js (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/bye.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/import_not_defined.js (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/import_not_defined.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/main.js (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/main.js (renamed from cli/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo-esm.js (renamed from cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo-esm.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo.js (renamed from cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/dist/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/dist/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs (renamed from cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_no_index/random_name.js (renamed from cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_no_index/random_name.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/client.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/client.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/client.mjs (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/client.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-js-only.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-js-only.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-types.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.js (renamed from cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts (renamed from cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/index.ts (renamed from cli/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/index.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/package.json (renamed from cli/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/has-package-exports-patterns-0.0.2.tgz (renamed from cli/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/has-package-exports-patterns-0.0.2.tgz) | bin | 483 -> 483 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/registry.json (renamed from cli/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@types/node/node-18.8.2.tgz (renamed from cli/tests/testdata/npm/registry/@types/node/node-18.8.2.tgz) | bin | 649087 -> 649087 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@types/node/registry.json (renamed from cli/tests/testdata/npm/registry/@types/node/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-core/compiler-core-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/compiler-core/compiler-core-3.2.38.tgz) | bin | 158201 -> 158201 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-core/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/compiler-core/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-dom/compiler-dom-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/compiler-dom/compiler-dom-3.2.38.tgz) | bin | 197010 -> 197010 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-dom/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/compiler-dom/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-sfc/compiler-sfc-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/compiler-sfc/compiler-sfc-3.2.38.tgz) | bin | 469167 -> 469167 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-sfc/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/compiler-sfc/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-ssr/compiler-ssr-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/compiler-ssr/compiler-ssr-3.2.38.tgz) | bin | 13870 -> 13870 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/compiler-ssr/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/compiler-ssr/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/reactivity-transform/reactivity-transform-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/reactivity-transform/reactivity-transform-3.2.38.tgz) | bin | 7582 -> 7582 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/reactivity-transform/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/reactivity-transform/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/reactivity/reactivity-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/reactivity/reactivity-3.2.38.tgz) | bin | 57456 -> 57456 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/reactivity/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/reactivity/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/runtime-core/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/runtime-core/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/runtime-core/runtime-core-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/runtime-core/runtime-core-3.2.38.tgz) | bin | 217627 -> 217627 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/runtime-dom/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/runtime-dom/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/runtime-dom/runtime-dom-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/runtime-dom/runtime-dom-3.2.38.tgz) | bin | 315216 -> 315216 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/server-renderer/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/server-renderer/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/server-renderer/server-renderer-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/server-renderer/server-renderer-3.2.38.tgz) | bin | 120768 -> 120768 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/@vue/shared/registry.json (renamed from cli/tests/testdata/npm/registry/@vue/shared/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/@vue/shared/shared-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/@vue/shared/shared-3.2.38.tgz) | bin | 20773 -> 20773 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ajv-formats/ajv-formats-2.1.1.tgz (renamed from cli/tests/testdata/npm/registry/ajv-formats/ajv-formats-2.1.1.tgz) | bin | 14851 -> 14851 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ajv-formats/registry.json (renamed from cli/tests/testdata/npm/registry/ajv-formats/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/ajv/ajv-8.11.0.tgz (renamed from cli/tests/testdata/npm/registry/ajv/ajv-8.11.0.tgz) | bin | 219252 -> 219252 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ajv/registry.json (renamed from cli/tests/testdata/npm/registry/ajv/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/ansi-regex/ansi-regex-3.0.1.tgz (renamed from cli/tests/testdata/npm/registry/ansi-regex/ansi-regex-3.0.1.tgz) | bin | 2246 -> 2246 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ansi-regex/ansi-regex-5.0.1.tgz (renamed from cli/tests/testdata/npm/registry/ansi-regex/ansi-regex-5.0.1.tgz) | bin | 2768 -> 2768 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ansi-regex/registry.json (renamed from cli/tests/testdata/npm/registry/ansi-regex/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/ansi-styles/ansi-styles-4.3.0.tgz (renamed from cli/tests/testdata/npm/registry/ansi-styles/ansi-styles-4.3.0.tgz) | bin | 5849 -> 5849 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ansi-styles/registry.json (renamed from cli/tests/testdata/npm/registry/ansi-styles/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/asn1/asn1-0.2.6.tgz (renamed from cli/tests/testdata/npm/registry/asn1/asn1-0.2.6.tgz) | bin | 5977 -> 5977 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/asn1/registry.json (renamed from cli/tests/testdata/npm/registry/asn1/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/assertion-error/assertion-error-1.1.0.tgz (renamed from cli/tests/testdata/npm/registry/assertion-error/assertion-error-1.1.0.tgz) | bin | 2668 -> 2668 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/assertion-error/registry.json (renamed from cli/tests/testdata/npm/registry/assertion-error/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/autoprefixer/autoprefixer-10.4.14.tgz (renamed from cli/tests/testdata/npm/registry/autoprefixer/autoprefixer-10.4.14.tgz) | bin | 46185 -> 46185 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/autoprefixer/registry.json (renamed from cli/tests/testdata/npm/registry/autoprefixer/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/bcrypt-pbkdf/bcrypt-pbkdf-1.0.2.tgz (renamed from cli/tests/testdata/npm/registry/bcrypt-pbkdf/bcrypt-pbkdf-1.0.2.tgz) | bin | 11109 -> 11109 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/bcrypt-pbkdf/registry.json (renamed from cli/tests/testdata/npm/registry/bcrypt-pbkdf/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/browserslist/browserslist-4.21.5.tgz (renamed from cli/tests/testdata/npm/registry/browserslist/browserslist-4.21.5.tgz) | bin | 15212 -> 15212 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/browserslist/registry.json (renamed from cli/tests/testdata/npm/registry/browserslist/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/buildcheck/buildcheck-0.0.3.tgz (renamed from cli/tests/testdata/npm/registry/buildcheck/buildcheck-0.0.3.tgz) | bin | 12331 -> 12331 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/buildcheck/registry.json (renamed from cli/tests/testdata/npm/registry/buildcheck/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/camelcase/camelcase-5.3.1.tgz (renamed from cli/tests/testdata/npm/registry/camelcase/camelcase-5.3.1.tgz) | bin | 3028 -> 3028 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/camelcase/registry.json (renamed from cli/tests/testdata/npm/registry/camelcase/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/caniuse-lite/caniuse-lite-1.0.30001473.tgz (renamed from cli/tests/testdata/npm/registry/caniuse-lite/caniuse-lite-1.0.30001473.tgz) | bin | 275752 -> 275752 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/caniuse-lite/registry.json (renamed from cli/tests/testdata/npm/registry/caniuse-lite/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/chai/chai-4.3.6.tgz (renamed from cli/tests/testdata/npm/registry/chai/chai-4.3.6.tgz) | bin | 140277 -> 140277 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/chai/registry.json (renamed from cli/tests/testdata/npm/registry/chai/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/chalk/chalk-4.1.2.tgz (renamed from cli/tests/testdata/npm/registry/chalk/chalk-4.1.2.tgz) | bin | 11577 -> 11577 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/chalk/chalk-5.0.1.tgz (renamed from cli/tests/testdata/npm/registry/chalk/chalk-5.0.1.tgz) | bin | 13294 -> 13294 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/chalk/registry.json (renamed from cli/tests/testdata/npm/registry/chalk/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/check-error/check-error-1.0.2.tgz (renamed from cli/tests/testdata/npm/registry/check-error/check-error-1.0.2.tgz) | bin | 4986 -> 4986 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/check-error/registry.json (renamed from cli/tests/testdata/npm/registry/check-error/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/cliui/cliui-6.0.0.tgz (renamed from cli/tests/testdata/npm/registry/cliui/cliui-6.0.0.tgz) | bin | 5566 -> 5566 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/cliui/registry.json (renamed from cli/tests/testdata/npm/registry/cliui/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/color-convert/color-convert-2.0.1.tgz (renamed from cli/tests/testdata/npm/registry/color-convert/color-convert-2.0.1.tgz) | bin | 8996 -> 8996 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/color-convert/registry.json (renamed from cli/tests/testdata/npm/registry/color-convert/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/color-name/color-name-1.1.4.tgz (renamed from cli/tests/testdata/npm/registry/color-name/color-name-1.1.4.tgz) | bin | 2868 -> 2868 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/color-name/registry.json (renamed from cli/tests/testdata/npm/registry/color-name/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/cowsay/cowsay-1.5.0.tgz (renamed from cli/tests/testdata/npm/registry/cowsay/cowsay-1.5.0.tgz) | bin | 80330 -> 80330 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/cowsay/registry.json (renamed from cli/tests/testdata/npm/registry/cowsay/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/cpu-features/cpu-features-0.0.4.tgz (renamed from cli/tests/testdata/npm/registry/cpu-features/cpu-features-0.0.4.tgz) | bin | 90867 -> 90867 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/cpu-features/registry.json (renamed from cli/tests/testdata/npm/registry/cpu-features/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/crypto-js/crypto-js-4.1.1.tgz (renamed from cli/tests/testdata/npm/registry/crypto-js/crypto-js-4.1.1.tgz) | bin | 71882 -> 71882 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/crypto-js/registry.json (renamed from cli/tests/testdata/npm/registry/crypto-js/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/csstype/csstype-2.6.20.tgz (renamed from cli/tests/testdata/npm/registry/csstype/csstype-2.6.20.tgz) | bin | 289961 -> 289961 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/csstype/registry.json (renamed from cli/tests/testdata/npm/registry/csstype/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/decamelize/decamelize-1.2.0.tgz (renamed from cli/tests/testdata/npm/registry/decamelize/decamelize-1.2.0.tgz) | bin | 1691 -> 1691 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/decamelize/registry.json (renamed from cli/tests/testdata/npm/registry/decamelize/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/deep-eql/deep-eql-3.0.1.tgz (renamed from cli/tests/testdata/npm/registry/deep-eql/deep-eql-3.0.1.tgz) | bin | 10566 -> 10566 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/deep-eql/registry.json (renamed from cli/tests/testdata/npm/registry/deep-eql/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/define-properties/define-properties-1.2.0.tgz (renamed from cli/tests/testdata/npm/registry/define-properties/define-properties-1.2.0.tgz) | bin | 5093 -> 5093 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/define-properties/registry.json (renamed from cli/tests/testdata/npm/registry/define-properties/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/electron-to-chromium/electron-to-chromium-1.4.348.tgz (renamed from cli/tests/testdata/npm/registry/electron-to-chromium/electron-to-chromium-1.4.348.tgz) | bin | 32855 -> 32855 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/electron-to-chromium/registry.json (renamed from cli/tests/testdata/npm/registry/electron-to-chromium/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/emoji-regex/emoji-regex-8.0.0.tgz (renamed from cli/tests/testdata/npm/registry/emoji-regex/emoji-regex-8.0.0.tgz) | bin | 6664 -> 6664 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/emoji-regex/registry.json (renamed from cli/tests/testdata/npm/registry/emoji-regex/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/escalade/escalade-3.1.1.tgz (renamed from cli/tests/testdata/npm/registry/escalade/escalade-3.1.1.tgz) | bin | 4312 -> 4312 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/escalade/registry.json (renamed from cli/tests/testdata/npm/registry/escalade/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/estree-walker/estree-walker-2.0.2.tgz (renamed from cli/tests/testdata/npm/registry/estree-walker/estree-walker-2.0.2.tgz) | bin | 8353 -> 8353 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/estree-walker/registry.json (renamed from cli/tests/testdata/npm/registry/estree-walker/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/fast-deep-equal/fast-deep-equal-3.1.3.tgz (renamed from cli/tests/testdata/npm/registry/fast-deep-equal/fast-deep-equal-3.1.3.tgz) | bin | 3656 -> 3656 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/fast-deep-equal/registry.json (renamed from cli/tests/testdata/npm/registry/fast-deep-equal/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/find-up/find-up-4.1.0.tgz (renamed from cli/tests/testdata/npm/registry/find-up/find-up-4.1.0.tgz) | bin | 3745 -> 3745 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/find-up/registry.json (renamed from cli/tests/testdata/npm/registry/find-up/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/fraction.js/fraction.js-4.2.0.tgz (renamed from cli/tests/testdata/npm/registry/fraction.js/fraction.js-4.2.0.tgz) | bin | 16713 -> 16713 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/fraction.js/registry.json (renamed from cli/tests/testdata/npm/registry/fraction.js/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/fs-extra/fs-extra-10.1.0.tgz (renamed from cli/tests/testdata/npm/registry/fs-extra/fs-extra-10.1.0.tgz) | bin | 16920 -> 16920 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/fs-extra/registry.json (renamed from cli/tests/testdata/npm/registry/fs-extra/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/function-bind/function-bind-1.1.1.tgz (renamed from cli/tests/testdata/npm/registry/function-bind/function-bind-1.1.1.tgz) | bin | 6301 -> 6301 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/function-bind/registry.json (renamed from cli/tests/testdata/npm/registry/function-bind/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/get-caller-file/get-caller-file-2.0.5.tgz (renamed from cli/tests/testdata/npm/registry/get-caller-file/get-caller-file-2.0.5.tgz) | bin | 2383 -> 2383 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/get-caller-file/registry.json (renamed from cli/tests/testdata/npm/registry/get-caller-file/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/get-func-name/get-func-name-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/get-func-name/get-func-name-2.0.0.tgz) | bin | 3581 -> 3581 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/get-func-name/registry.json (renamed from cli/tests/testdata/npm/registry/get-func-name/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/get-intrinsic/get-intrinsic-1.2.0.tgz (renamed from cli/tests/testdata/npm/registry/get-intrinsic/get-intrinsic-1.2.0.tgz) | bin | 11608 -> 11608 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/get-intrinsic/registry.json (renamed from cli/tests/testdata/npm/registry/get-intrinsic/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/get-stdin/get-stdin-8.0.0.tgz (renamed from cli/tests/testdata/npm/registry/get-stdin/get-stdin-8.0.0.tgz) | bin | 2235 -> 2235 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/get-stdin/registry.json (renamed from cli/tests/testdata/npm/registry/get-stdin/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/globals/globals-13.17.0.tgz (renamed from cli/tests/testdata/npm/registry/globals/globals-13.17.0.tgz) | bin | 9431 -> 9431 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/globals/registry.json (renamed from cli/tests/testdata/npm/registry/globals/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/graceful-fs/graceful-fs-4.2.10.tgz (renamed from cli/tests/testdata/npm/registry/graceful-fs/graceful-fs-4.2.10.tgz) | bin | 9770 -> 9770 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/graceful-fs/registry.json (renamed from cli/tests/testdata/npm/registry/graceful-fs/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/has-flag/has-flag-4.0.0.tgz (renamed from cli/tests/testdata/npm/registry/has-flag/has-flag-4.0.0.tgz) | bin | 2206 -> 2206 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/has-flag/registry.json (renamed from cli/tests/testdata/npm/registry/has-flag/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz (renamed from cli/tests/testdata/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz) | bin | 6761 -> 6761 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/has-package-exports/registry.json (renamed from cli/tests/testdata/npm/registry/has-package-exports/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/has-property-descriptors/has-property-descriptors-1.0.0.tgz (renamed from cli/tests/testdata/npm/registry/has-property-descriptors/has-property-descriptors-1.0.0.tgz) | bin | 3854 -> 3854 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/has-property-descriptors/registry.json (renamed from cli/tests/testdata/npm/registry/has-property-descriptors/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/has-symbols/has-symbols-1.0.3.tgz (renamed from cli/tests/testdata/npm/registry/has-symbols/has-symbols-1.0.3.tgz) | bin | 7067 -> 7067 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/has-symbols/registry.json (renamed from cli/tests/testdata/npm/registry/has-symbols/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/has/has-1.0.3.tgz (renamed from cli/tests/testdata/npm/registry/has/has-1.0.3.tgz) | bin | 1553 -> 1553 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/has/registry.json (renamed from cli/tests/testdata/npm/registry/has/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-2.0.0.tgz) | bin | 2063 -> 2063 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-3.0.0.tgz (renamed from cli/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-3.0.0.tgz) | bin | 2169 -> 2169 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/is-fullwidth-code-point/registry.json (renamed from cli/tests/testdata/npm/registry/is-fullwidth-code-point/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/js-tokens/js-tokens-4.0.0.tgz (renamed from cli/tests/testdata/npm/registry/js-tokens/js-tokens-4.0.0.tgz) | bin | 6542 -> 6542 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/js-tokens/registry.json (renamed from cli/tests/testdata/npm/registry/js-tokens/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/json-schema-traverse/json-schema-traverse-1.0.0.tgz (renamed from cli/tests/testdata/npm/registry/json-schema-traverse/json-schema-traverse-1.0.0.tgz) | bin | 6074 -> 6074 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/json-schema-traverse/registry.json (renamed from cli/tests/testdata/npm/registry/json-schema-traverse/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/jsonfile/jsonfile-6.1.0.tgz (renamed from cli/tests/testdata/npm/registry/jsonfile/jsonfile-6.1.0.tgz) | bin | 5816 -> 5816 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/jsonfile/registry.json (renamed from cli/tests/testdata/npm/registry/jsonfile/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/locate-path/locate-path-5.0.0.tgz (renamed from cli/tests/testdata/npm/registry/locate-path/locate-path-5.0.0.tgz) | bin | 2723 -> 2723 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/locate-path/registry.json (renamed from cli/tests/testdata/npm/registry/locate-path/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/loose-envify/loose-envify-1.4.0.tgz (renamed from cli/tests/testdata/npm/registry/loose-envify/loose-envify-1.4.0.tgz) | bin | 2842 -> 2842 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/loose-envify/registry.json (renamed from cli/tests/testdata/npm/registry/loose-envify/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/loupe/loupe-2.3.4.tgz (renamed from cli/tests/testdata/npm/registry/loupe/loupe-2.3.4.tgz) | bin | 14566 -> 14566 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/loupe/registry.json (renamed from cli/tests/testdata/npm/registry/loupe/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/magic-string/magic-string-0.25.9.tgz (renamed from cli/tests/testdata/npm/registry/magic-string/magic-string-0.25.9.tgz) | bin | 71318 -> 71318 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/magic-string/registry.json (renamed from cli/tests/testdata/npm/registry/magic-string/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/mkdirp/mkdirp-1.0.4.tgz (renamed from cli/tests/testdata/npm/registry/mkdirp/mkdirp-1.0.4.tgz) | bin | 6665 -> 6665 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/mkdirp/registry.json (renamed from cli/tests/testdata/npm/registry/mkdirp/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/nan/nan-2.16.0.tgz (renamed from cli/tests/testdata/npm/registry/nan/nan-2.16.0.tgz) | bin | 75350 -> 75350 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/nan/registry.json (renamed from cli/tests/testdata/npm/registry/nan/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/nanoid/nanoid-3.3.4.tgz (renamed from cli/tests/testdata/npm/registry/nanoid/nanoid-3.3.4.tgz) | bin | 5417 -> 5417 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/nanoid/registry.json (renamed from cli/tests/testdata/npm/registry/nanoid/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/node-releases/node-releases-2.0.10.tgz (renamed from cli/tests/testdata/npm/registry/node-releases/node-releases-2.0.10.tgz) | bin | 3742 -> 3742 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/node-releases/registry.json (renamed from cli/tests/testdata/npm/registry/node-releases/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/normalize-range/normalize-range-0.1.2.tgz (renamed from cli/tests/testdata/npm/registry/normalize-range/normalize-range-0.1.2.tgz) | bin | 3234 -> 3234 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/normalize-range/registry.json (renamed from cli/tests/testdata/npm/registry/normalize-range/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/object-keys/object-keys-1.1.1.tgz (renamed from cli/tests/testdata/npm/registry/object-keys/object-keys-1.1.1.tgz) | bin | 7677 -> 7677 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/object-keys/registry.json (renamed from cli/tests/testdata/npm/registry/object-keys/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/p-limit/p-limit-2.3.0.tgz (renamed from cli/tests/testdata/npm/registry/p-limit/p-limit-2.3.0.tgz) | bin | 3140 -> 3140 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/p-limit/registry.json (renamed from cli/tests/testdata/npm/registry/p-limit/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/p-locate/p-locate-4.1.0.tgz (renamed from cli/tests/testdata/npm/registry/p-locate/p-locate-4.1.0.tgz) | bin | 3060 -> 3060 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/p-locate/registry.json (renamed from cli/tests/testdata/npm/registry/p-locate/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/p-try/p-try-2.2.0.tgz (renamed from cli/tests/testdata/npm/registry/p-try/p-try-2.2.0.tgz) | bin | 2194 -> 2194 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/p-try/registry.json (renamed from cli/tests/testdata/npm/registry/p-try/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/path-exists/path-exists-4.0.0.tgz (renamed from cli/tests/testdata/npm/registry/path-exists/path-exists-4.0.0.tgz) | bin | 2073 -> 2073 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/path-exists/registry.json (renamed from cli/tests/testdata/npm/registry/path-exists/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/pathval/pathval-1.1.1.tgz (renamed from cli/tests/testdata/npm/registry/pathval/pathval-1.1.1.tgz) | bin | 5554 -> 5554 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/pathval/registry.json (renamed from cli/tests/testdata/npm/registry/pathval/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/picocolors/picocolors-1.0.0.tgz (renamed from cli/tests/testdata/npm/registry/picocolors/picocolors-1.0.0.tgz) | bin | 2411 -> 2411 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/picocolors/registry.json (renamed from cli/tests/testdata/npm/registry/picocolors/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/postcss-value-parser/postcss-value-parser-4.2.0.tgz (renamed from cli/tests/testdata/npm/registry/postcss-value-parser/postcss-value-parser-4.2.0.tgz) | bin | 7997 -> 7997 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/postcss-value-parser/registry.json (renamed from cli/tests/testdata/npm/registry/postcss-value-parser/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/postcss/postcss-8.4.16.tgz (renamed from cli/tests/testdata/npm/registry/postcss/postcss-8.4.16.tgz) | bin | 44045 -> 44045 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/postcss/registry.json (renamed from cli/tests/testdata/npm/registry/postcss/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/punycode/punycode-2.1.1.tgz (renamed from cli/tests/testdata/npm/registry/punycode/punycode-2.1.1.tgz) | bin | 7270 -> 7270 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/punycode/registry.json (renamed from cli/tests/testdata/npm/registry/punycode/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/react-dom/react-dom-18.2.0.tgz (renamed from cli/tests/testdata/npm/registry/react-dom/react-dom-18.2.0.tgz) | bin | 1087708 -> 1087708 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/react-dom/registry.json (renamed from cli/tests/testdata/npm/registry/react-dom/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/react/react-18.2.0.tgz (renamed from cli/tests/testdata/npm/registry/react/react-18.2.0.tgz) | bin | 81152 -> 81152 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/react/registry.json (renamed from cli/tests/testdata/npm/registry/react/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/require-directory/registry.json (renamed from cli/tests/testdata/npm/registry/require-directory/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/require-directory/require-directory-2.1.1.tgz (renamed from cli/tests/testdata/npm/registry/require-directory/require-directory-2.1.1.tgz) | bin | 4372 -> 4372 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/require-from-string/registry.json (renamed from cli/tests/testdata/npm/registry/require-from-string/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/require-from-string/require-from-string-2.0.2.tgz (renamed from cli/tests/testdata/npm/registry/require-from-string/require-from-string-2.0.2.tgz) | bin | 1816 -> 1816 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/require-main-filename/registry.json (renamed from cli/tests/testdata/npm/registry/require-main-filename/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/require-main-filename/require-main-filename-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/require-main-filename/require-main-filename-2.0.0.tgz) | bin | 1965 -> 1965 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/safer-buffer/registry.json (renamed from cli/tests/testdata/npm/registry/safer-buffer/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/safer-buffer/safer-buffer-2.1.2.tgz (renamed from cli/tests/testdata/npm/registry/safer-buffer/safer-buffer-2.1.2.tgz) | bin | 12035 -> 12035 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/scheduler/registry.json (renamed from cli/tests/testdata/npm/registry/scheduler/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/scheduler/scheduler-0.23.0.tgz (renamed from cli/tests/testdata/npm/registry/scheduler/scheduler-0.23.0.tgz) | bin | 17697 -> 17697 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/set-blocking/registry.json (renamed from cli/tests/testdata/npm/registry/set-blocking/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/set-blocking/set-blocking-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/set-blocking/set-blocking-2.0.0.tgz) | bin | 2212 -> 2212 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/source-map-js/registry.json (renamed from cli/tests/testdata/npm/registry/source-map-js/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/source-map-js/source-map-js-1.0.2.tgz (renamed from cli/tests/testdata/npm/registry/source-map-js/source-map-js-1.0.2.tgz) | bin | 38056 -> 38056 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/source-map/registry.json (renamed from cli/tests/testdata/npm/registry/source-map/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/source-map/source-map-0.6.1.tgz (renamed from cli/tests/testdata/npm/registry/source-map/source-map-0.6.1.tgz) | bin | 199644 -> 199644 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/sourcemap-codec/registry.json (renamed from cli/tests/testdata/npm/registry/sourcemap-codec/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/sourcemap-codec/sourcemap-codec-1.4.8.tgz (renamed from cli/tests/testdata/npm/registry/sourcemap-codec/sourcemap-codec-1.4.8.tgz) | bin | 7135 -> 7135 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/ssh2/registry.json (renamed from cli/tests/testdata/npm/registry/ssh2/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/ssh2/ssh2-1.11.0.tgz (renamed from cli/tests/testdata/npm/registry/ssh2/ssh2-1.11.0.tgz) | bin | 247466 -> 247466 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/string-width/registry.json (renamed from cli/tests/testdata/npm/registry/string-width/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/string-width/string-width-2.1.1.tgz (renamed from cli/tests/testdata/npm/registry/string-width/string-width-2.1.1.tgz) | bin | 1972 -> 1972 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/string-width/string-width-4.2.3.tgz (renamed from cli/tests/testdata/npm/registry/string-width/string-width-4.2.3.tgz) | bin | 2383 -> 2383 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/strip-ansi/registry.json (renamed from cli/tests/testdata/npm/registry/strip-ansi/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/strip-ansi/strip-ansi-4.0.0.tgz (renamed from cli/tests/testdata/npm/registry/strip-ansi/strip-ansi-4.0.0.tgz) | bin | 1644 -> 1644 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/strip-ansi/strip-ansi-6.0.1.tgz (renamed from cli/tests/testdata/npm/registry/strip-ansi/strip-ansi-6.0.1.tgz) | bin | 2041 -> 2041 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/strip-final-newline/registry.json (renamed from cli/tests/testdata/npm/registry/strip-final-newline/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/strip-final-newline/strip-final-newline-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/strip-final-newline/strip-final-newline-2.0.0.tgz) | bin | 1704 -> 1704 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/supports-color/registry.json (renamed from cli/tests/testdata/npm/registry/supports-color/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/supports-color/supports-color-7.2.0.tgz (renamed from cli/tests/testdata/npm/registry/supports-color/supports-color-7.2.0.tgz) | bin | 3210 -> 3210 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/supports-esm/registry.json (renamed from cli/tests/testdata/npm/registry/supports-esm/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/supports-esm/supports-esm-1.0.0.tgz (renamed from cli/tests/testdata/npm/registry/supports-esm/supports-esm-1.0.0.tgz) | bin | 1879 -> 1879 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/tweetnacl/registry.json (renamed from cli/tests/testdata/npm/registry/tweetnacl/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/tweetnacl/tweetnacl-0.14.5.tgz (renamed from cli/tests/testdata/npm/registry/tweetnacl/tweetnacl-0.14.5.tgz) | bin | 49663 -> 49663 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/type-detect/registry.json (renamed from cli/tests/testdata/npm/registry/type-detect/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/type-detect/type-detect-4.0.8.tgz (renamed from cli/tests/testdata/npm/registry/type-detect/type-detect-4.0.8.tgz) | bin | 8070 -> 8070 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/type-fest/registry.json (renamed from cli/tests/testdata/npm/registry/type-fest/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/type-fest/type-fest-0.20.2.tgz (renamed from cli/tests/testdata/npm/registry/type-fest/type-fest-0.20.2.tgz) | bin | 37225 -> 37225 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/universalify/registry.json (renamed from cli/tests/testdata/npm/registry/universalify/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/universalify/universalify-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/universalify/universalify-2.0.0.tgz) | bin | 2067 -> 2067 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/update-browserslist-db/registry.json (renamed from cli/tests/testdata/npm/registry/update-browserslist-db/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/update-browserslist-db/update-browserslist-db-1.0.10.tgz (renamed from cli/tests/testdata/npm/registry/update-browserslist-db/update-browserslist-db-1.0.10.tgz) | bin | 4797 -> 4797 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/uri-js/registry.json (renamed from cli/tests/testdata/npm/registry/uri-js/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/uri-js/uri-js-4.4.1.tgz (renamed from cli/tests/testdata/npm/registry/uri-js/uri-js-4.4.1.tgz) | bin | 132003 -> 132003 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/vue/registry.json (renamed from cli/tests/testdata/npm/registry/vue/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/vue/vue-3.2.38.tgz (renamed from cli/tests/testdata/npm/registry/vue/vue-3.2.38.tgz) | bin | 651102 -> 651102 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/which-module/registry.json (renamed from cli/tests/testdata/npm/registry/which-module/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/which-module/which-module-2.0.0.tgz (renamed from cli/tests/testdata/npm/registry/which-module/which-module-2.0.0.tgz) | bin | 2232 -> 2232 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/wrap-ansi/registry.json (renamed from cli/tests/testdata/npm/registry/wrap-ansi/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/wrap-ansi/wrap-ansi-6.2.0.tgz (renamed from cli/tests/testdata/npm/registry/wrap-ansi/wrap-ansi-6.2.0.tgz) | bin | 4004 -> 4004 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/y18n/registry.json (renamed from cli/tests/testdata/npm/registry/y18n/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/y18n/y18n-4.0.3.tgz (renamed from cli/tests/testdata/npm/registry/y18n/y18n-4.0.3.tgz) | bin | 4296 -> 4296 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/yargs-parser/registry.json (renamed from cli/tests/testdata/npm/registry/yargs-parser/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/yargs-parser/yargs-parser-18.1.3.tgz (renamed from cli/tests/testdata/npm/registry/yargs-parser/yargs-parser-18.1.3.tgz) | bin | 19027 -> 19027 bytes | |||
-rw-r--r-- | tests/testdata/npm/registry/yargs/registry.json (renamed from cli/tests/testdata/npm/registry/yargs/registry.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/registry/yargs/yargs-15.4.1.tgz (renamed from cli/tests/testdata/npm/registry/yargs/yargs-15.4.1.tgz) | bin | 56286 -> 56286 bytes | |||
-rw-r--r-- | tests/testdata/npm/reload/main.ts (renamed from cli/tests/testdata/npm/reload/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/remote_npm_specifier/main.out (renamed from cli/tests/testdata/npm/remote_npm_specifier/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/remote_npm_specifier/main.ts (renamed from cli/tests/testdata/npm/remote_npm_specifier/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/remote_npm_specifier/remote.ts (renamed from cli/tests/testdata/npm/remote_npm_specifier/remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_added_nm_folder/main.js (renamed from cli/tests/testdata/npm/require_added_nm_folder/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_added_nm_folder/main.out (renamed from cli/tests/testdata/npm/require_added_nm_folder/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_json/main.js (renamed from cli/tests/testdata/npm/require_json/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_json/main.out (renamed from cli/tests/testdata/npm/require_json/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_main/main.js (renamed from cli/tests/testdata/npm/require_main/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_main/main.out (renamed from cli/tests/testdata/npm/require_main/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_resolve_url/package.json (renamed from cli/tests/testdata/npm/require_resolve_url/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_resolve_url/url_paths.out (renamed from cli/tests/testdata/npm/require_resolve_url/url_paths.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/require_resolve_url/url_paths.ts (renamed from cli/tests/testdata/npm/require_resolve_url/url_paths.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/reserved_word_exports/main.out (renamed from cli/tests/testdata/npm/reserved_word_exports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/reserved_word_exports/main.ts (renamed from cli/tests/testdata/npm/reserved_word_exports/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/run_existing_npm_package/main.out (renamed from cli/tests/testdata/npm/run_existing_npm_package/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/run_existing_npm_package/package.json (renamed from cli/tests/testdata/npm/run_existing_npm_package/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/run_existing_npm_package_with_subpath/main.out (renamed from cli/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/run_existing_npm_package_with_subpath/package.json (renamed from cli/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/sub_paths/main.jsx (renamed from cli/tests/testdata/npm/sub_paths/main.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/sub_paths/main.out (renamed from cli/tests/testdata/npm/sub_paths/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/tarball_with_global_header/main.js (renamed from cli/tests/testdata/npm/tarball_with_global_header/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/tarball_with_global_header/main.out (renamed from cli/tests/testdata/npm/tarball_with_global_header/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/translate_cjs_to_esm/main.js (renamed from cli/tests/testdata/npm/translate_cjs_to_esm/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/translate_cjs_to_esm/main.out (renamed from cli/tests/testdata/npm/translate_cjs_to_esm/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types/main.out (renamed from cli/tests/testdata/npm/types/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types/main.ts (renamed from cli/tests/testdata/npm/types/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_ambient_module/import_map.json (renamed from cli/tests/testdata/npm/types_ambient_module/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_ambient_module/main.out (renamed from cli/tests/testdata/npm/types_ambient_module/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_ambient_module/main.ts (renamed from cli/tests/testdata/npm/types_ambient_module/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_ambient_module/main_import_map.out (renamed from cli/tests/testdata/npm/types_ambient_module/main_import_map.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_ambient_module/main_import_map.ts (renamed from cli/tests/testdata/npm/types_ambient_module/main_import_map.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_entry_value_not_exists/main.out (renamed from cli/tests/testdata/npm/types_entry_value_not_exists/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_entry_value_not_exists/main.ts (renamed from cli/tests/testdata/npm/types_entry_value_not_exists/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_exports_import_types/main.out (renamed from cli/tests/testdata/npm/types_exports_import_types/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_exports_import_types/main.ts (renamed from cli/tests/testdata/npm/types_exports_import_types/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_no_types_entry/main.out (renamed from cli/tests/testdata/npm/types_no_types_entry/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/types_no_types_entry/main.ts (renamed from cli/tests/testdata/npm/types_no_types_entry/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/typescript_file_in_package/main.out (renamed from cli/tests/testdata/npm/typescript_file_in_package/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/npm/typescript_file_in_package/main.ts (renamed from cli/tests/testdata/npm/typescript_file_in_package/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/fail_check.check.out (renamed from cli/tests/testdata/package_json/basic/fail_check.check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/fail_check.ts (renamed from cli/tests/testdata/package_json/basic/fail_check.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/lib.bench.out (renamed from cli/tests/testdata/package_json/basic/lib.bench.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/lib.bench.ts (renamed from cli/tests/testdata/package_json/basic/lib.bench.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/lib.test.out (renamed from cli/tests/testdata/package_json/basic/lib.test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/lib.test.ts (renamed from cli/tests/testdata/package_json/basic/lib.test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/lib.ts (renamed from cli/tests/testdata/package_json/basic/lib.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/main.cache.out (renamed from cli/tests/testdata/package_json/basic/main.cache.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/main.check.out (renamed from cli/tests/testdata/package_json/basic/main.check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/main.info.out (renamed from cli/tests/testdata/package_json/basic/main.info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/main.ts (renamed from cli/tests/testdata/package_json/basic/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/basic/package.json (renamed from cli/tests/testdata/package_json/basic/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/deno_json/deno.json (renamed from cli/tests/testdata/package_json/deno_json/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/deno_json/main.check.out (renamed from cli/tests/testdata/package_json/deno_json/main.check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/deno_json/main.out (renamed from cli/tests/testdata/package_json/deno_json/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/deno_json/main.ts (renamed from cli/tests/testdata/package_json/deno_json/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/deno_json/other.ts (renamed from cli/tests/testdata/package_json/deno_json/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/deno_json/package.json (renamed from cli/tests/testdata/package_json/deno_json/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/invalid_value/error.ts (renamed from cli/tests/testdata/package_json/invalid_value/error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/invalid_value/error.ts.out (renamed from cli/tests/testdata/package_json/invalid_value/error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/invalid_value/ok.ts (renamed from cli/tests/testdata/package_json/invalid_value/ok.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/invalid_value/ok.ts.out (renamed from cli/tests/testdata/package_json/invalid_value/ok.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/invalid_value/package.json (renamed from cli/tests/testdata/package_json/invalid_value/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/package_json/invalid_value/task.out (renamed from cli/tests/testdata/package_json/invalid_value/task.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/deno_jsonc.out (renamed from cli/tests/testdata/publish/deno_jsonc.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/deno_jsonc/deno.jsonc (renamed from cli/tests/testdata/publish/deno_jsonc/deno.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/deno_jsonc/mod.ts (renamed from cli/tests/testdata/publish/deno_jsonc/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/deno_jsonc/std_http.ts (renamed from cli/tests/testdata/publish/deno_jsonc/std_http.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/dry_run.out (renamed from cli/tests/testdata/publish/dry_run.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_fast_check.out (renamed from cli/tests/testdata/publish/invalid_fast_check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_fast_check/deno.json (renamed from cli/tests/testdata/publish/invalid_fast_check/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_fast_check/mod.ts (renamed from cli/tests/testdata/publish/invalid_fast_check/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_import.out (renamed from cli/tests/testdata/publish/invalid_import.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_import/deno.json (renamed from cli/tests/testdata/publish/invalid_import/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_import/mod.ts (renamed from cli/tests/testdata/publish/invalid_import/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_path.out (renamed from cli/tests/testdata/publish/invalid_path.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_path/deno.json (renamed from cli/tests/testdata/publish/invalid_path/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_path/mod.ts (renamed from cli/tests/testdata/publish/invalid_path/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/invalid_path/path with spaces.txt (renamed from cli/tests/testdata/publish/invalid_path/path with spaces.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_decl_file.out (renamed from cli/tests/testdata/publish/javascript_decl_file.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_decl_file/deno.json (renamed from cli/tests/testdata/publish/javascript_decl_file/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_decl_file/mod.d.ts (renamed from cli/tests/testdata/publish/javascript_decl_file/mod.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_decl_file/mod.js (renamed from cli/tests/testdata/publish/javascript_decl_file/mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_missing_decl_file.out (renamed from cli/tests/testdata/publish/javascript_missing_decl_file.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_missing_decl_file/deno.json (renamed from cli/tests/testdata/publish/javascript_missing_decl_file/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_missing_decl_file/mod.js (renamed from cli/tests/testdata/publish/javascript_missing_decl_file/mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/javascript_missing_decl_file/other.js (renamed from cli/tests/testdata/publish/javascript_missing_decl_file/other.js) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/missing_deno_json.out (renamed from cli/tests/testdata/publish/missing_deno_json.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/missing_deno_json/main.ts (renamed from cli/tests/testdata/publish/missing_deno_json/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/no_token.out (renamed from cli/tests/testdata/publish/no_token.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/no_zap.out (renamed from cli/tests/testdata/publish/no_zap.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/node_specifier.out (renamed from cli/tests/testdata/publish/node_specifier.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/node_specifier/deno.json (renamed from cli/tests/testdata/publish/node_specifier/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/node_specifier/mod.ts (renamed from cli/tests/testdata/publish/node_specifier/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/successful.out (renamed from cli/tests/testdata/publish/successful.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/successful/deno.json (renamed from cli/tests/testdata/publish/successful/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/successful/mod.ts (renamed from cli/tests/testdata/publish/successful/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/successful/std_http.ts (renamed from cli/tests/testdata/publish/successful/std_http.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/symlink.out (renamed from cli/tests/testdata/publish/symlink.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/symlink/deno.json (renamed from cli/tests/testdata/publish/symlink/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/symlink/mod.ts (renamed from cli/tests/testdata/publish/symlink/mod.ts) | 0 | ||||
l--------- | tests/testdata/publish/symlink/symlink (renamed from cli/tests/testdata/publish/symlink/symlink) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/unanalyzable_dynamic_import.out (renamed from cli/tests/testdata/publish/unanalyzable_dynamic_import.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/unanalyzable_dynamic_import/deno.json (renamed from cli/tests/testdata/publish/unanalyzable_dynamic_import/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/unanalyzable_dynamic_import/mod.ts (renamed from cli/tests/testdata/publish/unanalyzable_dynamic_import/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace.out (renamed from cli/tests/testdata/publish/workspace.out) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace/bar/deno.json (renamed from cli/tests/testdata/publish/workspace/bar/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace/bar/mod.ts (renamed from cli/tests/testdata/publish/workspace/bar/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace/deno.json (renamed from cli/tests/testdata/publish/workspace/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace/foo/deno.json (renamed from cli/tests/testdata/publish/workspace/foo/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace/foo/mod.ts (renamed from cli/tests/testdata/publish/workspace/foo/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/publish/workspace_individual.out (renamed from cli/tests/testdata/publish/workspace_individual.out) | 0 | ||||
-rw-r--r-- | tests/testdata/repl/import_type.ts (renamed from cli/tests/testdata/repl/import_type.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/001_hello.js (renamed from cli/tests/testdata/run/001_hello.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/001_hello.js.out (renamed from cli/tests/testdata/run/001_hello.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/002_hello.ts (renamed from cli/tests/testdata/run/002_hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/002_hello.ts.out (renamed from cli/tests/testdata/run/002_hello.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/003_relative_import.ts (renamed from cli/tests/testdata/run/003_relative_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/003_relative_import.ts.out (renamed from cli/tests/testdata/run/003_relative_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/004_set_timeout.ts (renamed from cli/tests/testdata/run/004_set_timeout.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/004_set_timeout.ts.out (renamed from cli/tests/testdata/run/004_set_timeout.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/005_more_imports.ts (renamed from cli/tests/testdata/run/005_more_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/005_more_imports.ts.out (renamed from cli/tests/testdata/run/005_more_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/006_url_imports.ts (renamed from cli/tests/testdata/run/006_url_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/006_url_imports.ts.out (renamed from cli/tests/testdata/run/006_url_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/012_async.ts (renamed from cli/tests/testdata/run/012_async.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/012_async.ts.out (renamed from cli/tests/testdata/run/012_async.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/013_dynamic_import.ts (renamed from cli/tests/testdata/run/013_dynamic_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/013_dynamic_import.ts.out (renamed from cli/tests/testdata/run/013_dynamic_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/014_duplicate_import.ts (renamed from cli/tests/testdata/run/014_duplicate_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/014_duplicate_import.ts.out (renamed from cli/tests/testdata/run/014_duplicate_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/015_duplicate_parallel_import.js (renamed from cli/tests/testdata/run/015_duplicate_parallel_import.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/015_duplicate_parallel_import.js.out (renamed from cli/tests/testdata/run/015_duplicate_parallel_import.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/016_double_await.ts (renamed from cli/tests/testdata/run/016_double_await.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/016_double_await.ts.out (renamed from cli/tests/testdata/run/016_double_await.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/017_import_redirect.ts (renamed from cli/tests/testdata/run/017_import_redirect.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/017_import_redirect.ts.out (renamed from cli/tests/testdata/run/017_import_redirect.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/017_import_redirect_info.out (renamed from cli/tests/testdata/run/017_import_redirect_info.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/018_async_catch.ts (renamed from cli/tests/testdata/run/018_async_catch.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/018_async_catch.ts.out (renamed from cli/tests/testdata/run/018_async_catch.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/019_media_types.ts (renamed from cli/tests/testdata/run/019_media_types.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/019_media_types.ts.out (renamed from cli/tests/testdata/run/019_media_types.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/020_json_modules.ts (renamed from cli/tests/testdata/run/020_json_modules.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/020_json_modules.ts.out (renamed from cli/tests/testdata/run/020_json_modules.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/021_mjs_modules.ts (renamed from cli/tests/testdata/run/021_mjs_modules.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/021_mjs_modules.ts.out (renamed from cli/tests/testdata/run/021_mjs_modules.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/023_no_ext (renamed from cli/tests/testdata/run/023_no_ext) | 0 | ||||
-rw-r--r-- | tests/testdata/run/023_no_ext.out (renamed from cli/tests/testdata/run/023_no_ext.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/025_hrtime.ts (renamed from cli/tests/testdata/run/025_hrtime.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/025_hrtime.ts.out (renamed from cli/tests/testdata/run/025_hrtime.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/025_reload_js_type_error.js (renamed from cli/tests/testdata/run/025_reload_js_type_error.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/025_reload_js_type_error.js.out (renamed from cli/tests/testdata/run/025_reload_js_type_error.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/026_redirect_javascript.js (renamed from cli/tests/testdata/run/026_redirect_javascript.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/026_redirect_javascript.js.out (renamed from cli/tests/testdata/run/026_redirect_javascript.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/027_redirect_typescript.ts (renamed from cli/tests/testdata/run/027_redirect_typescript.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/027_redirect_typescript.ts.out (renamed from cli/tests/testdata/run/027_redirect_typescript.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/028_args.ts (renamed from cli/tests/testdata/run/028_args.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/028_args.ts.out (renamed from cli/tests/testdata/run/028_args.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/033_import_map.out (renamed from cli/tests/testdata/run/033_import_map.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/033_import_map_in_config_file.out (renamed from cli/tests/testdata/run/033_import_map_in_config_file.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/033_import_map_in_flag_has_precedence.out (renamed from cli/tests/testdata/run/033_import_map_in_flag_has_precedence.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/033_import_map_remote.out (renamed from cli/tests/testdata/run/033_import_map_remote.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/035_cached_only_flag.out (renamed from cli/tests/testdata/run/035_cached_only_flag.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/038_checkjs.js (renamed from cli/tests/testdata/run/038_checkjs.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/038_checkjs.js.out (renamed from cli/tests/testdata/run/038_checkjs.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/042_dyn_import_evalcontext.ts (renamed from cli/tests/testdata/run/042_dyn_import_evalcontext.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/042_dyn_import_evalcontext.ts.out (renamed from cli/tests/testdata/run/042_dyn_import_evalcontext.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/044_bad_resource.ts (renamed from cli/tests/testdata/run/044_bad_resource.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/044_bad_resource.ts.out (renamed from cli/tests/testdata/run/044_bad_resource.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/045_mod.ts (renamed from cli/tests/testdata/run/045_mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/045_output.ts (renamed from cli/tests/testdata/run/045_output.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/045_programmatic_proxy_client.ts (renamed from cli/tests/testdata/run/045_programmatic_proxy_client.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/045_proxy_client.ts (renamed from cli/tests/testdata/run/045_proxy_client.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/045_proxy_test.ts | 121 | ||||
-rw-r--r-- | tests/testdata/run/045_proxy_test.ts.out (renamed from cli/tests/testdata/run/045_proxy_test.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/046_jsx_test.tsx (renamed from cli/tests/testdata/run/046_jsx_test.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/046_jsx_test.tsx.out (renamed from cli/tests/testdata/run/046_jsx_test.tsx.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/047_jsx_test.jsx (renamed from cli/tests/testdata/run/047_jsx_test.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/047_jsx_test.jsx.out (renamed from cli/tests/testdata/run/047_jsx_test.jsx.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/048_media_types_jsx.ts (renamed from cli/tests/testdata/run/048_media_types_jsx.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/048_media_types_jsx.ts.out (renamed from cli/tests/testdata/run/048_media_types_jsx.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/052_no_remote_flag.out (renamed from cli/tests/testdata/run/052_no_remote_flag.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/056_make_temp_file_write_perm.out (renamed from cli/tests/testdata/run/056_make_temp_file_write_perm.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/056_make_temp_file_write_perm.ts (renamed from cli/tests/testdata/run/056_make_temp_file_write_perm.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/058_tasks_microtasks_close.ts (renamed from cli/tests/testdata/run/058_tasks_microtasks_close.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/058_tasks_microtasks_close.ts.out (renamed from cli/tests/testdata/run/058_tasks_microtasks_close.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/059_fs_relative_path_perm.ts (renamed from cli/tests/testdata/run/059_fs_relative_path_perm.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/059_fs_relative_path_perm.ts.out (renamed from cli/tests/testdata/run/059_fs_relative_path_perm.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/061_permissions_request.ts (renamed from cli/tests/testdata/run/061_permissions_request.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/061_permissions_request_sync.ts (renamed from cli/tests/testdata/run/061_permissions_request_sync.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/062_permissions_request_global.ts (renamed from cli/tests/testdata/run/062_permissions_request_global.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/062_permissions_request_global_sync.ts (renamed from cli/tests/testdata/run/062_permissions_request_global_sync.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/063_permissions_revoke.ts (renamed from cli/tests/testdata/run/063_permissions_revoke.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/063_permissions_revoke.ts.out (renamed from cli/tests/testdata/run/063_permissions_revoke.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/063_permissions_revoke_sync.ts (renamed from cli/tests/testdata/run/063_permissions_revoke_sync.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/064_permissions_revoke_global.ts (renamed from cli/tests/testdata/run/064_permissions_revoke_global.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/064_permissions_revoke_global.ts.out (renamed from cli/tests/testdata/run/064_permissions_revoke_global.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/064_permissions_revoke_global_sync.ts (renamed from cli/tests/testdata/run/064_permissions_revoke_global_sync.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/065_permissions_revoke_net.ts (renamed from cli/tests/testdata/run/065_permissions_revoke_net.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/065_permissions_revoke_net.ts.out (renamed from cli/tests/testdata/run/065_permissions_revoke_net.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/066_prompt.ts (renamed from cli/tests/testdata/run/066_prompt.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/070_location.ts (renamed from cli/tests/testdata/run/070_location.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/070_location.ts.out (renamed from cli/tests/testdata/run/070_location.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/071_location_unset.ts (renamed from cli/tests/testdata/run/071_location_unset.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/071_location_unset.ts.out (renamed from cli/tests/testdata/run/071_location_unset.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/072_location_relative_fetch.ts (renamed from cli/tests/testdata/run/072_location_relative_fetch.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/072_location_relative_fetch.ts.out (renamed from cli/tests/testdata/run/072_location_relative_fetch.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/075_import_local_query_hash.ts (renamed from cli/tests/testdata/run/075_import_local_query_hash.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/075_import_local_query_hash.ts.out (renamed from cli/tests/testdata/run/075_import_local_query_hash.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/077_fetch_empty.ts (renamed from cli/tests/testdata/run/077_fetch_empty.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/077_fetch_empty.ts.out (renamed from cli/tests/testdata/run/077_fetch_empty.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/078_unload_on_exit.ts (renamed from cli/tests/testdata/run/078_unload_on_exit.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/078_unload_on_exit.ts.out (renamed from cli/tests/testdata/run/078_unload_on_exit.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/079_location_authentication.ts (renamed from cli/tests/testdata/run/079_location_authentication.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/079_location_authentication.ts.out (renamed from cli/tests/testdata/run/079_location_authentication.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/081_location_relative_fetch_redirect.ts (renamed from cli/tests/testdata/run/081_location_relative_fetch_redirect.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/081_location_relative_fetch_redirect.ts.out (renamed from cli/tests/testdata/run/081_location_relative_fetch_redirect.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/082_prepare_stack_trace_throw.js (renamed from cli/tests/testdata/run/082_prepare_stack_trace_throw.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/082_prepare_stack_trace_throw.js.out (renamed from cli/tests/testdata/run/082_prepare_stack_trace_throw.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/083_legacy_external_source_map.ts (renamed from cli/tests/testdata/run/083_legacy_external_source_map.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/088_dynamic_import_already_evaluating.ts (renamed from cli/tests/testdata/run/088_dynamic_import_already_evaluating.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/088_dynamic_import_already_evaluating.ts.out (renamed from cli/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/088_dynamic_import_target.ts (renamed from cli/tests/testdata/run/088_dynamic_import_target.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/089_run_allow_list.ts (renamed from cli/tests/testdata/run/089_run_allow_list.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/089_run_allow_list.ts.out (renamed from cli/tests/testdata/run/089_run_allow_list.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/090_run_permissions_request.ts (renamed from cli/tests/testdata/run/090_run_permissions_request.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/090_run_permissions_request_sync.ts (renamed from cli/tests/testdata/run/090_run_permissions_request_sync.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/091_use_define_for_class_fields.ts (renamed from cli/tests/testdata/run/091_use_define_for_class_fields.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/091_use_define_for_class_fields.ts.out (renamed from cli/tests/testdata/run/091_use_define_for_class_fields.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/092_import_map_unmapped_bare_specifier.ts (renamed from cli/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/092_import_map_unmapped_bare_specifier.ts.out (renamed from cli/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/aggregate_error.out (renamed from cli/tests/testdata/run/aggregate_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/aggregate_error.ts (renamed from cli/tests/testdata/run/aggregate_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/async_error.ts (renamed from cli/tests/testdata/run/async_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/async_error.ts.out (renamed from cli/tests/testdata/run/async_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/auto_discover_lockfile/deno.json (renamed from cli/tests/testdata/run/auto_discover_lockfile/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/auto_discover_lockfile/deno.lock (renamed from cli/tests/testdata/run/auto_discover_lockfile/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/run/auto_discover_lockfile/main.out (renamed from cli/tests/testdata/run/auto_discover_lockfile/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/auto_discover_lockfile/main.ts (renamed from cli/tests/testdata/run/auto_discover_lockfile/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/before_unload.js (renamed from cli/tests/testdata/run/before_unload.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/before_unload.js.out (renamed from cli/tests/testdata/run/before_unload.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/blob_gc_finalization.js (renamed from cli/tests/testdata/run/blob_gc_finalization.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/blob_gc_finalization.js.out (renamed from cli/tests/testdata/run/blob_gc_finalization.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/byte_order_mark.out (renamed from cli/tests/testdata/run/byte_order_mark.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/byte_order_mark.ts (renamed from cli/tests/testdata/run/byte_order_mark.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/check_js_points_to_ts/bar.ts (renamed from cli/tests/testdata/run/check_js_points_to_ts/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/check_js_points_to_ts/foo.d.ts (renamed from cli/tests/testdata/run/check_js_points_to_ts/foo.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/check_js_points_to_ts/foo.js (renamed from cli/tests/testdata/run/check_js_points_to_ts/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/check_js_points_to_ts/test.js (renamed from cli/tests/testdata/run/check_js_points_to_ts/test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/check_js_points_to_ts/test.js.out (renamed from cli/tests/testdata/run/check_js_points_to_ts/test.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/checkjs.tsconfig.json (renamed from cli/tests/testdata/run/checkjs.tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/cjs_imports/commonjs.cjs (renamed from cli/tests/testdata/run/cjs_imports/commonjs.cjs) | 0 | ||||
-rw-r--r-- | tests/testdata/run/cjs_imports/main.out (renamed from cli/tests/testdata/run/cjs_imports/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/cjs_imports/main.ts (renamed from cli/tests/testdata/run/cjs_imports/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/classic_workers_event_loop.js (renamed from cli/tests/testdata/run/classic_workers_event_loop.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/classic_workers_event_loop.js.out (renamed from cli/tests/testdata/run/classic_workers_event_loop.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/colors_without_globalThis.js (renamed from cli/tests/testdata/run/colors_without_globalThis.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/complex_error.ts (renamed from cli/tests/testdata/run/complex_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/complex_error.ts.out (renamed from cli/tests/testdata/run/complex_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/complex_permissions_test.ts (renamed from cli/tests/testdata/run/complex_permissions_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config/main.out (renamed from cli/tests/testdata/run/config/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config/main.ts (renamed from cli/tests/testdata/run/config/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config/tsconfig.json (renamed from cli/tests/testdata/run/config/tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_boolean/deno.lock (renamed from cli/tests/testdata/run/config_file_lock_boolean/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_boolean/false.json (renamed from cli/tests/testdata/run/config_file_lock_boolean/false.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_boolean/false.main.out (renamed from cli/tests/testdata/run/config_file_lock_boolean/false.main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_boolean/main.ts (renamed from cli/tests/testdata/run/config_file_lock_boolean/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_boolean/true.json (renamed from cli/tests/testdata/run/config_file_lock_boolean/true.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_boolean/true.main.out (renamed from cli/tests/testdata/run/config_file_lock_boolean/true.main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_path.json (renamed from cli/tests/testdata/run/config_file_lock_path.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_file_lock_path.out (renamed from cli/tests/testdata/run/config_file_lock_path.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_json_import.ts (renamed from cli/tests/testdata/run/config_json_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_json_import.ts.out (renamed from cli/tests/testdata/run/config_json_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_types/deno.lock (renamed from cli/tests/testdata/run/config_types/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_types/main.out (renamed from cli/tests/testdata/run/config_types/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_types/main.ts (renamed from cli/tests/testdata/run/config_types/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_types/remote.tsconfig.json (renamed from cli/tests/testdata/run/config_types/remote.tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_types/tsconfig.json (renamed from cli/tests/testdata/run/config_types/tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/config_types/types.d.ts (renamed from cli/tests/testdata/run/config_types/types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/custom_inspect_url.js (renamed from cli/tests/testdata/run/custom_inspect_url.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/custom_inspect_url.js.out (renamed from cli/tests/testdata/run/custom_inspect_url.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/deno.json (renamed from cli/tests/testdata/run/decorators/experimental/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/no_check/main.out (renamed from cli/tests/testdata/run/decorators/experimental/no_check/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/no_check/main.ts (renamed from cli/tests/testdata/run/decorators/experimental/no_check/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/runtime/main.out (renamed from cli/tests/testdata/run/decorators/experimental/runtime/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/runtime/main.ts (renamed from cli/tests/testdata/run/decorators/experimental/runtime/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/ts/main.out (renamed from cli/tests/testdata/run/decorators/experimental/ts/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/experimental/ts/main.ts (renamed from cli/tests/testdata/run/decorators/experimental/ts/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/tc39_proposal/main.out (renamed from cli/tests/testdata/run/decorators/tc39_proposal/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/decorators/tc39_proposal/main.ts (renamed from cli/tests/testdata/run/decorators/tc39_proposal/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/delete_window.js (renamed from cli/tests/testdata/run/delete_window.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/deno_exit_tampering.ts (renamed from cli/tests/testdata/run/deno_exit_tampering.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/deny_all_permission_args.js (renamed from cli/tests/testdata/run/deny_all_permission_args.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/deny_all_permission_args.out (renamed from cli/tests/testdata/run/deny_all_permission_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/deny_some_permission_args.js (renamed from cli/tests/testdata/run/deny_some_permission_args.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/deny_some_permission_args.out (renamed from cli/tests/testdata/run/deny_some_permission_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/disallow_http_from_https.js (renamed from cli/tests/testdata/run/disallow_http_from_https.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/disallow_http_from_https.ts (renamed from cli/tests/testdata/run/disallow_http_from_https.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/disallow_http_from_https_js.out (renamed from cli/tests/testdata/run/disallow_http_from_https_js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/disallow_http_from_https_ts.out (renamed from cli/tests/testdata/run/disallow_http_from_https_ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dom_exception_formatting.ts (renamed from cli/tests/testdata/run/dom_exception_formatting.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dom_exception_formatting.ts.out (renamed from cli/tests/testdata/run/dom_exception_formatting.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_already_rejected/error_001.ts (renamed from cli/tests/testdata/run/dynamic_import_already_rejected/error_001.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_already_rejected/main.out (renamed from cli/tests/testdata/run/dynamic_import_already_rejected/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_already_rejected/main.ts (renamed from cli/tests/testdata/run/dynamic_import_already_rejected/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_async_error/delayed_error.ts (renamed from cli/tests/testdata/run/dynamic_import_async_error/delayed_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_async_error/main.out (renamed from cli/tests/testdata/run/dynamic_import_async_error/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_async_error/main.ts (renamed from cli/tests/testdata/run/dynamic_import_async_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out (renamed from cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts (renamed from cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts (renamed from cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_conditional.js (renamed from cli/tests/testdata/run/dynamic_import_conditional.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_conditional.js.out (renamed from cli/tests/testdata/run/dynamic_import_conditional.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_syntax_error.js (renamed from cli/tests/testdata/run/dynamic_import_syntax_error.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_syntax_error.js.out (renamed from cli/tests/testdata/run/dynamic_import_syntax_error.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/dynamic_import_syntax_error_import.js (renamed from cli/tests/testdata/run/dynamic_import_syntax_error_import.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/empty.ts (renamed from cli/tests/testdata/run/empty.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/env_file.out (renamed from cli/tests/testdata/run/env_file.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/env_file.ts (renamed from cli/tests/testdata/run/env_file.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/env_file_missing.out (renamed from cli/tests/testdata/run/env_file_missing.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_001.ts (renamed from cli/tests/testdata/run/error_001.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_001.ts.out (renamed from cli/tests/testdata/run/error_001.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_002.ts (renamed from cli/tests/testdata/run/error_002.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_002.ts.out (renamed from cli/tests/testdata/run/error_002.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_003_typescript.ts (renamed from cli/tests/testdata/run/error_003_typescript.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_003_typescript.ts.out (renamed from cli/tests/testdata/run/error_003_typescript.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_004_missing_module.ts (renamed from cli/tests/testdata/run/error_004_missing_module.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_004_missing_module.ts.out (renamed from cli/tests/testdata/run/error_004_missing_module.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_005_missing_dynamic_import.ts (renamed from cli/tests/testdata/run/error_005_missing_dynamic_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_005_missing_dynamic_import.ts.out (renamed from cli/tests/testdata/run/error_005_missing_dynamic_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_006_import_ext_failure.ts (renamed from cli/tests/testdata/run/error_006_import_ext_failure.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_006_import_ext_failure.ts.out (renamed from cli/tests/testdata/run/error_006_import_ext_failure.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_007_any.ts (renamed from cli/tests/testdata/run/error_007_any.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_007_any.ts.out (renamed from cli/tests/testdata/run/error_007_any.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_008_checkjs.js (renamed from cli/tests/testdata/run/error_008_checkjs.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_008_checkjs.js.out (renamed from cli/tests/testdata/run/error_008_checkjs.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_009_extensions_error.js (renamed from cli/tests/testdata/run/error_009_extensions_error.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_009_extensions_error.js.out (renamed from cli/tests/testdata/run/error_009_extensions_error.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_009_missing_js_module.disabled (renamed from cli/tests/testdata/run/error_009_missing_js_module.disabled) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_011_bad_module_specifier.ts (renamed from cli/tests/testdata/run/error_011_bad_module_specifier.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_011_bad_module_specifier.ts.out (renamed from cli/tests/testdata/run/error_011_bad_module_specifier.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_012_bad_dynamic_import_specifier.ts (renamed from cli/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out (renamed from cli/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_013_missing_script.out (renamed from cli/tests/testdata/run/error_013_missing_script.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_014_catch_dynamic_import_error.js (renamed from cli/tests/testdata/run/error_014_catch_dynamic_import_error.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_014_catch_dynamic_import_error.js.out (renamed from cli/tests/testdata/run/error_014_catch_dynamic_import_error.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_015_dynamic_import_permissions.js (renamed from cli/tests/testdata/run/error_015_dynamic_import_permissions.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_015_dynamic_import_permissions.out (renamed from cli/tests/testdata/run/error_015_dynamic_import_permissions.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_016_dynamic_import_permissions2.js (renamed from cli/tests/testdata/run/error_016_dynamic_import_permissions2.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_016_dynamic_import_permissions2.out (renamed from cli/tests/testdata/run/error_016_dynamic_import_permissions2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_017_hide_long_source_ts.ts (renamed from cli/tests/testdata/run/error_017_hide_long_source_ts.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_017_hide_long_source_ts.ts.out (renamed from cli/tests/testdata/run/error_017_hide_long_source_ts.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_018_hide_long_source_js.js (renamed from cli/tests/testdata/run/error_018_hide_long_source_js.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_018_hide_long_source_js.js.out (renamed from cli/tests/testdata/run/error_018_hide_long_source_js.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_019_stack_function.ts (renamed from cli/tests/testdata/run/error_019_stack_function.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_019_stack_function.ts.out (renamed from cli/tests/testdata/run/error_019_stack_function.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_020_stack_constructor.ts (renamed from cli/tests/testdata/run/error_020_stack_constructor.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_020_stack_constructor.ts.out (renamed from cli/tests/testdata/run/error_020_stack_constructor.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_021_stack_method.ts (renamed from cli/tests/testdata/run/error_021_stack_method.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_021_stack_method.ts.out (renamed from cli/tests/testdata/run/error_021_stack_method.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_022_stack_custom_error.ts (renamed from cli/tests/testdata/run/error_022_stack_custom_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_022_stack_custom_error.ts.out (renamed from cli/tests/testdata/run/error_022_stack_custom_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_023_stack_async.ts (renamed from cli/tests/testdata/run/error_023_stack_async.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_023_stack_async.ts.out (renamed from cli/tests/testdata/run/error_023_stack_async.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_024_stack_promise_all.ts (renamed from cli/tests/testdata/run/error_024_stack_promise_all.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_024_stack_promise_all.ts.out (renamed from cli/tests/testdata/run/error_024_stack_promise_all.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_025_tab_indent (renamed from cli/tests/testdata/run/error_025_tab_indent) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_025_tab_indent.out (renamed from cli/tests/testdata/run/error_025_tab_indent.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_026_remote_import_error.ts (renamed from cli/tests/testdata/run/error_026_remote_import_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_026_remote_import_error.ts.out (renamed from cli/tests/testdata/run/error_026_remote_import_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_cause.ts (renamed from cli/tests/testdata/run/error_cause.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_cause.ts.out (renamed from cli/tests/testdata/run/error_cause.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_cause_recursive.ts (renamed from cli/tests/testdata/run/error_cause_recursive.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_cause_recursive.ts.out (renamed from cli/tests/testdata/run/error_cause_recursive.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_for_await.ts (renamed from cli/tests/testdata/run/error_for_await.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_for_await.ts.out (renamed from cli/tests/testdata/run/error_for_await.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_import_map_unable_to_load.out (renamed from cli/tests/testdata/run/error_import_map_unable_to_load.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_local_static_import_from_remote.js (renamed from cli/tests/testdata/run/error_local_static_import_from_remote.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_local_static_import_from_remote.js.out (renamed from cli/tests/testdata/run/error_local_static_import_from_remote.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_local_static_import_from_remote.ts (renamed from cli/tests/testdata/run/error_local_static_import_from_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_local_static_import_from_remote.ts.out (renamed from cli/tests/testdata/run/error_local_static_import_from_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_missing_module_named_import.ts (renamed from cli/tests/testdata/run/error_missing_module_named_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_missing_module_named_import.ts.out (renamed from cli/tests/testdata/run/error_missing_module_named_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_name_non_string.js (renamed from cli/tests/testdata/run/error_name_non_string.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_name_non_string.js.out (renamed from cli/tests/testdata/run/error_name_non_string.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_no_check.ts (renamed from cli/tests/testdata/run/error_no_check.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_no_check.ts.out (renamed from cli/tests/testdata/run/error_no_check.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_syntax.js (renamed from cli/tests/testdata/run/error_syntax.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_syntax.js.out (renamed from cli/tests/testdata/run/error_syntax.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_syntax_empty_trailing_line.mjs (renamed from cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_syntax_empty_trailing_line.mjs.out (renamed from cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_type_definitions.ts (renamed from cli/tests/testdata/run/error_type_definitions.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_type_definitions.ts.out (renamed from cli/tests/testdata/run/error_type_definitions.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_with_errors_prop.js (renamed from cli/tests/testdata/run/error_with_errors_prop.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/error_with_errors_prop.js.out (renamed from cli/tests/testdata/run/error_with_errors_prop.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/es_private_fields.js (renamed from cli/tests/testdata/run/es_private_fields.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/es_private_fields.js.out (renamed from cli/tests/testdata/run/es_private_fields.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/eval_context_throw_dom_exception.js (renamed from cli/tests/testdata/run/eval_context_throw_dom_exception.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/eval_context_throw_dom_exception.js.out (renamed from cli/tests/testdata/run/eval_context_throw_dom_exception.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error.ts (renamed from cli/tests/testdata/run/event_listener_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error.ts.out (renamed from cli/tests/testdata/run/event_listener_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error_handled.ts (renamed from cli/tests/testdata/run/event_listener_error_handled.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error_handled.ts.out (renamed from cli/tests/testdata/run/event_listener_error_handled.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error_immediate_exit.ts (renamed from cli/tests/testdata/run/event_listener_error_immediate_exit.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error_immediate_exit.ts.out (renamed from cli/tests/testdata/run/event_listener_error_immediate_exit.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error_immediate_exit_worker.ts (renamed from cli/tests/testdata/run/event_listener_error_immediate_exit_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out (renamed from cli/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/exec_path.ts (renamed from cli/tests/testdata/run/exec_path.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/exit_error42.ts (renamed from cli/tests/testdata/run/exit_error42.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/exit_error42.ts.out (renamed from cli/tests/testdata/run/exit_error42.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/explicit_resource_management/main.out (renamed from cli/tests/testdata/run/explicit_resource_management/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/explicit_resource_management/main.ts (renamed from cli/tests/testdata/run/explicit_resource_management/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/export_type_def.ts (renamed from cli/tests/testdata/run/export_type_def.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/extension_dynamic_import.ts (renamed from cli/tests/testdata/run/extension_dynamic_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/extension_dynamic_import.ts.out (renamed from cli/tests/testdata/run/extension_dynamic_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/extension_import.ts (renamed from cli/tests/testdata/run/extension_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/extension_import.ts.out (renamed from cli/tests/testdata/run/extension_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch/hello.txt (renamed from cli/tests/testdata/run/fetch/hello.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch/other.ts (renamed from cli/tests/testdata/run/fetch/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch/test.ts (renamed from cli/tests/testdata/run/fetch/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch_async_error_stack.ts (renamed from cli/tests/testdata/run/fetch_async_error_stack.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch_async_error_stack.ts.out (renamed from cli/tests/testdata/run/fetch_async_error_stack.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch_response_finalization.js (renamed from cli/tests/testdata/run/fetch_response_finalization.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fetch_response_finalization.js.out (renamed from cli/tests/testdata/run/fetch_response_finalization.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/finalization_registry.js (renamed from cli/tests/testdata/run/finalization_registry.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/finalization_registry.js.out (renamed from cli/tests/testdata/run/finalization_registry.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_dynamic_import_errors.js (renamed from cli/tests/testdata/run/fix_dynamic_import_errors.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_dynamic_import_errors.js.out (renamed from cli/tests/testdata/run/fix_dynamic_import_errors.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_emittable_skipped.js (renamed from cli/tests/testdata/run/fix_emittable_skipped.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_emittable_skipped.ts.out (renamed from cli/tests/testdata/run/fix_emittable_skipped.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_js_import_js.ts (renamed from cli/tests/testdata/run/fix_js_import_js.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_js_import_js.ts.out (renamed from cli/tests/testdata/run/fix_js_import_js.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_js_imports.ts (renamed from cli/tests/testdata/run/fix_js_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_js_imports.ts.out (renamed from cli/tests/testdata/run/fix_js_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_tsc_file_exists.out (renamed from cli/tests/testdata/run/fix_tsc_file_exists.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_worker_dispatchevent.ts (renamed from cli/tests/testdata/run/fix_worker_dispatchevent.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/fix_worker_dispatchevent.ts.out (renamed from cli/tests/testdata/run/fix_worker_dispatchevent.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/followup_dyn_import_resolves/main.ts (renamed from cli/tests/testdata/run/followup_dyn_import_resolves/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/followup_dyn_import_resolves/main.ts.out (renamed from cli/tests/testdata/run/followup_dyn_import_resolves/main.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/followup_dyn_import_resolves/sub1.ts (renamed from cli/tests/testdata/run/followup_dyn_import_resolves/sub1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/followup_dyn_import_resolves/sub2.ts (renamed from cli/tests/testdata/run/followup_dyn_import_resolves/sub2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/heapstats.js (renamed from cli/tests/testdata/run/heapstats.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/heapstats.js.out (renamed from cli/tests/testdata/run/heapstats.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/http2_request_url.ts (renamed from cli/tests/testdata/run/http2_request_url.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/https_import.ts (renamed from cli/tests/testdata/run/https_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/https_import.ts.out (renamed from cli/tests/testdata/run/https_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/if_main.ts (renamed from cli/tests/testdata/run/if_main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/if_main.ts.out (renamed from cli/tests/testdata/run/if_main.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url.ts (renamed from cli/tests/testdata/run/import_blob_url.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url.ts.out (renamed from cli/tests/testdata/run/import_blob_url.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_error_stack.ts (renamed from cli/tests/testdata/run/import_blob_url_error_stack.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_error_stack.ts.out (renamed from cli/tests/testdata/run/import_blob_url_error_stack.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_import_relative.ts (renamed from cli/tests/testdata/run/import_blob_url_import_relative.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_import_relative.ts.out (renamed from cli/tests/testdata/run/import_blob_url_import_relative.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_imports.ts (renamed from cli/tests/testdata/run/import_blob_url_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_imports.ts.out (renamed from cli/tests/testdata/run/import_blob_url_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_jsx.ts (renamed from cli/tests/testdata/run/import_blob_url_jsx.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_blob_url_jsx.ts.out (renamed from cli/tests/testdata/run/import_blob_url_jsx.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_compression/brotli (renamed from cli/tests/testdata/run/import_compression/brotli) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_compression/gziped (renamed from cli/tests/testdata/run/import_compression/gziped) | bin | 39 -> 39 bytes | |||
-rw-r--r-- | tests/testdata/run/import_compression/main.out (renamed from cli/tests/testdata/run/import_compression/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_compression/main.ts (renamed from cli/tests/testdata/run/import_compression/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url.ts (renamed from cli/tests/testdata/run/import_data_url.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url.ts.out (renamed from cli/tests/testdata/run/import_data_url.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_error_stack.ts (renamed from cli/tests/testdata/run/import_data_url_error_stack.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_error_stack.ts.out (renamed from cli/tests/testdata/run/import_data_url_error_stack.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_import_relative.ts (renamed from cli/tests/testdata/run/import_data_url_import_relative.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_import_relative.ts.out (renamed from cli/tests/testdata/run/import_data_url_import_relative.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_imports.ts (renamed from cli/tests/testdata/run/import_data_url_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_imports.ts.out (renamed from cli/tests/testdata/run/import_data_url_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_jsx.ts (renamed from cli/tests/testdata/run/import_data_url_jsx.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_data_url_jsx.ts.out (renamed from cli/tests/testdata/run/import_data_url_jsx.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_dynamic_data_url.ts (renamed from cli/tests/testdata/run/import_dynamic_data_url.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_dynamic_data_url.ts.out (renamed from cli/tests/testdata/run/import_dynamic_data_url.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_extensionless.ts (renamed from cli/tests/testdata/run/import_extensionless.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_extensionless.ts.out (renamed from cli/tests/testdata/run/import_extensionless.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_file_with_colon.ts (renamed from cli/tests/testdata/run/import_file_with_colon.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_file_with_colon.ts.out (renamed from cli/tests/testdata/run/import_file_with_colon.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_maps/test_data.ts (renamed from cli/tests/testdata/run/import_maps/test_data.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_maps/test_data.ts.out (renamed from cli/tests/testdata/run/import_maps/test_data.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_meta/importmap.json (renamed from cli/tests/testdata/run/import_meta/importmap.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_meta/main.out (renamed from cli/tests/testdata/run/import_meta/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_meta/main.ts | 52 | ||||
-rw-r--r-- | tests/testdata/run/import_meta/other.ts (renamed from cli/tests/testdata/run/import_meta/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_type.ts (renamed from cli/tests/testdata/run/import_type.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/import_type.ts.out (renamed from cli/tests/testdata/run/import_type.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map.ts (renamed from cli/tests/testdata/run/inline_js_source_map.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_2.js (renamed from cli/tests/testdata/run/inline_js_source_map_2.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_2.js.out (renamed from cli/tests/testdata/run/inline_js_source_map_2.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_2.ts (renamed from cli/tests/testdata/run/inline_js_source_map_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_2_with_inline_contents.js (renamed from cli/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out (renamed from cli/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_with_contents_from_graph.js (renamed from cli/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out (renamed from cli/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/issue13562.ts (renamed from cli/tests/testdata/run/issue13562.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/issue13562.ts.out (renamed from cli/tests/testdata/run/issue13562.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/issue9750.js (renamed from cli/tests/testdata/run/issue9750.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/js_import_detect.ts (renamed from cli/tests/testdata/run/js_import_detect.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/js_import_detect.ts.out (renamed from cli/tests/testdata/run/js_import_detect.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/js_root_with_ts_check.js (renamed from cli/tests/testdata/run/js_root_with_ts_check.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/js_root_with_ts_check.js.out (renamed from cli/tests/testdata/run/js_root_with_ts_check.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_from_ts.App.jsx (renamed from cli/tests/testdata/run/jsx_import_from_ts.App.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_from_ts.ts (renamed from cli/tests/testdata/run/jsx_import_from_ts.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_from_ts.ts.out (renamed from cli/tests/testdata/run/jsx_import_from_ts.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source.out (renamed from cli/tests/testdata/run/jsx_import_source.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_dev.out (renamed from cli/tests/testdata/run/jsx_import_source_dev.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_error.out (renamed from cli/tests/testdata/run/jsx_import_source_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_import_map.out (renamed from cli/tests/testdata/run/jsx_import_source_import_map.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_import_map_dev.out (renamed from cli/tests/testdata/run/jsx_import_source_import_map_dev.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_no_pragma.tsx (renamed from cli/tests/testdata/run/jsx_import_source_no_pragma.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_pragma.tsx (renamed from cli/tests/testdata/run/jsx_import_source_pragma.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_import_source_pragma_import_map.tsx (renamed from cli/tests/testdata/run/jsx_import_source_pragma_import_map.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_precompile/no_pragma.out (renamed from cli/tests/testdata/run/jsx_precompile/no_pragma.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/jsx_precompile/no_pragma.tsx (renamed from cli/tests/testdata/run/jsx_precompile/no_pragma.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_check_err.json (renamed from cli/tests/testdata/run/lock_check_err.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_check_err.out (renamed from cli/tests/testdata/run/lock_check_err.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_check_err2.json (renamed from cli/tests/testdata/run/lock_check_err2.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_check_err2.out (renamed from cli/tests/testdata/run/lock_check_err2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_check_ok.json (renamed from cli/tests/testdata/run/lock_check_ok.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_check_ok2.json (renamed from cli/tests/testdata/run/lock_check_ok2.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_dynamic_imports.json (renamed from cli/tests/testdata/run/lock_dynamic_imports.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_dynamic_imports.out (renamed from cli/tests/testdata/run/lock_dynamic_imports.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_only_http_and_https/b.ts (renamed from cli/tests/testdata/run/lock_only_http_and_https/b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_only_http_and_https/deno.lock (renamed from cli/tests/testdata/run/lock_only_http_and_https/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_only_http_and_https/main.out (renamed from cli/tests/testdata/run/lock_only_http_and_https/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_only_http_and_https/main.ts (renamed from cli/tests/testdata/run/lock_only_http_and_https/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_check_err.json (renamed from cli/tests/testdata/run/lock_v2_check_err.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_check_err.out (renamed from cli/tests/testdata/run/lock_v2_check_err.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_check_err2.json (renamed from cli/tests/testdata/run/lock_v2_check_err2.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_check_err2.out (renamed from cli/tests/testdata/run/lock_v2_check_err2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_check_ok.json (renamed from cli/tests/testdata/run/lock_v2_check_ok.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_check_ok2.json (renamed from cli/tests/testdata/run/lock_v2_check_ok2.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_dynamic_imports.json (renamed from cli/tests/testdata/run/lock_v2_dynamic_imports.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_v2_dynamic_imports.out (renamed from cli/tests/testdata/run/lock_v2_dynamic_imports.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_write_fetch/file_exists.ts (renamed from cli/tests/testdata/run/lock_write_fetch/file_exists.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_write_fetch/main.out (renamed from cli/tests/testdata/run/lock_write_fetch/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/lock_write_fetch/main.ts (renamed from cli/tests/testdata/run/lock_write_fetch/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/long_data_url_formatting.ts (renamed from cli/tests/testdata/run/long_data_url_formatting.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/long_data_url_formatting.ts.out (renamed from cli/tests/testdata/run/long_data_url_formatting.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/main_module/main.out (renamed from cli/tests/testdata/run/main_module/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/main_module/main.ts (renamed from cli/tests/testdata/run/main_module/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/main_module/other.ts (renamed from cli/tests/testdata/run/main_module/other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/mts_dmts_mjs.out (renamed from cli/tests/testdata/run/mts_dmts_mjs.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/nested_error/main.ts (renamed from cli/tests/testdata/run/nested_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/nested_error/main.ts.out (renamed from cli/tests/testdata/run/nested_error/main.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_imports_not_used_as_values/hello.ts (renamed from cli/tests/testdata/run/no_check_imports_not_used_as_values/hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_imports_not_used_as_values/main.out (renamed from cli/tests/testdata/run/no_check_imports_not_used_as_values/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_imports_not_used_as_values/main.ts (renamed from cli/tests/testdata/run/no_check_imports_not_used_as_values/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_imports_not_used_as_values/preserve_imports.tsconfig.json (renamed from cli/tests/testdata/run/no_check_imports_not_used_as_values/preserve_imports.tsconfig.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_remote.ts (renamed from cli/tests/testdata/run/no_check_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_remote.ts.disabled.out (renamed from cli/tests/testdata/run/no_check_remote.ts.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_check_remote.ts.enabled.out (renamed from cli/tests/testdata/run/no_check_remote.ts.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_lock_flag/deno.json (renamed from cli/tests/testdata/run/no_lock_flag/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_lock_flag/deno.lock (renamed from cli/tests/testdata/run/no_lock_flag/deno.lock) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_lock_flag/main.out (renamed from cli/tests/testdata/run/no_lock_flag/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_lock_flag/main.ts (renamed from cli/tests/testdata/run/no_lock_flag/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_mem_cache.js (renamed from cli/tests/testdata/run/no_mem_cache.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_mem_cache.js.out (renamed from cli/tests/testdata/run/no_mem_cache.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_prompt.ts (renamed from cli/tests/testdata/run/no_prompt.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/no_validate_asm.js (renamed from cli/tests/testdata/run/no_validate_asm.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_builtin_modules/mod.js (renamed from cli/tests/testdata/run/node_builtin_modules/mod.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_builtin_modules/mod.js.out (renamed from cli/tests/testdata/run/node_builtin_modules/mod.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_builtin_modules/mod.ts (renamed from cli/tests/testdata/run/node_builtin_modules/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_builtin_modules/mod.ts.out (renamed from cli/tests/testdata/run/node_builtin_modules/mod.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_env_var_allowlist.ts (renamed from cli/tests/testdata/run/node_env_var_allowlist.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_env_var_allowlist.ts.out (renamed from cli/tests/testdata/run/node_env_var_allowlist.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_prefix_missing/config.json (renamed from cli/tests/testdata/run/node_prefix_missing/config.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_prefix_missing/import_map.json (renamed from cli/tests/testdata/run/node_prefix_missing/import_map.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_prefix_missing/main.ts (renamed from cli/tests/testdata/run/node_prefix_missing/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_prefix_missing/main.ts.out (renamed from cli/tests/testdata/run/node_prefix_missing/main.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled | 2 | ||||
-rw-r--r-- | tests/testdata/run/onload/imported.ts | 13 | ||||
-rw-r--r-- | tests/testdata/run/onload/main.out (renamed from cli/tests/testdata/run/onload/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/onload/main.ts | 34 | ||||
-rw-r--r-- | tests/testdata/run/onload/nest_imported.ts | 12 | ||||
-rw-r--r-- | tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts (renamed from cli/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/op_exit_op_set_exit_code_worker.js (renamed from cli/tests/testdata/run/op_exit_op_set_exit_code_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/permission_args.out (renamed from cli/tests/testdata/run/permission_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/permission_request_long.ts (renamed from cli/tests/testdata/run/permission_request_long.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/permission_test.ts (renamed from cli/tests/testdata/run/permission_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/permissions_cache.ts (renamed from cli/tests/testdata/run/permissions_cache.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/permissions_prompt_allow_all.ts (renamed from cli/tests/testdata/run/permissions_prompt_allow_all.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/permissions_prompt_allow_all_2.ts (renamed from cli/tests/testdata/run/permissions_prompt_allow_all_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/private_field_presence.ts (renamed from cli/tests/testdata/run/private_field_presence.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/private_field_presence.ts.out (renamed from cli/tests/testdata/run/private_field_presence.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/proto_exploit.js (renamed from cli/tests/testdata/run/proto_exploit.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/proto_exploit.js.out (renamed from cli/tests/testdata/run/proto_exploit.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/queue_microtask_error.ts (renamed from cli/tests/testdata/run/queue_microtask_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/queue_microtask_error.ts.out (renamed from cli/tests/testdata/run/queue_microtask_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/queue_microtask_error_handled.ts (renamed from cli/tests/testdata/run/queue_microtask_error_handled.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/queue_microtask_error_handled.ts.out (renamed from cli/tests/testdata/run/queue_microtask_error_handled.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/reference_types.ts (renamed from cli/tests/testdata/run/reference_types.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/reference_types.ts.out (renamed from cli/tests/testdata/run/reference_types.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/reference_types_error.js (renamed from cli/tests/testdata/run/reference_types_error.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/reference_types_error.js.out (renamed from cli/tests/testdata/run/reference_types_error.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/reference_types_remote.ts (renamed from cli/tests/testdata/run/reference_types_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/reference_types_remote.ts.out (renamed from cli/tests/testdata/run/reference_types_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/rejection_handled.out (renamed from cli/tests/testdata/run/rejection_handled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/rejection_handled.ts (renamed from cli/tests/testdata/run/rejection_handled.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/remote_type_error/main.ts (renamed from cli/tests/testdata/run/remote_type_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/remote_type_error/remote.ts (renamed from cli/tests/testdata/run/remote_type_error/remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/replace_self.js (renamed from cli/tests/testdata/run/replace_self.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/replace_self.js.out (renamed from cli/tests/testdata/run/replace_self.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/report_error.ts (renamed from cli/tests/testdata/run/report_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/report_error.ts.out (renamed from cli/tests/testdata/run/report_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/report_error_end_of_program.ts (renamed from cli/tests/testdata/run/report_error_end_of_program.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/report_error_end_of_program.ts.out (renamed from cli/tests/testdata/run/report_error_end_of_program.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/report_error_handled.ts (renamed from cli/tests/testdata/run/report_error_handled.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/report_error_handled.ts.out (renamed from cli/tests/testdata/run/report_error_handled.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/resolve_dns.ts (renamed from cli/tests/testdata/run/resolve_dns.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/resolve_dns.ts.out (renamed from cli/tests/testdata/run/resolve_dns.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/resolve_dns.zone.in (renamed from cli/tests/testdata/run/resolve_dns.zone.in) | 0 | ||||
-rw-r--r-- | tests/testdata/run/runtime_decorators.ts (renamed from cli/tests/testdata/run/runtime_decorators.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/runtime_decorators.ts.out (renamed from cli/tests/testdata/run/runtime_decorators.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/seed_random.js (renamed from cli/tests/testdata/run/seed_random.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/seed_random.js.out (renamed from cli/tests/testdata/run/seed_random.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_exit_code_0.ts (renamed from cli/tests/testdata/run/set_exit_code_0.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_exit_code_1.ts (renamed from cli/tests/testdata/run/set_exit_code_1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_exit_code_2.ts (renamed from cli/tests/testdata/run/set_exit_code_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_timeout_error.ts (renamed from cli/tests/testdata/run/set_timeout_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_timeout_error.ts.out (renamed from cli/tests/testdata/run/set_timeout_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_timeout_error_handled.ts (renamed from cli/tests/testdata/run/set_timeout_error_handled.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/set_timeout_error_handled.ts.out (renamed from cli/tests/testdata/run/set_timeout_error_handled.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/shebang.ts (renamed from cli/tests/testdata/run/shebang.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/shebang.ts.out (renamed from cli/tests/testdata/run/shebang.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/shebang2.ts (renamed from cli/tests/testdata/run/shebang2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/single_compile_with_reload.ts (renamed from cli/tests/testdata/run/single_compile_with_reload.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/single_compile_with_reload.ts.out (renamed from cli/tests/testdata/run/single_compile_with_reload.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/single_compile_with_reload_dyn.ts (renamed from cli/tests/testdata/run/single_compile_with_reload_dyn.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/single_compile_with_reload_worker.ts (renamed from cli/tests/testdata/run/single_compile_with_reload_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/spawn_stdout_inherit.ts (renamed from cli/tests/testdata/run/spawn_stdout_inherit.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/spawn_stdout_inherit.ts.out (renamed from cli/tests/testdata/run/spawn_stdout_inherit.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdin_read_all.out (renamed from cli/tests/testdata/run/stdin_read_all.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdin_read_all.ts (renamed from cli/tests/testdata/run/stdin_read_all.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdio_streams_are_locked_in_permission_prompt/worker.js (renamed from cli/tests/testdata/run/stdio_streams_are_locked_in_permission_prompt/worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdout_write_all.out (renamed from cli/tests/testdata/run/stdout_write_all.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdout_write_all.ts (renamed from cli/tests/testdata/run/stdout_write_all.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdout_write_sync_async.out (renamed from cli/tests/testdata/run/stdout_write_sync_async.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/stdout_write_sync_async.ts (renamed from cli/tests/testdata/run/stdout_write_sync_async.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/swc_syntax_error.ts (renamed from cli/tests/testdata/run/swc_syntax_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/swc_syntax_error.ts.out (renamed from cli/tests/testdata/run/swc_syntax_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/test_and_bench_in_run.js (renamed from cli/tests/testdata/run/test_and_bench_in_run.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/textproto.ts | 173 | ||||
-rw-r--r-- | tests/testdata/run/tls.out (renamed from cli/tests/testdata/run/tls.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/tls_connecttls.js | 66 | ||||
-rw-r--r-- | tests/testdata/run/tls_starttls.js | 65 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/circular.js (renamed from cli/tests/testdata/run/top_level_await/circular.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/circular.out (renamed from cli/tests/testdata/run/top_level_await/circular.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/loop.js (renamed from cli/tests/testdata/run/top_level_await/loop.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/loop.out (renamed from cli/tests/testdata/run/top_level_await/loop.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/nested.out (renamed from cli/tests/testdata/run/top_level_await/nested.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/nested/a.js (renamed from cli/tests/testdata/run/top_level_await/nested/a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/nested/b.js (renamed from cli/tests/testdata/run/top_level_await/nested/b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/nested/main.js (renamed from cli/tests/testdata/run/top_level_await/nested/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/order.js (renamed from cli/tests/testdata/run/top_level_await/order.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/order.out (renamed from cli/tests/testdata/run/top_level_await/order.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla/a.js (renamed from cli/tests/testdata/run/top_level_await/tla/a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla/b.js (renamed from cli/tests/testdata/run/top_level_await/tla/b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla/c.js (renamed from cli/tests/testdata/run/top_level_await/tla/c.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla/d.js (renamed from cli/tests/testdata/run/top_level_await/tla/d.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla/order.js (renamed from cli/tests/testdata/run/top_level_await/tla/order.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla/parent.js (renamed from cli/tests/testdata/run/top_level_await/tla/parent.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla2/a.js (renamed from cli/tests/testdata/run/top_level_await/tla2/a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla2/b.js (renamed from cli/tests/testdata/run/top_level_await/tla2/b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla3/b.js (renamed from cli/tests/testdata/run/top_level_await/tla3/b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/tla3/timeout_loop.js (renamed from cli/tests/testdata/run/top_level_await/tla3/timeout_loop.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/top_level_await.js (renamed from cli/tests/testdata/run/top_level_await/top_level_await.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/top_level_await.out (renamed from cli/tests/testdata/run/top_level_await/top_level_await.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/top_level_await.ts (renamed from cli/tests/testdata/run/top_level_await/top_level_await.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/top_level_for_await.js (renamed from cli/tests/testdata/run/top_level_await/top_level_for_await.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/top_level_for_await.out (renamed from cli/tests/testdata/run/top_level_await/top_level_for_await.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/top_level_for_await.ts (renamed from cli/tests/testdata/run/top_level_await/top_level_for_await.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/unresolved.js (renamed from cli/tests/testdata/run/top_level_await/unresolved.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/top_level_await/unresolved.out (renamed from cli/tests/testdata/run/top_level_await/unresolved.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_import_from_js/deps.js (renamed from cli/tests/testdata/run/ts_import_from_js/deps.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_import_from_js/main.js (renamed from cli/tests/testdata/run/ts_import_from_js/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_import_from_js/main.out (renamed from cli/tests/testdata/run/ts_import_from_js/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_type_imports.ts (renamed from cli/tests/testdata/run/ts_type_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_type_imports.ts.out (renamed from cli/tests/testdata/run/ts_type_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_type_imports_foo.ts (renamed from cli/tests/testdata/run/ts_type_imports_foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_type_only_import.d.ts (renamed from cli/tests/testdata/run/ts_type_only_import.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_type_only_import.ts (renamed from cli/tests/testdata/run/ts_type_only_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/ts_type_only_import.ts.out (renamed from cli/tests/testdata/run/ts_type_only_import.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/tsx_imports/Component.tsx (renamed from cli/tests/testdata/run/tsx_imports/Component.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/run/tsx_imports/tsx_imports.ts (renamed from cli/tests/testdata/run/tsx_imports/tsx_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/tsx_imports/tsx_imports.ts.out (renamed from cli/tests/testdata/run/tsx_imports/tsx_imports.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_definitions.ts (renamed from cli/tests/testdata/run/type_definitions.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_definitions.ts.out (renamed from cli/tests/testdata/run/type_definitions.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_definitions_for_export.ts (renamed from cli/tests/testdata/run/type_definitions_for_export.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_definitions_for_export.ts.out (renamed from cli/tests/testdata/run/type_definitions_for_export.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_01.ts (renamed from cli/tests/testdata/run/type_directives_01.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_01.ts.out (renamed from cli/tests/testdata/run/type_directives_01.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_02.ts (renamed from cli/tests/testdata/run/type_directives_02.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_02.ts.out (renamed from cli/tests/testdata/run/type_directives_02.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_js_main.js (renamed from cli/tests/testdata/run/type_directives_js_main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_redirect.ts (renamed from cli/tests/testdata/run/type_directives_redirect.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_directives_redirect.ts.out (renamed from cli/tests/testdata/run/type_directives_redirect.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_headers_deno_types.ts (renamed from cli/tests/testdata/run/type_headers_deno_types.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/type_headers_deno_types.ts.out (renamed from cli/tests/testdata/run/type_headers_deno_types.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unbuffered_stderr.ts (renamed from cli/tests/testdata/run/unbuffered_stderr.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unbuffered_stderr.ts.out (renamed from cli/tests/testdata/run/unbuffered_stderr.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unbuffered_stdout.ts (renamed from cli/tests/testdata/run/unbuffered_stdout.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unbuffered_stdout.ts.out (renamed from cli/tests/testdata/run/unbuffered_stdout.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection.ts (renamed from cli/tests/testdata/run/unhandled_rejection.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection.ts.out (renamed from cli/tests/testdata/run/unhandled_rejection.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_dynamic_import/import.ts (renamed from cli/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_dynamic_import/main.ts (renamed from cli/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out (renamed from cli/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts (renamed from cli/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts (renamed from cli/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out (renamed from cli/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_sync_error.ts (renamed from cli/tests/testdata/run/unhandled_rejection_sync_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unhandled_rejection_sync_error.ts.out (renamed from cli/tests/testdata/run/unhandled_rejection_sync_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unsafe_proto/main.js (renamed from cli/tests/testdata/run/unsafe_proto/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unsafe_proto/main.out (renamed from cli/tests/testdata/run/unsafe_proto/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out (renamed from cli/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unsafe_proto/worker.js (renamed from cli/tests/testdata/run/unsafe_proto/worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable.js (renamed from cli/tests/testdata/run/unstable.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable.ts (renamed from cli/tests/testdata/run/unstable.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_broadcast_channel.disabled.out (renamed from cli/tests/testdata/run/unstable_broadcast_channel.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_broadcast_channel.enabled.out (renamed from cli/tests/testdata/run/unstable_broadcast_channel.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_broadcast_channel.js (renamed from cli/tests/testdata/run/unstable_broadcast_channel.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_cron.disabled.out (renamed from cli/tests/testdata/run/unstable_cron.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_cron.enabled.out (renamed from cli/tests/testdata/run/unstable_cron.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_cron.js (renamed from cli/tests/testdata/run/unstable_cron.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_disabled_js.out (renamed from cli/tests/testdata/run/unstable_disabled_js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_enabled.out (renamed from cli/tests/testdata/run/unstable_enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_enabled_js.out (renamed from cli/tests/testdata/run/unstable_enabled_js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_ffi.disabled.out (renamed from cli/tests/testdata/run/unstable_ffi.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_ffi.enabled.out (renamed from cli/tests/testdata/run/unstable_ffi.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_ffi.js (renamed from cli/tests/testdata/run/unstable_ffi.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_fs.disabled.out (renamed from cli/tests/testdata/run/unstable_fs.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_fs.enabled.out (renamed from cli/tests/testdata/run/unstable_fs.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_fs.js (renamed from cli/tests/testdata/run/unstable_fs.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_http.disabled.out (renamed from cli/tests/testdata/run/unstable_http.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_http.enabled.out (renamed from cli/tests/testdata/run/unstable_http.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_http.js (renamed from cli/tests/testdata/run/unstable_http.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_kv.disabled.out (renamed from cli/tests/testdata/run/unstable_kv.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_kv.enabled.out (renamed from cli/tests/testdata/run/unstable_kv.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_kv.js (renamed from cli/tests/testdata/run/unstable_kv.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_net.disabled.out (renamed from cli/tests/testdata/run/unstable_net.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_net.enabled.out (renamed from cli/tests/testdata/run/unstable_net.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_net.js (renamed from cli/tests/testdata/run/unstable_net.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_temporal_api/main.out (renamed from cli/tests/testdata/run/unstable_temporal_api/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_temporal_api/main.ts (renamed from cli/tests/testdata/run/unstable_temporal_api/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_temporal_api/missing_flag.js (renamed from cli/tests/testdata/run/unstable_temporal_api/missing_flag.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_temporal_api/missing_flag.out (renamed from cli/tests/testdata/run/unstable_temporal_api/missing_flag.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_webgpu.disabled.out (renamed from cli/tests/testdata/run/unstable_webgpu.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_webgpu.enabled.out (renamed from cli/tests/testdata/run/unstable_webgpu.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_webgpu.js (renamed from cli/tests/testdata/run/unstable_webgpu.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_worker.ts (renamed from cli/tests/testdata/run/unstable_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_worker.ts.out (renamed from cli/tests/testdata/run/unstable_worker.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_worker_options.disabled.out (renamed from cli/tests/testdata/run/unstable_worker_options.disabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_worker_options.enabled.out (renamed from cli/tests/testdata/run/unstable_worker_options.enabled.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unstable_worker_options.js (renamed from cli/tests/testdata/run/unstable_worker_options.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/unsupported_dynamic_import_scheme.out (renamed from cli/tests/testdata/run/unsupported_dynamic_import_scheme.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/v8_flags.js (renamed from cli/tests/testdata/run/v8_flags.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/v8_flags.js.out (renamed from cli/tests/testdata/run/v8_flags.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/v8_flags_unrecognized.out (renamed from cli/tests/testdata/run/v8_flags_unrecognized.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/v8_help.out (renamed from cli/tests/testdata/run/v8_help.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/warn_on_deprecated_api/main.js (renamed from cli/tests/testdata/run/warn_on_deprecated_api/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/warn_on_deprecated_api/main.out (renamed from cli/tests/testdata/run/warn_on_deprecated_api/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/warn_on_deprecated_api/main.verbose.out (renamed from cli/tests/testdata/run/warn_on_deprecated_api/main.verbose.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/warn_on_deprecated_api/main_disabled_env.out (renamed from cli/tests/testdata/run/warn_on_deprecated_api/main_disabled_env.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/warn_on_deprecated_api/main_disabled_flag.out (renamed from cli/tests/testdata/run/warn_on_deprecated_api/main_disabled_flag.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/warn_on_deprecated_api/mod.ts (renamed from cli/tests/testdata/run/warn_on_deprecated_api/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm.ts (renamed from cli/tests/testdata/run/wasm.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm.ts.out (renamed from cli/tests/testdata/run/wasm.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_async.js (renamed from cli/tests/testdata/run/wasm_async.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_async.out (renamed from cli/tests/testdata/run/wasm_async.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_shared.out (renamed from cli/tests/testdata/run/wasm_shared.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_shared.ts (renamed from cli/tests/testdata/run/wasm_shared.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_streaming_panic_test.js (renamed from cli/tests/testdata/run/wasm_streaming_panic_test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_streaming_panic_test.js.out (renamed from cli/tests/testdata/run/wasm_streaming_panic_test.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_unreachable.js (renamed from cli/tests/testdata/run/wasm_unreachable.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_unreachable.out (renamed from cli/tests/testdata/run/wasm_unreachable.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_url.js (renamed from cli/tests/testdata/run/wasm_url.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/wasm_url.out (renamed from cli/tests/testdata/run/wasm_url.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/weakref.ts (renamed from cli/tests/testdata/run/weakref.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/weakref.ts.out (renamed from cli/tests/testdata/run/weakref.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/websocket_server_idletimeout.ts | 25 | ||||
-rw-r--r-- | tests/testdata/run/websocket_server_multi_field_connection_header_test.ts (renamed from cli/tests/testdata/run/websocket_server_multi_field_connection_header_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/websocketstream_ping_test.ts (renamed from cli/tests/testdata/run/websocketstream_ping_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/config_a.jsonc (renamed from cli/tests/testdata/run/webstorage/config_a.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/config_b.jsonc (renamed from cli/tests/testdata/run/webstorage/config_b.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/fixture.ts (renamed from cli/tests/testdata/run/webstorage/fixture.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/logger.ts (renamed from cli/tests/testdata/run/webstorage/logger.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/serialization.ts (renamed from cli/tests/testdata/run/webstorage/serialization.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/serialization.ts.out (renamed from cli/tests/testdata/run/webstorage/serialization.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/webstorage/setter.ts (renamed from cli/tests/testdata/run/webstorage/setter.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_config/auto_discovery_log.out (renamed from cli/tests/testdata/run/with_config/auto_discovery_log.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_config/deno.jsonc (renamed from cli/tests/testdata/run/with_config/deno.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_config/frontend_work.ts (renamed from cli/tests/testdata/run/with_config/frontend_work.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_config/no_auto_discovery.out (renamed from cli/tests/testdata/run/with_config/no_auto_discovery.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_config/server_side_work.ts (renamed from cli/tests/testdata/run/with_config/server_side_work.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/main.out (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/main.ts (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.out (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.ts (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/noconfig.out (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/noconfig.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/noconfig.ts (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/noconfig.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/package.json (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.js (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.out (renamed from cli/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/npm_binary/main.out (renamed from cli/tests/testdata/run/with_package_json/npm_binary/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/npm_binary/package.json (renamed from cli/tests/testdata/run/with_package_json/npm_binary/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/with_stop/main.out (renamed from cli/tests/testdata/run/with_package_json/with_stop/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/with_stop/package.json (renamed from cli/tests/testdata/run/with_package_json/with_stop/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/with_stop/some/nested/deno.json (renamed from cli/tests/testdata/run/with_package_json/with_stop/some/nested/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/with_package_json/with_stop/some/nested/dir/main.ts (renamed from cli/tests/testdata/run/with_package_json/with_stop/some/nested/dir/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_close_in_wasm_reactions.js (renamed from cli/tests/testdata/run/worker_close_in_wasm_reactions.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_close_in_wasm_reactions.js.out (renamed from cli/tests/testdata/run/worker_close_in_wasm_reactions.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_close_nested.js (renamed from cli/tests/testdata/run/worker_close_nested.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_close_nested.js.out (renamed from cli/tests/testdata/run/worker_close_nested.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_close_race.js (renamed from cli/tests/testdata/run/worker_close_race.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_close_race.js.out (renamed from cli/tests/testdata/run/worker_close_race.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_drop_handle_race.js (renamed from cli/tests/testdata/run/worker_drop_handle_race.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_drop_handle_race.js.out (renamed from cli/tests/testdata/run/worker_drop_handle_race.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_drop_handle_race_terminate.js (renamed from cli/tests/testdata/run/worker_drop_handle_race_terminate.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_drop_handle_race_terminate.js.out (renamed from cli/tests/testdata/run/worker_drop_handle_race_terminate.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_event_handler_test.js (renamed from cli/tests/testdata/run/worker_event_handler_test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_event_handler_test.js.out (renamed from cli/tests/testdata/run/worker_event_handler_test.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_message_before_close.js (renamed from cli/tests/testdata/run/worker_message_before_close.js) | 0 | ||||
-rw-r--r-- | tests/testdata/run/worker_message_before_close.js.out (renamed from cli/tests/testdata/run/worker_message_before_close.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/bar/deno.json (renamed from cli/tests/testdata/run/workspaces/basic/bar/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts (renamed from cli/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/bar/mod.ts (renamed from cli/tests/testdata/run/workspaces/basic/bar/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts (renamed from cli/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/deno.json (renamed from cli/tests/testdata/run/workspaces/basic/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/foo/bar/hello.ts (renamed from cli/tests/testdata/run/workspaces/basic/foo/bar/hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/foo/deno.json (renamed from cli/tests/testdata/run/workspaces/basic/foo/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts (renamed from cli/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/foo/mod.ts (renamed from cli/tests/testdata/run/workspaces/basic/foo/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/main.out (renamed from cli/tests/testdata/run/workspaces/basic/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/basic/main.ts (renamed from cli/tests/testdata/run/workspaces/basic/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/deno.json (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/main.out (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/member_outside_root_dir/main.ts (renamed from cli/tests/testdata/run/workspaces/member_outside_root_dir/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/bar/deno.json (renamed from cli/tests/testdata/run/workspaces/nested_member/bar/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/bar/mod.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/bar/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/deno.json (renamed from cli/tests/testdata/run/workspaces/nested_member/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/foo/bar/deno.json (renamed from cli/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/foo/deno.json (renamed from cli/tests/testdata/run/workspaces/nested_member/foo/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/foo/mod.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/foo/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/main.out (renamed from cli/tests/testdata/run/workspaces/nested_member/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/run/workspaces/nested_member/main.ts (renamed from cli/tests/testdata/run/workspaces/nested_member/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/runtime/esm_imports_a.js (renamed from cli/tests/testdata/runtime/esm_imports_a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/runtime/esm_imports_b.js (renamed from cli/tests/testdata/runtime/esm_imports_b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/spawn_kill_permissions.ts (renamed from cli/tests/testdata/spawn_kill_permissions.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/CAPITALS/main.js (renamed from cli/tests/testdata/subdir/CAPITALS/main.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/amd_like.js (renamed from cli/tests/testdata/subdir/amd_like.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/auto_print_hello.ts (renamed from cli/tests/testdata/subdir/auto_print_hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/circular1.ts (renamed from cli/tests/testdata/subdir/circular1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/circular2.ts (renamed from cli/tests/testdata/subdir/circular2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/comment.ts (renamed from cli/tests/testdata/subdir/comment.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/config.json (renamed from cli/tests/testdata/subdir/config.json) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/emittable.d.ts (renamed from cli/tests/testdata/subdir/emittable.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/evil_remote_import.js (renamed from cli/tests/testdata/subdir/evil_remote_import.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/export_types.ts (renamed from cli/tests/testdata/subdir/export_types.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/foo_types.d.ts (renamed from cli/tests/testdata/subdir/foo_types.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/form_urlencoded.txt (renamed from cli/tests/testdata/subdir/form_urlencoded.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/import.mts (renamed from cli/tests/testdata/subdir/import.mts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/indirect_import_error.js (renamed from cli/tests/testdata/subdir/indirect_import_error.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/indirect_throws.js (renamed from cli/tests/testdata/subdir/indirect_throws.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/json_1.json (renamed from cli/tests/testdata/subdir/json_1.json) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/json_2.json (renamed from cli/tests/testdata/subdir/json_2.json) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/json_3.json (renamed from cli/tests/testdata/subdir/json_3.json) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/jsx_import_source_no_pragma.tsx (renamed from cli/tests/testdata/subdir/jsx_import_source_no_pragma.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/main.ts (renamed from cli/tests/testdata/subdir/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mismatch_ext.ts (renamed from cli/tests/testdata/subdir/mismatch_ext.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod.mjs (renamed from cli/tests/testdata/subdir/mod.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod1.ts (renamed from cli/tests/testdata/subdir/mod1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod2.ts (renamed from cli/tests/testdata/subdir/mod2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod3.js (renamed from cli/tests/testdata/subdir/mod3.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod4.js (renamed from cli/tests/testdata/subdir/mod4.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod5.mjs (renamed from cli/tests/testdata/subdir/mod5.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod6.js (renamed from cli/tests/testdata/subdir/mod6.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod7.js (renamed from cli/tests/testdata/subdir/mod7.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mod8.js (renamed from cli/tests/testdata/subdir/mod8.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/more_decorators.ts (renamed from cli/tests/testdata/subdir/more_decorators.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_application_ecmascript.j2.js (renamed from cli/tests/testdata/subdir/mt_application_ecmascript.j2.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_application_ecmascript_jsx.j2.jsx (renamed from cli/tests/testdata/subdir/mt_application_ecmascript_jsx.j2.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_application_x_javascript.j4.js (renamed from cli/tests/testdata/subdir/mt_application_x_javascript.j4.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_application_x_javascript_jsx.j4.jsx (renamed from cli/tests/testdata/subdir/mt_application_x_javascript_jsx.j4.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_application_x_typescript.t4.ts (renamed from cli/tests/testdata/subdir/mt_application_x_typescript.t4.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_application_x_typescript_tsx.t4.tsx (renamed from cli/tests/testdata/subdir/mt_application_x_typescript_tsx.t4.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_javascript.js (renamed from cli/tests/testdata/subdir/mt_javascript.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_javascript_jsx.jsx (renamed from cli/tests/testdata/subdir/mt_javascript_jsx.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_text_ecmascript.j3.js (renamed from cli/tests/testdata/subdir/mt_text_ecmascript.j3.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_text_ecmascript_jsx.j3.jsx (renamed from cli/tests/testdata/subdir/mt_text_ecmascript_jsx.j3.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_text_javascript.j1.js (renamed from cli/tests/testdata/subdir/mt_text_javascript.j1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_text_javascript_jsx.j1.jsx (renamed from cli/tests/testdata/subdir/mt_text_javascript_jsx.j1.jsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_text_typescript.t1.ts (renamed from cli/tests/testdata/subdir/mt_text_typescript.t1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_text_typescript_tsx.t1.tsx (renamed from cli/tests/testdata/subdir/mt_text_typescript_tsx.t1.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_video_mp2t.t3.ts (renamed from cli/tests/testdata/subdir/mt_video_mp2t.t3.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_video_mp2t_tsx.t3.tsx (renamed from cli/tests/testdata/subdir/mt_video_mp2t_tsx.t3.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_video_vdn.t2.ts (renamed from cli/tests/testdata/subdir/mt_video_vdn.t2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/mt_video_vdn_tsx.t2.tsx (renamed from cli/tests/testdata/subdir/mt_video_vdn_tsx.t2.tsx) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/no_ext (renamed from cli/tests/testdata/subdir/no_ext) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/no_js_ext (renamed from cli/tests/testdata/subdir/no_js_ext) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/polyfill.ts (renamed from cli/tests/testdata/subdir/polyfill.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/print_hello.ts (renamed from cli/tests/testdata/subdir/print_hello.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/a.ts (renamed from cli/tests/testdata/subdir/redirects/a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/b.ts (renamed from cli/tests/testdata/subdir/redirects/b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/redirect1.js (renamed from cli/tests/testdata/subdir/redirects/redirect1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/redirect1.ts (renamed from cli/tests/testdata/subdir/redirects/redirect1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/redirect2.js (renamed from cli/tests/testdata/subdir/redirects/redirect2.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/redirect3.js (renamed from cli/tests/testdata/subdir/redirects/redirect3.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/redirects/redirect4.ts (renamed from cli/tests/testdata/subdir/redirects/redirect4.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/shebang_file.js (renamed from cli/tests/testdata/subdir/shebang_file.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/single_module.ts (renamed from cli/tests/testdata/subdir/single_module.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/subdir2/dynamic_import.ts (renamed from cli/tests/testdata/subdir/subdir2/dynamic_import.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/subdir2/mod2.ts (renamed from cli/tests/testdata/subdir/subdir2/mod2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/test_worker_basic.js (renamed from cli/tests/testdata/subdir/test_worker_basic.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/throws.js (renamed from cli/tests/testdata/subdir/throws.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/tla.ts (renamed from cli/tests/testdata/subdir/tla.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/type_and_code.ts (renamed from cli/tests/testdata/subdir/type_and_code.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/type_error.ts (renamed from cli/tests/testdata/subdir/type_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/type_reference.d.ts (renamed from cli/tests/testdata/subdir/type_reference.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/type_reference.js (renamed from cli/tests/testdata/subdir/type_reference.js) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/types.d.mts (renamed from cli/tests/testdata/subdir/types.d.mts) | 0 | ||||
-rw-r--r-- | tests/testdata/subdir/unknown_ext.deno (renamed from cli/tests/testdata/subdir/unknown_ext.deno) | 0 | ||||
l--------- | tests/testdata/symlink_to_subdir (renamed from cli/tests/testdata/symlink_to_subdir) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/deno.json (renamed from cli/tests/testdata/task/both/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/deno_selected.out (renamed from cli/tests/testdata/task/both/deno_selected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/echo.out (renamed from cli/tests/testdata/task/both/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/no_args.out (renamed from cli/tests/testdata/task/both/no_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/package.json (renamed from cli/tests/testdata/task/both/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/package_json_selected.out (renamed from cli/tests/testdata/task/both/package_json_selected.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/both/prefers_deno.out (renamed from cli/tests/testdata/task/both/prefers_deno.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/deno.json (renamed from cli/tests/testdata/task/deno_json/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_additional_args.out (renamed from cli/tests/testdata/task/deno_json/task_additional_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_additional_args_nested_strings.out (renamed from cli/tests/testdata/task/deno_json/task_additional_args_nested_strings.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_additional_args_no_logic.out (renamed from cli/tests/testdata/task/deno_json/task_additional_args_no_logic.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_additional_args_no_shell_expansion.out (renamed from cli/tests/testdata/task/deno_json/task_additional_args_no_shell_expansion.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_boolean_logic.out (renamed from cli/tests/testdata/task/deno_json/task_boolean_logic.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_cwd.out (renamed from cli/tests/testdata/task/deno_json/task_cwd.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_deno_exe_no_env.out (renamed from cli/tests/testdata/task/deno_json/task_deno_exe_no_env.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_exit_code_5.out (renamed from cli/tests/testdata/task/deno_json/task_exit_code_5.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_init_cwd.out (renamed from cli/tests/testdata/task/deno_json/task_init_cwd.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_init_cwd_already_set.out (renamed from cli/tests/testdata/task/deno_json/task_init_cwd_already_set.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_no_args.out (renamed from cli/tests/testdata/task/deno_json/task_no_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_non_existent.out (renamed from cli/tests/testdata/task/deno_json/task_non_existent.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json/task_piped_stdin.out (renamed from cli/tests/testdata/task/deno_json/task_piped_stdin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json_pre_post/bin.out (renamed from cli/tests/testdata/task/deno_json_pre_post/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json_pre_post/deno.json (renamed from cli/tests/testdata/task/deno_json_pre_post/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/deno_json_pre_post/echo.out (renamed from cli/tests/testdata/task/deno_json_pre_post/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/npx/non_existent.out (renamed from cli/tests/testdata/task/npx/non_existent.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/npx/on_own.out (renamed from cli/tests/testdata/task/npx/on_own.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/npx/package.json (renamed from cli/tests/testdata/task/npx/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json/bin.out (renamed from cli/tests/testdata/task/package_json/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json/echo.out (renamed from cli/tests/testdata/task/package_json/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json/no_args.out (renamed from cli/tests/testdata/task/package_json/no_args.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json/package.json (renamed from cli/tests/testdata/task/package_json/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_node_modules_dir_false/bin.out (renamed from cli/tests/testdata/task/package_json_node_modules_dir_false/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_node_modules_dir_false/deno.json (renamed from cli/tests/testdata/task/package_json_node_modules_dir_false/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_node_modules_dir_false/package.json (renamed from cli/tests/testdata/task/package_json_node_modules_dir_false/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_post/bin.out (renamed from cli/tests/testdata/task/package_json_post/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_post/echo.out (renamed from cli/tests/testdata/task/package_json_post/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_post/package.json (renamed from cli/tests/testdata/task/package_json_post/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_post_only/bin.out (renamed from cli/tests/testdata/task/package_json_post_only/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_post_only/echo.out (renamed from cli/tests/testdata/task/package_json_post_only/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_post_only/package.json (renamed from cli/tests/testdata/task/package_json_post_only/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre/bin.out (renamed from cli/tests/testdata/task/package_json_pre/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre/echo.out (renamed from cli/tests/testdata/task/package_json_pre/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre/package.json (renamed from cli/tests/testdata/task/package_json_pre/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre_only/bin.out (renamed from cli/tests/testdata/task/package_json_pre_only/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre_only/echo.out (renamed from cli/tests/testdata/task/package_json_pre_only/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre_only/package.json (renamed from cli/tests/testdata/task/package_json_pre_only/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre_post/bin.out (renamed from cli/tests/testdata/task/package_json_pre_post/bin.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre_post/echo.out (renamed from cli/tests/testdata/task/package_json_pre_post/echo.out) | 0 | ||||
-rw-r--r-- | tests/testdata/task/package_json_pre_post/package.json (renamed from cli/tests/testdata/task/package_json_pre_post/package.json) | 0 | ||||
-rw-r--r-- | tests/testdata/test/aggregate_error.out (renamed from cli/tests/testdata/test/aggregate_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/aggregate_error.ts (renamed from cli/tests/testdata/test/aggregate_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/allow_all.out (renamed from cli/tests/testdata/test/allow_all.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/allow_all.ts | 43 | ||||
-rw-r--r-- | tests/testdata/test/allow_none.out (renamed from cli/tests/testdata/test/allow_none.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/allow_none.ts | 23 | ||||
-rw-r--r-- | tests/testdata/test/before_unload_prevent_default.out (renamed from cli/tests/testdata/test/before_unload_prevent_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/before_unload_prevent_default.ts (renamed from cli/tests/testdata/test/before_unload_prevent_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/captured_output.ts (renamed from cli/tests/testdata/test/captured_output.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/captured_output.worker.js (renamed from cli/tests/testdata/test/captured_output.worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/test/check_local_by_default.out (renamed from cli/tests/testdata/test/check_local_by_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/check_local_by_default.ts (renamed from cli/tests/testdata/test/check_local_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/check_local_by_default2.out (renamed from cli/tests/testdata/test/check_local_by_default2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/check_local_by_default2.ts (renamed from cli/tests/testdata/test/check_local_by_default2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/clear_timeout.out (renamed from cli/tests/testdata/test/clear_timeout.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/clear_timeout.ts (renamed from cli/tests/testdata/test/clear_timeout.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect.deprecated.out (renamed from cli/tests/testdata/test/collect.deprecated.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect.out (renamed from cli/tests/testdata/test/collect.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/deno.deprecated.jsonc (renamed from cli/tests/testdata/test/collect/deno.deprecated.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/deno.jsonc (renamed from cli/tests/testdata/test/collect/deno.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/deno.malformed.jsonc (renamed from cli/tests/testdata/test/collect/deno.malformed.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/deno2.jsonc (renamed from cli/tests/testdata/test/collect/deno2.jsonc) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/ignore/test.ts (renamed from cli/tests/testdata/test/collect/ignore/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/include.ts (renamed from cli/tests/testdata/test/collect/include.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/include/2_test.ts (renamed from cli/tests/testdata/test/collect/include/2_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/include/test.ts (renamed from cli/tests/testdata/test/collect/include/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect/test.ts (renamed from cli/tests/testdata/test/collect/test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect2.out (renamed from cli/tests/testdata/test/collect2.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/collect_with_malformed_config.out (renamed from cli/tests/testdata/test/collect_with_malformed_config.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/deno.glob.json (renamed from cli/tests/testdata/test/deno.glob.json) | 0 | ||||
-rw-r--r-- | tests/testdata/test/deno_custom_jsx.json (renamed from cli/tests/testdata/test/deno_custom_jsx.json) | 0 | ||||
-rw-r--r-- | tests/testdata/test/doc.out (renamed from cli/tests/testdata/test/doc.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/doc.ts (renamed from cli/tests/testdata/test/doc.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/doc_only.out (renamed from cli/tests/testdata/test/doc_only.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/doc_only/mod.ts (renamed from cli/tests/testdata/test/doc_only/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/exit_sanitizer.out (renamed from cli/tests/testdata/test/exit_sanitizer.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/exit_sanitizer.ts (renamed from cli/tests/testdata/test/exit_sanitizer.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail.out (renamed from cli/tests/testdata/test/fail.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail.ts (renamed from cli/tests/testdata/test/fail.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail_fast.out (renamed from cli/tests/testdata/test/fail_fast.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail_fast.ts (renamed from cli/tests/testdata/test/fail_fast.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail_fast_other.ts (renamed from cli/tests/testdata/test/fail_fast_other.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail_fast_with_val.out (renamed from cli/tests/testdata/test/fail_fast_with_val.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/fail_fast_with_val.ts (renamed from cli/tests/testdata/test/fail_fast_with_val.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/file_protocol.out (renamed from cli/tests/testdata/test/file_protocol.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/file_protocol.ts (renamed from cli/tests/testdata/test/file_protocol.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/filter.out (renamed from cli/tests/testdata/test/filter.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/filter/a_test.ts (renamed from cli/tests/testdata/test/filter/a_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/filter/b_test.ts (renamed from cli/tests/testdata/test/filter/b_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/filter/c_test.ts (renamed from cli/tests/testdata/test/filter/c_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/filtered_out_only.out (renamed from cli/tests/testdata/test/filtered_out_only.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/filtered_out_only.ts (renamed from cli/tests/testdata/test/filtered_out_only.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/finally_timeout.out (renamed from cli/tests/testdata/test/finally_timeout.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/finally_timeout.ts (renamed from cli/tests/testdata/test/finally_timeout.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/data/tes.ts (renamed from cli/tests/testdata/test/glob/data/tes.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/data/test1.js (renamed from cli/tests/testdata/test/glob/data/test1.js) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/data/test1.ts (renamed from cli/tests/testdata/test/glob/data/test1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/data/test12.ts (renamed from cli/tests/testdata/test/glob/data/test12.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/fizz/bar.ts (renamed from cli/tests/testdata/test/glob/nested/fizz/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/fizz/bazz.ts (renamed from cli/tests/testdata/test/glob/nested/fizz/bazz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/fizz/fizz.ts (renamed from cli/tests/testdata/test/glob/nested/fizz/fizz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/fizz/foo.ts (renamed from cli/tests/testdata/test/glob/nested/fizz/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/foo/bar.ts (renamed from cli/tests/testdata/test/glob/nested/foo/bar.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/foo/bazz.ts (renamed from cli/tests/testdata/test/glob/nested/foo/bazz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/foo/fizz.ts (renamed from cli/tests/testdata/test/glob/nested/foo/fizz.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/nested/foo/foo.ts (renamed from cli/tests/testdata/test/glob/nested/foo/foo.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/glob/pages/[id].ts (renamed from cli/tests/testdata/test/glob/pages/[id].ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/hello_world.out (renamed from cli/tests/testdata/test/hello_world.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/hello_world.ts (renamed from cli/tests/testdata/test/hello_world.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/hide_empty_suites.out (renamed from cli/tests/testdata/test/hide_empty_suites.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ignore.out (renamed from cli/tests/testdata/test/ignore.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ignore.ts (renamed from cli/tests/testdata/test/ignore.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ignore_permissions.out (renamed from cli/tests/testdata/test/ignore_permissions.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ignore_permissions.ts (renamed from cli/tests/testdata/test/ignore_permissions.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/interval.out (renamed from cli/tests/testdata/test/interval.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/interval.ts (renamed from cli/tests/testdata/test/interval.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/load_unload.out (renamed from cli/tests/testdata/test/load_unload.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/load_unload.ts (renamed from cli/tests/testdata/test/load_unload.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown.md (renamed from cli/tests/testdata/test/markdown.md) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown.out (renamed from cli/tests/testdata/test/markdown.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown_full_block_names.md (renamed from cli/tests/testdata/test/markdown_full_block_names.md) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown_full_block_names.out (renamed from cli/tests/testdata/test/markdown_full_block_names.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown_windows.md (renamed from cli/tests/testdata/test/markdown_windows.md) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown_windows.out (renamed from cli/tests/testdata/test/markdown_windows.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown_with_comment.md (renamed from cli/tests/testdata/test/markdown_with_comment.md) | 0 | ||||
-rw-r--r-- | tests/testdata/test/markdown_with_comment.out (renamed from cli/tests/testdata/test/markdown_with_comment.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/meta.out (renamed from cli/tests/testdata/test/meta.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/meta.ts (renamed from cli/tests/testdata/test/meta.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_check.out (renamed from cli/tests/testdata/test/no_check.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_check.ts (renamed from cli/tests/testdata/test/no_check.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_color.ts (renamed from cli/tests/testdata/test/no_color.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_prompt_by_default.out (renamed from cli/tests/testdata/test/no_prompt_by_default.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_prompt_by_default.ts (renamed from cli/tests/testdata/test/no_prompt_by_default.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_prompt_with_denied_perms.out (renamed from cli/tests/testdata/test/no_prompt_with_denied_perms.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_prompt_with_denied_perms.ts (renamed from cli/tests/testdata/test/no_prompt_with_denied_perms.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_run.out (renamed from cli/tests/testdata/test/no_run.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/no_run.ts (renamed from cli/tests/testdata/test/no_run.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/non_error_thrown.out (renamed from cli/tests/testdata/test/non_error_thrown.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/non_error_thrown.ts (renamed from cli/tests/testdata/test/non_error_thrown.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/only.out (renamed from cli/tests/testdata/test/only.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/only.ts (renamed from cli/tests/testdata/test/only.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_closed_inside_started_before.out | 19 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts (renamed from cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_missing_details.out (renamed from cli/tests/testdata/test/ops_sanitizer_missing_details.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_missing_details.ts | 10 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_multiple_timeout_tests.out (renamed from cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_multiple_timeout_tests.ts (renamed from cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_multiple_timeout_tests_no_trace.out (renamed from cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests_no_trace.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_nexttick.out (renamed from cli/tests/testdata/test/ops_sanitizer_nexttick.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_nexttick.ts (renamed from cli/tests/testdata/test/ops_sanitizer_nexttick.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_step_leak.out | 10 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_step_leak.ts (renamed from cli/tests/testdata/test/ops_sanitizer_step_leak.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_timeout_failure.out (renamed from cli/tests/testdata/test/ops_sanitizer_timeout_failure.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_timeout_failure.ts (renamed from cli/tests/testdata/test/ops_sanitizer_timeout_failure.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_unstable.out (renamed from cli/tests/testdata/test/ops_sanitizer_unstable.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/ops_sanitizer_unstable.ts (renamed from cli/tests/testdata/test/ops_sanitizer_unstable.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/overloads.out (renamed from cli/tests/testdata/test/overloads.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/overloads.ts (renamed from cli/tests/testdata/test/overloads.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/parallel_output.out (renamed from cli/tests/testdata/test/parallel_output.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/parallel_output.ts (renamed from cli/tests/testdata/test/parallel_output.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/pass.junit.out (renamed from cli/tests/testdata/test/pass.junit.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/pass.out (renamed from cli/tests/testdata/test/pass.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/pass.ts (renamed from cli/tests/testdata/test/pass.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/quiet.out (renamed from cli/tests/testdata/test/quiet.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/quiet.ts (renamed from cli/tests/testdata/test/quiet.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/recursive_permissions_pledge.js (renamed from cli/tests/testdata/test/recursive_permissions_pledge.js) | 0 | ||||
-rw-r--r-- | tests/testdata/test/relative_pattern_dot_slash/deno.json (renamed from cli/tests/testdata/test/relative_pattern_dot_slash/deno.json) | 0 | ||||
-rw-r--r-- | tests/testdata/test/relative_pattern_dot_slash/output.out (renamed from cli/tests/testdata/test/relative_pattern_dot_slash/output.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/relative_pattern_dot_slash/test/add.mjs (renamed from cli/tests/testdata/test/relative_pattern_dot_slash/test/add.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/test/relative_pattern_dot_slash/test/add.test.mjs (renamed from cli/tests/testdata/test/relative_pattern_dot_slash/test/add.test.mjs) | 0 | ||||
-rw-r--r-- | tests/testdata/test/replace_timers.js (renamed from cli/tests/testdata/test/replace_timers.js) | 0 | ||||
-rw-r--r-- | tests/testdata/test/replace_timers.js.out (renamed from cli/tests/testdata/test/replace_timers.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/report_error.out (renamed from cli/tests/testdata/test/report_error.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/report_error.ts (renamed from cli/tests/testdata/test/report_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/resource_sanitizer.out (renamed from cli/tests/testdata/test/resource_sanitizer.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/resource_sanitizer.ts (renamed from cli/tests/testdata/test/resource_sanitizer.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/short-pass-jobs-flag-warning.out (renamed from cli/tests/testdata/test/short-pass-jobs-flag-warning.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/short-pass.out (renamed from cli/tests/testdata/test/short-pass.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/short-pass.ts (renamed from cli/tests/testdata/test/short-pass.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/shuffle.out (renamed from cli/tests/testdata/test/shuffle.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/shuffle/bar_test.ts (renamed from cli/tests/testdata/test/shuffle/bar_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/shuffle/baz_test.ts (renamed from cli/tests/testdata/test/shuffle/baz_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/shuffle/foo_test.ts (renamed from cli/tests/testdata/test/shuffle/foo_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/sigint_with_hanging_test.out (renamed from cli/tests/testdata/test/sigint_with_hanging_test.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/sigint_with_hanging_test.ts (renamed from cli/tests/testdata/test/sigint_with_hanging_test.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/failing_steps.dot.out (renamed from cli/tests/testdata/test/steps/failing_steps.dot.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/failing_steps.out (renamed from cli/tests/testdata/test/steps/failing_steps.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/failing_steps.tap.out (renamed from cli/tests/testdata/test/steps/failing_steps.tap.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/failing_steps.ts (renamed from cli/tests/testdata/test/steps/failing_steps.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/ignored_steps.dot.out (renamed from cli/tests/testdata/test/steps/ignored_steps.dot.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/ignored_steps.out (renamed from cli/tests/testdata/test/steps/ignored_steps.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/ignored_steps.tap.out (renamed from cli/tests/testdata/test/steps/ignored_steps.tap.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/ignored_steps.ts (renamed from cli/tests/testdata/test/steps/ignored_steps.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/invalid_usage.out (renamed from cli/tests/testdata/test/steps/invalid_usage.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/invalid_usage.ts (renamed from cli/tests/testdata/test/steps/invalid_usage.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/output_within.out (renamed from cli/tests/testdata/test/steps/output_within.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/output_within.ts (renamed from cli/tests/testdata/test/steps/output_within.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/passing_steps.dot.out (renamed from cli/tests/testdata/test/steps/passing_steps.dot.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/passing_steps.out (renamed from cli/tests/testdata/test/steps/passing_steps.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/passing_steps.tap.out (renamed from cli/tests/testdata/test/steps/passing_steps.tap.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/steps/passing_steps.ts (renamed from cli/tests/testdata/test/steps/passing_steps.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/text.md (renamed from cli/tests/testdata/test/text.md) | 0 | ||||
-rw-r--r-- | tests/testdata/test/text.out (renamed from cli/tests/testdata/test/text.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/trace_ops_caught_error/main.out (renamed from cli/tests/testdata/test/trace_ops_caught_error/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/trace_ops_caught_error/main.ts (renamed from cli/tests/testdata/test/trace_ops_caught_error/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/uncaught_errors.out (renamed from cli/tests/testdata/test/uncaught_errors.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/uncaught_errors_1.ts (renamed from cli/tests/testdata/test/uncaught_errors_1.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/uncaught_errors_2.ts (renamed from cli/tests/testdata/test/uncaught_errors_2.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/uncaught_errors_3.ts (renamed from cli/tests/testdata/test/uncaught_errors_3.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/unhandled_rejection.out (renamed from cli/tests/testdata/test/unhandled_rejection.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/unhandled_rejection.ts (renamed from cli/tests/testdata/test/unhandled_rejection.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/test/unresolved_promise.out (renamed from cli/tests/testdata/test/unresolved_promise.out) | 0 | ||||
-rw-r--r-- | tests/testdata/test/unresolved_promise.ts (renamed from cli/tests/testdata/test/unresolved_promise.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/README.md (renamed from cli/tests/testdata/tls/README.md) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/RootCA.crt (renamed from cli/tests/testdata/tls/RootCA.crt) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/RootCA.key (renamed from cli/tests/testdata/tls/RootCA.key) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/RootCA.pem (renamed from cli/tests/testdata/tls/RootCA.pem) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/domains.txt (renamed from cli/tests/testdata/tls/domains.txt) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/invalid.crt (renamed from cli/tests/testdata/tls/invalid.crt) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/invalid.key (renamed from cli/tests/testdata/tls/invalid.key) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/localhost.crt (renamed from cli/tests/testdata/tls/localhost.crt) | 0 | ||||
-rw-r--r-- | tests/testdata/tls/localhost.key (renamed from cli/tests/testdata/tls/localhost.key) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc/a.js (renamed from cli/tests/testdata/tsc/a.js) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc/d.ts (renamed from cli/tests/testdata/tsc/d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc/node_modules/b.js (renamed from cli/tests/testdata/tsc/node_modules/b.js) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc/node_modules/c.js (renamed from cli/tests/testdata/tsc/node_modules/c.js) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc/test.js (renamed from cli/tests/testdata/tsc/test.js) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/file_exportc.ts (renamed from cli/tests/testdata/tsc2/file_exportc.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/file_libref.ts (renamed from cli/tests/testdata/tsc2/file_libref.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/file_main.ts (renamed from cli/tests/testdata/tsc2/file_main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/file_reexports.ts (renamed from cli/tests/testdata/tsc2/file_reexports.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/https_deno.land-x-a.ts (renamed from cli/tests/testdata/tsc2/https_deno.land-x-a.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/https_deno.land-x-b.ts (renamed from cli/tests/testdata/tsc2/https_deno.land-x-b.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/https_deno.land-x-c.d.ts (renamed from cli/tests/testdata/tsc2/https_deno.land-x-c.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/https_deno.land-x-c.js (renamed from cli/tests/testdata/tsc2/https_deno.land-x-c.js) | 0 | ||||
-rw-r--r-- | tests/testdata/tsc2/https_deno.land-x-mod.ts (renamed from cli/tests/testdata/tsc2/https_deno.land-x-mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/bar.d.ts (renamed from cli/tests/testdata/type_definitions/bar.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/bar.js (renamed from cli/tests/testdata/type_definitions/bar.js) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/fizz.d.ts (renamed from cli/tests/testdata/type_definitions/fizz.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/fizz.js (renamed from cli/tests/testdata/type_definitions/fizz.js) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/foo.d.ts (renamed from cli/tests/testdata/type_definitions/foo.d.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/foo.js (renamed from cli/tests/testdata/type_definitions/foo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/type_definitions/qat.ts (renamed from cli/tests/testdata/type_definitions/qat.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/types/types.out (renamed from cli/tests/testdata/types/types.out) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/dynamic.ts (renamed from cli/tests/testdata/vendor/dynamic.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/dynamic_non_analyzable.ts (renamed from cli/tests/testdata/vendor/dynamic_non_analyzable.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/dynamic_non_existent.ts (renamed from cli/tests/testdata/vendor/dynamic_non_existent.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/dynamic_non_existent.ts.out (renamed from cli/tests/testdata/vendor/dynamic_non_existent.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/logger.ts (renamed from cli/tests/testdata/vendor/logger.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/mod.ts (renamed from cli/tests/testdata/vendor/mod.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/npm_and_node_specifier.ts (renamed from cli/tests/testdata/vendor/npm_and_node_specifier.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/vendor/query_reexport.ts (renamed from cli/tests/testdata/vendor/query_reexport.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/webcrypto/id_rsaEncryption.pem (renamed from cli/tests/testdata/webcrypto/id_rsaEncryption.pem) | 0 | ||||
-rw-r--r-- | tests/testdata/webcrypto/id_rsassaPss.pem (renamed from cli/tests/testdata/webcrypto/id_rsassaPss.pem) | 0 | ||||
-rw-r--r-- | tests/testdata/webcrypto/id_rsassaPss_default.pem (renamed from cli/tests/testdata/webcrypto/id_rsassaPss_default.pem) | 0 | ||||
-rw-r--r-- | tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem (renamed from cli/tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem) | 0 | ||||
-rw-r--r-- | tests/testdata/webgpu/computepass_shader.wgsl (renamed from cli/tests/testdata/webgpu/computepass_shader.wgsl) | 0 | ||||
-rw-r--r-- | tests/testdata/webgpu/hellotriangle.out (renamed from cli/tests/testdata/webgpu/hellotriangle.out) | bin | 204800 -> 204800 bytes | |||
-rw-r--r-- | tests/testdata/webgpu/hellotriangle_shader.wgsl (renamed from cli/tests/testdata/webgpu/hellotriangle_shader.wgsl) | 0 | ||||
-rw-r--r-- | tests/testdata/welcome.ts (renamed from cli/tests/testdata/welcome.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/async_error.ts (renamed from cli/tests/testdata/workers/async_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/bench_large_message.ts (renamed from cli/tests/testdata/workers/bench_large_message.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/bench_round_robin.ts (renamed from cli/tests/testdata/workers/bench_round_robin.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/bench_startup.ts (renamed from cli/tests/testdata/workers/bench_startup.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/bench_worker.ts (renamed from cli/tests/testdata/workers/bench_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/broadcast_channel.ts (renamed from cli/tests/testdata/workers/broadcast_channel.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/busy_worker.js (renamed from cli/tests/testdata/workers/busy_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/close_in_wasm_reactions.js (renamed from cli/tests/testdata/workers/close_in_wasm_reactions.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/close_nested_child.js (renamed from cli/tests/testdata/workers/close_nested_child.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/close_nested_parent.js (renamed from cli/tests/testdata/workers/close_nested_parent.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/close_race_worker.js (renamed from cli/tests/testdata/workers/close_race_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/custom_inspect/main.out (renamed from cli/tests/testdata/workers/custom_inspect/main.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/custom_inspect/main.ts (renamed from cli/tests/testdata/workers/custom_inspect/main.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/custom_inspect/worker.ts (renamed from cli/tests/testdata/workers/custom_inspect/worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/deno_worker.ts | 16 | ||||
-rw-r--r-- | tests/testdata/workers/drop_handle_race.js (renamed from cli/tests/testdata/workers/drop_handle_race.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/dynamic_remote.ts (renamed from cli/tests/testdata/workers/dynamic_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/env_read_check_worker.js (renamed from cli/tests/testdata/workers/env_read_check_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error.ts (renamed from cli/tests/testdata/workers/error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error_event.ts (renamed from cli/tests/testdata/workers/error_event.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error_event.ts.out (renamed from cli/tests/testdata/workers/error_event.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error_worker_permissions_local.ts (renamed from cli/tests/testdata/workers/error_worker_permissions_local.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error_worker_permissions_local.ts.out (renamed from cli/tests/testdata/workers/error_worker_permissions_local.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error_worker_permissions_remote.ts (renamed from cli/tests/testdata/workers/error_worker_permissions_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/error_worker_permissions_remote.ts.out (renamed from cli/tests/testdata/workers/error_worker_permissions_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/event_worker.js (renamed from cli/tests/testdata/workers/event_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/event_worker_scope.js (renamed from cli/tests/testdata/workers/event_worker_scope.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/fetching_worker.js (renamed from cli/tests/testdata/workers/fetching_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/http_worker.js (renamed from cli/tests/testdata/workers/http_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/image_data_worker.ts (renamed from cli/tests/testdata/workers/image_data_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/immediately_close_worker.js (renamed from cli/tests/testdata/workers/immediately_close_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/message_before_close.js (renamed from cli/tests/testdata/workers/message_before_close.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/message_handler_error.ts (renamed from cli/tests/testdata/workers/message_handler_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/message_port.ts (renamed from cli/tests/testdata/workers/message_port.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/nested_worker.js (renamed from cli/tests/testdata/workers/nested_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/no_permissions_worker.js (renamed from cli/tests/testdata/workers/no_permissions_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/non_deno_worker.js (renamed from cli/tests/testdata/workers/non_deno_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/nonexistent_worker.out (renamed from cli/tests/testdata/workers/nonexistent_worker.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/nonexistent_worker.ts (renamed from cli/tests/testdata/workers/nonexistent_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/parent_read_check_worker.js (renamed from cli/tests/testdata/workers/parent_read_check_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permission_echo.js (renamed from cli/tests/testdata/workers/permission_echo.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_blob_local.ts (renamed from cli/tests/testdata/workers/permissions_blob_local.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_blob_local.ts.out (renamed from cli/tests/testdata/workers/permissions_blob_local.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_blob_remote.ts (renamed from cli/tests/testdata/workers/permissions_blob_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_blob_remote.ts.out (renamed from cli/tests/testdata/workers/permissions_blob_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_data_local.ts (renamed from cli/tests/testdata/workers/permissions_data_local.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_data_local.ts.out (renamed from cli/tests/testdata/workers/permissions_data_local.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_data_remote.ts (renamed from cli/tests/testdata/workers/permissions_data_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_data_remote.ts.out (renamed from cli/tests/testdata/workers/permissions_data_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_dynamic_remote.ts (renamed from cli/tests/testdata/workers/permissions_dynamic_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_dynamic_remote.ts.out (renamed from cli/tests/testdata/workers/permissions_dynamic_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_remote_remote.ts (renamed from cli/tests/testdata/workers/permissions_remote_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/permissions_remote_remote.ts.out (renamed from cli/tests/testdata/workers/permissions_remote_remote.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/post_undefined.ts (renamed from cli/tests/testdata/workers/post_undefined.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/racy_worker.js (renamed from cli/tests/testdata/workers/racy_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/read_check_granular_worker.js (renamed from cli/tests/testdata/workers/read_check_granular_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/read_check_worker.js (renamed from cli/tests/testdata/workers/read_check_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/shared_array_buffer.ts (renamed from cli/tests/testdata/workers/shared_array_buffer.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/sibling_worker.js (renamed from cli/tests/testdata/workers/sibling_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/static_remote.ts (renamed from cli/tests/testdata/workers/static_remote.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/terminate_tla_crash.js (renamed from cli/tests/testdata/workers/terminate_tla_crash.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/terminate_tla_crash.js.out (renamed from cli/tests/testdata/workers/terminate_tla_crash.js.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/test_worker.js (renamed from cli/tests/testdata/workers/test_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/test_worker.ts (renamed from cli/tests/testdata/workers/test_worker.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/throwing_worker.js (renamed from cli/tests/testdata/workers/throwing_worker.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_async_error.ts (renamed from cli/tests/testdata/workers/worker_async_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_async_error.ts.out (renamed from cli/tests/testdata/workers/worker_async_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_crypto.js (renamed from cli/tests/testdata/workers/worker_crypto.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_doest_stall_event_loop.ts (renamed from cli/tests/testdata/workers/worker_doest_stall_event_loop.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_doest_stall_event_loop.ts.out (renamed from cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_error.ts (renamed from cli/tests/testdata/workers/worker_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_error.ts.out (renamed from cli/tests/testdata/workers/worker_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_event_handlers.js (renamed from cli/tests/testdata/workers/worker_event_handlers.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_globals.ts (renamed from cli/tests/testdata/workers/worker_globals.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_large_message.js (renamed from cli/tests/testdata/workers/worker_large_message.js) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_location.ts (renamed from cli/tests/testdata/workers/worker_location.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_message_handler_error.ts (renamed from cli/tests/testdata/workers/worker_message_handler_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_message_handler_error.ts.out (renamed from cli/tests/testdata/workers/worker_message_handler_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_navigator.ts (renamed from cli/tests/testdata/workers/worker_navigator.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_nested_error.ts (renamed from cli/tests/testdata/workers/worker_nested_error.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_nested_error.ts.out (renamed from cli/tests/testdata/workers/worker_nested_error.ts.out) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_structured_cloning.ts (renamed from cli/tests/testdata/workers/worker_structured_cloning.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_types.ts (renamed from cli/tests/testdata/workers/worker_types.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_unstable.ts (renamed from cli/tests/testdata/workers/worker_unstable.ts) | 0 | ||||
-rw-r--r-- | tests/testdata/workers/worker_with_top_level_await.ts (renamed from cli/tests/testdata/workers/worker_with_top_level_await.ts) | 0 | ||||
-rw-r--r-- | tests/unit/README.md (renamed from cli/tests/unit/README.md) | 0 | ||||
-rw-r--r-- | tests/unit/abort_controller_test.ts (renamed from cli/tests/unit/abort_controller_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/blob_test.ts (renamed from cli/tests/unit/blob_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/body_test.ts (renamed from cli/tests/unit/body_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/broadcast_channel_test.ts (renamed from cli/tests/unit/broadcast_channel_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/buffer_test.ts (renamed from cli/tests/unit/buffer_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/build_test.ts (renamed from cli/tests/unit/build_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/cache_api_test.ts (renamed from cli/tests/unit/cache_api_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/chmod_test.ts (renamed from cli/tests/unit/chmod_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/chown_test.ts (renamed from cli/tests/unit/chown_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/command_test.ts (renamed from cli/tests/unit/command_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/console_test.ts (renamed from cli/tests/unit/console_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/copy_file_test.ts (renamed from cli/tests/unit/copy_file_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/cron_test.ts (renamed from cli/tests/unit/cron_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/custom_event_test.ts (renamed from cli/tests/unit/custom_event_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/dir_test.ts (renamed from cli/tests/unit/dir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/dom_exception_test.ts (renamed from cli/tests/unit/dom_exception_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/error_stack_test.ts (renamed from cli/tests/unit/error_stack_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/error_test.ts (renamed from cli/tests/unit/error_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/esnext_test.ts (renamed from cli/tests/unit/esnext_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/event_target_test.ts (renamed from cli/tests/unit/event_target_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/event_test.ts (renamed from cli/tests/unit/event_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/fetch_test.ts | 2071 | ||||
-rw-r--r-- | tests/unit/ffi_test.ts (renamed from cli/tests/unit/ffi_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/file_test.ts (renamed from cli/tests/unit/file_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/filereader_test.ts (renamed from cli/tests/unit/filereader_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/files_test.ts | 1095 | ||||
-rw-r--r-- | tests/unit/flock_test.ts | 197 | ||||
-rw-r--r-- | tests/unit/fs_events_test.ts (renamed from cli/tests/unit/fs_events_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/get_random_values_test.ts (renamed from cli/tests/unit/get_random_values_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/globals_test.ts (renamed from cli/tests/unit/globals_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/headers_test.ts (renamed from cli/tests/unit/headers_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/http_test.ts | 2801 | ||||
-rw-r--r-- | tests/unit/image_bitmap_test.ts (renamed from cli/tests/unit/image_bitmap_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/image_data_test.ts (renamed from cli/tests/unit/image_data_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/internals_test.ts (renamed from cli/tests/unit/internals_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/intl_test.ts (renamed from cli/tests/unit/intl_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/io_test.ts (renamed from cli/tests/unit/io_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/jupyter_test.ts (renamed from cli/tests/unit/jupyter_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/kv_queue_test.ts (renamed from cli/tests/unit/kv_queue_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/kv_queue_test_no_db_close.ts (renamed from cli/tests/unit/kv_queue_test_no_db_close.ts) | 0 | ||||
-rw-r--r-- | tests/unit/kv_queue_undelivered_test.ts (renamed from cli/tests/unit/kv_queue_undelivered_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/kv_test.ts (renamed from cli/tests/unit/kv_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/link_test.ts (renamed from cli/tests/unit/link_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/make_temp_test.ts (renamed from cli/tests/unit/make_temp_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/message_channel_test.ts (renamed from cli/tests/unit/message_channel_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/mkdir_test.ts (renamed from cli/tests/unit/mkdir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/navigator_test.ts (renamed from cli/tests/unit/navigator_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/net_test.ts | 1274 | ||||
-rw-r--r-- | tests/unit/network_interfaces_test.ts (renamed from cli/tests/unit/network_interfaces_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/ops_test.ts (renamed from cli/tests/unit/ops_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/os_test.ts (renamed from cli/tests/unit/os_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/path_from_url_test.ts (renamed from cli/tests/unit/path_from_url_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/performance_test.ts (renamed from cli/tests/unit/performance_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/permissions_test.ts (renamed from cli/tests/unit/permissions_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/process_test.ts (renamed from cli/tests/unit/process_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/progressevent_test.ts (renamed from cli/tests/unit/progressevent_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/promise_hooks_test.ts (renamed from cli/tests/unit/promise_hooks_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/read_dir_test.ts | 113 | ||||
-rw-r--r-- | tests/unit/read_file_test.ts | 182 | ||||
-rw-r--r-- | tests/unit/read_link_test.ts (renamed from cli/tests/unit/read_link_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/read_text_file_test.ts | 208 | ||||
-rw-r--r-- | tests/unit/real_path_test.ts | 114 | ||||
-rw-r--r-- | tests/unit/ref_unref_test.ts (renamed from cli/tests/unit/ref_unref_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/remove_test.ts (renamed from cli/tests/unit/remove_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/rename_test.ts (renamed from cli/tests/unit/rename_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/request_test.ts (renamed from cli/tests/unit/request_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/resources_test.ts | 55 | ||||
-rw-r--r-- | tests/unit/response_test.ts (renamed from cli/tests/unit/response_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/serve_test.ts | 3932 | ||||
-rw-r--r-- | tests/unit/signal_test.ts (renamed from cli/tests/unit/signal_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/stat_test.ts | 342 | ||||
-rw-r--r-- | tests/unit/stdio_test.ts (renamed from cli/tests/unit/stdio_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/streams_test.ts (renamed from cli/tests/unit/streams_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/structured_clone_test.ts (renamed from cli/tests/unit/structured_clone_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/symbol_test.ts (renamed from cli/tests/unit/symbol_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/symlink_test.ts (renamed from cli/tests/unit/symlink_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/sync_test.ts (renamed from cli/tests/unit/sync_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/test_util.ts (renamed from cli/tests/unit/test_util.ts) | 0 | ||||
-rw-r--r-- | tests/unit/testing_test.ts (renamed from cli/tests/unit/testing_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/text_encoding_test.ts (renamed from cli/tests/unit/text_encoding_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/timers_test.ts (renamed from cli/tests/unit/timers_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/tls_test.ts | 1546 | ||||
-rw-r--r-- | tests/unit/truncate_test.ts (renamed from cli/tests/unit/truncate_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/tty_color_test.ts (renamed from cli/tests/unit/tty_color_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/tty_test.ts | 32 | ||||
-rw-r--r-- | tests/unit/umask_test.ts (renamed from cli/tests/unit/umask_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/url_search_params_test.ts (renamed from cli/tests/unit/url_search_params_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/url_test.ts (renamed from cli/tests/unit/url_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/urlpattern_test.ts (renamed from cli/tests/unit/urlpattern_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/utime_test.ts (renamed from cli/tests/unit/utime_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/version_test.ts (renamed from cli/tests/unit/version_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/wasm_test.ts (renamed from cli/tests/unit/wasm_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/webcrypto_test.ts | 2047 | ||||
-rw-r--r-- | tests/unit/webgpu_test.ts | 267 | ||||
-rw-r--r-- | tests/unit/websocket_test.ts | 738 | ||||
-rw-r--r-- | tests/unit/websocketstream_test.ts.disabled (renamed from cli/tests/unit/websocketstream_test.ts.disabled) | 0 | ||||
-rw-r--r-- | tests/unit/webstorage_test.ts (renamed from cli/tests/unit/webstorage_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/worker_permissions_test.ts (renamed from cli/tests/unit/worker_permissions_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/worker_test.ts (renamed from cli/tests/unit/worker_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/write_file_test.ts (renamed from cli/tests/unit/write_file_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit/write_text_file_test.ts (renamed from cli/tests/unit/write_text_file_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_access_test.ts (renamed from cli/tests/unit_node/_fs/_fs_access_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_appendFile_test.ts (renamed from cli/tests/unit_node/_fs/_fs_appendFile_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_chmod_test.ts (renamed from cli/tests/unit_node/_fs/_fs_chmod_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_chown_test.ts (renamed from cli/tests/unit_node/_fs/_fs_chown_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_close_test.ts (renamed from cli/tests/unit_node/_fs/_fs_close_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_copy_test.ts (renamed from cli/tests/unit_node/_fs/_fs_copy_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_dir_test.ts (renamed from cli/tests/unit_node/_fs/_fs_dir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_dirent_test.ts (renamed from cli/tests/unit_node/_fs/_fs_dirent_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_exists_test.ts (renamed from cli/tests/unit_node/_fs/_fs_exists_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_fdatasync_test.ts (renamed from cli/tests/unit_node/_fs/_fs_fdatasync_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_fstat_test.ts (renamed from cli/tests/unit_node/_fs/_fs_fstat_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_fsync_test.ts (renamed from cli/tests/unit_node/_fs/_fs_fsync_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_ftruncate_test.ts (renamed from cli/tests/unit_node/_fs/_fs_ftruncate_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_futimes_test.ts (renamed from cli/tests/unit_node/_fs/_fs_futimes_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_handle_test.ts (renamed from cli/tests/unit_node/_fs/_fs_handle_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_link_test.ts (renamed from cli/tests/unit_node/_fs/_fs_link_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_lstat_test.ts (renamed from cli/tests/unit_node/_fs/_fs_lstat_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_mkdir_test.ts (renamed from cli/tests/unit_node/_fs/_fs_mkdir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_mkdtemp_test.ts (renamed from cli/tests/unit_node/_fs/_fs_mkdtemp_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_open_test.ts (renamed from cli/tests/unit_node/_fs/_fs_open_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_opendir_test.ts (renamed from cli/tests/unit_node/_fs/_fs_opendir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_readFile_test.ts (renamed from cli/tests/unit_node/_fs/_fs_readFile_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_read_test.ts (renamed from cli/tests/unit_node/_fs/_fs_read_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_readdir_test.ts (renamed from cli/tests/unit_node/_fs/_fs_readdir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_readlink_test.ts (renamed from cli/tests/unit_node/_fs/_fs_readlink_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_realpath_test.ts (renamed from cli/tests/unit_node/_fs/_fs_realpath_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_rename_test.ts (renamed from cli/tests/unit_node/_fs/_fs_rename_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_rm_test.ts (renamed from cli/tests/unit_node/_fs/_fs_rm_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_rmdir_test.ts (renamed from cli/tests/unit_node/_fs/_fs_rmdir_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_stat_test.ts (renamed from cli/tests/unit_node/_fs/_fs_stat_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_symlink_test.ts (renamed from cli/tests/unit_node/_fs/_fs_symlink_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_truncate_test.ts (renamed from cli/tests/unit_node/_fs/_fs_truncate_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_unlink_test.ts (renamed from cli/tests/unit_node/_fs/_fs_unlink_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_utimes_test.ts (renamed from cli/tests/unit_node/_fs/_fs_utimes_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_watch_test.ts (renamed from cli/tests/unit_node/_fs/_fs_watch_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_writeFile_test.ts (renamed from cli/tests/unit_node/_fs/_fs_writeFile_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/_fs_write_test.ts (renamed from cli/tests/unit_node/_fs/_fs_write_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/_fs/testdata/hello.txt (renamed from cli/tests/unit_node/_fs/testdata/hello.txt) | 0 | ||||
-rw-r--r-- | tests/unit_node/_test_utils.ts (renamed from cli/tests/unit_node/_test_utils.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/assertion_error_test.ts (renamed from cli/tests/unit_node/assertion_error_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/async_hooks_test.ts (renamed from cli/tests/unit_node/async_hooks_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/buffer_test.ts (renamed from cli/tests/unit_node/buffer_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/child_process_test.ts (renamed from cli/tests/unit_node/child_process_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/console_test.ts (renamed from cli/tests/unit_node/console_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/crypto_cipher_gcm_test.ts (renamed from cli/tests/unit_node/crypto/crypto_cipher_gcm_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/crypto_cipher_test.ts (renamed from cli/tests/unit_node/crypto/crypto_cipher_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/crypto_hash_test.ts (renamed from cli/tests/unit_node/crypto/crypto_hash_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/crypto_key_test.ts (renamed from cli/tests/unit_node/crypto/crypto_key_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/crypto_sign_test.ts (renamed from cli/tests/unit_node/crypto/crypto_sign_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/ec_private_secp256r1.pem (renamed from cli/tests/unit_node/crypto/ec_private_secp256r1.pem) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/gcmEncryptExtIV128.json (renamed from cli/tests/unit_node/crypto/gcmEncryptExtIV128.json) | 0 | ||||
-rw-r--r-- | tests/unit_node/crypto/gcmEncryptExtIV256.json (renamed from cli/tests/unit_node/crypto/gcmEncryptExtIV256.json) | 0 | ||||
-rw-r--r-- | tests/unit_node/dgram_test.ts (renamed from cli/tests/unit_node/dgram_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/events_test.ts (renamed from cli/tests/unit_node/events_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/fs_test.ts | 116 | ||||
-rw-r--r-- | tests/unit_node/http2_test.ts (renamed from cli/tests/unit_node/http2_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/http_test.ts | 940 | ||||
-rw-r--r-- | tests/unit_node/internal/_randomBytes_test.ts (renamed from cli/tests/unit_node/internal/_randomBytes_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/internal/_randomFill_test.ts (renamed from cli/tests/unit_node/internal/_randomFill_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/internal/_randomInt_test.ts (renamed from cli/tests/unit_node/internal/_randomInt_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/internal/pbkdf2_test.ts (renamed from cli/tests/unit_node/internal/pbkdf2_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/internal/scrypt_test.ts (renamed from cli/tests/unit_node/internal/scrypt_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/module_test.ts | 72 | ||||
-rw-r--r-- | tests/unit_node/net_test.ts (renamed from cli/tests/unit_node/net_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/os_test.ts (renamed from cli/tests/unit_node/os_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/path_test.ts (renamed from cli/tests/unit_node/path_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/perf_hooks_test.ts (renamed from cli/tests/unit_node/perf_hooks_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/process_test.ts (renamed from cli/tests/unit_node/process_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/querystring_test.ts (renamed from cli/tests/unit_node/querystring_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/readline_test.ts (renamed from cli/tests/unit_node/readline_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/repl_test.ts (renamed from cli/tests/unit_node/repl_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/stream_test.ts (renamed from cli/tests/unit_node/stream_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/string_decoder_test.ts (renamed from cli/tests/unit_node/string_decoder_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/add_global_property.js (renamed from cli/tests/unit_node/testdata/add_global_property.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/add_global_property_run_main.js (renamed from cli/tests/unit_node/testdata/add_global_property_run_main.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/binary_stdio.js (renamed from cli/tests/unit_node/testdata/binary_stdio.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/child_process_stdio.js (renamed from cli/tests/unit_node/testdata/child_process_stdio.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/child_process_stdio_012.js (renamed from cli/tests/unit_node/testdata/child_process_stdio_012.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/child_process_unref.js (renamed from cli/tests/unit_node/testdata/child_process_unref.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/exec_file_text_error.js (renamed from cli/tests/unit_node/testdata/exec_file_text_error.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/exec_file_text_output.js (renamed from cli/tests/unit_node/testdata/exec_file_text_output.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/infinite_loop.js (renamed from cli/tests/unit_node/testdata/infinite_loop.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/lorem_ipsum.txt (renamed from cli/tests/unit_node/testdata/lorem_ipsum.txt) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/node_modules/foo/index.js (renamed from cli/tests/unit_node/testdata/node_modules/foo/index.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/node_modules/foo/package.json (renamed from cli/tests/unit_node/testdata/node_modules/foo/package.json) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/process_exit.ts (renamed from cli/tests/unit_node/testdata/process_exit.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/process_exit2.ts (renamed from cli/tests/unit_node/testdata/process_exit2.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/process_really_exit.ts (renamed from cli/tests/unit_node/testdata/process_really_exit.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/process_stdin.ts (renamed from cli/tests/unit_node/testdata/process_stdin.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/process_stdin_dummy.txt (renamed from cli/tests/unit_node/testdata/process_stdin_dummy.txt) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/rsa_private.pem (renamed from cli/tests/unit_node/testdata/rsa_private.pem) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/rsa_private_pkcs1.pem (renamed from cli/tests/unit_node/testdata/rsa_private_pkcs1.pem) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/rsa_public.pem (renamed from cli/tests/unit_node/testdata/rsa_public.pem) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/worker_module/index.js (renamed from cli/tests/unit_node/testdata/worker_module/index.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/worker_module/other_file.js (renamed from cli/tests/unit_node/testdata/worker_module/other_file.js) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/worker_module/package.json (renamed from cli/tests/unit_node/testdata/worker_module/package.json) | 0 | ||||
-rw-r--r-- | tests/unit_node/testdata/worker_threads.mjs (renamed from cli/tests/unit_node/testdata/worker_threads.mjs) | 0 | ||||
-rw-r--r-- | tests/unit_node/timers_test.ts (renamed from cli/tests/unit_node/timers_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/tls_test.ts (renamed from cli/tests/unit_node/tls_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/tty_test.ts (renamed from cli/tests/unit_node/tty_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/util_test.ts (renamed from cli/tests/unit_node/util_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/v8_test.ts (renamed from cli/tests/unit_node/v8_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/vm_test.ts (renamed from cli/tests/unit_node/vm_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/worker_threads_test.ts (renamed from cli/tests/unit_node/worker_threads_test.ts) | 0 | ||||
-rw-r--r-- | tests/unit_node/zlib_test.ts (renamed from cli/tests/unit_node/zlib_test.ts) | 0 | ||||
-rw-r--r-- | tools/copyright_checker.js | 6 | ||||
-rwxr-xr-x | tools/lint.js | 22 | ||||
-rw-r--r-- | tools/node_compat/TODO.md | 2 | ||||
-rwxr-xr-x | tools/node_compat/setup.ts | 8 |
3500 files changed, 20689 insertions, 20696 deletions
diff --git a/.dprint.json b/.dprint.json index 2bc038e93..64e78ae13 100644 --- a/.dprint.json +++ b/.dprint.json @@ -27,21 +27,21 @@ "cli/tsc/dts/lib.es*.d.ts", "cli/tsc/dts/typescript.d.ts", "cli/tests/node_compat/test", - "cli/tests/testdata/file_extensions/ts_with_js_extension.js", - "cli/tests/testdata/fmt/badly_formatted.json", - "cli/tests/testdata/fmt/badly_formatted.md", - "cli/tests/testdata/fmt/badly_formatted.ipynb", - "cli/tests/testdata/byte_order_mark.ts", - "cli/tests/testdata/encoding", - "cli/tests/testdata/fmt/", - "cli/tests/testdata/lint/glob/", - "cli/tests/testdata/test/glob/", - "cli/tests/testdata/import_attributes/json_with_shebang.json", - "cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs", - "cli/tests/testdata/run/inline_js_source_map*", - "cli/tests/testdata/malformed_config/", - "cli/tests/testdata/npm/registry/", - "cli/tests/testdata/test/markdown_windows.md", + "tests/testdata/file_extensions/ts_with_js_extension.js", + "tests/testdata/fmt/badly_formatted.json", + "tests/testdata/fmt/badly_formatted.md", + "tests/testdata/fmt/badly_formatted.ipynb", + "tests/testdata/byte_order_mark.ts", + "tests/testdata/encoding", + "tests/testdata/fmt/", + "tests/testdata/lint/glob/", + "tests/testdata/test/glob/", + "tests/testdata/import_attributes/json_with_shebang.json", + "tests/testdata/run/error_syntax_empty_trailing_line.mjs", + "tests/testdata/run/inline_js_source_map*", + "tests/testdata/malformed_config/", + "tests/testdata/npm/registry/", + "tests/testdata/test/markdown_windows.md", "cli/tsc/*typescript.js", "gh-pages", "target", diff --git a/.gitattributes b/.gitattributes index 1ae3e6d8e..1491e6e35 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,11 +2,11 @@ * text=auto eol=lf *.png -text -/cli/tests/testdata/encoding/* -text +/tests/testdata/encoding/* -text # Tell git which symlinks point to files, and which ones point to directories. # This is relevant for Windows only, and requires git >= 2.19.2 to work. -/cli/tests/testdata/symlink_to_subdir symlink=dir +/tests/testdata/symlink_to_subdir symlink=dir # Tell github these are vendored files. # Doesn't include them in the language statistics. @@ -14,4 +14,4 @@ /cli/dts/* linguist-vendored # Keep Windows line endings in cross-platform doc check test file -/cli/tests/testdata/test/markdown_windows.md eol=crlf +/tests/testdata/test/markdown_windows.md eol=crlf diff --git a/Cargo.toml b/Cargo.toml index a43e1c178..868f78514 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,6 @@ members = [ "bench_util", "cli", "cli/napi/sym", - "cli/tests", "ext/broadcast_channel", "ext/cache", "ext/canvas", @@ -32,6 +31,7 @@ members = [ "test_ffi", "test_napi", "test_util", + "tests", ] exclude = ["test_util/std/hash/_wasm"] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 25adbe57f..6ec311db6 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -19,7 +19,7 @@ doc = false [[test]] name = "integration" -path = "tests/integration_tests_runner.rs" +path = "../tests/integration_tests_runner.rs" harness = false [[bench]] diff --git a/cli/bench/main.rs b/cli/bench/main.rs index 415f66989..4f5946414 100644 --- a/cli/bench/main.rs +++ b/cli/bench/main.rs @@ -37,7 +37,7 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[ // invalidating that cache. ( "cold_hello", - &["run", "--reload", "cli/tests/testdata/run/002_hello.ts"], + &["run", "--reload", "tests/testdata/run/002_hello.ts"], None, ), ( @@ -45,23 +45,19 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[ &[ "run", "--reload", - "cli/tests/testdata/run/003_relative_import.ts", + "tests/testdata/run/003_relative_import.ts", ], None, ), - ( - "hello", - &["run", "cli/tests/testdata/run/002_hello.ts"], - None, - ), + ("hello", &["run", "tests/testdata/run/002_hello.ts"], None), ( "relative_import", - &["run", "cli/tests/testdata/run/003_relative_import.ts"], + &["run", "tests/testdata/run/003_relative_import.ts"], None, ), ( "error_001", - &["run", "cli/tests/testdata/run/error_001.ts"], + &["run", "tests/testdata/run/error_001.ts"], Some(1), ), ( @@ -70,7 +66,7 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[ "run", "--reload", "--no-check", - "cli/tests/testdata/run/002_hello.ts", + "tests/testdata/run/002_hello.ts", ], None, ), @@ -79,7 +75,7 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[ &[ "run", "--allow-read", - "cli/tests/testdata/workers/bench_startup.ts", + "tests/testdata/workers/bench_startup.ts", ], None, ), @@ -88,7 +84,7 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[ &[ "run", "--allow-read", - "cli/tests/testdata/workers/bench_round_robin.ts", + "tests/testdata/workers/bench_round_robin.ts", ], None, ), @@ -97,31 +93,28 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[ &[ "run", "--allow-read", - "cli/tests/testdata/workers/bench_large_message.ts", + "tests/testdata/workers/bench_large_message.ts", ], None, ), ( "text_decoder", - &["run", "cli/tests/testdata/benches/text_decoder_perf.js"], + &["run", "tests/testdata/benches/text_decoder_perf.js"], None, ), ( "text_encoder", - &["run", "cli/tests/testdata/benches/text_encoder_perf.js"], + &["run", "tests/testdata/benches/text_encoder_perf.js"], None, ), ( "text_encoder_into", - &[ - "run", - "cli/tests/testdata/benches/text_encoder_into_perf.js", - ], + &["run", "tests/testdata/benches/text_encoder_into_perf.js"], None, ), ( "response_string", - &["run", "cli/tests/testdata/benches/response_string_perf.js"], + &["run", "tests/testdata/benches/response_string_perf.js"], None, ), ( @@ -314,7 +307,7 @@ fn get_binary_sizes(target_dir: &Path) -> Result<HashMap<String, i64>> { const BUNDLES: &[(&str, &str)] = &[ ("file_server", "./test_util/std/http/file_server.ts"), - ("welcome", "./cli/tests/testdata/welcome.ts"), + ("welcome", "./tests/testdata/welcome.ts"), ]; fn bundle_benchmark(deno_exe: &Path) -> Result<HashMap<String, i64>> { let mut sizes = HashMap::<String, i64>::new(); diff --git a/cli/tests/config/deno.json b/cli/tests/config/deno.json deleted file mode 100644 index fe518960f..000000000 --- a/cli/tests/config/deno.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "imports": { - "@test_util/": "../../../test_util/" - } -} diff --git a/cli/tests/integration/compile_tests.rs b/cli/tests/integration/compile_tests.rs deleted file mode 100644 index cf3bf023d..000000000 --- a/cli/tests/integration/compile_tests.rs +++ /dev/null @@ -1,1180 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -use test_util as util; -use util::assert_contains; -use util::assert_not_contains; -use util::testdata_path; -use util::TestContext; -use util::TestContextBuilder; - -#[test] -fn compile_basic() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("welcome.exe") - } else { - dir.path().join("welcome") - }; - // try this twice to ensure it works with the cache - for _ in 0..2 { - let output = context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "../../../cli/tests/testdata/welcome.ts", - ]) - .run(); - output.assert_exit_code(0); - output.skip_output_check(); - let output = context.new_command().name(&exe).run(); - output.assert_matches_text("Welcome to Deno!\n"); - } - - // now ensure this works when the deno_dir is readonly - let readonly_dir = dir.path().join("readonly"); - readonly_dir.make_dir_readonly(); - let readonly_sub_dir = readonly_dir.join("sub"); - - let output = context - .new_command() - // it should fail creating this, but still work - .env("DENO_DIR", readonly_sub_dir) - .name(exe) - .run(); - output.assert_matches_text("Welcome to Deno!\n"); -} - -#[test] -fn standalone_args() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("args.exe") - } else { - dir.path().join("args") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/args.ts", - "a", - "b", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .name(&exe) - .args("foo --bar --unstable") - .run() - .assert_matches_text("a\nb\nfoo\n--bar\n--unstable\n") - .assert_exit_code(0); -} - -#[test] -fn standalone_error() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("error.exe") - } else { - dir.path().join("error") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_error.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - - let output = context.new_command().name(&exe).split_output().run(); - output.assert_exit_code(1); - output.assert_stdout_matches_text(""); - let stderr = output.stderr(); - // On Windows, we cannot assert the file path (because '\'). - // Instead we just check for relevant output. - assert_contains!(stderr, "error: Uncaught (in promise) Error: boom!"); - assert_contains!(stderr, "throw new Error(\"boom!\");"); - assert_contains!(stderr, "\n at boom (file://"); - assert_contains!(stderr, "standalone_error.ts:2:9"); - assert_contains!(stderr, "at foo (file://"); - assert_contains!(stderr, "standalone_error.ts:5:3"); - assert_contains!(stderr, "standalone_error.ts:7:1"); -} - -#[test] -fn standalone_error_module_with_imports() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("error.exe") - } else { - dir.path().join("error") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_error_module_with_imports_1.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - - let output = context - .new_command() - .name(&exe) - .env("NO_COLOR", "1") - .split_output() - .run(); - output.assert_stdout_matches_text("hello\n"); - let stderr = output.stderr(); - // On Windows, we cannot assert the file path (because '\'). - // Instead we just check for relevant output. - assert_contains!(stderr, "error: Uncaught (in promise) Error: boom!"); - assert_contains!(stderr, "throw new Error(\"boom!\");"); - assert_contains!(stderr, "\n at file://"); - assert_contains!(stderr, "standalone_error_module_with_imports_2.ts:2:7"); - output.assert_exit_code(1); -} - -#[test] -fn standalone_load_datauri() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("load_datauri.exe") - } else { - dir.path().join("load_datauri") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_import_datauri.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .name(&exe) - .run() - .assert_matches_text("Hello Deno!\n") - .assert_exit_code(0); -} - -// https://github.com/denoland/deno/issues/13704 -#[test] -fn standalone_follow_redirects() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("follow_redirects.exe") - } else { - dir.path().join("follow_redirects") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_follow_redirects.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .name(&exe) - .run() - .assert_matches_text("Hello\n") - .assert_exit_code(0); -} - -#[test] -fn compile_with_file_exists_error() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let output_path = if cfg!(windows) { - dir.path().join(r"args\") - } else { - dir.path().join("args/") - }; - let file_path = dir.path().join("args"); - file_path.write(""); - context - .new_command() - .args_vec([ - "compile", - "--output", - &output_path.to_string_lossy(), - "./compile/args.ts", - ]) - .run() - .assert_matches_text(&format!( - concat!( - "[WILDCARD]error: Could not compile to file '{}' because its parent directory ", - "is an existing file. You can use the `--output <file-path>` flag to ", - "provide an alternative name.\n", - ), - file_path, - )) - .assert_exit_code(1); -} - -#[test] -fn compile_with_directory_exists_error() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("args.exe") - } else { - dir.path().join("args") - }; - std::fs::create_dir(&exe).unwrap(); - context.new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/args.ts" - ]).run() - .assert_matches_text(&format!( - concat!( - "[WILDCARD]error: Could not compile to file '{}' because a directory exists with ", - "the same name. You can use the `--output <file-path>` flag to ", - "provide an alternative name.\n" - ), - exe - )) - .assert_exit_code(1); -} - -#[test] -fn compile_with_conflict_file_exists_error() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("args.exe") - } else { - dir.path().join("args") - }; - std::fs::write(&exe, b"SHOULD NOT BE OVERWRITTEN").unwrap(); - context.new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/args.ts" - ]).run() - .assert_matches_text(&format!( - concat!( - "[WILDCARD]error: Could not compile to file '{}' because the file already exists ", - "and cannot be overwritten. Please delete the existing file or ", - "use the `--output <file-path>` flag to provide an alternative name.\n" - ), - exe - )) - .assert_exit_code(1); - exe.assert_matches_text("SHOULD NOT BE OVERWRITTEN"); -} - -#[test] -fn compile_and_overwrite_file() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("args.exe") - } else { - dir.path().join("args") - }; - - // do this twice - for _ in 0..2 { - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/args.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - assert!(&exe.exists()); - } -} - -#[test] -fn standalone_runtime_flags() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("flags.exe") - } else { - dir.path().join("flags") - }; - context - .new_command() - .args_vec([ - "compile", - "--allow-read", - "--seed", - "1", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_runtime_flags.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .env("NO_COLOR", "1") - .name(&exe) - .split_output() - .run() - .assert_stdout_matches_text("0.147205063401058\n") - .assert_stderr_matches_text( - "[WILDCARD]PermissionDenied: Requires write access to[WILDCARD]", - ) - .assert_exit_code(1); -} - -#[test] -fn standalone_ext_flag_ts() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("ext_flag_ts.exe") - } else { - dir.path().join("ext_flag_ts") - }; - context - .new_command() - .args_vec([ - "compile", - "--ext", - "ts", - "--output", - &exe.to_string_lossy(), - "./file_extensions/ts_without_extension", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .env("NO_COLOR", "1") - .name(&exe) - .run() - .assert_matches_text("executing typescript with no extension\n") - .assert_exit_code(0); -} - -#[test] -fn standalone_ext_flag_js() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("ext_flag_js.exe") - } else { - dir.path().join("ext_flag_js") - }; - context - .new_command() - .args_vec([ - "compile", - "--ext", - "js", - "--output", - &exe.to_string_lossy(), - "./file_extensions/js_without_extension", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .env("NO_COLOR", "1") - .name(&exe) - .run() - .assert_matches_text("executing javascript with no extension\n"); -} - -#[test] -fn standalone_import_map() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("import_map.exe") - } else { - dir.path().join("import_map") - }; - context - .new_command() - .args_vec([ - "compile", - "--allow-read", - "--import-map", - "compile/standalone_import_map.json", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_import_map.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .name(&exe) - .run() - .skip_output_check() - .assert_exit_code(0); -} - -#[test] -fn standalone_import_map_config_file() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("import_map.exe") - } else { - dir.path().join("import_map") - }; - context - .new_command() - .args_vec([ - "compile", - "--allow-read", - "--config", - "compile/standalone_import_map_config.json", - "--output", - &exe.to_string_lossy(), - "./compile/standalone_import_map.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - context - .new_command() - .name(&exe) - .run() - .skip_output_check() - .assert_exit_code(0); -} - -#[test] -// https://github.com/denoland/deno/issues/12670 -fn skip_rebundle() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("hello_world.exe") - } else { - dir.path().join("hello_world") - }; - let output = context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./run/001_hello.js", - ]) - .run(); - - //no "Bundle testdata_path/run/001_hello.js" in output - assert_not_contains!(output.combined_output(), "Bundle"); - - context - .new_command() - .name(&exe) - .run() - .assert_matches_text("Hello World\n") - .assert_exit_code(0); -} - -#[test] -fn check_local_by_default() { - let context = TestContext::with_http_server(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("welcome.exe") - } else { - dir.path().join("welcome") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/check_local_by_default.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); -} - -#[test] -fn check_local_by_default2() { - let context = TestContext::with_http_server(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("welcome.exe") - } else { - dir.path().join("welcome") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/check_local_by_default2.ts" - ]) - .run() - .assert_matches_text( - r#"[WILDCARD]error: TS2322 [ERROR]: Type '12' is not assignable to type '"b"'.[WILDCARD]"#, - ) - .assert_exit_code(1); -} - -#[test] -fn workers_basic() { - let context = TestContext::with_http_server(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("basic.exe") - } else { - dir.path().join("basic") - }; - context - .new_command() - .args_vec([ - "compile", - "--no-check", - "--output", - &exe.to_string_lossy(), - "./compile/workers/basic.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - - context - .new_command() - .name(&exe) - .run() - .assert_matches_file("./compile/workers/basic.out") - .assert_exit_code(0); -} - -#[test] -fn workers_not_in_module_map() { - let context = TestContext::with_http_server(); - let temp_dir = context.temp_dir(); - let exe = if cfg!(windows) { - temp_dir.path().join("not_in_module_map.exe") - } else { - temp_dir.path().join("not_in_module_map") - }; - let output = context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/workers/not_in_module_map.ts", - ]) - .run(); - output.assert_exit_code(0); - output.skip_output_check(); - - let output = context.new_command().name(exe).env("NO_COLOR", "").run(); - output.assert_exit_code(1); - output.assert_matches_text(concat!( - "error: Uncaught (in worker \"\") Module not found: [WILDCARD]", - "error: Uncaught (in promise) Error: Unhandled error in child worker.\n[WILDCARD]" - )); -} - -#[test] -fn workers_with_include_flag() { - let context = TestContext::with_http_server(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("workers_with_include_flag.exe") - } else { - dir.path().join("workers_with_include_flag") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "--include", - "./compile/workers/worker.ts", - "./compile/workers/not_in_module_map.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - - context - .new_command() - .name(&exe) - .env("NO_COLOR", "") - .run() - .assert_matches_text("Hello from worker!\nReceived 42\nClosing\n"); -} - -#[test] -fn dynamic_import() { - let context = TestContext::with_http_server(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("dynamic_import.exe") - } else { - dir.path().join("dynamic_import") - }; - context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/dynamic_imports/main.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - - context - .new_command() - .name(&exe) - .env("NO_COLOR", "") - .run() - .assert_matches_file("./compile/dynamic_imports/main.out") - .assert_exit_code(0); -} - -#[test] -fn dynamic_import_unanalyzable() { - let context = TestContext::with_http_server(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("dynamic_import_unanalyzable.exe") - } else { - dir.path().join("dynamic_import_unanalyzable") - }; - context - .new_command() - .args_vec([ - "compile", - "--allow-read", - "--include", - "./compile/dynamic_imports/import1.ts", - "--output", - &exe.to_string_lossy(), - "./compile/dynamic_imports/main_unanalyzable.ts", - ]) - .run() - .skip_output_check() - .assert_exit_code(0); - - context - .new_command() - .current_dir(util::root_path().join("cli")) - .name(&exe) - .env("NO_COLOR", "") - .run() - .assert_matches_file("./compile/dynamic_imports/main.out") - .assert_exit_code(0); -} - -#[test] -fn compile_npm_specifiers() { - let context = TestContextBuilder::for_npm().use_temp_cwd().build(); - - let temp_dir = context.temp_dir(); - temp_dir.write( - "main.ts", - concat!( - "import path from 'node:path';\n", - "import { getValue, setValue } from 'npm:@denotest/esm-basic';\n", - "import getValueDefault from 'npm:@denotest/esm-import-cjs-default';\n", - "setValue(2);\n", - "console.log(path.join('testing', 'this'));", - "console.log(getValue());", - "console.log(getValueDefault());", - ), - ); - - let binary_path = if cfg!(windows) { - temp_dir.path().join("binary.exe") - } else { - temp_dir.path().join("binary") - }; - - // try with and without --node-modules-dir - let compile_commands = &[ - "compile --output binary main.ts", - "compile --node-modules-dir --output binary main.ts", - ]; - - for compile_command in compile_commands { - let output = context.new_command().args(compile_command).run(); - output.assert_exit_code(0); - output.skip_output_check(); - - let output = context.new_command().name(&binary_path).run(); - output.assert_matches_text( - r#"Node esm importing node cjs -=========================== -{ - default: [Function (anonymous)], - named: [Function (anonymous)], - MyClass: [class MyClass] -} -{ default: [Function (anonymous)], named: [Function (anonymous)] } -[Module: null prototype] { - MyClass: [class MyClass], - __esModule: true, - default: { - default: [Function (anonymous)], - named: [Function (anonymous)], - MyClass: [class MyClass] - }, - named: [Function (anonymous)] -} -[Module: null prototype] { - __esModule: true, - default: { default: [Function (anonymous)], named: [Function (anonymous)] }, - named: [Function (anonymous)] -} -=========================== -static method -testing[WILDCARD]this -2 -5 -"#, - ); - } - - // try with a package.json - temp_dir.remove_dir_all("node_modules"); - temp_dir.write( - "main.ts", - concat!( - "import { getValue, setValue } from '@denotest/esm-basic';\n", - "setValue(2);\n", - "console.log(getValue());", - ), - ); - temp_dir.write( - "package.json", - r#"{ "dependencies": { "@denotest/esm-basic": "1" } }"#, - ); - - context - .new_command() - .args("compile --output binary main.ts") - .run() - .assert_exit_code(0) - .skip_output_check(); - - context - .new_command() - .name(&binary_path) - .run() - .assert_matches_text("2\n"); - - // now try with byonm - temp_dir.remove_dir_all("node_modules"); - temp_dir.write("deno.json", r#"{"unstable":["byonm"]}"#); - context.run_npm("install"); - - context - .new_command() - .args("compile --output binary main.ts") - .run() - .assert_exit_code(0) - .assert_matches_text("Check file:///[WILDCARD]/main.ts\nCompile file:///[WILDCARD]/main.ts to binary[WILDCARD]\n"); - - context - .new_command() - .name(&binary_path) - .run() - .assert_matches_text("2\n"); -} - -#[test] -fn compile_npm_file_system() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "compile/npm_fs/main.ts", - compile_args: vec!["-A"], - run_args: vec![], - output_file: "compile/npm_fs/main.out", - node_modules_dir: true, - input_name: Some("binary"), - expected_name: "binary", - exit_code: 0, - }); -} - -#[test] -fn compile_npm_bin_esm() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "npm:@denotest/bin/cli-esm", - compile_args: vec![], - run_args: vec!["this", "is", "a", "test"], - output_file: "npm/deno_run_esm.out", - node_modules_dir: false, - input_name: None, - expected_name: "cli-esm", - exit_code: 0, - }); -} - -#[test] -fn compile_npm_bin_cjs() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "npm:@denotest/bin/cli-cjs", - compile_args: vec![], - run_args: vec!["this", "is", "a", "test"], - output_file: "npm/deno_run_cjs.out", - node_modules_dir: false, - input_name: None, - expected_name: "cli-cjs", - exit_code: 0, - }); -} - -#[test] -fn compile_npm_cowsay_main() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "npm:cowsay@1.5.0", - compile_args: vec!["--allow-read"], - run_args: vec!["Hello"], - output_file: "npm/deno_run_cowsay.out", - node_modules_dir: false, - input_name: None, - expected_name: "cowsay", - exit_code: 0, - }); -} - -#[test] -fn compile_npm_vfs_implicit_read_permissions() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "compile/vfs_implicit_read_permission/main.ts", - compile_args: vec![], - run_args: vec![], - output_file: "compile/vfs_implicit_read_permission/main.out", - node_modules_dir: false, - input_name: Some("binary"), - expected_name: "binary", - exit_code: 0, - }); -} - -#[test] -fn compile_npm_no_permissions() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "npm:cowsay@1.5.0", - compile_args: vec![], - run_args: vec!["Hello"], - output_file: "npm/deno_run_cowsay_no_permissions.out", - node_modules_dir: false, - input_name: None, - expected_name: "cowsay", - exit_code: 1, - }); -} - -#[test] -fn compile_npm_cowsay_explicit() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "npm:cowsay@1.5.0/cowsay", - compile_args: vec!["--allow-read"], - run_args: vec!["Hello"], - output_file: "npm/deno_run_cowsay.out", - node_modules_dir: false, - input_name: None, - expected_name: "cowsay", - exit_code: 0, - }); -} - -#[test] -fn compile_npm_cowthink() { - run_npm_bin_compile_test(RunNpmBinCompileOptions { - input_specifier: "npm:cowsay@1.5.0/cowthink", - compile_args: vec!["--allow-read"], - run_args: vec!["Hello"], - output_file: "npm/deno_run_cowthink.out", - node_modules_dir: false, - input_name: None, - expected_name: "cowthink", - exit_code: 0, - }); -} - -struct RunNpmBinCompileOptions<'a> { - input_specifier: &'a str, - node_modules_dir: bool, - output_file: &'a str, - input_name: Option<&'a str>, - expected_name: &'a str, - run_args: Vec<&'a str>, - compile_args: Vec<&'a str>, - exit_code: i32, -} - -fn run_npm_bin_compile_test(opts: RunNpmBinCompileOptions) { - let context = TestContextBuilder::for_npm().use_temp_cwd().build(); - - let temp_dir = context.temp_dir(); - let main_specifier = if opts.input_specifier.starts_with("npm:") { - opts.input_specifier.to_string() - } else { - testdata_path().join(opts.input_specifier).to_string() - }; - - let mut args = vec!["compile".to_string()]; - - args.extend(opts.compile_args.iter().map(|s| s.to_string())); - - if opts.node_modules_dir { - args.push("--node-modules-dir".to_string()); - } - - if let Some(bin_name) = opts.input_name { - args.push("--output".to_string()); - args.push(bin_name.to_string()); - } - - args.push(main_specifier); - - // compile - let output = context.new_command().args_vec(args).run(); - output.assert_exit_code(0); - output.skip_output_check(); - - // delete the npm folder in the DENO_DIR to ensure it's not using it - context.deno_dir().remove_dir_all("./npm"); - - // run - let binary_path = if cfg!(windows) { - temp_dir.path().join(format!("{}.exe", opts.expected_name)) - } else { - temp_dir.path().join(opts.expected_name) - }; - let output = context - .new_command() - .name(binary_path) - .args_vec(opts.run_args) - .run(); - output.assert_matches_file(opts.output_file); - output.assert_exit_code(opts.exit_code); -} - -#[test] -fn compile_node_modules_symlink_outside() { - let context = TestContextBuilder::for_npm() - .use_copy_temp_dir("compile/node_modules_symlink_outside") - .cwd("compile/node_modules_symlink_outside") - .build(); - - let temp_dir = context.temp_dir(); - let project_dir = temp_dir - .path() - .join("compile") - .join("node_modules_symlink_outside"); - temp_dir.create_dir_all(project_dir.join("node_modules")); - temp_dir.create_dir_all(project_dir.join("some_folder")); - temp_dir.write(project_dir.join("test.txt"), "5"); - - // create a symlink in the node_modules directory that points to a folder in the cwd - temp_dir.symlink_dir( - project_dir.join("some_folder"), - project_dir.join("node_modules").join("some_folder"), - ); - // compile folder - let output = context - .new_command() - .args("compile --allow-read --node-modules-dir --output bin main.ts") - .run(); - output.assert_exit_code(0); - output.assert_matches_file( - "compile/node_modules_symlink_outside/main_compile_folder.out", - ); - assert!(project_dir.join("node_modules/some_folder").exists()); - - // Cleanup and remove the folder. The folder test is done separately from - // the file symlink test because different systems would traverse - // the directory items in different order. - temp_dir.remove_dir_all(project_dir.join("node_modules/some_folder")); - - // create a symlink in the node_modules directory that points to a file in the cwd - temp_dir.symlink_file( - project_dir.join("test.txt"), - project_dir.join("node_modules").join("test.txt"), - ); - assert!(project_dir.join("node_modules/test.txt").exists()); - - // compile - let output = context - .new_command() - .args("compile --allow-read --node-modules-dir --output bin main.ts") - .run(); - output.assert_exit_code(0); - output.assert_matches_file( - "compile/node_modules_symlink_outside/main_compile_file.out", - ); - - // run - let binary_path = - project_dir.join(if cfg!(windows) { "bin.exe" } else { "bin" }); - let output = context.new_command().name(binary_path).run(); - output.assert_matches_file("compile/node_modules_symlink_outside/main.out"); -} - -#[test] -fn compile_node_modules_symlink_non_existent() { - let context = TestContextBuilder::for_npm().use_temp_cwd().build(); - let temp_dir = context.temp_dir().path(); - temp_dir.join("main.ts").write( - r#"import { getValue, setValue } from "npm:@denotest/esm-basic"; -setValue(4); -console.log(getValue());"#, - ); - let node_modules_dir = temp_dir.join("node_modules"); - node_modules_dir.create_dir_all(); - // create a symlink that points to a non_existent file - node_modules_dir.symlink_dir("non_existent", "folder"); - // compile folder - let output = context - .new_command() - .args("compile --allow-read --node-modules-dir --output bin main.ts") - .run(); - output.assert_exit_code(0); - output.assert_matches_text( - r#"Download http://localhost:4545/npm/registry/@denotest/esm-basic -Download http://localhost:4545/npm/registry/@denotest/esm-basic/1.0.0.tgz -Initialize @denotest/esm-basic@1.0.0 -Check file:///[WILDCARD]/main.ts -Compile file:///[WILDCARD]/main.ts to [WILDCARD] -Warning Failed resolving symlink. Ignoring. - Path: [WILDCARD] - Message: [WILDCARD]) -"#, - ); - - // run - let binary_path = - temp_dir.join(if cfg!(windows) { "bin.exe" } else { "bin" }); - let output = context.new_command().name(binary_path).run(); - output.assert_matches_text("4\n"); -} - -#[test] -fn dynamic_imports_tmp_lit() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("app.exe") - } else { - dir.path().join("app") - }; - let output = context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "./compile/dynamic_imports_tmp_lit/main.js", - ]) - .run(); - output.assert_exit_code(0); - output.skip_output_check(); - let output = context.new_command().name(&exe).run(); - output.assert_matches_text("a\nb\n{ data: 5 }\n{ data: 1 }\n"); -} - -#[test] -fn granular_unstable_features() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("app.exe") - } else { - dir.path().join("app") - }; - let output = context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - "--unstable-kv", - "./compile/unstable_features.ts", - ]) - .run(); - output.assert_exit_code(0); - output.skip_output_check(); - let output = context.new_command().name(&exe).run(); - output.assert_exit_code(0); - output.assert_matches_text("Kv {}\n"); -} - -#[test] -fn dynamic_import_bad_data_uri() { - let context = TestContextBuilder::new().build(); - let dir = context.temp_dir(); - let exe = if cfg!(windows) { - dir.path().join("app.exe") - } else { - dir.path().join("app") - }; - let file = dir.path().join("bad_data_uri.ts"); - file.write("await import('data:application/')"); - let output = context - .new_command() - .args_vec([ - "compile", - "--output", - &exe.to_string_lossy(), - &file.to_string_lossy(), - ]) - .run(); - output.assert_exit_code(0); - output.skip_output_check(); - let output = context.new_command().name(&exe).run(); - output.assert_exit_code(1); - output.assert_matches_text( - "[WILDCARD]TypeError: Unable to decode data url.[WILDCARD]", - ); -} diff --git a/cli/tests/integration/js_unit_tests.rs b/cli/tests/integration/js_unit_tests.rs deleted file mode 100644 index 0e3a1a118..000000000 --- a/cli/tests/integration/js_unit_tests.rs +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -use std::io::BufRead; -use std::io::BufReader; -use std::time::Duration; -use std::time::Instant; -use test_util as util; - -util::unit_test_factory!( - js_unit_test, - "../tests/unit", - "*.ts", - [ - abort_controller_test, - blob_test, - body_test, - broadcast_channel_test, - buffer_test, - build_test, - cache_api_test, - chmod_test, - chown_test, - command_test, - console_test, - copy_file_test, - custom_event_test, - cron_test, - dir_test, - dom_exception_test, - error_stack_test, - error_test, - esnext_test, - event_target_test, - event_test, - fetch_test, - ffi_test, - file_test, - filereader_test, - files_test, - flock_test, - fs_events_test, - get_random_values_test, - globals_test, - headers_test, - http_test, - image_bitmap_test, - image_data_test, - internals_test, - intl_test, - io_test, - jupyter_test, - kv_test, - kv_queue_test_no_db_close, - kv_queue_test, - kv_queue_undelivered_test, - link_test, - make_temp_test, - message_channel_test, - mkdir_test, - navigator_test, - net_test, - network_interfaces_test, - os_test, - ops_test, - path_from_url_test, - performance_test, - permissions_test, - process_test, - progressevent_test, - promise_hooks_test, - read_dir_test, - read_file_test, - read_link_test, - read_text_file_test, - real_path_test, - ref_unref_test, - remove_test, - rename_test, - request_test, - resources_test, - response_test, - serve_test, - signal_test, - stat_test, - stdio_test, - streams_test, - structured_clone_test, - symbol_test, - symlink_test, - sync_test, - test_util, - testing_test, - text_encoding_test, - timers_test, - tls_test, - truncate_test, - tty_color_test, - tty_test, - umask_test, - url_search_params_test, - url_test, - urlpattern_test, - utime_test, - version_test, - wasm_test, - webcrypto_test, - webgpu_test, - websocket_test, - webstorage_test, - worker_permissions_test, - worker_test, - write_file_test, - write_text_file_test, - ] -); - -fn js_unit_test(test: String) { - let _g = util::http_server(); - - let deno = util::deno_cmd() - .current_dir(util::root_path()) - .arg("test") - .arg("--config") - .arg("cli/tests/config/deno.json") - .arg("--no-lock") - .arg("--unstable") - .arg("--location=http://127.0.0.1:4545/") - .arg("--no-prompt"); - - // TODO(mmastrac): it would be better to just load a test CA for all tests - let deno = if test == "websocket_test" { - deno.arg("--unsafely-ignore-certificate-errors") - } else { - deno - }; - - let mut deno = deno - .arg("-A") - .arg(util::tests_path().join("unit").join(format!("{test}.ts"))) - .piped_output() - .spawn() - .expect("failed to spawn script"); - - let now = Instant::now(); - let stdout = deno.stdout.take().unwrap(); - let test_name = test.clone(); - let stdout = std::thread::spawn(move || { - let reader = BufReader::new(stdout); - for line in reader.lines() { - if let Ok(line) = line { - println!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); - } else { - break; - } - } - }); - - let now = Instant::now(); - let stderr = deno.stderr.take().unwrap(); - let test_name = test.clone(); - let stderr = std::thread::spawn(move || { - let reader = BufReader::new(stderr); - for line in reader.lines() { - if let Ok(line) = line { - eprintln!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); - } else { - break; - } - } - }); - - const PER_TEST_TIMEOUT: Duration = Duration::from_secs(3 * 60); - - let now = Instant::now(); - let status = loop { - if now.elapsed() > PER_TEST_TIMEOUT { - // Last-ditch kill - _ = deno.kill(); - panic!("Test {test} failed to complete in time"); - } - if let Some(status) = deno - .try_wait() - .expect("failed to wait for the child process") - { - break status; - } - std::thread::sleep(Duration::from_millis(100)); - }; - - #[cfg(unix)] - assert_eq!( - std::os::unix::process::ExitStatusExt::signal(&status), - None, - "Deno should not have died with a signal" - ); - assert_eq!(Some(0), status.code(), "Deno should have exited cleanly"); - - stdout.join().unwrap(); - stderr.join().unwrap(); - - assert!(status.success()); -} diff --git a/cli/tests/integration/node_compat_tests.rs b/cli/tests/integration/node_compat_tests.rs deleted file mode 100644 index 0ed84594b..000000000 --- a/cli/tests/integration/node_compat_tests.rs +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -use test_util as util; -use util::env_vars_for_npm_tests; - -#[test] -fn node_compat_tests() { - let mut deno = util::deno_cmd() - .current_dir(util::root_path()) - .arg("test") - .arg("--config") - .arg("cli/tests/config/deno.json") - .arg("--no-lock") - .arg("--unstable") - .arg("-A") - .arg(util::tests_path().join("node_compat")) - .spawn() - .expect("failed to spawn script"); - - let status = deno.wait().expect("failed to wait for the child process"); - assert_eq!(Some(0), status.code()); - assert!(status.success()); -} - -itest!(node_test_module { - args: "test node/test.js", - output: "node/test.out", - envs: env_vars_for_npm_tests(), - exit_code: 1, - http_server: true, -}); diff --git a/cli/tests/integration/node_unit_tests.rs b/cli/tests/integration/node_unit_tests.rs deleted file mode 100644 index 5afaf48c5..000000000 --- a/cli/tests/integration/node_unit_tests.rs +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -use std::io::BufRead; -use std::io::BufReader; -use std::time::Duration; -use std::time::Instant; -use test_util as util; -use util::env_vars_for_npm_tests; - -util::unit_test_factory!( - node_unit_test, - "../tests/unit_node", - "**/*_test.ts", - [ - _fs_access_test = _fs / _fs_access_test, - _fs_appendFile_test = _fs / _fs_appendFile_test, - _fs_chmod_test = _fs / _fs_chmod_test, - _fs_chown_test = _fs / _fs_chown_test, - _fs_close_test = _fs / _fs_close_test, - _fs_copy_test = _fs / _fs_copy_test, - _fs_dir_test = _fs / _fs_dir_test, - _fs_dirent_test = _fs / _fs_dirent_test, - _fs_open_test = _fs / _fs_open_test, - _fs_read_test = _fs / _fs_read_test, - _fs_exists_test = _fs / _fs_exists_test, - _fs_fdatasync_test = _fs / _fs_fdatasync_test, - _fs_fstat_test = _fs / _fs_fstat_test, - _fs_fsync_test = _fs / _fs_fsync_test, - _fs_ftruncate_test = _fs / _fs_ftruncate_test, - _fs_futimes_test = _fs / _fs_futimes_test, - _fs_handle_test = _fs / _fs_handle_test, - _fs_link_test = _fs / _fs_link_test, - _fs_lstat_test = _fs / _fs_lstat_test, - _fs_mkdir_test = _fs / _fs_mkdir_test, - _fs_mkdtemp_test = _fs / _fs_mkdtemp_test, - _fs_opendir_test = _fs / _fs_opendir_test, - _fs_readFile_test = _fs / _fs_readFile_test, - _fs_readdir_test = _fs / _fs_readdir_test, - _fs_readlink_test = _fs / _fs_readlink_test, - _fs_realpath_test = _fs / _fs_realpath_test, - _fs_rename_test = _fs / _fs_rename_test, - _fs_rm_test = _fs / _fs_rm_test, - _fs_rmdir_test = _fs / _fs_rmdir_test, - _fs_stat_test = _fs / _fs_stat_test, - _fs_symlink_test = _fs / _fs_symlink_test, - _fs_truncate_test = _fs / _fs_truncate_test, - _fs_unlink_test = _fs / _fs_unlink_test, - _fs_utimes_test = _fs / _fs_utimes_test, - _fs_watch_test = _fs / _fs_watch_test, - _fs_writeFile_test = _fs / _fs_writeFile_test, - _fs_write_test = _fs / _fs_write_test, - async_hooks_test, - assertion_error_test, - buffer_test, - child_process_test, - console_test, - crypto_cipher_test = crypto / crypto_cipher_test, - crypto_cipher_gcm_test = crypto / crypto_cipher_gcm_test, - crypto_hash_test = crypto / crypto_hash_test, - crypto_key_test = crypto / crypto_key_test, - crypto_sign_test = crypto / crypto_sign_test, - events_test, - dgram_test, - fs_test, - http_test, - http2_test, - _randomBytes_test = internal / _randomBytes_test, - _randomFill_test = internal / _randomFill_test, - _randomInt_test = internal / _randomInt_test, - pbkdf2_test = internal / pbkdf2_test, - scrypt_test = internal / scrypt_test, - module_test, - net_test, - os_test, - path_test, - perf_hooks_test, - process_test, - querystring_test, - readline_test, - repl_test, - stream_test, - string_decoder_test, - timers_test, - tls_test, - tty_test, - util_test, - v8_test, - vm_test, - worker_threads_test, - zlib_test - ] -); - -fn node_unit_test(test: String) { - let _g = util::http_server(); - - let mut deno = util::deno_cmd() - .current_dir(util::root_path()) - .arg("test") - .arg("--config") - .arg("cli/tests/config/deno.json") - .arg("--no-lock") - .arg("--unstable") - // TODO(kt3k): This option is required to pass tls_test.ts, - // but this shouldn't be necessary. tls.connect currently doesn't - // pass hostname option correctly and it causes cert errors. - .arg("--unsafely-ignore-certificate-errors") - .arg("-A"); - // Parallel tests for crypto - if test.starts_with("crypto/") { - deno = deno.arg("--parallel"); - } - let mut deno = deno - .arg( - util::tests_path() - .join("unit_node") - .join(format!("{test}.ts")), - ) - .envs(env_vars_for_npm_tests()) - .piped_output() - .spawn() - .expect("failed to spawn script"); - - let now = Instant::now(); - let stdout = deno.stdout.take().unwrap(); - let test_name = test.clone(); - let stdout = std::thread::spawn(move || { - let reader = BufReader::new(stdout); - for line in reader.lines() { - if let Ok(line) = line { - println!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); - } else { - break; - } - } - }); - - let now = Instant::now(); - let stderr = deno.stderr.take().unwrap(); - let test_name = test.clone(); - let stderr = std::thread::spawn(move || { - let reader = BufReader::new(stderr); - for line in reader.lines() { - if let Ok(line) = line { - eprintln!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); - } else { - break; - } - } - }); - - const PER_TEST_TIMEOUT: Duration = Duration::from_secs(5 * 60); - - let now = Instant::now(); - let status = loop { - if now.elapsed() > PER_TEST_TIMEOUT { - // Last-ditch kill - _ = deno.kill(); - panic!("Test {test} failed to complete in time"); - } - if let Some(status) = deno - .try_wait() - .expect("failed to wait for the child process") - { - break status; - } - std::thread::sleep(Duration::from_millis(100)); - }; - - #[cfg(unix)] - assert_eq!( - std::os::unix::process::ExitStatusExt::signal(&status), - None, - "Deno should not have died with a signal" - ); - assert_eq!(Some(0), status.code(), "Deno should have exited cleanly"); - - stdout.join().unwrap(); - stderr.join().unwrap(); - - assert!(status.success()); -} - -// Regression test for https://github.com/denoland/deno/issues/16928 -itest!(unhandled_rejection_web { - args: "run -A node/unhandled_rejection_web.ts", - output: "node/unhandled_rejection_web.ts.out", - envs: env_vars_for_npm_tests(), - http_server: true, -}); - -// Ensure that Web `onunhandledrejection` is fired before -// Node's `process.on('unhandledRejection')`. -itest!(unhandled_rejection_web_process { - args: "run -A node/unhandled_rejection_web_process.ts", - output: "node/unhandled_rejection_web_process.ts.out", - envs: env_vars_for_npm_tests(), - http_server: true, -}); - -// Ensure that Web `onrejectionhandled` is fired before -// Node's `process.on('rejectionHandled')`. -itest!(rejection_handled_web_process { - args: "run -A --quiet node/rejection_handled_web_process.ts", - output: "node/rejection_handled_web_process.ts.out", - envs: env_vars_for_npm_tests(), - http_server: true, -}); diff --git a/cli/tests/node_compat/deno.json b/cli/tests/node_compat/deno.json deleted file mode 100644 index fe518960f..000000000 --- a/cli/tests/node_compat/deno.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "imports": { - "@test_util/": "../../../test_util/" - } -} diff --git a/cli/tests/node_compat/test/fixtures/child-process-spawn-node.js b/cli/tests/node_compat/test/fixtures/child-process-spawn-node.js deleted file mode 100644 index 589da4dab..000000000 --- a/cli/tests/node_compat/test/fixtures/child-process-spawn-node.js +++ /dev/null @@ -1,14 +0,0 @@ -const assert = require('assert'); -// TODO(kt3k): Uncomment this when util.debuglog is added -// const debug = require('util').debuglog('test'); -const debug = console.log; - -function onmessage(m) { - debug('CHILD got message:', m); - assert.ok(m.hello); - process.removeListener('message', onmessage); -} - -process.on('message', onmessage); -// TODO(kt3k): Uncomment the below when the ipc features are ready -// process.send({ foo: 'bar' }); diff --git a/cli/tests/testdata/bench/allow_all.ts b/cli/tests/testdata/bench/allow_all.ts deleted file mode 100644 index beb4a450e..000000000 --- a/cli/tests/testdata/bench/allow_all.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; - -const permissions: Deno.PermissionName[] = [ - "read", - "write", - "net", - "env", - "run", - "ffi", - "hrtime", -]; - -for (const name of permissions) { - Deno.bench({ - name: `${name} false`, - permissions: { - [name]: false, - }, - async fn() { - for await (const n of permissions) { - const status = await Deno.permissions.query({ name: n }); - assertEquals(status.state, "prompt"); - } - }, - }); - - Deno.bench({ - name: `${name} true`, - permissions: { - [name]: true, - }, - async fn() { - for await (const n of permissions) { - const status = await Deno.permissions.query({ name: n }); - if (n === name) { - assertEquals(status.state, "granted"); - } else { - assertEquals(status.state, "prompt"); - } - } - }, - }); -} diff --git a/cli/tests/testdata/bench/allow_none.ts b/cli/tests/testdata/bench/allow_none.ts deleted file mode 100644 index e723ed868..000000000 --- a/cli/tests/testdata/bench/allow_none.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { unreachable } from "../../../../test_util/std/assert/mod.ts"; - -const permissions: Deno.PermissionName[] = [ - "read", - "write", - "net", - "env", - "run", - "ffi", - "hrtime", -]; - -for (const name of permissions) { - Deno.bench({ - name, - permissions: { - [name]: true, - }, - fn() { - unreachable(); - }, - }); -} diff --git a/cli/tests/testdata/cat.ts b/cli/tests/testdata/cat.ts deleted file mode 100644 index c2a500b3e..000000000 --- a/cli/tests/testdata/cat.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { copy } from "../../../test_util/std/streams/copy.ts"; -async function main() { - for (let i = 1; i < Deno.args.length; i++) { - const filename = Deno.args[i]; - const file = await Deno.open(filename); - await copy(file, Deno.stdout); - } -} - -main(); diff --git a/cli/tests/testdata/cert/listen_tls_alpn_fail.ts b/cli/tests/testdata/cert/listen_tls_alpn_fail.ts deleted file mode 100644 index e321c9bd3..000000000 --- a/cli/tests/testdata/cert/listen_tls_alpn_fail.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { assertRejects } from "../../../../test_util/std/assert/mod.ts"; - -const listener = Deno.listenTls({ - port: Number(Deno.args[0]), - cert: Deno.readTextFileSync("./tls/localhost.crt"), - key: Deno.readTextFileSync("./tls/localhost.key"), - alpnProtocols: ["h2", "http/1.1", "foobar"], -}); - -console.log("READY"); - -const conn = await listener.accept() as Deno.TlsConn; -await assertRejects( - () => conn.handshake(), - Deno.errors.InvalidData, - "peer doesn't support any known protocol", -); -conn.close(); - -listener.close(); diff --git a/cli/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts b/cli/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts deleted file mode 100644 index ee8ff2c4b..000000000 --- a/cli/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { join } from "../../../../../test_util/std/path/mod.ts"; - -console.log("Starting the main module"); - -// We load the dynamic import path from the file system, to make sure any -// improvements in static analysis can't defeat the purpose of this test, which -// is to make sure the `--include` flag works to add non-analyzed imports to the -// module graph. -const IMPORT_PATH_FILE_PATH = join( - Deno.cwd(), - "tests/testdata/compile/dynamic_imports/import_path", -); - -setTimeout(async () => { - console.log("Dynamic importing"); - const importPath = (await Deno.readTextFile(IMPORT_PATH_FILE_PATH)).trim(); - import(importPath).then(() => console.log("Dynamic import done.")); -}, 0); diff --git a/cli/tests/testdata/compile/standalone_follow_redirects_2.js b/cli/tests/testdata/compile/standalone_follow_redirects_2.js deleted file mode 100644 index 00ebc0f5c..000000000 --- a/cli/tests/testdata/compile/standalone_follow_redirects_2.js +++ /dev/null @@ -1,5 +0,0 @@ -// unversioned import redirects with dependencies. -import { - assertNotEquals as _a, - assertStrictEquals as _b, -} from "../../../../test_util/std/assert/mod.ts"; diff --git a/cli/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts b/cli/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts deleted file mode 100644 index e1f99ed9b..000000000 --- a/cli/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { assertSnapshot } from "../../../../../test_util/std/testing/snapshot.ts"; -import { truth } from "./no_snaps_included.ts"; - -Deno.test("the truth", () => { - truth(); -}); - -// Create snapshot in .snap file, but it shouldn't be in the coverage output -Deno.test("snapshot excluded from coverage", async (context) => { - await assertSnapshot(context, {}); -}); diff --git a/cli/tests/testdata/coverage/no_tests_included/foo.test.js b/cli/tests/testdata/coverage/no_tests_included/foo.test.js deleted file mode 100644 index f555c2d0a..000000000 --- a/cli/tests/testdata/coverage/no_tests_included/foo.test.js +++ /dev/null @@ -1,6 +0,0 @@ -import { addNumbers } from "./foo.ts"; -import { assertEquals } from "../../../../../test_util/std/assert/mod.ts"; - -Deno.test("addNumbers works", () => { - assertEquals(addNumbers(1, 2), 3); -}); diff --git a/cli/tests/testdata/coverage/no_tests_included/foo.test.mts b/cli/tests/testdata/coverage/no_tests_included/foo.test.mts deleted file mode 100644 index f555c2d0a..000000000 --- a/cli/tests/testdata/coverage/no_tests_included/foo.test.mts +++ /dev/null @@ -1,6 +0,0 @@ -import { addNumbers } from "./foo.ts"; -import { assertEquals } from "../../../../../test_util/std/assert/mod.ts"; - -Deno.test("addNumbers works", () => { - assertEquals(addNumbers(1, 2), 3); -}); diff --git a/cli/tests/testdata/coverage/no_tests_included/foo.test.ts b/cli/tests/testdata/coverage/no_tests_included/foo.test.ts deleted file mode 100644 index f555c2d0a..000000000 --- a/cli/tests/testdata/coverage/no_tests_included/foo.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { addNumbers } from "./foo.ts"; -import { assertEquals } from "../../../../../test_util/std/assert/mod.ts"; - -Deno.test("addNumbers works", () => { - assertEquals(addNumbers(1, 2), 3); -}); diff --git a/cli/tests/testdata/coverage/no_transpiled_lines/index.ts b/cli/tests/testdata/coverage/no_transpiled_lines/index.ts deleted file mode 100644 index 7e4f22163..000000000 --- a/cli/tests/testdata/coverage/no_transpiled_lines/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { assertStrictEquals } from "../../../../../test_util/std/assert/mod.ts"; - -export * from "./interface.ts"; diff --git a/cli/tests/testdata/echo_server.ts b/cli/tests/testdata/echo_server.ts deleted file mode 100644 index 658b07374..000000000 --- a/cli/tests/testdata/echo_server.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { copy } from "../../../test_util/std/streams/copy.ts"; -const addr = Deno.args[0] || "0.0.0.0:4544"; -const [hostname, port] = addr.split(":"); -const listener = Deno.listen({ hostname, port: Number(port) }); -console.log("listening on", addr); -listener.accept().then( - async (conn) => { - console.log("received bytes:", await copy(conn, conn)); - conn.close(); - listener.close(); - }, -); diff --git a/cli/tests/testdata/run/045_proxy_test.ts b/cli/tests/testdata/run/045_proxy_test.ts deleted file mode 100644 index 60bde5066..000000000 --- a/cli/tests/testdata/run/045_proxy_test.ts +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { Server } from "../../../../test_util/std/http/server.ts"; -import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; - -const addr = Deno.args[1] || "localhost:4555"; - -async function proxyServer() { - const [hostname, p] = addr.split(":"); - const port = parseInt(p ?? 4555); - const server = new Server({ hostname, port, handler }); - console.log(`Proxy server listening on http://${addr}/`); - await server.listenAndServe(); -} - -async function handler(req: Request): Promise<Response> { - console.log(`Proxy request to: ${req.url}`); - const headers = new Headers(req.headers); - const proxyAuthorization = headers.get("proxy-authorization"); - if (proxyAuthorization) { - console.log(`proxy-authorization: ${proxyAuthorization}`); - headers.delete("proxy-authorization"); - } - const resp = await fetch(req.url, { - method: req.method, - headers: headers, - }); - return new Response(new Uint8Array(await resp.arrayBuffer()), { - status: resp.status, - headers: resp.headers, - }); -} - -async function testFetch() { - const { code } = await new Deno.Command(Deno.execPath(), { - args: [ - "run", - "--quiet", - "--reload", - "--allow-net", - "run/045_proxy_client.ts", - ], - env: { - HTTP_PROXY: `http://${addr}`, - }, - }).output(); - - assertEquals(code, 0); -} - -async function testModuleDownload() { - const { code } = await new Deno.Command(Deno.execPath(), { - args: [ - "cache", - "--reload", - "--quiet", - "http://localhost:4545/run/045_mod.ts", - ], - env: { - HTTP_PROXY: `http://${addr}`, - }, - }).output(); - - assertEquals(code, 0); -} - -async function testFetchNoProxy() { - const { code } = await new Deno.Command(Deno.execPath(), { - args: [ - "run", - "--quiet", - "--reload", - "--allow-net", - "run/045_proxy_client.ts", - ], - env: { - HTTP_PROXY: "http://not.exising.proxy.server", - NO_PROXY: "localhost", - }, - }).output(); - - assertEquals(code, 0); -} - -async function testModuleDownloadNoProxy() { - const { code } = await new Deno.Command(Deno.execPath(), { - args: [ - "cache", - "--reload", - "--quiet", - "http://localhost:4545/run/045_mod.ts", - ], - env: { - HTTP_PROXY: "http://not.exising.proxy.server", - NO_PROXY: "localhost", - }, - }).output(); - - assertEquals(code, 0); -} - -async function testFetchProgrammaticProxy() { - const { code } = await new Deno.Command(Deno.execPath(), { - args: [ - "run", - "--quiet", - "--reload", - "--allow-net=localhost:4545,localhost:4555", - "--unstable", - "run/045_programmatic_proxy_client.ts", - ], - }).output(); - assertEquals(code, 0); -} - -proxyServer(); -await testFetch(); -await testModuleDownload(); -await testFetchNoProxy(); -await testModuleDownloadNoProxy(); -await testFetchProgrammaticProxy(); -Deno.exit(0); diff --git a/cli/tests/testdata/run/import_meta/main.ts b/cli/tests/testdata/run/import_meta/main.ts deleted file mode 100644 index fb859e250..000000000 --- a/cli/tests/testdata/run/import_meta/main.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { assertThrows } from "../../../../../test_util/std/assert/mod.ts"; -import "http://localhost:4545/run/import_meta/other.ts"; -import "./other.ts"; - -console.log( - "main", - import.meta.url, - import.meta.main, - import.meta.filename, - import.meta.dirname, -); - -console.log("Resolving ./foo.js", import.meta.resolve("./foo.js")); -console.log("Resolving bare from import map", import.meta.resolve("bare")); -console.log( - "Resolving https://example.com/rewrite from import map", - import.meta.resolve("https://example.com/rewrite"), -); -console.log( - "Resolving without a value from import map", - import.meta.resolve(), -); -console.log( - "Resolving 1 from import map", - import.meta.resolve(1), -); -console.log( - "Resolving null from import map", - import.meta.resolve(null), -); -console.log( - "Resolving object from import map", - import.meta.resolve({}), -); -assertThrows(() => { - import.meta.resolve("too", "many", "arguments"); -}, TypeError); -assertThrows(() => { - import.meta.resolve("://malformed/url?asdf"); -}, TypeError); -console.log( - "Resolving npm:cowsay", - import.meta.resolve("npm:cowsay"), -); -console.log( - "Resolving npm:cowsay@1", - import.meta.resolve("npm:cowsay@1"), -); -console.log( - "Resolving npm:preact from import map", - import.meta.resolve("npm:preact"), -); diff --git a/cli/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled b/cli/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled deleted file mode 100644 index 0d8c1e93a..000000000 --- a/cli/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled +++ /dev/null @@ -1,2 +0,0 @@ -[WILDCARD]Warning: Resolving "fs" as "node:fs" at file:///[WILDCARD]/cli/tests/testdata/run/node_prefix_missing/main.ts:1:16. If you want to use a built-in Node module, add a "node:" prefix. -[Function: writeFile] diff --git a/cli/tests/testdata/run/onload/imported.ts b/cli/tests/testdata/run/onload/imported.ts deleted file mode 100644 index 971ddaea3..000000000 --- a/cli/tests/testdata/run/onload/imported.ts +++ /dev/null @@ -1,13 +0,0 @@ -// deno-lint-ignore-file no-window-prefix -import { assert } from "../../../../../test_util/std/assert/mod.ts"; -import "./nest_imported.ts"; - -const handler = (e: Event) => { - assert(e.type === "beforeunload" ? e.cancelable : !e.cancelable); - console.log(`got ${e.type} event in event handler (imported)`); -}; - -window.addEventListener("load", handler); -window.addEventListener("beforeunload", handler); -window.addEventListener("unload", handler); -console.log("log from imported script"); diff --git a/cli/tests/testdata/run/onload/main.ts b/cli/tests/testdata/run/onload/main.ts deleted file mode 100644 index 191c4d872..000000000 --- a/cli/tests/testdata/run/onload/main.ts +++ /dev/null @@ -1,34 +0,0 @@ -// deno-lint-ignore-file no-window-prefix no-prototype-builtins -import { assert } from "../../../../../test_util/std/assert/mod.ts"; -import "./imported.ts"; - -assert(window.hasOwnProperty("onload")); -assert(window.onload === null); - -const eventHandler = (e: Event) => { - assert(e.type === "beforeunload" ? e.cancelable : !e.cancelable); - console.log(`got ${e.type} event in event handler (main)`); -}; - -window.addEventListener("load", eventHandler); - -window.addEventListener("beforeunload", eventHandler); - -window.addEventListener("unload", eventHandler); - -window.onload = (e: Event) => { - assert(!e.cancelable); - console.log(`got ${e.type} event in onload function`); -}; - -window.onbeforeunload = (e: BeforeUnloadEvent) => { - assert(e.cancelable); - console.log(`got ${e.type} event in onbeforeunload function`); -}; - -window.onunload = (e: Event) => { - assert(!e.cancelable); - console.log(`got ${e.type} event in onunload function`); -}; - -console.log("log from main"); diff --git a/cli/tests/testdata/run/onload/nest_imported.ts b/cli/tests/testdata/run/onload/nest_imported.ts deleted file mode 100644 index e89699854..000000000 --- a/cli/tests/testdata/run/onload/nest_imported.ts +++ /dev/null @@ -1,12 +0,0 @@ -// deno-lint-ignore-file no-window-prefix -import { assert } from "../../../../../test_util/std/assert/mod.ts"; - -const handler = (e: Event) => { - assert(e.type === "beforeunload" ? e.cancelable : !e.cancelable); - console.log(`got ${e.type} event in event handler (nest_imported)`); -}; - -window.addEventListener("load", handler); -window.addEventListener("beforeunload", handler); -window.addEventListener("unload", handler); -console.log("log from nest_imported script"); diff --git a/cli/tests/testdata/run/textproto.ts b/cli/tests/testdata/run/textproto.ts deleted file mode 100644 index 44dd6fbc1..000000000 --- a/cli/tests/testdata/run/textproto.ts +++ /dev/null @@ -1,173 +0,0 @@ -// 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 "../../../../test_util/std/io/buf_reader.ts"; -import { concat } from "../../../../test_util/std/bytes/concat.ts"; - -// 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/cli/tests/testdata/run/tls_connecttls.js b/cli/tests/testdata/run/tls_connecttls.js deleted file mode 100644 index 8c6c285f3..000000000 --- a/cli/tests/testdata/run/tls_connecttls.js +++ /dev/null @@ -1,66 +0,0 @@ -import { assert, assertEquals } from "../../../../test_util/std/assert/mod.ts"; -import { BufReader, BufWriter } from "../../../../test_util/std/io/mod.ts"; -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, -}); -assert(conn.rid > 0); -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/cli/tests/testdata/run/tls_starttls.js b/cli/tests/testdata/run/tls_starttls.js deleted file mode 100644 index 3e406ff5f..000000000 --- a/cli/tests/testdata/run/tls_starttls.js +++ /dev/null @@ -1,65 +0,0 @@ -import { assert, assertEquals } from "../../../../test_util/std/assert/mod.ts"; -import { BufReader } from "../../../../test_util/std/io/buf_reader.ts"; -import { BufWriter } from "../../../../test_util/std/io/buf_writer.ts"; -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 }); -assert(conn.rid > 0); -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/cli/tests/testdata/run/websocket_server_idletimeout.ts b/cli/tests/testdata/run/websocket_server_idletimeout.ts deleted file mode 100644 index fa267c41b..000000000 --- a/cli/tests/testdata/run/websocket_server_idletimeout.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; - -const errorDeferred = Promise.withResolvers<void>(); -const closeDeferred = Promise.withResolvers<void>(); - -const listener = Deno.listen({ port: 4509 }); -console.log("READY"); -const httpConn = Deno.serveHttp(await listener.accept()); -const { request, respondWith } = (await httpConn.nextRequest())!; -const { response, socket } = Deno.upgradeWebSocket(request, { - idleTimeout: 1, -}); -socket.onerror = (e) => { - assertEquals((e as ErrorEvent).message, "No response from ping frame."); - errorDeferred.resolve(); -}; -socket.onclose = (e) => { - assertEquals(e.reason, "No response from ping frame."); - closeDeferred.resolve(); -}; -await respondWith(response); - -await errorDeferred.promise; -await closeDeferred.promise; -listener.close(); diff --git a/cli/tests/testdata/test/allow_all.ts b/cli/tests/testdata/test/allow_all.ts deleted file mode 100644 index 50cd407e4..000000000 --- a/cli/tests/testdata/test/allow_all.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; - -const permissions: Deno.PermissionName[] = [ - "read", - "write", - "net", - "env", - "run", - "ffi", - "hrtime", -]; - -for (const name of permissions) { - Deno.test({ - name: `${name} false`, - permissions: { - [name]: false, - }, - async fn() { - for await (const n of permissions) { - const status = await Deno.permissions.query({ name: n }); - assertEquals(status.state, "prompt"); - } - }, - }); - - Deno.test({ - name: `${name} true`, - permissions: { - [name]: true, - }, - async fn() { - for await (const n of permissions) { - const status = await Deno.permissions.query({ name: n }); - if (n === name) { - assertEquals(status.state, "granted"); - } else { - assertEquals(status.state, "prompt"); - } - } - }, - }); -} diff --git a/cli/tests/testdata/test/allow_none.ts b/cli/tests/testdata/test/allow_none.ts deleted file mode 100644 index eb760242a..000000000 --- a/cli/tests/testdata/test/allow_none.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { unreachable } from "../../../../test_util/std/assert/mod.ts"; - -const permissions: Deno.PermissionName[] = [ - "read", - "write", - "net", - "env", - "run", - "ffi", - "hrtime", -]; - -for (const name of permissions) { - Deno.test({ - name, - permissions: { - [name]: true, - }, - fn() { - unreachable(); - }, - }); -} diff --git a/cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out b/cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out deleted file mode 100644 index 37fb0a319..000000000 --- a/cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out +++ /dev/null @@ -1,19 +0,0 @@ -Check [WILDCARD]test/ops_sanitizer_closed_inside_started_before.ts -running 1 test from ./test/ops_sanitizer_closed_inside_started_before.ts -test 1 ... FAILED [WILDCARD] - - ERRORS - -test 1 => ./test/ops_sanitizer_closed_inside_started_before.ts:[WILDCARD] -error: Leaking async ops: - - 1 async operation to sleep for a duration was started before this test, but was completed during the test. Async operations should not complete in a test if they were not started in that test. This is often caused by not cancelling a `setTimeout` or `setInterval` call. The operation was started here: - at [WILDCARD] - at [WILDCARD]/cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts:[WILDCARD] - - FAILURES - -test 1 => ./test/ops_sanitizer_closed_inside_started_before.ts:[WILDCARD] - -FAILED | 0 passed | 1 failed [WILDCARD] - -error: Test failed diff --git a/cli/tests/testdata/test/ops_sanitizer_missing_details.ts b/cli/tests/testdata/test/ops_sanitizer_missing_details.ts deleted file mode 100644 index e3b07d77a..000000000 --- a/cli/tests/testdata/test/ops_sanitizer_missing_details.ts +++ /dev/null @@ -1,10 +0,0 @@ -// https://github.com/denoland/deno/issues/13729 -// https://github.com/denoland/deno/issues/13938 -import { writeAll } from "../../../../test_util/std/streams/write_all.ts"; - -Deno.test("test 1", { permissions: { write: true, read: true } }, async () => { - const tmpFile = await Deno.makeTempFile(); - const file = await Deno.open(tmpFile, { write: true }); - const buf = new Uint8Array(new Array(1_000_000).fill(1)); - writeAll(file, buf); -}); diff --git a/cli/tests/testdata/test/ops_sanitizer_step_leak.out b/cli/tests/testdata/test/ops_sanitizer_step_leak.out deleted file mode 100644 index 296c5e573..000000000 --- a/cli/tests/testdata/test/ops_sanitizer_step_leak.out +++ /dev/null @@ -1,10 +0,0 @@ -Check [WILDCARD]/cli/tests/testdata/test/ops_sanitizer_step_leak.ts -running 1 test from ./cli/tests/testdata/test/ops_sanitizer_step_leak.ts -timeout ... - step ... ok [WILDCARD] -------- output ------- -done ------ output end ----- -timeout ... ok [WILDCARD] - -ok | 1 passed (1 step) | 0 failed [WILDCARD]
\ No newline at end of file diff --git a/cli/tests/testdata/workers/deno_worker.ts b/cli/tests/testdata/workers/deno_worker.ts deleted file mode 100644 index eccdab5b0..000000000 --- a/cli/tests/testdata/workers/deno_worker.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { assert } from "../../../../test_util/std/assert/mod.ts"; - -onmessage = function (e) { - if (typeof self.Deno === "undefined") { - throw new Error("Deno namespace not available in worker"); - } - - assert(!Object.isFrozen(self.Deno)); - - const desc = Object.getOwnPropertyDescriptor(self, "Deno"); - assert(desc); - assert(desc.configurable); - assert(!desc.writable); - - postMessage(e.data); -}; diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts deleted file mode 100644 index 84e94de0d..000000000 --- a/cli/tests/unit/fetch_test.ts +++ /dev/null @@ -1,2071 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertRejects, - assertThrows, - delay, - fail, - unimplemented, -} from "./test_util.ts"; -import { Buffer } from "@test_util/std/io/buffer.ts"; - -const listenPort = 4506; - -Deno.test( - { permissions: { net: true } }, - async function fetchRequiresOneArgument() { - await assertRejects( - fetch as unknown as () => Promise<void>, - TypeError, - ); - }, -); - -Deno.test({ permissions: { net: true } }, async function fetchProtocolError() { - await assertRejects( - async () => { - await fetch("ftp://localhost:21/a/file"); - }, - TypeError, - "not supported", - ); -}); - -function findClosedPortInRange( - minPort: number, - maxPort: number, -): number | never { - let port = minPort; - - // If we hit the return statement of this loop - // that means that we did not throw an - // AddrInUse error when we executed Deno.listen. - while (port < maxPort) { - try { - const listener = Deno.listen({ port }); - listener.close(); - return port; - } catch (_e) { - port++; - } - } - - unimplemented( - `No available ports between ${minPort} and ${maxPort} to test fetch`, - ); -} - -Deno.test( - // TODO(bartlomieju): reenable this test - // https://github.com/denoland/deno/issues/18350 - { ignore: Deno.build.os === "windows", permissions: { net: true } }, - async function fetchConnectionError() { - const port = findClosedPortInRange(4000, 9999); - await assertRejects( - async () => { - await fetch(`http://localhost:${port}`); - }, - TypeError, - "error trying to connect", - ); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchDnsError() { - await assertRejects( - async () => { - await fetch("http://nil/"); - }, - TypeError, - "error trying to connect", - ); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInvalidUriError() { - await assertRejects( - async () => { - await fetch("http://<invalid>/"); - }, - TypeError, - ); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchMalformedUriError() { - await assertRejects( - async () => { - const url = new URL("http://{{google/"); - await fetch(url); - }, - TypeError, - ); - }, -); - -Deno.test({ permissions: { net: true } }, async function fetchJsonSuccess() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - const json = await response.json(); - assertEquals(json.name, "deno"); -}); - -Deno.test({ permissions: { net: false } }, async function fetchPerm() { - await assertRejects(async () => { - await fetch("http://localhost:4545/assets/fixture.json"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { net: true } }, async function fetchUrl() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - assertEquals(response.url, "http://localhost:4545/assets/fixture.json"); - const _json = await response.json(); -}); - -Deno.test({ permissions: { net: true } }, async function fetchURL() { - const response = await fetch( - new URL("http://localhost:4545/assets/fixture.json"), - ); - assertEquals(response.url, "http://localhost:4545/assets/fixture.json"); - const _json = await response.json(); -}); - -Deno.test({ permissions: { net: true } }, async function fetchHeaders() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - const headers = response.headers; - assertEquals(headers.get("Content-Type"), "application/json"); - const _json = await response.json(); -}); - -Deno.test({ permissions: { net: true } }, async function fetchBlob() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - const headers = response.headers; - const blob = await response.blob(); - assertEquals(blob.type, headers.get("Content-Type")); - assertEquals(blob.size, Number(headers.get("Content-Length"))); -}); - -Deno.test( - { permissions: { net: true } }, - async function fetchBodyUsedReader() { - const response = await fetch( - "http://localhost:4545/assets/fixture.json", - ); - assert(response.body !== null); - - const reader = response.body.getReader(); - // Getting a reader should lock the stream but does not consume the body - // so bodyUsed should not be true - assertEquals(response.bodyUsed, false); - reader.releaseLock(); - await response.json(); - assertEquals(response.bodyUsed, true); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchBodyUsedCancelStream() { - const response = await fetch( - "http://localhost:4545/assets/fixture.json", - ); - assert(response.body !== null); - - assertEquals(response.bodyUsed, false); - const promise = response.body.cancel(); - assertEquals(response.bodyUsed, true); - await promise; - }, -); - -Deno.test({ permissions: { net: true } }, async function fetchAsyncIterator() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - const headers = response.headers; - - assert(response.body !== null); - let total = 0; - for await (const chunk of response.body) { - assert(chunk instanceof Uint8Array); - total += chunk.length; - } - - assertEquals(total, Number(headers.get("Content-Length"))); -}); - -Deno.test({ permissions: { net: true } }, async function fetchBodyReader() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - const headers = response.headers; - assert(response.body !== null); - const reader = response.body.getReader(); - let total = 0; - while (true) { - const { done, value } = await reader.read(); - if (done) break; - assert(value); - assert(value instanceof Uint8Array); - total += value.length; - } - - assertEquals(total, Number(headers.get("Content-Length"))); -}); - -Deno.test( - { permissions: { net: true } }, - async function fetchBodyReaderBigBody() { - const data = "a".repeat(10 << 10); // 10mb - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: data, - }); - assert(response.body !== null); - const reader = await response.body.getReader(); - let total = 0; - while (true) { - const { done, value } = await reader.read(); - if (done) break; - assert(value); - total += value.length; - } - - assertEquals(total, data.length); - }, -); - -Deno.test({ permissions: { net: true } }, async function responseClone() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - const response1 = response.clone(); - assert(response !== response1); - assertEquals(response.status, response1.status); - assertEquals(response.statusText, response1.statusText); - const u8a = new Uint8Array(await response.arrayBuffer()); - const u8a1 = new Uint8Array(await response1.arrayBuffer()); - for (let i = 0; i < u8a.byteLength; i++) { - assertEquals(u8a[i], u8a1[i]); - } -}); - -Deno.test( - { permissions: { net: true } }, - async function fetchMultipartFormDataSuccess() { - const response = await fetch( - "http://localhost:4545/multipart_form_data.txt", - ); - const formData = await response.formData(); - assert(formData.has("field_1")); - assertEquals(formData.get("field_1")!.toString(), "value_1 \r\n"); - assert(formData.has("field_2")); - const file = formData.get("field_2") as File; - assertEquals(file.name, "file.js"); - - assertEquals(await file.text(), `console.log("Hi")`); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchMultipartFormBadContentType() { - const response = await fetch( - "http://localhost:4545/multipart_form_bad_content_type", - ); - assert(response.body !== null); - - await assertRejects( - async () => { - await response.formData(); - }, - TypeError, - "Body can not be decoded as form data", - ); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchURLEncodedFormDataSuccess() { - const response = await fetch( - "http://localhost:4545/subdir/form_urlencoded.txt", - ); - const formData = await response.formData(); - assert(formData.has("field_1")); - assertEquals(formData.get("field_1")!.toString(), "Hi"); - assert(formData.has("field_2")); - assertEquals(formData.get("field_2")!.toString(), "<Deno>"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitFormDataBinaryFileBody() { - // Some random bytes - // deno-fmt-ignore - const binaryFile = new Uint8Array([108,2,0,0,145,22,162,61,157,227,166,77,138,75,180,56,119,188,177,183]); - const response = await fetch("http://localhost:4545/echo_multipart_file", { - method: "POST", - body: binaryFile, - }); - const resultForm = await response.formData(); - const resultFile = resultForm.get("file") as File; - - assertEquals(resultFile.type, "application/octet-stream"); - assertEquals(resultFile.name, "file.bin"); - assertEquals(new Uint8Array(await resultFile.arrayBuffer()), binaryFile); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitFormDataMultipleFilesBody() { - const files = [ - { - // deno-fmt-ignore - content: new Uint8Array([137,80,78,71,13,10,26,10, 137, 1, 25]), - type: "image/png", - name: "image", - fileName: "some-image.png", - }, - { - // deno-fmt-ignore - content: new Uint8Array([108,2,0,0,145,22,162,61,157,227,166,77,138,75,180,56,119,188,177,183]), - name: "file", - fileName: "file.bin", - expectedType: "application/octet-stream", - }, - { - content: new TextEncoder().encode("deno land"), - type: "text/plain", - name: "text", - fileName: "deno.txt", - }, - ]; - const form = new FormData(); - form.append("field", "value"); - for (const file of files) { - form.append( - file.name, - new Blob([file.content], { type: file.type }), - file.fileName, - ); - } - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: form, - }); - const resultForm = await response.formData(); - assertEquals(form.get("field"), resultForm.get("field")); - for (const file of files) { - const inputFile = form.get(file.name) as File; - const resultFile = resultForm.get(file.name) as File; - assertEquals(inputFile.size, resultFile.size); - assertEquals(inputFile.name, resultFile.name); - assertEquals(file.expectedType || file.type, resultFile.type); - assertEquals( - new Uint8Array(await resultFile.arrayBuffer()), - file.content, - ); - } - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithRedirection() { - const response = await fetch("http://localhost:4546/assets/hello.txt"); - assertEquals(response.status, 200); - assertEquals(response.statusText, "OK"); - assertEquals(response.url, "http://localhost:4545/assets/hello.txt"); - const body = await response.text(); - assert(body.includes("Hello world!")); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithRelativeRedirection() { - const response = await fetch( - "http://localhost:4545/run/001_hello.js", - ); - assertEquals(response.status, 200); - assertEquals(response.statusText, "OK"); - const body = await response.text(); - assert(body.includes("Hello")); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithRelativeRedirectionUrl() { - const cases = [ - ["end", "http://localhost:4550/a/b/end"], - ["/end", "http://localhost:4550/end"], - ]; - for (const [loc, redUrl] of cases) { - const response = await fetch("http://localhost:4550/a/b/c", { - headers: new Headers([["x-location", loc]]), - }); - assertEquals(response.url, redUrl); - assertEquals(response.redirected, true); - assertEquals(response.status, 404); - assertEquals(await response.text(), ""); - } - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithInfRedirection() { - await assertRejects( - () => fetch("http://localhost:4549"), - TypeError, - "redirect", - ); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitStringBody() { - const data = "Hello World"; - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: data, - }); - const text = await response.text(); - assertEquals(text, data); - assert(response.headers.get("content-type")!.startsWith("text/plain")); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchRequestInitStringBody() { - const data = "Hello World"; - const req = new Request("http://localhost:4545/echo_server", { - method: "POST", - body: data, - }); - const response = await fetch(req); - const text = await response.text(); - assertEquals(text, data); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchSeparateInit() { - // related to: https://github.com/denoland/deno/issues/10396 - const req = new Request("http://localhost:4545/run/001_hello.js"); - const init = { - method: "GET", - }; - req.headers.set("foo", "bar"); - const res = await fetch(req, init); - assertEquals(res.status, 200); - await res.text(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitTypedArrayBody() { - const data = "Hello World"; - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: new TextEncoder().encode(data), - }); - const text = await response.text(); - assertEquals(text, data); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitArrayBufferBody() { - const data = "Hello World"; - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: new TextEncoder().encode(data).buffer, - }); - const text = await response.text(); - assertEquals(text, data); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitURLSearchParamsBody() { - const data = "param1=value1¶m2=value2"; - const params = new URLSearchParams(data); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: params, - }); - const text = await response.text(); - assertEquals(text, data); - assert( - response.headers - .get("content-type")! - .startsWith("application/x-www-form-urlencoded"), - ); - }, -); - -Deno.test({ permissions: { net: true } }, async function fetchInitBlobBody() { - const data = "const a = 1 🦕"; - const blob = new Blob([data], { - type: "text/javascript", - }); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: blob, - }); - const text = await response.text(); - assertEquals(text, data); - assert(response.headers.get("content-type")!.startsWith("text/javascript")); -}); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitFormDataBody() { - const form = new FormData(); - form.append("field", "value"); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: form, - }); - const resultForm = await response.formData(); - assertEquals(form.get("field"), resultForm.get("field")); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitFormDataBlobFilenameBody() { - const form = new FormData(); - form.append("field", "value"); - form.append( - "file", - new Blob([new TextEncoder().encode("deno")]), - "file name", - ); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: form, - }); - const resultForm = await response.formData(); - assertEquals(form.get("field"), resultForm.get("field")); - const file = resultForm.get("file"); - assert(file instanceof File); - assertEquals(file.name, "file name"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitFormDataFileFilenameBody() { - const form = new FormData(); - form.append("field", "value"); - form.append( - "file", - new File([new Blob([new TextEncoder().encode("deno")])], "file name"), - ); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: form, - }); - const resultForm = await response.formData(); - assertEquals(form.get("field"), resultForm.get("field")); - const file = resultForm.get("file"); - assert(file instanceof File); - assertEquals(file.name, "file name"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchInitFormDataTextFileBody() { - const fileContent = "deno land"; - const form = new FormData(); - form.append("field", "value"); - form.append( - "file", - new Blob([new TextEncoder().encode(fileContent)], { - type: "text/plain", - }), - "deno.txt", - ); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: form, - }); - const resultForm = await response.formData(); - assertEquals(form.get("field"), resultForm.get("field")); - - const file = form.get("file") as File; - const resultFile = resultForm.get("file") as File; - - assertEquals(file.size, resultFile.size); - assertEquals(file.name, resultFile.name); - assertEquals(file.type, resultFile.type); - assertEquals(await file.text(), await resultFile.text()); - }, -); - -Deno.test({ permissions: { net: true } }, async function fetchUserAgent() { - const data = "Hello World"; - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: new TextEncoder().encode(data), - }); - assertEquals(response.headers.get("user-agent"), `Deno/${Deno.version.deno}`); - await response.text(); -}); - -function bufferServer(addr: string): Promise<Buffer> { - const [hostname, port] = addr.split(":"); - const listener = Deno.listen({ - hostname, - port: Number(port), - }) as Deno.Listener; - return listener.accept().then(async (conn: Deno.Conn) => { - const buf = new Buffer(); - const p1 = buf.readFrom(conn); - const p2 = conn.write( - new TextEncoder().encode( - "HTTP/1.0 404 Not Found\r\nContent-Length: 2\r\n\r\nNF", - ), - ); - // Wait for both an EOF on the read side of the socket and for the write to - // complete before closing it. Due to keep-alive, the EOF won't be sent - // until the Connection close (HTTP/1.0) response, so readFrom() can't - // proceed write. Conversely, if readFrom() is async, waiting for the - // write() to complete is not a guarantee that we've read the incoming - // request. - await Promise.all([p1, p2]); - conn.close(); - listener.close(); - return buf; - }); -} - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchRequest() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Hello", "World"], - ["Foo", "Bar"], - ], - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "content-length: 0\r\n", - "hello: World\r\n", - "foo: Bar\r\n", - "accept: */*\r\n", - "accept-language: *\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n", - `host: ${addr}\r\n\r\n`, - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchRequestAcceptHeaders() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Accept", "text/html"], - ["Accept-Language", "en-US"], - ], - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "content-length: 0\r\n", - "accept: text/html\r\n", - "accept-language: en-US\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n", - `host: ${addr}\r\n\r\n`, - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchPostBodyString() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const body = "hello world"; - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Hello", "World"], - ["Foo", "Bar"], - ], - body, - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "hello: World\r\n", - "foo: Bar\r\n", - "content-type: text/plain;charset=UTF-8\r\n", - "accept: */*\r\n", - "accept-language: *\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n", - `host: ${addr}\r\n`, - `content-length: ${body.length}\r\n\r\n`, - body, - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchPostBodyTypedArray() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const bodyStr = "hello world"; - const body = new TextEncoder().encode(bodyStr); - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Hello", "World"], - ["Foo", "Bar"], - ], - body, - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "hello: World\r\n", - "foo: Bar\r\n", - "accept: */*\r\n", - "accept-language: *\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n", - `host: ${addr}\r\n`, - `content-length: ${body.byteLength}\r\n\r\n`, - bodyStr, - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchUserSetContentLength() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Content-Length", "10"], - ], - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "content-length: 0\r\n", - "accept: */*\r\n", - "accept-language: *\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n", - `host: ${addr}\r\n\r\n`, - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchUserSetTransferEncoding() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Transfer-Encoding", "chunked"], - ], - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "content-length: 0\r\n", - `host: ${addr}\r\n`, - "accept: */*\r\n", - "accept-language: *\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n\r\n", - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithNonAsciiRedirection() { - const response = await fetch("http://localhost:4545/non_ascii_redirect", { - redirect: "manual", - }); - assertEquals(response.status, 301); - assertEquals(response.headers.get("location"), "/redirect®"); - await response.text(); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithManualRedirection() { - const response = await fetch("http://localhost:4546/", { - redirect: "manual", - }); // will redirect to http://localhost:4545/ - assertEquals(response.status, 301); - assertEquals(response.url, "http://localhost:4546/"); - assertEquals(response.type, "basic"); - assertEquals(response.headers.get("Location"), "http://localhost:4545/"); - await response.body!.cancel(); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchWithErrorRedirection() { - await assertRejects( - () => - fetch("http://localhost:4546/", { - redirect: "error", - }), - TypeError, - "redirect", - ); - }, -); - -Deno.test(function responseRedirect() { - const redir = Response.redirect("http://example.com/newLocation", 301); - assertEquals(redir.status, 301); - assertEquals(redir.statusText, ""); - assertEquals(redir.url, ""); - assertEquals( - redir.headers.get("Location"), - "http://example.com/newLocation", - ); - assertEquals(redir.type, "default"); -}); - -Deno.test(function responseRedirectTakeURLObjectAsParameter() { - const redir = Response.redirect(new URL("https://example.com/")); - assertEquals( - redir.headers.get("Location"), - "https://example.com/", - ); -}); - -Deno.test(async function responseWithoutBody() { - const response = new Response(); - assertEquals(await response.arrayBuffer(), new ArrayBuffer(0)); - const blob = await response.blob(); - assertEquals(blob.size, 0); - assertEquals(await blob.arrayBuffer(), new ArrayBuffer(0)); - assertEquals(await response.text(), ""); - await assertRejects(async () => { - await response.json(); - }); -}); - -Deno.test({ permissions: { net: true } }, async function fetchBodyReadTwice() { - const response = await fetch("http://localhost:4545/assets/fixture.json"); - - // Read body - const _json = await response.json(); - assert(_json); - - // All calls after the body was consumed, should fail - const methods = ["json", "text", "formData", "arrayBuffer"] as const; - for (const method of methods) { - try { - await response[method](); - fail( - "Reading body multiple times should failed, the stream should've been locked.", - ); - } catch { - // pass - } - } -}); - -Deno.test( - { permissions: { net: true } }, - async function fetchBodyReaderAfterRead() { - const response = await fetch( - "http://localhost:4545/assets/fixture.json", - ); - assert(response.body !== null); - const reader = await response.body.getReader(); - while (true) { - const { done, value } = await reader.read(); - if (done) break; - assert(value); - } - - try { - response.body.getReader(); - fail("The stream should've been locked."); - } catch { - // pass - } - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchBodyReaderWithCancelAndNewReader() { - const data = "a".repeat(1 << 10); - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: data, - }); - assert(response.body !== null); - const firstReader = await response.body.getReader(); - - // Acquire reader without reading & release - await firstReader.releaseLock(); - - const reader = await response.body.getReader(); - - let total = 0; - while (true) { - const { done, value } = await reader.read(); - if (done) break; - assert(value); - total += value.length; - } - - assertEquals(total, data.length); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchBodyReaderWithReadCancelAndNewReader() { - const data = "a".repeat(1 << 10); - - const response = await fetch("http://localhost:4545/echo_server", { - method: "POST", - body: data, - }); - assert(response.body !== null); - const firstReader = await response.body.getReader(); - - // Do one single read with first reader - const { value: firstValue } = await firstReader.read(); - assert(firstValue); - await firstReader.releaseLock(); - - // Continue read with second reader - const reader = await response.body.getReader(); - let total = firstValue.length || 0; - while (true) { - const { done, value } = await reader.read(); - if (done) break; - assert(value); - total += value.length; - } - assertEquals(total, data.length); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchResourceCloseAfterStreamCancel() { - const res = await fetch("http://localhost:4545/assets/fixture.json"); - assert(res.body !== null); - - // After ReadableStream.cancel is called, resource handle must be closed - // The test should not fail with: Test case is leaking resources - await res.body.cancel(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchNullBodyStatus() { - const nullBodyStatus = [101, 204, 205, 304]; - - for (const status of nullBodyStatus) { - const headers = new Headers([["x-status", String(status)]]); - const res = await fetch("http://localhost:4545/echo_server", { - body: "deno", - method: "POST", - headers, - }); - assertEquals(res.body, null); - assertEquals(res.status, status); - } - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchResponseContentLength() { - const body = new Uint8Array(2 ** 16); - const headers = new Headers([["content-type", "application/octet-stream"]]); - const res = await fetch("http://localhost:4545/echo_server", { - body: body, - method: "POST", - headers, - }); - assertEquals(Number(res.headers.get("content-length")), body.byteLength); - - const blob = await res.blob(); - // Make sure Body content-type is correctly set - assertEquals(blob.type, "application/octet-stream"); - assertEquals(blob.size, body.byteLength); - }, -); - -Deno.test(function fetchResponseConstructorNullBody() { - const nullBodyStatus = [204, 205, 304]; - - for (const status of nullBodyStatus) { - try { - new Response("deno", { status }); - fail("Response with null body status cannot have body"); - } catch (e) { - assert(e instanceof TypeError); - assertEquals( - e.message, - "Response with null body status cannot have body", - ); - } - } -}); - -Deno.test(function fetchResponseConstructorInvalidStatus() { - const invalidStatus = [100, 600, 199, null, "", NaN]; - - for (const status of invalidStatus) { - try { - // deno-lint-ignore ban-ts-comment - // @ts-ignore - new Response("deno", { status }); - fail(`Invalid status: ${status}`); - } catch (e) { - assert(e instanceof RangeError); - assert( - e.message.endsWith( - "is not equal to 101 and outside the range [200, 599].", - ), - ); - } - } -}); - -Deno.test(function fetchResponseEmptyConstructor() { - const response = new Response(); - assertEquals(response.status, 200); - assertEquals(response.body, null); - assertEquals(response.type, "default"); - assertEquals(response.url, ""); - assertEquals(response.redirected, false); - assertEquals(response.ok, true); - assertEquals(response.bodyUsed, false); - assertEquals([...response.headers], []); -}); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchCustomHttpClientParamCertificateSuccess(): Promise< - void - > { - const caCert = Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const response = await fetch("https://localhost:5545/assets/fixture.json", { - client, - }); - const json = await response.json(); - assertEquals(json.name, "deno"); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - function createHttpClientAcceptPoolIdleTimeout() { - const client = Deno.createHttpClient({ - poolIdleTimeout: 1000, - }); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchCustomClientUserAgent(): Promise< - void - > { - const data = "Hello World"; - const client = Deno.createHttpClient({}); - const response = await fetch("http://localhost:4545/echo_server", { - client, - method: "POST", - body: new TextEncoder().encode(data), - }); - assertEquals( - response.headers.get("user-agent"), - `Deno/${Deno.version.deno}`, - ); - await response.text(); - client.close(); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function fetchPostBodyReadableStream() { - const addr = `127.0.0.1:${listenPort}`; - const bufPromise = bufferServer(addr); - const stream = new TransformStream(); - const writer = stream.writable.getWriter(); - // transformer writes don't resolve until they are read, so awaiting these - // will cause the transformer to hang, as the suspend the transformer, it - // is also illogical to await for the reads, as that is the whole point of - // streams is to have a "queue" which gets drained... - writer.write(new TextEncoder().encode("hello ")); - writer.write(new TextEncoder().encode("world")); - writer.close(); - const response = await fetch(`http://${addr}/blah`, { - method: "POST", - headers: [ - ["Hello", "World"], - ["Foo", "Bar"], - ], - body: stream.readable, - }); - await response.arrayBuffer(); - assertEquals(response.status, 404); - assertEquals(response.headers.get("Content-Length"), "2"); - - const actual = new TextDecoder().decode((await bufPromise).bytes()); - const expected = [ - "POST /blah HTTP/1.1\r\n", - "hello: World\r\n", - "foo: Bar\r\n", - "accept: */*\r\n", - "accept-language: *\r\n", - `user-agent: Deno/${Deno.version.deno}\r\n`, - "accept-encoding: gzip, br\r\n", - `host: ${addr}\r\n`, - `transfer-encoding: chunked\r\n\r\n`, - "B\r\n", - "hello world\r\n", - "0\r\n\r\n", - ].join(""); - assertEquals(actual, expected); - }, -); - -Deno.test({}, function fetchWritableRespProps() { - const original = new Response("https://deno.land", { - status: 404, - headers: { "x-deno": "foo" }, - }); - const new_ = new Response("https://deno.land", original); - assertEquals(original.status, new_.status); - assertEquals(new_.headers.get("x-deno"), "foo"); -}); - -Deno.test( - { permissions: { net: true } }, - async function fetchFilterOutCustomHostHeader(): Promise< - void - > { - const addr = `127.0.0.1:${listenPort}`; - const [hostname, port] = addr.split(":"); - const listener = Deno.listen({ - hostname, - port: Number(port), - }) as Deno.Listener; - - let httpConn: Deno.HttpConn; - listener.accept().then(async (conn: Deno.Conn) => { - httpConn = Deno.serveHttp(conn); - - await httpConn.nextRequest() - .then(async (requestEvent: Deno.RequestEvent | null) => { - const hostHeader = requestEvent?.request.headers.get("Host"); - const headersToReturn = hostHeader - ? { "Host": hostHeader } - : undefined; - - await requestEvent?.respondWith( - new Response("", { - status: 200, - headers: headersToReturn, - }), - ); - }); - }); - - const response = await fetch(`http://${addr}/`, { - headers: { "Host": "example.com" }, - }); - await response.text(); - listener.close(); - httpConn!.close(); - - assertEquals(response.headers.get("Host"), addr); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchNoServerReadableStreamBody() { - const completed = Promise.withResolvers<void>(); - const failed = Promise.withResolvers<void>(); - const body = new ReadableStream({ - start(controller) { - controller.enqueue(new Uint8Array([1])); - setTimeout(async () => { - // This is technically a race. If the fetch has failed by this point, the enqueue will - // throw. If not, it will succeed. Windows appears to take a while to time out the fetch, - // so we will just wait for that here before we attempt to enqueue so it's consistent - // across platforms. - await failed.promise; - assertThrows(() => controller.enqueue(new Uint8Array([2]))); - completed.resolve(); - }, 1000); - }, - }); - const nonExistentHostname = "http://localhost:47582"; - await assertRejects(async () => { - await fetch(nonExistentHostname, { body, method: "POST" }); - }, TypeError); - failed.resolve(); - await completed.promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchHeadRespBody() { - const res = await fetch("http://localhost:4545/echo_server", { - method: "HEAD", - }); - assertEquals(res.body, null); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function fetchClientCertWrongPrivateKey(): Promise<void> { - await assertRejects(async () => { - const client = Deno.createHttpClient({ - certChain: "bad data", - privateKey: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.key", - ), - }); - await fetch("https://localhost:5552/assets/fixture.json", { - client, - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function fetchClientCertBadPrivateKey(): Promise<void> { - await assertRejects(async () => { - const client = Deno.createHttpClient({ - certChain: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.crt", - ), - privateKey: "bad data", - }); - await fetch("https://localhost:5552/assets/fixture.json", { - client, - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function fetchClientCertNotPrivateKey(): Promise<void> { - await assertRejects(async () => { - const client = Deno.createHttpClient({ - certChain: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.crt", - ), - privateKey: "", - }); - await fetch("https://localhost:5552/assets/fixture.json", { - client, - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function fetchCustomClientPrivateKey(): Promise< - void - > { - const data = "Hello World"; - const caCert = await Deno.readTextFile("cli/tests/testdata/tls/RootCA.crt"); - const client = Deno.createHttpClient({ - certChain: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.crt", - ), - privateKey: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.key", - ), - caCerts: [caCert], - }); - const response = await fetch("https://localhost:5552/echo_server", { - client, - method: "POST", - body: new TextEncoder().encode(data), - }); - assertEquals( - response.headers.get("user-agent"), - `Deno/${Deno.version.deno}`, - ); - await response.text(); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchAbortWhileUploadStreaming(): Promise<void> { - const abortController = new AbortController(); - try { - await fetch( - "http://localhost:5552/echo_server", - { - method: "POST", - body: new ReadableStream({ - pull(controller) { - abortController.abort(); - controller.enqueue(new Uint8Array([1, 2, 3, 4])); - }, - }), - signal: abortController.signal, - }, - ); - fail("Fetch didn't reject."); - } catch (error) { - assert(error instanceof DOMException); - assertEquals(error.name, "AbortError"); - assertEquals(error.message, "The signal has been aborted"); - } - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchAbortWhileUploadStreamingWithReason(): Promise<void> { - const abortController = new AbortController(); - const abortReason = new Error(); - try { - await fetch( - "http://localhost:5552/echo_server", - { - method: "POST", - body: new ReadableStream({ - pull(controller) { - abortController.abort(abortReason); - controller.enqueue(new Uint8Array([1, 2, 3, 4])); - }, - }), - signal: abortController.signal, - }, - ); - fail("Fetch didn't reject."); - } catch (error) { - assertEquals(error, abortReason); - } - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchAbortWhileUploadStreamingWithPrimitiveReason(): Promise< - void - > { - const abortController = new AbortController(); - try { - await fetch( - "http://localhost:5552/echo_server", - { - method: "POST", - body: new ReadableStream({ - pull(controller) { - abortController.abort("Abort reason"); - controller.enqueue(new Uint8Array([1, 2, 3, 4])); - }, - }), - signal: abortController.signal, - }, - ); - fail("Fetch didn't reject."); - } catch (error) { - assertEquals(error, "Abort reason"); - } - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchHeaderValueShouldNotPanic() { - for (let i = 0; i < 0x21; i++) { - if (i === 0x09 || i === 0x0A || i === 0x0D || i === 0x20) { - continue; // these header value will be normalized, will not cause an error. - } - // ensure there will be an error instead of panic. - await assertRejects(() => - fetch("http://localhost:4545/echo_server", { - method: "HEAD", - headers: { "val": String.fromCharCode(i) }, - }), TypeError); - } - await assertRejects(() => - fetch("http://localhost:4545/echo_server", { - method: "HEAD", - headers: { "val": String.fromCharCode(127) }, - }), TypeError); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchHeaderNameShouldNotPanic() { - const validTokens = - "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUWVXYZ^_`abcdefghijklmnopqrstuvwxyz|~" - .split(""); - for (let i = 0; i <= 255; i++) { - const token = String.fromCharCode(i); - if (validTokens.includes(token)) { - continue; - } - // ensure there will be an error instead of panic. - await assertRejects(() => - fetch("http://localhost:4545/echo_server", { - method: "HEAD", - headers: { [token]: "value" }, - }), TypeError); - } - await assertRejects(() => - fetch("http://localhost:4545/echo_server", { - method: "HEAD", - headers: { "": "value" }, - }), TypeError); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchSupportsHttpsOverIpAddress() { - const caCert = await Deno.readTextFile("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const res = await fetch("https://localhost:5546/http_version", { client }); - assert(res.ok); - assertEquals(await res.text(), "HTTP/1.1"); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchSupportsHttp1Only() { - const caCert = await Deno.readTextFile("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const res = await fetch("https://localhost:5546/http_version", { client }); - assert(res.ok); - assertEquals(await res.text(), "HTTP/1.1"); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchSupportsHttp2() { - const caCert = await Deno.readTextFile("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const res = await fetch("https://localhost:5547/http_version", { client }); - assert(res.ok); - assertEquals(await res.text(), "HTTP/2.0"); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchForceHttp1OnHttp2Server() { - const client = Deno.createHttpClient({ http2: false, http1: true }); - await assertRejects( - () => fetch("http://localhost:5549/http_version", { client }), - TypeError, - ); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchForceHttp2OnHttp1Server() { - const client = Deno.createHttpClient({ http2: true, http1: false }); - await assertRejects( - () => fetch("http://localhost:5548/http_version", { client }), - TypeError, - ); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function fetchPrefersHttp2() { - const caCert = await Deno.readTextFile("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const res = await fetch("https://localhost:5545/http_version", { client }); - assert(res.ok); - assertEquals(await res.text(), "HTTP/2.0"); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - async function createHttpClientAllowHost() { - const client = Deno.createHttpClient({ - allowHost: true, - }); - const res = await fetch("http://localhost:4545/echo_server", { - headers: { - "host": "example.com", - }, - client, - }); - assert(res.ok); - assertEquals(res.headers.get("host"), "example.com"); - await res.body?.cancel(); - client.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function createHttpClientExplicitResourceManagement() { - using client = Deno.createHttpClient({}); - const response = await fetch("http://localhost:4545/assets/fixture.json", { - client, - }); - const json = await response.json(); - assertEquals(json.name, "deno"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function createHttpClientExplicitResourceManagementDoubleClose() { - using client = Deno.createHttpClient({}); - const response = await fetch("http://localhost:4545/assets/fixture.json", { - client, - }); - const json = await response.json(); - assertEquals(json.name, "deno"); - // Close the client even though we declared it with `using` to confirm that - // the cleanup done as per `Symbol.dispose` will not throw any errors. - client.close(); - }, -); - -Deno.test({ permissions: { read: false } }, async function fetchFilePerm() { - await assertRejects(async () => { - await fetch(import.meta.resolve("../testdata/subdir/json_1.json")); - }, Deno.errors.PermissionDenied); -}); - -Deno.test( - { permissions: { read: false } }, - async function fetchFilePermDoesNotExist() { - await assertRejects(async () => { - await fetch(import.meta.resolve("./bad.json")); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function fetchFileBadMethod() { - await assertRejects( - async () => { - await fetch( - import.meta.resolve("../testdata/subdir/json_1.json"), - { - method: "POST", - }, - ); - }, - TypeError, - "Fetching files only supports the GET method. Received POST.", - ); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function fetchFileDoesNotExist() { - await assertRejects( - async () => { - await fetch(import.meta.resolve("./bad.json")); - }, - TypeError, - ); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function fetchFile() { - const res = await fetch( - import.meta.resolve("../testdata/subdir/json_1.json"), - ); - assert(res.ok); - const fixture = await Deno.readTextFile( - "cli/tests/testdata/subdir/json_1.json", - ); - assertEquals(await res.text(), fixture); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchContentLengthPost() { - const response = await fetch("http://localhost:4545/content_length", { - method: "POST", - }); - const length = await response.text(); - assertEquals(length, 'Some("0")'); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchContentLengthPut() { - const response = await fetch("http://localhost:4545/content_length", { - method: "PUT", - }); - const length = await response.text(); - assertEquals(length, 'Some("0")'); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchContentLengthPatch() { - const response = await fetch("http://localhost:4545/content_length", { - method: "PATCH", - }); - const length = await response.text(); - assertEquals(length, "None"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchContentLengthPostWithStringBody() { - const response = await fetch("http://localhost:4545/content_length", { - method: "POST", - body: "Hey!", - }); - const length = await response.text(); - assertEquals(length, 'Some("4")'); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchContentLengthPostWithBufferBody() { - const response = await fetch("http://localhost:4545/content_length", { - method: "POST", - body: new TextEncoder().encode("Hey!"), - }); - const length = await response.text(); - assertEquals(length, 'Some("4")'); - }, -); - -Deno.test(async function staticResponseJson() { - const data = { hello: "world" }; - const resp = Response.json(data); - assertEquals(resp.status, 200); - assertEquals(resp.headers.get("content-type"), "application/json"); - const res = await resp.json(); - assertEquals(res, data); -}); - -function invalidServer(addr: string, body: Uint8Array): Deno.Listener { - const [hostname, port] = addr.split(":"); - const listener = Deno.listen({ - hostname, - port: Number(port), - }) as Deno.Listener; - - (async () => { - for await (const conn of listener) { - const p1 = conn.read(new Uint8Array(2 ** 14)); - const p2 = conn.write(body); - - await Promise.all([p1, p2]); - conn.close(); - } - })(); - - return listener; -} - -Deno.test( - { permissions: { net: true } }, - async function fetchWithInvalidContentLengthAndTransferEncoding(): Promise< - void - > { - const addr = `127.0.0.1:${listenPort}`; - const data = "a".repeat(10 << 10); - - const body = new TextEncoder().encode( - `HTTP/1.1 200 OK\r\nContent-Length: ${ - Math.round(data.length * 2) - }\r\nTransfer-Encoding: chunked\r\n\r\n${ - data.length.toString(16) - }\r\n${data}\r\n0\r\n\r\n`, - ); - - // if transfer-encoding is sent, content-length is ignored - // even if it has an invalid value (content-length > totalLength) - const listener = invalidServer(addr, body); - const response = await fetch(`http://${addr}/`); - - const res = await response.arrayBuffer(); - const buf = new TextEncoder().encode(data); - assertEquals(res.byteLength, buf.byteLength); - assertEquals(new Uint8Array(res), buf); - - listener.close(); - }, -); - -Deno.test( - // TODO(bartlomieju): reenable this test - // https://github.com/denoland/deno/issues/18350 - { ignore: Deno.build.os === "windows", permissions: { net: true } }, - async function fetchWithInvalidContentLength(): Promise< - void - > { - const addr = `127.0.0.1:${listenPort}`; - const data = "a".repeat(10 << 10); - - const body = new TextEncoder().encode( - `HTTP/1.1 200 OK\r\nContent-Length: ${ - Math.round(data.length / 2) - }\r\nContent-Length: ${data.length}\r\n\r\n${data}`, - ); - - // It should fail if multiple content-length headers with different values are sent - const listener = invalidServer(addr, body); - await assertRejects( - async () => { - await fetch(`http://${addr}/`); - }, - TypeError, - "invalid content-length parsed", - ); - - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchWithInvalidContentLength2(): Promise< - void - > { - const addr = `127.0.0.1:${listenPort}`; - const data = "a".repeat(10 << 10); - - const contentLength = data.length / 2; - const body = new TextEncoder().encode( - `HTTP/1.1 200 OK\r\nContent-Length: ${contentLength}\r\n\r\n${data}`, - ); - - const listener = invalidServer(addr, body); - const response = await fetch(`http://${addr}/`); - - // If content-length < totalLength, a maximum of content-length bytes - // should be returned. - const res = await response.arrayBuffer(); - const buf = new TextEncoder().encode(data); - assertEquals(res.byteLength, contentLength); - assertEquals(new Uint8Array(res), buf.subarray(contentLength)); - - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchWithInvalidContentLength3(): Promise< - void - > { - const addr = `127.0.0.1:${listenPort}`; - const data = "a".repeat(10 << 10); - - const contentLength = data.length * 2; - const body = new TextEncoder().encode( - `HTTP/1.1 200 OK\r\nContent-Length: ${contentLength}\r\n\r\n${data}`, - ); - - const listener = invalidServer(addr, body); - const response = await fetch(`http://${addr}/`); - // If content-length > totalLength, a maximum of content-length bytes - // should be returned. - await assertRejects( - async () => { - await response.arrayBuffer(); - }, - Error, - "end of file before message length reached", - ); - - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchBlobUrl(): Promise<void> { - const blob = new Blob(["ok"], { type: "text/plain" }); - const url = URL.createObjectURL(blob); - assert(url.startsWith("blob:"), `URL was ${url}`); - const res = await fetch(url); - assertEquals(res.url, url); - assertEquals(res.status, 200); - assertEquals(res.headers.get("content-length"), "2"); - assertEquals(res.headers.get("content-type"), "text/plain"); - assertEquals(await res.text(), "ok"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchResponseStreamIsLockedWhileReading() { - const response = await fetch("http://localhost:4545/echo_server", { - body: new Uint8Array(5000), - method: "POST", - }); - - assertEquals(response.body!.locked, false); - const promise = response.arrayBuffer(); - assertEquals(response.body!.locked, true); - - await promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchConstructorClones() { - const req = new Request("https://example.com", { - method: "POST", - body: "foo", - }); - assertEquals(await req.text(), "foo"); - await assertRejects(() => req.text()); - - const req2 = new Request(req, { method: "PUT", body: "bar" }); // should not have any impact on req - await assertRejects(() => req.text()); - assertEquals(await req2.text(), "bar"); - - assertEquals(req.method, "POST"); - assertEquals(req2.method, "PUT"); - - assertEquals(req.headers.get("x-foo"), null); - assertEquals(req2.headers.get("x-foo"), null); - req2.headers.set("x-foo", "bar"); // should not have any impact on req - assertEquals(req.headers.get("x-foo"), null); - assertEquals(req2.headers.get("x-foo"), "bar"); - }, -); - -Deno.test( - // TODO(bartlomieju): reenable this test - // https://github.com/denoland/deno/issues/18350 - { ignore: Deno.build.os === "windows", permissions: { net: true } }, - async function fetchRequestBodyErrorCatchable() { - const listener = Deno.listen({ hostname: "127.0.0.1", port: listenPort }); - const server = (async () => { - const conn = await listener.accept(); - listener.close(); - const buf = new Uint8Array(256); - const n = await conn.read(buf); - const data = new TextDecoder().decode(buf.subarray(0, n!)); // this is the request headers + first body chunk - assert(data.startsWith("POST / HTTP/1.1\r\n")); - assert(data.endsWith("1\r\na\r\n")); - const n2 = await conn.read(buf); - assertEquals(n2, 6); // this is the second body chunk - const n3 = await conn.read(buf); - assertEquals(n3, null); // the connection now abruptly closes because the client has errored - conn.close(); - })(); - - const stream = new ReadableStream({ - async start(controller) { - controller.enqueue(new TextEncoder().encode("a")); - await delay(1000); - controller.enqueue(new TextEncoder().encode("b")); - await delay(1000); - controller.error(new Error("foo")); - }, - }); - - const err = await assertRejects(() => - fetch(`http://localhost:${listenPort}/`, { - body: stream, - method: "POST", - }) - ); - - assert(err instanceof TypeError, `err was not a TypeError ${err}`); - assert(err.cause, `err.cause was null ${err}`); - assert( - err.cause instanceof Error, - `err.cause was not an Error ${err.cause}`, - ); - assertEquals(err.cause.message, "foo"); - - await server; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function fetchRequestBodyEmptyStream() { - const body = new ReadableStream({ - start(controller) { - controller.enqueue(new Uint8Array([])); - controller.close(); - }, - }); - - await assertRejects( - async () => { - const controller = new AbortController(); - const promise = fetch("http://localhost:4545/echo_server", { - body, - method: "POST", - signal: controller.signal, - }); - try { - controller.abort(); - } catch (e) { - console.log(e); - fail("abort should not throw"); - } - await promise; - }, - DOMException, - "The signal has been aborted", - ); - }, -); - -Deno.test("Request with subarray TypedArray body", async () => { - const body = new Uint8Array([1, 2, 3, 4, 5]).subarray(1); - const req = new Request("https://example.com", { method: "POST", body }); - const actual = new Uint8Array(await req.arrayBuffer()); - const expected = new Uint8Array([2, 3, 4, 5]); - assertEquals(actual, expected); -}); - -Deno.test("Response with subarray TypedArray body", async () => { - const body = new Uint8Array([1, 2, 3, 4, 5]).subarray(1); - const req = new Response(body); - const actual = new Uint8Array(await req.arrayBuffer()); - const expected = new Uint8Array([2, 3, 4, 5]); - assertEquals(actual, expected); -}); diff --git a/cli/tests/unit/files_test.ts b/cli/tests/unit/files_test.ts deleted file mode 100644 index 2501ea643..000000000 --- a/cli/tests/unit/files_test.ts +++ /dev/null @@ -1,1095 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -// deno-lint-ignore-file no-deprecated-deno-api - -import { - assert, - assertEquals, - assertRejects, - assertThrows, -} from "./test_util.ts"; -import { copy } from "@test_util/std/streams/copy.ts"; - -Deno.test(function filesStdioFileDescriptors() { - assertEquals(Deno.stdin.rid, 0); - assertEquals(Deno.stdout.rid, 1); - assertEquals(Deno.stderr.rid, 2); -}); - -Deno.test({ permissions: { read: true } }, async function filesCopyToStdout() { - const filename = "cli/tests/testdata/assets/fixture.json"; - using file = await Deno.open(filename); - assert(file instanceof Deno.File); - assert(file instanceof Deno.FsFile); - assert(file.rid > 2); - const bytesWritten = await copy(file, Deno.stdout); - const fileSize = Deno.statSync(filename).size; - assertEquals(bytesWritten, fileSize); -}); - -Deno.test({ permissions: { read: true } }, async function filesIter() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - - let totalSize = 0; - for await (const buf of Deno.iter(file)) { - totalSize += buf.byteLength; - } - - assertEquals(totalSize, 12); -}); - -Deno.test( - { permissions: { read: true } }, - async function filesIterCustomBufSize() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - - let totalSize = 0; - let iterations = 0; - for await (const buf of Deno.iter(file, { bufSize: 6 })) { - totalSize += buf.byteLength; - iterations += 1; - } - - assertEquals(totalSize, 12); - assertEquals(iterations, 2); - }, -); - -Deno.test({ permissions: { read: true } }, function filesIterSync() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = Deno.openSync(filename); - - let totalSize = 0; - for (const buf of Deno.iterSync(file)) { - totalSize += buf.byteLength; - } - - assertEquals(totalSize, 12); -}); - -Deno.test( - { permissions: { read: true } }, - function filesIterSyncCustomBufSize() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = Deno.openSync(filename); - - let totalSize = 0; - let iterations = 0; - for (const buf of Deno.iterSync(file, { bufSize: 6 })) { - totalSize += buf.byteLength; - iterations += 1; - } - - assertEquals(totalSize, 12); - assertEquals(iterations, 2); - }, -); - -Deno.test(async function readerIter() { - // ref: https://github.com/denoland/deno/issues/2330 - const encoder = new TextEncoder(); - - class TestReader implements Deno.Reader { - #offset = 0; - #buf: Uint8Array; - - constructor(s: string) { - this.#buf = new Uint8Array(encoder.encode(s)); - } - - read(p: Uint8Array): Promise<number | null> { - const n = Math.min(p.byteLength, this.#buf.byteLength - this.#offset); - p.set(this.#buf.slice(this.#offset, this.#offset + n)); - this.#offset += n; - - if (n === 0) { - return Promise.resolve(null); - } - - return Promise.resolve(n); - } - } - - const reader = new TestReader("hello world!"); - - let totalSize = 0; - for await (const buf of Deno.iter(reader)) { - totalSize += buf.byteLength; - } - - assertEquals(totalSize, 12); -}); - -Deno.test(async function readerIterSync() { - // ref: https://github.com/denoland/deno/issues/2330 - const encoder = new TextEncoder(); - - class TestReader implements Deno.ReaderSync { - #offset = 0; - #buf: Uint8Array; - - constructor(s: string) { - this.#buf = new Uint8Array(encoder.encode(s)); - } - - readSync(p: Uint8Array): number | null { - const n = Math.min(p.byteLength, this.#buf.byteLength - this.#offset); - p.set(this.#buf.slice(this.#offset, this.#offset + n)); - this.#offset += n; - - if (n === 0) { - return null; - } - - return n; - } - } - - const reader = new TestReader("hello world!"); - - let totalSize = 0; - for await (const buf of Deno.iterSync(reader)) { - totalSize += buf.byteLength; - } - - assertEquals(totalSize, 12); -}); - -Deno.test( - { - permissions: { read: true, write: true }, - }, - function openSyncMode() { - const path = Deno.makeTempDirSync() + "/test_openSync.txt"; - using _file = Deno.openSync(path, { - write: true, - createNew: true, - mode: 0o626, - }); - const pathInfo = Deno.statSync(path); - if (Deno.build.os !== "windows") { - assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); - } - }, -); - -Deno.test( - { - permissions: { read: true, write: true }, - }, - async function openMode() { - const path = (await Deno.makeTempDir()) + "/test_open.txt"; - using _file = await Deno.open(path, { - write: true, - createNew: true, - mode: 0o626, - }); - const pathInfo = Deno.statSync(path); - if (Deno.build.os !== "windows") { - assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); - } - }, -); - -Deno.test( - { - permissions: { read: true, write: true }, - }, - function openSyncUrl() { - const tempDir = Deno.makeTempDirSync(); - const fileUrl = new URL( - `file://${ - Deno.build.os === "windows" ? "/" : "" - }${tempDir}/test_open.txt`, - ); - using _file = Deno.openSync(fileUrl, { - write: true, - createNew: true, - mode: 0o626, - }); - const pathInfo = Deno.statSync(fileUrl); - if (Deno.build.os !== "windows") { - assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); - } - - Deno.removeSync(tempDir, { recursive: true }); - }, -); - -Deno.test( - { - permissions: { read: true, write: true }, - }, - async function openUrl() { - const tempDir = await Deno.makeTempDir(); - const fileUrl = new URL( - `file://${ - Deno.build.os === "windows" ? "/" : "" - }${tempDir}/test_open.txt`, - ); - using _file = await Deno.open(fileUrl, { - write: true, - createNew: true, - mode: 0o626, - }); - const pathInfo = Deno.statSync(fileUrl); - if (Deno.build.os !== "windows") { - assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); - } - - Deno.removeSync(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { write: false } }, - async function writePermFailure() { - const filename = "tests/hello.txt"; - const openOptions: Deno.OpenOptions[] = [{ write: true }, { append: true }]; - for (const options of openOptions) { - await assertRejects(async () => { - await Deno.open(filename, options); - }, Deno.errors.PermissionDenied); - } - }, -); - -Deno.test(async function openOptions() { - const filename = "cli/tests/testdata/assets/fixture.json"; - await assertRejects( - async () => { - await Deno.open(filename, { write: false }); - }, - Error, - "OpenOptions requires at least one option to be true", - ); - - await assertRejects( - async () => { - await Deno.open(filename, { truncate: true, write: false }); - }, - Error, - "'truncate' option requires 'write' option", - ); - - await assertRejects( - async () => { - await Deno.open(filename, { create: true, write: false }); - }, - Error, - "'create' or 'createNew' options require 'write' or 'append' option", - ); - - await assertRejects( - async () => { - await Deno.open(filename, { createNew: true, append: false }); - }, - Error, - "'create' or 'createNew' options require 'write' or 'append' option", - ); -}); - -Deno.test({ permissions: { read: false } }, async function readPermFailure() { - await assertRejects(async () => { - await Deno.open("package.json", { read: true }); - }, Deno.errors.PermissionDenied); -}); - -Deno.test( - { permissions: { write: true } }, - async function writeNullBufferFailure() { - const tempDir = Deno.makeTempDirSync(); - const filename = tempDir + "hello.txt"; - const w = { - write: true, - truncate: true, - create: true, - }; - using file = await Deno.open(filename, w); - - // writing null should throw an error - await assertRejects( - async () => { - // deno-lint-ignore no-explicit-any - await file.write(null as any); - }, - ); // TODO(bartlomieju): Check error kind when dispatch_minimal pipes errors properly - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { write: true, read: true } }, - async function readNullBufferFailure() { - const tempDir = Deno.makeTempDirSync(); - const filename = tempDir + "hello.txt"; - using file = await Deno.open(filename, { - read: true, - write: true, - truncate: true, - create: true, - }); - - // reading into an empty buffer should return 0 immediately - const bytesRead = await file.read(new Uint8Array(0)); - assert(bytesRead === 0); - - // reading file into null buffer should throw an error - await assertRejects(async () => { - // deno-lint-ignore no-explicit-any - await file.read(null as any); - }, TypeError); - // TODO(bartlomieju): Check error kind when dispatch_minimal pipes errors properly - - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { write: false, read: false } }, - async function readWritePermFailure() { - const filename = "tests/hello.txt"; - await assertRejects(async () => { - await Deno.open(filename, { read: true }); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - { permissions: { write: true, read: true } }, - async function openNotFound() { - await assertRejects( - async () => { - await Deno.open("bad_file_name"); - }, - Deno.errors.NotFound, - `open 'bad_file_name'`, - ); - }, -); - -Deno.test( - { permissions: { write: true, read: true } }, - function openSyncNotFound() { - assertThrows( - () => { - Deno.openSync("bad_file_name"); - }, - Deno.errors.NotFound, - `open 'bad_file_name'`, - ); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function createFile() { - const tempDir = await Deno.makeTempDir(); - const filename = tempDir + "/test.txt"; - const f = await Deno.create(filename); - let fileInfo = Deno.statSync(filename); - assert(fileInfo.isFile); - assert(fileInfo.size === 0); - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - await f.write(data); - fileInfo = Deno.statSync(filename); - assert(fileInfo.size === 5); - f.close(); - - // TODO(bartlomieju): test different modes - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function createFileWithUrl() { - const tempDir = await Deno.makeTempDir(); - const fileUrl = new URL( - `file://${Deno.build.os === "windows" ? "/" : ""}${tempDir}/test.txt`, - ); - const f = await Deno.create(fileUrl); - let fileInfo = Deno.statSync(fileUrl); - assert(fileInfo.isFile); - assert(fileInfo.size === 0); - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - await f.write(data); - fileInfo = Deno.statSync(fileUrl); - assert(fileInfo.size === 5); - f.close(); - - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function createSyncFile() { - const tempDir = await Deno.makeTempDir(); - const filename = tempDir + "/test.txt"; - const f = Deno.createSync(filename); - let fileInfo = Deno.statSync(filename); - assert(fileInfo.isFile); - assert(fileInfo.size === 0); - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - await f.write(data); - fileInfo = Deno.statSync(filename); - assert(fileInfo.size === 5); - f.close(); - - // TODO(bartlomieju): test different modes - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function createSyncFileWithUrl() { - const tempDir = await Deno.makeTempDir(); - const fileUrl = new URL( - `file://${Deno.build.os === "windows" ? "/" : ""}${tempDir}/test.txt`, - ); - const f = Deno.createSync(fileUrl); - let fileInfo = Deno.statSync(fileUrl); - assert(fileInfo.isFile); - assert(fileInfo.size === 0); - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - await f.write(data); - fileInfo = Deno.statSync(fileUrl); - assert(fileInfo.size === 5); - f.close(); - - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function openModeWrite() { - const tempDir = Deno.makeTempDirSync(); - const encoder = new TextEncoder(); - const filename = tempDir + "hello.txt"; - const data = encoder.encode("Hello world!\n"); - let file = await Deno.open(filename, { - create: true, - write: true, - truncate: true, - }); - // assert file was created - let fileInfo = Deno.statSync(filename); - assert(fileInfo.isFile); - assertEquals(fileInfo.size, 0); - // write some data - await file.write(data); - fileInfo = Deno.statSync(filename); - assertEquals(fileInfo.size, 13); - // assert we can't read from file - let thrown = false; - try { - const buf = new Uint8Array(20); - await file.read(buf); - } catch (_e) { - thrown = true; - } finally { - assert(thrown, "'w' mode shouldn't allow to read file"); - } - file.close(); - // assert that existing file is truncated on open - file = await Deno.open(filename, { - write: true, - truncate: true, - }); - file.close(); - const fileSize = Deno.statSync(filename).size; - assertEquals(fileSize, 0); - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function openModeWriteRead() { - const tempDir = Deno.makeTempDirSync(); - const encoder = new TextEncoder(); - const filename = tempDir + "hello.txt"; - const data = encoder.encode("Hello world!\n"); - - using file = await Deno.open(filename, { - write: true, - truncate: true, - create: true, - read: true, - }); - const seekPosition = 0; - // assert file was created - let fileInfo = Deno.statSync(filename); - assert(fileInfo.isFile); - assertEquals(fileInfo.size, 0); - // write some data - await file.write(data); - fileInfo = Deno.statSync(filename); - assertEquals(fileInfo.size, 13); - - const buf = new Uint8Array(20); - // seeking from beginning of a file - const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Start); - assertEquals(seekPosition, cursorPosition); - const result = await file.read(buf); - assertEquals(result, 13); - - await Deno.remove(tempDir, { recursive: true }); - }, -); - -Deno.test({ permissions: { read: true } }, async function seekStart() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - const seekPosition = 6; - // Deliberately move 1 step forward - await file.read(new Uint8Array(1)); // "H" - // Skipping "Hello " - // seeking from beginning of a file plus seekPosition - const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Start); - assertEquals(seekPosition, cursorPosition); - const buf = new Uint8Array(6); - await file.read(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, async function seekStartBigInt() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - const seekPosition = 6n; - // Deliberately move 1 step forward - await file.read(new Uint8Array(1)); // "H" - // Skipping "Hello " - // seeking from beginning of a file plus seekPosition - const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Start); - assertEquals(seekPosition, BigInt(cursorPosition)); - const buf = new Uint8Array(6); - await file.read(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, function seekSyncStart() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = Deno.openSync(filename); - const seekPosition = 6; - // Deliberately move 1 step forward - file.readSync(new Uint8Array(1)); // "H" - // Skipping "Hello " - // seeking from beginning of a file plus seekPosition - const cursorPosition = file.seekSync(seekPosition, Deno.SeekMode.Start); - assertEquals(seekPosition, cursorPosition); - const buf = new Uint8Array(6); - file.readSync(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, async function seekCurrent() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - // Deliberately move 1 step forward - await file.read(new Uint8Array(1)); // "H" - // Skipping "ello " - const seekPosition = 5; - // seekPosition is relative to current cursor position after read - const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Current); - assertEquals(seekPosition + 1, cursorPosition); - const buf = new Uint8Array(6); - await file.read(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, function seekSyncCurrent() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = Deno.openSync(filename); - // Deliberately move 1 step forward - file.readSync(new Uint8Array(1)); // "H" - // Skipping "ello " - const seekPosition = 5; - // seekPosition is relative to current cursor position after read - const cursorPosition = file.seekSync(seekPosition, Deno.SeekMode.Current); - assertEquals(seekPosition + 1, cursorPosition); - const buf = new Uint8Array(6); - file.readSync(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, async function seekEnd() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - const seekPosition = -6; - // seek from end of file that has 12 chars, 12 - 6 = 6 - const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.End); - assertEquals(6, cursorPosition); - const buf = new Uint8Array(6); - await file.read(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, function seekSyncEnd() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = Deno.openSync(filename); - const seekPosition = -6; - // seek from end of file that has 12 chars, 12 - 6 = 6 - const cursorPosition = file.seekSync(seekPosition, Deno.SeekMode.End); - assertEquals(6, cursorPosition); - const buf = new Uint8Array(6); - file.readSync(buf); - const decoded = new TextDecoder().decode(buf); - assertEquals(decoded, "world!"); -}); - -Deno.test({ permissions: { read: true } }, async function seekMode() { - const filename = "cli/tests/testdata/assets/hello.txt"; - using file = await Deno.open(filename); - await assertRejects( - async () => { - await file.seek(1, -1 as unknown as Deno.SeekMode); - }, - TypeError, - "Invalid seek mode", - ); - - // We should still be able to read the file - // since it is still open. - const buf = new Uint8Array(1); - await file.read(buf); // "H" - assertEquals(new TextDecoder().decode(buf), "H"); -}); - -Deno.test( - { permissions: { read: true, write: true } }, - function fileTruncateSyncSuccess() { - const filename = Deno.makeTempDirSync() + "/test_fileTruncateSync.txt"; - using file = Deno.openSync(filename, { - create: true, - read: true, - write: true, - }); - - file.truncateSync(20); - assertEquals(Deno.readFileSync(filename).byteLength, 20); - file.truncateSync(5); - assertEquals(Deno.readFileSync(filename).byteLength, 5); - file.truncateSync(-5); - assertEquals(Deno.readFileSync(filename).byteLength, 0); - - Deno.removeSync(filename); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function fileTruncateSuccess() { - const filename = Deno.makeTempDirSync() + "/test_fileTruncate.txt"; - using file = await Deno.open(filename, { - create: true, - read: true, - write: true, - }); - - await file.truncate(20); - assertEquals((await Deno.readFile(filename)).byteLength, 20); - await file.truncate(5); - assertEquals((await Deno.readFile(filename)).byteLength, 5); - await file.truncate(-5); - assertEquals((await Deno.readFile(filename)).byteLength, 0); - - await Deno.remove(filename); - }, -); - -Deno.test({ permissions: { read: true } }, function fileStatSyncSuccess() { - using file = Deno.openSync("README.md"); - const fileInfo = file.statSync(); - assert(fileInfo.isFile); - assert(!fileInfo.isSymlink); - assert(!fileInfo.isDirectory); - assert(fileInfo.size); - assert(fileInfo.atime); - assert(fileInfo.mtime); - // The `birthtime` field is not available on Linux before kernel version 4.11. - assert(fileInfo.birthtime || Deno.build.os === "linux"); -}); - -Deno.test(async function fileStatSuccess() { - using file = await Deno.open("README.md"); - const fileInfo = await file.stat(); - assert(fileInfo.isFile); - assert(!fileInfo.isSymlink); - assert(!fileInfo.isDirectory); - assert(fileInfo.size); - assert(fileInfo.atime); - assert(fileInfo.mtime); - // The `birthtime` field is not available on Linux before kernel version 4.11. - assert(fileInfo.birthtime || Deno.build.os === "linux"); -}); - -Deno.test({ permissions: { read: true } }, async function readableStream() { - const filename = "cli/tests/testdata/assets/hello.txt"; - const file = await Deno.open(filename); - assert(file.readable instanceof ReadableStream); - const chunks = []; - for await (const chunk of file.readable) { - chunks.push(chunk); - } - assertEquals(chunks.length, 1); - assertEquals(chunks[0].byteLength, 12); -}); - -Deno.test( - { permissions: { read: true } }, - async function readableStreamTextEncoderPipe() { - const filename = "cli/tests/testdata/assets/hello.txt"; - const file = await Deno.open(filename); - const readable = file.readable.pipeThrough(new TextDecoderStream()); - const chunks = []; - for await (const chunk of readable) { - chunks.push(chunk); - } - assertEquals(chunks.length, 1); - assertEquals(chunks[0].length, 12); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function writableStream() { - const path = await Deno.makeTempFile(); - const file = await Deno.open(path, { write: true }); - assert(file.writable instanceof WritableStream); - const readable = new ReadableStream({ - start(controller) { - controller.enqueue(new TextEncoder().encode("hello ")); - controller.enqueue(new TextEncoder().encode("world!")); - controller.close(); - }, - }); - await readable.pipeTo(file.writable); - const res = await Deno.readTextFile(path); - assertEquals(res, "hello world!"); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function readTextFileNonUtf8() { - const path = await Deno.makeTempFile(); - using file = await Deno.open(path, { write: true }); - await file.write(new TextEncoder().encode("hello ")); - await file.write(new Uint8Array([0xC0])); - - const res = await Deno.readTextFile(path); - const resSync = Deno.readTextFileSync(path); - assertEquals(res, resSync); - assertEquals(res, "hello \uFFFD"); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function fsFileExplicitResourceManagement() { - let file2: Deno.FsFile; - - { - using file = await Deno.open("cli/tests/testdata/assets/hello.txt"); - file2 = file; - - const stat = file.statSync(); - assert(stat.isFile); - } - - assertThrows(() => file2.statSync(), Deno.errors.BadResource); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function fsFileExplicitResourceManagementManualClose() { - using file = await Deno.open("cli/tests/testdata/assets/hello.txt"); - file.close(); - assertThrows(() => file.statSync(), Deno.errors.BadResource); // definitely closed - // calling [Symbol.dispose] after manual close is a no-op - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - function fsFileDatasyncSyncSuccess() { - const filename = Deno.makeTempDirSync() + "/test_fdatasyncSync.txt"; - const file = Deno.openSync(filename, { - read: true, - write: true, - create: true, - }); - const data = new Uint8Array(64); - file.writeSync(data); - file.syncDataSync(); - assertEquals(Deno.readFileSync(filename), data); - file.close(); - Deno.removeSync(filename); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function fsFileDatasyncSuccess() { - const filename = (await Deno.makeTempDir()) + "/test_fdatasync.txt"; - const file = await Deno.open(filename, { - read: true, - write: true, - create: true, - }); - const data = new Uint8Array(64); - await file.write(data); - await file.syncData(); - assertEquals(await Deno.readFile(filename), data); - file.close(); - await Deno.remove(filename); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - function fsFileSyncSyncSuccess() { - const filename = Deno.makeTempDirSync() + "/test_fsyncSync.txt"; - const file = Deno.openSync(filename, { - read: true, - write: true, - create: true, - }); - const size = 64; - file.truncateSync(size); - file.syncSync(); - assertEquals(file.statSync().size, size); - file.close(); - Deno.removeSync(filename); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function fsFileSyncSuccess() { - const filename = (await Deno.makeTempDir()) + "/test_fsync.txt"; - const file = await Deno.open(filename, { - read: true, - write: true, - create: true, - }); - const size = 64; - await file.truncate(size); - await file.sync(); - assertEquals((await file.stat()).size, size); - file.close(); - await Deno.remove(filename); - }, -); - -Deno.test( - { permissions: { read: true, run: true, hrtime: true } }, - async function fsFileLockFileSync() { - await runFlockTests({ sync: true }); - }, -); - -Deno.test( - { permissions: { read: true, run: true, hrtime: true } }, - async function fsFileLockFileAsync() { - await runFlockTests({ sync: false }); - }, -); - -async function runFlockTests(opts: { sync: boolean }) { - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: true, - secondExclusive: false, - sync: opts.sync, - }), - true, - "exclusive blocks shared", - ); - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: false, - secondExclusive: true, - sync: opts.sync, - }), - true, - "shared blocks exclusive", - ); - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: true, - secondExclusive: true, - sync: opts.sync, - }), - true, - "exclusive blocks exclusive", - ); - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: false, - secondExclusive: false, - sync: opts.sync, - // need to wait for both to enter the lock to prevent the case where the - // first process enters and exits the lock before the second even enters - waitBothEnteredLock: true, - }), - false, - "shared does not block shared", - ); -} - -async function checkFirstBlocksSecond(opts: { - firstExclusive: boolean; - secondExclusive: boolean; - sync: boolean; - waitBothEnteredLock?: boolean; -}) { - const firstProcess = runFlockTestProcess({ - exclusive: opts.firstExclusive, - sync: opts.sync, - }); - const secondProcess = runFlockTestProcess({ - exclusive: opts.secondExclusive, - sync: opts.sync, - }); - try { - const sleep = (time: number) => new Promise((r) => setTimeout(r, time)); - - await Promise.all([ - firstProcess.waitStartup(), - secondProcess.waitStartup(), - ]); - - await firstProcess.enterLock(); - await firstProcess.waitEnterLock(); - - await secondProcess.enterLock(); - await sleep(100); - - if (!opts.waitBothEnteredLock) { - await firstProcess.exitLock(); - } - - await secondProcess.waitEnterLock(); - - if (opts.waitBothEnteredLock) { - await firstProcess.exitLock(); - } - - await secondProcess.exitLock(); - - // collect the final output - const firstPsTimes = await firstProcess.getTimes(); - const secondPsTimes = await secondProcess.getTimes(); - return firstPsTimes.exitTime < secondPsTimes.enterTime; - } finally { - await firstProcess.close(); - await secondProcess.close(); - } -} - -function runFlockTestProcess(opts: { exclusive: boolean; sync: boolean }) { - const path = "cli/tests/testdata/assets/lock_target.txt"; - const scriptText = ` - const file = Deno.openSync("${path}"); - - // ready signal - Deno.stdout.writeSync(new Uint8Array(1)); - // wait for enter lock signal - Deno.stdin.readSync(new Uint8Array(1)); - - // entering signal - Deno.stdout.writeSync(new Uint8Array(1)); - // lock and record the entry time - ${ - opts.sync - ? `file.lockSync(${opts.exclusive ? "true" : "false"});` - : `await file.lock(${opts.exclusive ? "true" : "false"});` - } - const enterTime = new Date().getTime(); - // entered signal - Deno.stdout.writeSync(new Uint8Array(1)); - - // wait for exit lock signal - Deno.stdin.readSync(new Uint8Array(1)); - - // record the exit time and wait a little bit before releasing - // the lock so that the enter time of the next process doesn't - // occur at the same time as this exit time - const exitTime = new Date().getTime(); - await new Promise(resolve => setTimeout(resolve, 100)); - - // release the lock - ${opts.sync ? "file.unlockSync();" : "await file.unlock();"} - - // exited signal - Deno.stdout.writeSync(new Uint8Array(1)); - - // output the enter and exit time - console.log(JSON.stringify({ enterTime, exitTime })); -`; - - const process = new Deno.Command(Deno.execPath(), { - args: ["eval", "--unstable", scriptText], - stdin: "piped", - stdout: "piped", - stderr: "null", - }).spawn(); - - const waitSignal = async () => { - const reader = process.stdout.getReader({ mode: "byob" }); - await reader.read(new Uint8Array(1)); - reader.releaseLock(); - }; - const signal = async () => { - const writer = process.stdin.getWriter(); - await writer.write(new Uint8Array(1)); - writer.releaseLock(); - }; - - return { - async waitStartup() { - await waitSignal(); - }, - async enterLock() { - await signal(); - await waitSignal(); // entering signal - }, - async waitEnterLock() { - await waitSignal(); - }, - async exitLock() { - await signal(); - await waitSignal(); - }, - getTimes: async () => { - const { stdout } = await process.output(); - const text = new TextDecoder().decode(stdout); - return JSON.parse(text) as { - enterTime: number; - exitTime: number; - }; - }, - close: async () => { - await process.status; - await process.stdin.close(); - }, - }; -} diff --git a/cli/tests/unit/flock_test.ts b/cli/tests/unit/flock_test.ts deleted file mode 100644 index 3189b4a56..000000000 --- a/cli/tests/unit/flock_test.ts +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { assertEquals } from "./test_util.ts"; - -Deno.test( - { permissions: { read: true, run: true, hrtime: true } }, - async function flockFileSync() { - await runFlockTests({ sync: true }); - }, -); - -Deno.test( - { permissions: { read: true, run: true, hrtime: true } }, - async function flockFileAsync() { - await runFlockTests({ sync: false }); - }, -); - -async function runFlockTests(opts: { sync: boolean }) { - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: true, - secondExclusive: false, - sync: opts.sync, - }), - true, - "exclusive blocks shared", - ); - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: false, - secondExclusive: true, - sync: opts.sync, - }), - true, - "shared blocks exclusive", - ); - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: true, - secondExclusive: true, - sync: opts.sync, - }), - true, - "exclusive blocks exclusive", - ); - assertEquals( - await checkFirstBlocksSecond({ - firstExclusive: false, - secondExclusive: false, - sync: opts.sync, - // need to wait for both to enter the lock to prevent the case where the - // first process enters and exits the lock before the second even enters - waitBothEnteredLock: true, - }), - false, - "shared does not block shared", - ); -} - -async function checkFirstBlocksSecond(opts: { - firstExclusive: boolean; - secondExclusive: boolean; - sync: boolean; - waitBothEnteredLock?: boolean; -}) { - const firstProcess = runFlockTestProcess({ - exclusive: opts.firstExclusive, - sync: opts.sync, - }); - const secondProcess = runFlockTestProcess({ - exclusive: opts.secondExclusive, - sync: opts.sync, - }); - try { - const sleep = (time: number) => new Promise((r) => setTimeout(r, time)); - - await Promise.all([ - firstProcess.waitStartup(), - secondProcess.waitStartup(), - ]); - - await firstProcess.enterLock(); - await firstProcess.waitEnterLock(); - - await secondProcess.enterLock(); - await sleep(100); - - if (!opts.waitBothEnteredLock) { - await firstProcess.exitLock(); - } - - await secondProcess.waitEnterLock(); - - if (opts.waitBothEnteredLock) { - await firstProcess.exitLock(); - } - - await secondProcess.exitLock(); - - // collect the final output - const firstPsTimes = await firstProcess.getTimes(); - const secondPsTimes = await secondProcess.getTimes(); - return firstPsTimes.exitTime < secondPsTimes.enterTime; - } finally { - await firstProcess.close(); - await secondProcess.close(); - } -} - -function runFlockTestProcess(opts: { exclusive: boolean; sync: boolean }) { - const path = "cli/tests/testdata/assets/lock_target.txt"; - const scriptText = ` - const { rid } = Deno.openSync("${path}"); - - // ready signal - Deno.stdout.writeSync(new Uint8Array(1)); - // wait for enter lock signal - Deno.stdin.readSync(new Uint8Array(1)); - - // entering signal - Deno.stdout.writeSync(new Uint8Array(1)); - // lock and record the entry time - ${ - opts.sync - ? `Deno.flockSync(rid, ${opts.exclusive ? "true" : "false"});` - : `await Deno.flock(rid, ${opts.exclusive ? "true" : "false"});` - } - const enterTime = new Date().getTime(); - // entered signal - Deno.stdout.writeSync(new Uint8Array(1)); - - // wait for exit lock signal - Deno.stdin.readSync(new Uint8Array(1)); - - // record the exit time and wait a little bit before releasing - // the lock so that the enter time of the next process doesn't - // occur at the same time as this exit time - const exitTime = new Date().getTime(); - await new Promise(resolve => setTimeout(resolve, 100)); - - // release the lock - ${opts.sync ? "Deno.funlockSync(rid);" : "await Deno.funlock(rid);"} - - // exited signal - Deno.stdout.writeSync(new Uint8Array(1)); - - // output the enter and exit time - console.log(JSON.stringify({ enterTime, exitTime })); -`; - - const process = new Deno.Command(Deno.execPath(), { - args: ["eval", "--unstable", scriptText], - stdin: "piped", - stdout: "piped", - stderr: "null", - }).spawn(); - - const waitSignal = async () => { - const reader = process.stdout.getReader({ mode: "byob" }); - await reader.read(new Uint8Array(1)); - reader.releaseLock(); - }; - const signal = async () => { - const writer = process.stdin.getWriter(); - await writer.write(new Uint8Array(1)); - writer.releaseLock(); - }; - - return { - async waitStartup() { - await waitSignal(); - }, - async enterLock() { - await signal(); - await waitSignal(); // entering signal - }, - async waitEnterLock() { - await waitSignal(); - }, - async exitLock() { - await signal(); - await waitSignal(); - }, - getTimes: async () => { - const { stdout } = await process.output(); - const text = new TextDecoder().decode(stdout); - return JSON.parse(text) as { - enterTime: number; - exitTime: number; - }; - }, - close: async () => { - await process.status; - await process.stdin.close(); - }, - }; -} diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts deleted file mode 100644 index 66cc53113..000000000 --- a/cli/tests/unit/http_test.ts +++ /dev/null @@ -1,2801 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { Buffer, BufReader, BufWriter } from "@test_util/std/io/mod.ts"; -import { TextProtoReader } from "../testdata/run/textproto.ts"; -import { - assert, - assertEquals, - assertRejects, - assertStrictEquals, - assertThrows, - delay, - fail, -} from "./test_util.ts"; -import { join } from "@test_util/std/path/mod.ts"; - -const listenPort = 4507; -const listenPort2 = 4508; - -const { - buildCaseInsensitiveCommaValueFinder, - // @ts-expect-error TypeScript (as of 3.7) does not support indexing namespaces by symbol -} = Deno[Deno.internal]; - -async function writeRequestAndReadResponse(conn: Deno.Conn): Promise<string> { - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const w = new BufWriter(conn); - const r = new BufReader(conn); - const body = `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\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); - const headers = await tpr.readMimeHeader(); - assert(headers !== null); - - const chunkedReader = chunkedBodyReader(headers, r); - const buf = new Uint8Array(5); - const dest = new Buffer(); - let result: number | null; - while ((result = await chunkedReader.read(buf)) !== null) { - const len = Math.min(buf.byteLength, result); - await dest.write(buf.subarray(0, len)); - } - return decoder.decode(dest.bytes()); -} - -Deno.test({ permissions: { net: true } }, async function httpServerBasic() { - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - assertEquals(new URL(request.url).href, `http://127.0.0.1:${listenPort}/`); - assertEquals(await request.text(), ""); - await respondWith( - new Response("Hello World", { headers: { "foo": "bar" } }), - ); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - headers: { "connection": "close" }, - }); - const clone = resp.clone(); - const text = await resp.text(); - assertEquals(text, "Hello World"); - assertEquals(resp.headers.get("foo"), "bar"); - const cloneText = await clone.text(); - assertEquals(cloneText, "Hello World"); - await promise; - - httpConn!.close(); -}); - -// https://github.com/denoland/deno/issues/15107 -Deno.test( - { permissions: { net: true } }, - async function httpLazyHeadersIssue15107() { - let headers: Headers; - const promise = (async () => { - const listener = Deno.listen({ port: 2333 }); - const conn = await listener.accept(); - listener.close(); - const httpConn = Deno.serveHttp(conn); - const e = await httpConn.nextRequest(); - assert(e); - const { request } = e; - request.text(); - headers = request.headers; - httpConn!.close(); - })(); - - const conn = await Deno.connect({ port: 2333 }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await promise; - conn.close(); - assertEquals(headers!.get("content-length"), "5"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpReadHeadersAfterClose() { - const promise = (async () => { - const listener = Deno.listen({ port: 2334 }); - const conn = await listener.accept(); - listener.close(); - const httpConn = Deno.serveHttp(conn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - - await request.text(); // Read body - await respondWith(new Response("Hello World")); // Closes request - - assertThrows(() => request.headers, TypeError, "request closed"); - httpConn!.close(); - })(); - - const conn = await Deno.connect({ port: 2334 }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await promise; - conn.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerGetRequestBody() { - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.body, null); - await respondWith(new Response("", { headers: {} })); - })(); - - const conn = await Deno.connect({ port: listenPort }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\r\nContent-Length: 5\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - const resp = new Uint8Array(200); - const readResult = await conn.read(resp); - assertEquals(readResult, 138); - - conn.close(); - - await promise; - httpConn!.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerStreamResponse() { - const stream = new TransformStream(); - const writer = stream.writable.getWriter(); - writer.write(new TextEncoder().encode("hello ")); - writer.write(new TextEncoder().encode("world")); - writer.close(); - - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - httpConn = Deno.serveHttp(conn); - const evt = await httpConn.nextRequest(); - assert(evt); - const { request, respondWith } = evt; - assert(!request.body); - await respondWith(new Response(stream.readable)); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`); - const respBody = await resp.text(); - assertEquals("hello world", respBody); - await promise; - httpConn!.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerStreamRequest() { - const stream = new TransformStream(); - const writer = stream.writable.getWriter(); - writer.write(new TextEncoder().encode("hello ")); - writer.write(new TextEncoder().encode("world")); - writer.close(); - - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - const evt = await httpConn.nextRequest(); - assert(evt); - const { request, respondWith } = evt; - const reqBody = await request.text(); - assertEquals("hello world", reqBody); - await respondWith(new Response("")); - - // TODO(ry) If we don't call httpConn.nextRequest() here we get "error sending - // request for url (https://localhost:${listenPort}/): connection closed before - // message completed". - assertEquals(await httpConn.nextRequest(), null); - - listener.close(); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - body: stream.readable, - method: "POST", - headers: { "connection": "close" }, - }); - - await resp.arrayBuffer(); - await promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerStreamDuplex() { - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - httpConn = Deno.serveHttp(conn); - const evt = await httpConn.nextRequest(); - assert(evt); - const { request, respondWith } = evt; - assert(request.body); - await respondWith(new Response(request.body)); - })(); - - const ts = new TransformStream(); - const writable = ts.writable.getWriter(); - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - method: "POST", - body: ts.readable, - }); - assert(resp.body); - const reader = resp.body.getReader(); - await writable.write(new Uint8Array([1])); - const chunk1 = await reader.read(); - assert(!chunk1.done); - assertEquals(chunk1.value, new Uint8Array([1])); - await writable.write(new Uint8Array([2])); - const chunk2 = await reader.read(); - assert(!chunk2.done); - assertEquals(chunk2.value, new Uint8Array([2])); - - await writable.close(); - const chunk3 = await reader.read(); - assert(chunk3.done); - await promise; - httpConn!.close(); - listener.close(); - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerClose() { - const listener = Deno.listen({ port: listenPort }); - const client = await Deno.connect({ port: listenPort }); - const httpConn = Deno.serveHttp(await listener.accept()); - client.close(); - const evt = await httpConn.nextRequest(); - assertEquals(evt, null); - // Note httpConn is automatically closed when "done" is reached. - listener.close(); -}); - -Deno.test( - { permissions: { net: true } }, - async function httpServerInvalidMethod() { - const listener = Deno.listen({ port: listenPort }); - const client = await Deno.connect({ port: listenPort }); - const httpConn = Deno.serveHttp(await listener.accept()); - await client.write(new Uint8Array([1, 2, 3])); - await assertRejects( - async () => { - await httpConn.nextRequest(); - }, - Deno.errors.Http, - "invalid HTTP method parsed", - ); - // Note httpConn is automatically closed when it errors. - client.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function httpServerWithTls() { - const hostname = "localhost"; - const port = listenPort; - - const promise = (async () => { - const listener = Deno.listenTls({ - hostname, - port, - cert: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.crt"), - key: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.key"), - }); - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - const evt = await httpConn.nextRequest(); - assert(evt); - const { respondWith } = evt; - await respondWith(new Response("Hello World")); - - // TODO(ry) If we don't call httpConn.nextRequest() here we get "error sending - // request for url (https://localhost:${listenPort}/): connection closed before - // message completed". - assertEquals(await httpConn.nextRequest(), null); - - listener.close(); - })(); - - const caCert = Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const resp = await fetch(`https://${hostname}:${port}/`, { - headers: { "connection": "close" }, - client, - }); - client.close(); - const respBody = await resp.text(); - assertEquals("Hello World", respBody); - await promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerRegressionHang() { - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - httpConn = Deno.serveHttp(conn); - const event = await httpConn.nextRequest(); - assert(event); - const { request, respondWith } = event; - const reqBody = await request.text(); - assertEquals("request", reqBody); - await respondWith(new Response("response")); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - method: "POST", - body: "request", - }); - const respBody = await resp.text(); - assertEquals("response", respBody); - await promise; - - httpConn!.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerCancelBodyOnResponseFailure() { - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - const event = await httpConn.nextRequest(); - assert(event); - const { respondWith } = event; - let cancelReason: string; - await assertRejects( - async () => { - let interval = 0; - await respondWith( - new Response( - new ReadableStream({ - start(controller) { - interval = setInterval(() => { - const message = `data: ${Date.now()}\n\n`; - controller.enqueue(new TextEncoder().encode(message)); - }, 200); - }, - cancel(reason) { - cancelReason = reason; - clearInterval(interval); - }, - }), - ), - ); - }, - Deno.errors.Http, - cancelReason!, - ); - assert(cancelReason!); - httpConn!.close(); - listener.close(); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`); - await resp.body!.cancel(); - await promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerNextRequestErrorExposedInResponse() { - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - const event = await httpConn.nextRequest(); - assert(event); - // Start polling for the next request before awaiting response. - const nextRequestPromise = httpConn.nextRequest(); - const { respondWith } = event; - await assertRejects( - async () => { - let interval = 0; - await respondWith( - new Response( - new ReadableStream({ - start(controller) { - interval = setInterval(() => { - const message = `data: ${Date.now()}\n\n`; - controller.enqueue(new TextEncoder().encode(message)); - }, 200); - }, - cancel() { - clearInterval(interval); - }, - }), - ), - ); - }, - Deno.errors.Http, - "connection closed", - ); - // The error from `op_http_accept` reroutes to `respondWith()`. - assertEquals(await nextRequestPromise, null); - listener.close(); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`); - await resp.body!.cancel(); - await promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerEmptyBlobResponse() { - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - httpConn = Deno.serveHttp(conn); - const event = await httpConn.nextRequest(); - assert(event); - const { respondWith } = event; - await respondWith(new Response(new Blob([]))); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`); - const respBody = await resp.text(); - assertEquals("", respBody); - await promise; - httpConn!.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerNextRequestResolvesOnClose() { - const httpConnList: Deno.HttpConn[] = []; - - async function serve(l: Deno.Listener) { - for await (const conn of l) { - (async () => { - const c = Deno.serveHttp(conn); - httpConnList.push(c); - for await (const { respondWith } of c) { - respondWith(new Response("hello")); - } - })(); - } - } - - const l = Deno.listen({ port: listenPort }); - serve(l); - - await delay(300); - const res = await fetch(`http://localhost:${listenPort}/`); - const _text = await res.text(); - - // Close connection and listener. - httpConnList.forEach((conn) => conn.close()); - l.close(); - - await delay(300); - }, -); - -Deno.test( - { permissions: { net: true } }, - // Issue: https://github.com/denoland/deno/issues/10870 - async function httpServerHang() { - // Quick and dirty way to make a readable stream from a string. Alternatively, - // `readableStreamFromReader(file)` could be used. - function stream(s: string): ReadableStream<Uint8Array> { - return new Response(s).body!; - } - - const httpConns: Deno.HttpConn[] = []; - const promise = (async () => { - let count = 0; - const listener = Deno.listen({ port: listenPort }); - for await (const conn of listener) { - (async () => { - const httpConn = Deno.serveHttp(conn); - httpConns.push(httpConn); - for await (const { respondWith } of httpConn) { - respondWith(new Response(stream("hello"))); - - count++; - if (count >= 2) { - listener.close(); - } - } - })(); - } - })(); - - const clientConn = await Deno.connect({ port: listenPort }); - - const r1 = await writeRequestAndReadResponse(clientConn); - assertEquals(r1, "hello"); - - const r2 = await writeRequestAndReadResponse(clientConn); - assertEquals(r2, "hello"); - - clientConn.close(); - await promise; - for (const conn of httpConns) { - conn.close(); - } - }, -); - -Deno.test( - { permissions: { net: true } }, - // Issue: https://github.com/denoland/deno/issues/10930 - async function httpServerStreamingResponse() { - // This test enqueues a single chunk for readable - // stream and waits for client to read that chunk and signal - // it before enqueueing subsequent chunk. Issue linked above - // presented a situation where enqueued chunks were not - // written to the HTTP connection until the next chunk was enqueued. - - let counter = 0; - - const deferreds = [ - Promise.withResolvers<void>(), - Promise.withResolvers<void>(), - Promise.withResolvers<void>(), - ]; - - async function writeRequest(conn: Deno.Conn) { - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const w = new BufWriter(conn); - const r = new BufReader(conn); - const body = `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\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); - const headers = await tpr.readMimeHeader(); - assert(headers !== null); - - const chunkedReader = chunkedBodyReader(headers, r); - const buf = new Uint8Array(5); - const dest = new Buffer(); - let result: number | null; - while ((result = await chunkedReader.read(buf)) !== null) { - const len = Math.min(buf.byteLength, result); - await dest.write(buf.subarray(0, len)); - // Resolve a deferred - this will make response stream to - // enqueue next chunk. - deferreds[counter - 1].resolve(); - } - return decoder.decode(dest.bytes()); - } - - function periodicStream() { - return new ReadableStream({ - start(controller) { - controller.enqueue(`${counter}\n`); - counter++; - }, - - async pull(controller) { - if (counter >= 3) { - return controller.close(); - } - - await deferreds[counter - 1].promise; - - controller.enqueue(`${counter}\n`); - counter++; - }, - }).pipeThrough(new TextEncoderStream()); - } - - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const finished = (async () => { - const conn = await listener.accept(); - httpConn = Deno.serveHttp(conn); - const requestEvent = await httpConn.nextRequest(); - const { respondWith } = requestEvent!; - await respondWith(new Response(periodicStream())); - })(); - - // start a client - const clientConn = await Deno.connect({ port: listenPort }); - - const r1 = await writeRequest(clientConn); - assertEquals(r1, "0\n1\n2\n"); - - await finished; - clientConn.close(); - - httpConn!.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpRequestLatin1Headers() { - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - assertEquals(request.headers.get("X-Header-Test"), "á"); - await respondWith( - new Response("", { headers: { "X-Header-Test": "Æ" } }), - ); - })(); - - const clientConn = await Deno.connect({ port: listenPort }); - const requestText = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\r\nX-Header-Test: á\r\n\r\n`; - const requestBytes = new Uint8Array(requestText.length); - for (let i = 0; i < requestText.length; i++) { - requestBytes[i] = requestText.charCodeAt(i); - } - let written = 0; - while (written < requestBytes.byteLength) { - written += await clientConn.write(requestBytes.slice(written)); - } - - let responseText = ""; - const buf = new Uint8Array(1024); - let read; - - while ((read = await clientConn.read(buf)) !== null) { - httpConn!.close(); - for (let i = 0; i < read; i++) { - responseText += String.fromCharCode(buf[i]); - } - } - - clientConn.close(); - - assert(/\r\n[Xx]-[Hh]eader-[Tt]est: Æ\r\n/.test(responseText)); - - await promise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerRequestWithoutPath() { - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - assertEquals( - new URL(request.url).href, - `http://127.0.0.1:${listenPort}/`, - ); - assertEquals(await request.text(), ""); - await respondWith(new Response()); - })(); - - const clientConn = await Deno.connect({ port: listenPort }); - - async function writeRequest(conn: Deno.Conn) { - const encoder = new TextEncoder(); - - const w = new BufWriter(conn); - const r = new BufReader(conn); - const body = - `CONNECT 127.0.0.1:${listenPort} HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\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); - const m = statusLine.match(/^(.+?) (.+?) (.+?)$/); - assert(m !== null, "must be matched"); - const [_, _proto, status, _ok] = m; - assertEquals(status, "200"); - const headers = await tpr.readMimeHeader(); - assert(headers !== null); - } - - await writeRequest(clientConn); - clientConn.close(); - await promise; - httpConn!.close(); - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerWebSocket() { - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - const httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - const { - response, - socket, - } = Deno.upgradeWebSocket(request); - socket.onerror = () => fail(); - socket.onmessage = (m) => { - socket.send(m.data); - socket.close(1001); - }; - const close = new Promise<void>((resolve) => { - socket.onclose = () => resolve(); - }); - await respondWith(response); - await close; - })(); - - const def = Promise.withResolvers<void>(); - const ws = new WebSocket(`ws://localhost:${listenPort}`); - ws.onmessage = (m) => assertEquals(m.data, "foo"); - ws.onerror = () => fail(); - ws.onclose = () => def.resolve(); - ws.onopen = () => ws.send("foo"); - await def.promise; - await promise; -}); - -Deno.test(function httpUpgradeWebSocket() { - const request = new Request("https://deno.land/", { - headers: { - connection: "Upgrade", - upgrade: "websocket", - "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", - }, - }); - const { response } = Deno.upgradeWebSocket(request); - assertEquals(response.status, 101); - assertEquals(response.headers.get("connection"), "Upgrade"); - assertEquals(response.headers.get("upgrade"), "websocket"); - assertEquals( - response.headers.get("sec-websocket-accept"), - "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", - ); -}); - -Deno.test(function httpUpgradeWebSocketMultipleConnectionOptions() { - const request = new Request("https://deno.land/", { - headers: { - connection: "keep-alive, upgrade", - upgrade: "websocket", - "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", - }, - }); - const { response } = Deno.upgradeWebSocket(request); - assertEquals(response.status, 101); -}); - -Deno.test(function httpUpgradeWebSocketMultipleUpgradeOptions() { - const request = new Request("https://deno.land/", { - headers: { - connection: "upgrade", - upgrade: "websocket, foo", - "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", - }, - }); - const { response } = Deno.upgradeWebSocket(request); - assertEquals(response.status, 101); -}); - -Deno.test(function httpUpgradeWebSocketCaseInsensitiveUpgradeHeader() { - const request = new Request("https://deno.land/", { - headers: { - connection: "upgrade", - upgrade: "Websocket", - "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", - }, - }); - const { response } = Deno.upgradeWebSocket(request); - assertEquals(response.status, 101); -}); - -Deno.test(function httpUpgradeWebSocketInvalidUpgradeHeader() { - assertThrows( - () => { - const request = new Request("https://deno.land/", { - headers: { - connection: "upgrade", - upgrade: "invalid", - "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", - }, - }); - Deno.upgradeWebSocket(request); - }, - TypeError, - "Invalid Header: 'upgrade' header must contain 'websocket'", - ); -}); - -Deno.test(function httpUpgradeWebSocketWithoutUpgradeHeader() { - assertThrows( - () => { - const request = new Request("https://deno.land/", { - headers: { - connection: "upgrade", - "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", - }, - }); - Deno.upgradeWebSocket(request); - }, - TypeError, - "Invalid Header: 'upgrade' header must contain 'websocket'", - ); -}); - -Deno.test( - { permissions: { net: true } }, - async function httpCookieConcatenation() { - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - assertEquals( - new URL(request.url).href, - `http://127.0.0.1:${listenPort}/`, - ); - assertEquals(await request.text(), ""); - assertEquals(request.headers.get("cookie"), "foo=bar; bar=foo"); - await respondWith(new Response("ok")); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - headers: [ - ["connection", "close"], - ["cookie", "foo=bar"], - ["cookie", "bar=foo"], - ], - }); - const text = await resp.text(); - assertEquals(text, "ok"); - await promise; - httpConn!.close(); - }, -); - -// https://github.com/denoland/deno/issues/11651 -Deno.test({ permissions: { net: true } }, async function httpServerPanic() { - const listener = Deno.listen({ port: listenPort }); - const client = await Deno.connect({ port: listenPort }); - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - - // This message is incomplete on purpose, we'll forcefully close client connection - // after it's flushed to cause connection to error out on the server side. - const encoder = new TextEncoder(); - await client.write(encoder.encode("GET / HTTP/1.1")); - - httpConn.nextRequest(); - await client.write(encoder.encode("\r\n\r\n")); - httpConn!.close(); - - client.close(); - listener.close(); -}); - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerCorrectSizeResponse() { - const tmpFile = await Deno.makeTempFile(); - using file = await Deno.open(tmpFile, { write: true, read: true }); - await file.write(new Uint8Array(70 * 1024).fill(1)); // 70kb sent in 64kb + 6kb chunks - - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - httpConn = Deno.serveHttp(conn); - const ev = await httpConn.nextRequest(); - const { respondWith } = ev!; - const f = await Deno.open(tmpFile, { read: true }); - await respondWith(new Response(f.readable, { status: 200 })); - })(); - const resp = await fetch(`http://127.0.0.1:${listenPort}/`); - const body = await resp.arrayBuffer(); - assertEquals(body.byteLength, 70 * 1024); - await promise; - httpConn!.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerClosedStream() { - const listener = Deno.listen({ port: listenPort }); - - const client = await Deno.connect({ port: listenPort }); - await client.write(new TextEncoder().encode( - `GET / HTTP/1.0\r\n\r\n`, - )); - - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - const ev = await httpConn.nextRequest(); - const { respondWith } = ev!; - - const tmpFile = await Deno.makeTempFile(); - const file = await Deno.open(tmpFile, { write: true, read: true }); - await file.write(new TextEncoder().encode("hello")); - - const reader = await file.readable.getReader(); - while (true) { - const { done, value } = await reader.read(); - if (done) break; - assert(value); - } - - let didThrow = false; - try { - await respondWith(new Response(file.readable)); - } catch { - // pass - didThrow = true; - } - - assert(didThrow); - httpConn!.close(); - listener.close(); - client.close(); - }, -); - -// https://github.com/denoland/deno/issues/11595 -Deno.test( - { permissions: { net: true } }, - async function httpServerIncompleteMessage() { - const listener = Deno.listen({ port: listenPort }); - - const client = await Deno.connect({ port: listenPort }); - await client.write(new TextEncoder().encode( - `GET / HTTP/1.0\r\n\r\n`, - )); - - const conn = await listener.accept(); - const httpConn = Deno.serveHttp(conn); - const ev = await httpConn.nextRequest(); - const { respondWith } = ev!; - - const errors: Error[] = []; - - const readable = new ReadableStream({ - async pull(controller) { - client.close(); - await delay(1000); - controller.enqueue(new TextEncoder().encode( - "written to the writable side of a TransformStream", - )); - controller.close(); - }, - cancel(error) { - errors.push(error); - }, - }); - - const res = new Response(readable); - - await respondWith(res).catch((error: Error) => errors.push(error)); - - httpConn!.close(); - listener.close(); - - assert(errors.length >= 1); - for (const error of errors) { - assertEquals(error.name, "Http"); - assert(error.message.includes("connection")); - } - }, -); - -// https://github.com/denoland/deno/issues/11743 -Deno.test( - { permissions: { net: true } }, - async function httpServerDoesntLeakResources() { - const listener = Deno.listen({ port: listenPort }); - const [conn, clientConn] = await Promise.all([ - listener.accept(), - Deno.connect({ port: listenPort }), - ]); - const httpConn = Deno.serveHttp(conn); - - await Promise.all([ - httpConn.nextRequest(), - clientConn.write(new TextEncoder().encode( - `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\r\n\r\n`, - )), - ]); - - httpConn!.close(); - listener.close(); - clientConn.close(); - }, -); - -// https://github.com/denoland/deno/issues/11926 -// verify that the only new resource is "httpConnection", to make -// sure "request" resource is closed even if its body was not read -// by server handler -Deno.test( - { permissions: { net: true } }, - async function httpServerDoesntLeakResources2() { - let listener: Deno.Listener; - let httpConn: Deno.HttpConn; - - const promise = (async () => { - listener = Deno.listen({ port: listenPort }); - for await (const conn of listener) { - httpConn = Deno.serveHttp(conn); - for await (const { request, respondWith } of httpConn) { - assertEquals( - new URL(request.url).href, - `http://127.0.0.1:${listenPort}/`, - ); - // not reading request body on purpose - respondWith(new Response("ok")); - } - } - })(); - - const response = await fetch(`http://127.0.0.1:${listenPort}`, { - method: "POST", - body: "hello world", - }); - await response.text(); - - listener!.close(); - httpConn!.close(); - await promise; - }, -); - -// https://github.com/denoland/deno/pull/12216 -Deno.test( - { permissions: { net: true } }, - async function droppedConnSenderNoPanic() { - async function server() { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - const http = Deno.serveHttp(conn); - const evt = await http.nextRequest(); - http.close(); - try { - await evt!.respondWith(new Response("boom")); - } catch { - // Ignore error. - } - listener.close(); - } - - async function client() { - try { - const resp = await fetch(`http://127.0.0.1:${listenPort}/`); - await resp.body?.cancel(); - } catch { - // Ignore error - } - } - - await Promise.all([server(), client()]); - }, -); - -// https://github.com/denoland/deno/issues/12193 -Deno.test( - { permissions: { net: true } }, - async function httpConnConcurrentNextRequestCalls() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ hostname, port }); - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const promises = new Array(10).fill(null).map(async (_, i) => { - const event = await httpConn.nextRequest(); - assert(event); - const { pathname } = new URL(event.request.url); - assertStrictEquals(pathname, `/${i}`); - const response = new Response(`Response #${i}`); - await event.respondWith(response); - }); - await Promise.all(promises); - } - - async function client() { - for (let i = 0; i < 10; i++) { - const response = await fetch(`http://${hostname}:${port}/${i}`); - const body = await response.text(); - assertStrictEquals(body, `Response #${i}`); - } - } - - await Promise.all([server(), delay(100).then(client)]); - httpConn!.close(); - listener.close(); - }, -); - -// https://github.com/denoland/deno/pull/12704 -// https://github.com/denoland/deno/pull/12732 -Deno.test( - { permissions: { net: true } }, - async function httpConnAutoCloseDelayedOnUpgrade() { - const hostname = "localhost"; - const port = listenPort; - - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - const httpConn = Deno.serveHttp(tcpConn); - - const event1 = await httpConn.nextRequest() as Deno.RequestEvent; - const event2Promise = httpConn.nextRequest(); - - const { socket, response } = Deno.upgradeWebSocket(event1.request); - socket.onmessage = (event) => socket.send(event.data); - const socketClosed = new Promise<void>((resolve) => { - socket.onclose = () => resolve(); - }); - event1.respondWith(response); - - const event2 = await event2Promise; - assertStrictEquals(event2, null); - - listener.close(); - await socketClosed; - } - - async function client() { - const socket = new WebSocket(`ws://${hostname}:${port}/`); - socket.onopen = () => socket.send("bla bla"); - const closed = new Promise<void>((resolve) => { - socket.onclose = () => resolve(); - }); - const { data } = await new Promise<MessageEvent<string>>((res) => - socket.onmessage = res - ); - assertStrictEquals(data, "bla bla"); - socket.close(); - await closed; - } - - await Promise.all([server(), client()]); - }, -); - -// https://github.com/denoland/deno/issues/12741 -// https://github.com/denoland/deno/pull/12746 -// https://github.com/denoland/deno/pull/12798 -Deno.test( - { permissions: { net: true, run: true } }, - async function httpServerDeleteRequestHasBody() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ hostname, port }); - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const event = await httpConn.nextRequest() as Deno.RequestEvent; - assert(event.request.body); - const response = new Response(); - await event.respondWith(response); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = ["-X", "DELETE", url]; - const { success } = await new Deno.Command("curl", { - args, - stdout: "null", - stderr: "null", - }).output(); - assert(success); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerRespondNonAsciiUint8Array() { - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.body, null); - await respondWith( - new Response(new Uint8Array([128]), {}), - ); - })(); - - const resp = await fetch(`http://localhost:${listenPort}/`); - assertEquals(resp.status, 200); - const body = await resp.arrayBuffer(); - assertEquals(new Uint8Array(body), new Uint8Array([128])); - - await promise; - httpConn!.close(); - }, -); - -function tmpUnixSocketPath(): string { - const folder = Deno.makeTempDirSync(); - return join(folder, "socket"); -} - -// https://github.com/denoland/deno/pull/13628 -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function httpServerOnUnixSocket() { - const filePath = tmpUnixSocketPath(); - - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ path: filePath, transport: "unix" }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - const url = new URL(request.url); - assertEquals(url.protocol, "http+unix:"); - assertEquals(decodeURIComponent(url.host), filePath); - assertEquals(url.pathname, "/path/name"); - await respondWith(new Response("", { headers: {} })); - })(); - - // fetch() does not supports unix domain sockets yet https://github.com/denoland/deno/issues/8821 - const conn = await Deno.connect({ path: filePath, transport: "unix" }); - const encoder = new TextEncoder(); - // The Host header must be present and empty if it is not a Internet host name (RFC2616, Section 14.23) - const body = `GET /path/name HTTP/1.1\r\nHost:\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - const resp = new Uint8Array(200); - const readResult = await conn.read(resp); - assertEquals(readResult, 138); - - conn.close(); - - await promise; - httpConn!.close(); - }, -); - -/* Automatic Body Compression */ - -const decoder = new TextDecoder(); - -Deno.test({ - name: "http server compresses body - check headers", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - const listener = Deno.listen({ hostname, port }); - - const data = { hello: "deno", now: "with", compressed: "body" }; - - let httpConn: Deno.HttpConn; - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response(JSON.stringify(data), { - headers: { "content-type": "application/json" }, - }); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(output.includes("content-encoding: gzip\r\n")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server compresses body - check body", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - const listener = Deno.listen({ hostname, port }); - - const data = { hello: "deno", now: "with", compressed: "body" }; - - let httpConn: Deno.HttpConn; - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response(JSON.stringify(data), { - headers: { "content-type": "application/json" }, - }); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const proc = new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).spawn(); - const status = await proc.status; - assert(status.success); - const stdout = proc.stdout - .pipeThrough(new DecompressionStream("gzip")) - .pipeThrough(new TextDecoderStream()); - let body = ""; - for await (const chunk of stdout) { - body += chunk; - } - assertEquals(JSON.parse(body), data); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server doesn't compress small body", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response( - JSON.stringify({ hello: "deno" }), - { - headers: { "content-type": "application/json" }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout).toLocaleLowerCase(); - assert(output.includes("vary: accept-encoding\r\n")); - assert(!output.includes("content-encoding: ")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server respects accept-encoding weights", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals( - request.headers.get("Accept-Encoding"), - "gzip;q=0.8, br;q=1.0, *;q=0.1", - ); - const response = new Response( - JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), - { - headers: { "content-type": "application/json" }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip;q=0.8, br;q=1.0, *;q=0.1", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(output.includes("content-encoding: br\r\n")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server augments vary header", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response( - JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), - { - headers: { "content-type": "application/json", vary: "Accept" }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding, Accept\r\n")); - assert(output.includes("content-encoding: gzip\r\n")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server weakens etag header", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response( - JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), - { - headers: { - "content-type": "application/json", - etag: "33a64df551425fcc55e4d42a148795d9f25f89d4", - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "curl", - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert( - output.includes("etag: W/33a64df551425fcc55e4d42a148795d9f25f89d4\r\n"), - ); - assert(output.includes("content-encoding: gzip\r\n")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server passes through weak etag header", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response( - JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), - { - headers: { - "content-type": "application/json", - etag: "W/33a64df551425fcc55e4d42a148795d9f25f89d4", - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert( - output.includes("etag: W/33a64df551425fcc55e4d42a148795d9f25f89d4\r\n"), - ); - assert(output.includes("content-encoding: gzip\r\n")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server doesn't compress body when no-transform is set", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response( - JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), - { - headers: { - "content-type": "application/json", - "cache-control": "no-transform", - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(!output.includes("content-encoding: ")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server doesn't compress body when content-range is set", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const response = new Response( - JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), - { - headers: { - "content-type": "application/json", - "content-range": "bytes 200-100/67589", - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(!output.includes("content-encoding: ")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server compresses streamed bodies - check headers", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - const encoder = new TextEncoder(); - const listener = Deno.listen({ hostname, port }); - - const data = { hello: "deno", now: "with", compressed: "body" }; - - let httpConn: Deno.HttpConn; - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const bodyInit = new ReadableStream({ - start(controller) { - controller.enqueue(encoder.encode(JSON.stringify(data))); - controller.close(); - }, - }); - const response = new Response( - bodyInit, - { headers: { "content-type": "application/json" } }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "curl", - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(output.includes("content-encoding: gzip\r\n")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server compresses streamed bodies - check body", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - const encoder = new TextEncoder(); - const listener = Deno.listen({ hostname, port }); - - const data = { hello: "deno", now: "with", compressed: "body" }; - - let httpConn: Deno.HttpConn; - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const bodyInit = new ReadableStream({ - start(controller) { - controller.enqueue(encoder.encode(JSON.stringify(data))); - controller.close(); - }, - }); - const response = new Response( - bodyInit, - { headers: { "content-type": "application/json" } }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const proc = new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).spawn(); - const status = await proc.status; - assert(status.success); - const stdout = proc.stdout - .pipeThrough(new DecompressionStream("gzip")) - .pipeThrough(new TextDecoderStream()); - let body = ""; - for await (const chunk of stdout) { - body += chunk; - } - assertEquals(JSON.parse(body), data); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server updates content-length header if compression is applied", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - let contentLength: string; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const body = JSON.stringify({ - hello: "deno", - now: "with", - compressed: "body", - }); - contentLength = String(body.length); - const response = new Response( - body, - { - headers: { - "content-type": "application/json", - "content-length": contentLength, - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "-i", - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - ]; - const { success, stdout } = await new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).output(); - assert(success); - const output = decoder.decode(stdout); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(output.includes("content-encoding: gzip\r\n")); - // Ensure the content-length header is updated (but don't check the exact length). - assert(!output.includes(`content-length: ${contentLength}\r\n`)); - assert(output.includes("content-length: ")); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server compresses when accept-encoding is deflate, gzip", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - let contentLength: string; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "deflate, gzip"); - const body = "x".repeat(10000); - contentLength = String(body.length); - const response = new Response( - body, - { - headers: { - "content-length": contentLength, - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const cmd = [ - "curl", - "-i", - "--request", - "GET", - "--url", - url, - // "--compressed", // Windows curl does not support --compressed - "--header", - "Accept-Encoding: deflate, gzip", - ]; - // deno-lint-ignore no-deprecated-deno-api - const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" }); - const status = await proc.status(); - assert(status.success); - const output = decoder.decode(await proc.output()); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(output.includes("content-encoding: gzip\r\n")); - // Ensure the content-length header is updated. - assert(!output.includes(`content-length: ${contentLength}\r\n`)); - assert(output.includes("content-length: ")); - proc.close(); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test({ - name: "http server custom content-encoding is left untouched", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - let contentLength: string; - - let httpConn: Deno.HttpConn; - async function server() { - const listener = Deno.listen({ hostname, port }); - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "deflate, gzip"); - const body = new Uint8Array([3, 1, 4, 1]); - contentLength = String(body.length); - const response = new Response( - body, - { - headers: { - "content-length": contentLength, - "content-encoding": "arbitrary", - }, - }, - ); - await respondWith(response); - listener.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const cmd = [ - "curl", - "-i", - "--request", - "GET", - "--url", - url, - // "--compressed", // Windows curl does not support --compressed - "--header", - "Accept-Encoding: deflate, gzip", - ]; - // deno-lint-ignore no-deprecated-deno-api - const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" }); - const status = await proc.status(); - assert(status.success); - const output = decoder.decode(await proc.output()); - assert(output.includes("vary: Accept-Encoding\r\n")); - assert(output.includes("content-encoding: arbitrary\r\n")); - proc.close(); - } - - await Promise.all([server(), client()]); - httpConn!.close(); - }, -}); - -Deno.test( - { permissions: { net: true } }, - async function httpServerReadLargeBodyWithContentLength() { - const TLS_PACKET_SIZE = 16 * 1024 + 256; - // We want the body to be read in multiple packets - const body = "aa\n" + "deno.land large body\n".repeat(TLS_PACKET_SIZE) + - "zz"; - - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - assertEquals(await request.text(), body); - await respondWith(new Response(body)); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - method: "POST", - headers: { "connection": "close" }, - body, - }); - const text = await resp.text(); - assertEquals(text, body); - await promise; - - httpConn!.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerReadLargeBodyWithTransferChunked() { - const TLS_PACKET_SIZE = 16 * 1024 + 256; - - // We want the body to be read in multiple packets - const chunks = [ - "aa\n", - "deno.land large body\n".repeat(TLS_PACKET_SIZE), - "zz", - ]; - - const body = chunks.join(""); - - const stream = new TransformStream(); - const writer = stream.writable.getWriter(); - for (const chunk of chunks) { - writer.write(new TextEncoder().encode(chunk)); - } - writer.close(); - - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - assertEquals(await request.text(), body); - await respondWith(new Response(body)); - })(); - - const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { - method: "POST", - headers: { "connection": "close" }, - body: stream.readable, - }); - const text = await resp.text(); - assertEquals(text, body); - await promise; - - httpConn!.close(); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function httpServerWithoutExclusiveAccessToTcp() { - const port = listenPort; - const listener = Deno.listen({ port }); - - const [clientConn, serverConn] = await Promise.all([ - Deno.connect({ port }), - listener.accept(), - ]); - - const buf = new Uint8Array(128); - const readPromise = serverConn.read(buf); - assertThrows(() => Deno.serveHttp(serverConn), Deno.errors.BadResource); - - clientConn.close(); - listener.close(); - await readPromise; - }, -); - -Deno.test( - { - permissions: { net: true, read: true }, - }, - async function httpServerWithoutExclusiveAccessToTls() { - const hostname = "localhost"; - const port = listenPort; - const listener = Deno.listenTls({ - hostname, - port, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"), - }); - - const caCerts = [ - await Deno.readTextFile("cli/tests/testdata/tls/RootCA.pem"), - ]; - const [clientConn, serverConn] = await Promise.all([ - Deno.connectTls({ hostname, port, caCerts }), - listener.accept(), - ]); - await Promise.all([clientConn.handshake(), serverConn.handshake()]); - - const buf = new Uint8Array(128); - const readPromise = serverConn.read(buf); - assertThrows(() => Deno.serveHttp(serverConn), Deno.errors.BadResource); - - clientConn.close(); - listener.close(); - await readPromise; - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function httpServerWithoutExclusiveAccessToUnixSocket() { - const filePath = tmpUnixSocketPath(); - const listener = Deno.listen({ path: filePath, transport: "unix" }); - - const [clientConn, serverConn] = await Promise.all([ - Deno.connect({ path: filePath, transport: "unix" }), - listener.accept(), - ]); - - const buf = new Uint8Array(128); - const readPromise = serverConn.read(buf); - assertThrows(() => Deno.serveHttp(serverConn), Deno.errors.BadResource); - - clientConn.close(); - listener.close(); - await readPromise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerRequestResponseClone() { - const body = "deno".repeat(64 * 1024); - let httpConn: Deno.HttpConn; - const listener = Deno.listen({ port: listenPort }); - const promise = (async () => { - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const reqEvent = await httpConn.nextRequest(); - assert(reqEvent); - const { request, respondWith } = reqEvent; - const clone = request.clone(); - const reader = clone.body!.getReader(); - - // get first chunk from branch2 - const clonedChunks = []; - const { value, done } = await reader.read(); - assert(!done); - clonedChunks.push(value); - - // consume request after first chunk single read - // readAll should read correctly the rest of the body. - // firstChunk should be in the stream internal buffer - const body1 = await request.text(); - - while (true) { - const { value, done } = await reader.read(); - if (done) break; - clonedChunks.push(value); - } - let offset = 0; - const body2 = new Uint8Array(body.length); - for (const chunk of clonedChunks) { - body2.set(chunk, offset); - offset += chunk.byteLength; - } - - assertEquals(body1, body); - assertEquals(body1, new TextDecoder().decode(body2)); - await respondWith(new Response(body)); - })(); - - const response = await fetch(`http://localhost:${listenPort}`, { - body, - method: "POST", - }); - const clone = response.clone(); - assertEquals(await response.text(), await clone.text()); - - await promise; - httpConn!.close(); - }, -); - -Deno.test({ - name: "http server compresses and flushes each chunk of a streamed resource", - permissions: { net: true, run: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - const port2 = listenPort2; - - const encoder = new TextEncoder(); - const listener = Deno.listen({ hostname, port }); - const listener2 = Deno.listen({ hostname, port: port2 }); - - let httpConn: Deno.HttpConn; - async function server() { - const tcpConn = await listener.accept(); - httpConn = Deno.serveHttp(tcpConn); - const e = await httpConn.nextRequest(); - assert(e); - const { request, respondWith } = e; - assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); - const resp = await fetch(`http://${hostname}:${port2}/`); - await respondWith(resp); - listener.close(); - } - - const ts = new TransformStream(); - const writer = ts.writable.getWriter(); - writer.write(encoder.encode("hello")); - - let httpConn2: Deno.HttpConn; - async function server2() { - const tcpConn = await listener2.accept(); - httpConn2 = Deno.serveHttp(tcpConn); - const e = await httpConn2.nextRequest(); - assert(e); - await e.respondWith( - new Response(ts.readable, { - headers: { "Content-Type": "text/plain" }, - }), - ); - listener2.close(); - } - - async function client() { - const url = `http://${hostname}:${port}/`; - const args = [ - "--request", - "GET", - "--url", - url, - "--header", - "Accept-Encoding: gzip, deflate, br", - "--no-buffer", - ]; - const proc = new Deno.Command("curl", { - args, - stderr: "null", - stdout: "piped", - }).spawn(); - const stdout = proc.stdout - .pipeThrough(new DecompressionStream("gzip")) - .pipeThrough(new TextDecoderStream()); - let body = ""; - for await (const chunk of stdout) { - body += chunk; - if (body === "hello") { - writer.write(encoder.encode(" world")); - writer.close(); - } - } - assertEquals(body, "hello world"); - const status = await proc.status; - assert(status.success); - } - - await Promise.all([server(), server2(), client()]); - httpConn!.close(); - httpConn2!.close(); - }, -}); - -Deno.test("case insensitive comma value finder", async (t) => { - const cases = /** @type {[string, boolean][]} */ ([ - ["websocket", true], - ["wEbSOcKET", true], - [",wEbSOcKET", true], - [",wEbSOcKET,", true], - [", wEbSOcKET ,", true], - ["test, wEbSOcKET ,", true], - ["test ,\twEbSOcKET\t\t ,", true], - ["test , wEbSOcKET", true], - ["test, asdf,web,wEbSOcKET", true], - ["test, asdf,web,wEbSOcKETs", false], - ["test, asdf,awebsocket,wEbSOcKETs", false], - ]); - - const findValue = buildCaseInsensitiveCommaValueFinder("websocket"); - for (const [input, expected] of cases) { - await t.step(input.toString(), () => { - const actual = findValue(input); - assertEquals(actual, expected); - }); - } -}); - -async function httpServerWithErrorBody( - listener: Deno.Listener, - compression: boolean, -): Promise<Deno.HttpConn> { - const conn = await listener.accept(); - listener.close(); - const httpConn = Deno.serveHttp(conn); - const e = await httpConn.nextRequest(); - assert(e); - const { respondWith } = e; - const originalErr = new Error("boom"); - const rs = new ReadableStream({ - async start(controller) { - controller.enqueue(new Uint8Array([65])); - await delay(1000); - controller.error(originalErr); - }, - }); - const init = compression ? { headers: { "content-type": "text/plain" } } : {}; - const response = new Response(rs, init); - const err = await assertRejects(() => respondWith(response)); - assert(err === originalErr); - return httpConn; -} - -for (const compression of [true, false]) { - Deno.test({ - name: `http server errors stream if response body errors (http/1.1${ - compression ? " + compression" : "" - })`, - permissions: { net: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - const listener = Deno.listen({ hostname, port }); - const server = httpServerWithErrorBody(listener, compression); - - const conn = await Deno.connect({ hostname, port }); - const msg = new TextEncoder().encode( - `GET / HTTP/1.1\r\nHost: ${hostname}:${port}\r\n\r\n`, - ); - const nwritten = await conn.write(msg); - assertEquals(nwritten, msg.byteLength); - - const buf = new Uint8Array(1024); - const nread = await conn.read(buf); - assert(nread); - const data = new TextDecoder().decode(buf.subarray(0, nread)); - assert(data.endsWith("1\r\nA\r\n")); - const nread2 = await conn.read(buf); // connection should be closed now because the stream errored - assertEquals(nread2, null); - conn.close(); - - const httpConn = await server; - httpConn.close(); - }, - }); - - Deno.test({ - name: `http server errors stream if response body errors (http/1.1 + fetch${ - compression ? " + compression" : "" - })`, - permissions: { net: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - const listener = Deno.listen({ hostname, port }); - const server = httpServerWithErrorBody(listener, compression); - - const resp = await fetch(`http://${hostname}:${port}/`); - assert(resp.body); - const reader = resp.body.getReader(); - const result = await reader.read(); - assert(!result.done); - assertEquals(result.value, new Uint8Array([65])); - const err = await assertRejects(() => reader.read()); - assert(err instanceof TypeError); - assert(err.message.includes("unexpected EOF")); - - const httpConn = await server; - httpConn.close(); - }, - }); - - Deno.test({ - name: `http server errors stream if response body errors (http/2 + fetch${ - compression ? " + compression" : "" - }))`, - permissions: { net: true, read: true }, - async fn() { - const hostname = "localhost"; - const port = listenPort; - - const listener = Deno.listenTls({ - hostname, - port, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"), - alpnProtocols: ["h2"], - }); - const server = httpServerWithErrorBody(listener, compression); - - const caCert = Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const resp = await fetch(`https://${hostname}:${port}/`, { client }); - client.close(); - assert(resp.body); - const reader = resp.body.getReader(); - const result = await reader.read(); - assert(!result.done); - assertEquals(result.value, new Uint8Array([65])); - const err = await assertRejects(() => reader.read()); - assert(err instanceof TypeError); - assert(err.message.includes("unexpected internal error encountered")); - - const httpConn = await server; - httpConn.close(); - }, - }); -} - -Deno.test({ - name: "request signal is aborted when response errors", - permissions: { net: true }, - async fn() { - let httpConn: Deno.HttpConn; - const promise = (async () => { - const listener = Deno.listen({ port: listenPort }); - const conn = await listener.accept(); - listener.close(); - httpConn = Deno.serveHttp(conn); - const ev = await httpConn.nextRequest(); - const { request, respondWith } = ev!; - - await delay(300); - await assertRejects(() => respondWith(new Response("Hello World"))); - assert(request.signal.aborted); - })(); - - const abortController = new AbortController(); - - fetch(`http://127.0.0.1:${listenPort}/`, { - signal: abortController.signal, - }).catch(() => { - // ignore - }); - - await delay(100); - abortController.abort(); - await promise; - httpConn!.close(); - }, -}); - -Deno.test( - async function httpConnExplicitResourceManagement() { - let promise; - - { - const listen = Deno.listen({ port: listenPort }); - promise = fetch(`http://localhost:${listenPort}/`).catch(() => null); - const serverConn = await listen.accept(); - listen.close(); - - using _httpConn = Deno.serveHttp(serverConn); - } - - const response = await promise; - assertEquals(response, null); - }, -); - -function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { - // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 - const tp = new TextProtoReader(r); - let finished = false; - const chunks: Array<{ - offset: number; - data: Uint8Array; - }> = []; - async function read(buf: Uint8Array): Promise<number | null> { - if (finished) return null; - const [chunk] = chunks; - if (chunk) { - const chunkRemaining = chunk.data.byteLength - chunk.offset; - const readLength = Math.min(chunkRemaining, buf.byteLength); - for (let i = 0; i < readLength; i++) { - buf[i] = chunk.data[chunk.offset + i]; - } - chunk.offset += readLength; - if (chunk.offset === chunk.data.byteLength) { - chunks.shift(); - // Consume \r\n; - if ((await tp.readLine()) === null) { - throw new Deno.errors.UnexpectedEof(); - } - } - return readLength; - } - const line = await tp.readLine(); - if (line === null) throw new Deno.errors.UnexpectedEof(); - // TODO(bartlomieju): handle chunk extension - const [chunkSizeString] = line.split(";"); - const chunkSize = parseInt(chunkSizeString, 16); - if (Number.isNaN(chunkSize) || chunkSize < 0) { - throw new Deno.errors.InvalidData("Invalid chunk size"); - } - if (chunkSize > 0) { - if (chunkSize > buf.byteLength) { - let eof = await r.readFull(buf); - if (eof === null) { - throw new Deno.errors.UnexpectedEof(); - } - const restChunk = new Uint8Array(chunkSize - buf.byteLength); - eof = await r.readFull(restChunk); - if (eof === null) { - throw new Deno.errors.UnexpectedEof(); - } else { - chunks.push({ - offset: 0, - data: restChunk, - }); - } - return buf.byteLength; - } else { - const bufToFill = buf.subarray(0, chunkSize); - const eof = await r.readFull(bufToFill); - if (eof === null) { - throw new Deno.errors.UnexpectedEof(); - } - // Consume \r\n - if ((await tp.readLine()) === null) { - throw new Deno.errors.UnexpectedEof(); - } - return chunkSize; - } - } else { - assert(chunkSize === 0); - // Consume \r\n - if ((await r.readLine()) === null) { - throw new Deno.errors.UnexpectedEof(); - } - await readTrailers(h, r); - finished = true; - return null; - } - } - return { read }; -} - -async function readTrailers( - headers: Headers, - r: BufReader, -) { - const trailers = parseTrailer(headers.get("trailer")); - if (trailers == null) return; - const trailerNames = [...trailers.keys()]; - const tp = new TextProtoReader(r); - const result = await tp.readMimeHeader(); - if (result == null) { - throw new Deno.errors.InvalidData("Missing trailer header."); - } - const undeclared = [...result.keys()].filter( - (k) => !trailerNames.includes(k), - ); - if (undeclared.length > 0) { - throw new Deno.errors.InvalidData( - `Undeclared trailers: ${Deno.inspect(undeclared)}.`, - ); - } - for (const [k, v] of result) { - headers.append(k, v); - } - const missingTrailers = trailerNames.filter((k) => !result.has(k)); - if (missingTrailers.length > 0) { - throw new Deno.errors.InvalidData( - `Missing trailers: ${Deno.inspect(missingTrailers)}.`, - ); - } - headers.delete("trailer"); -} - -function parseTrailer(field: string | null): Headers | undefined { - if (field == null) { - return undefined; - } - const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); - if (trailerNames.length === 0) { - throw new Deno.errors.InvalidData("Empty trailer header."); - } - const prohibited = trailerNames.filter((k) => isProhibitedForTrailer(k)); - if (prohibited.length > 0) { - throw new Deno.errors.InvalidData( - `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, - ); - } - return new Headers(trailerNames.map((key) => [key, ""])); -} - -function isProhibitedForTrailer(key: string): boolean { - const s = new Set(["transfer-encoding", "content-length", "trailer"]); - return s.has(key.toLowerCase()); -} diff --git a/cli/tests/unit/net_test.ts b/cli/tests/unit/net_test.ts deleted file mode 100644 index fa9790a76..000000000 --- a/cli/tests/unit/net_test.ts +++ /dev/null @@ -1,1274 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertNotEquals, - assertRejects, - assertThrows, - delay, - execCode, - execCode2, - tmpUnixSocketPath, -} from "./test_util.ts"; - -// Since these tests may run in parallel, ensure this port is unique to this file -const listenPort = 4503; -const listenPort2 = 4504; - -let isCI: boolean; -try { - isCI = Deno.env.get("CI") !== undefined; -} catch { - isCI = true; -} - -Deno.test({ permissions: { net: true } }, function netTcpListenClose() { - const listener = Deno.listen({ hostname: "127.0.0.1", port: listenPort }); - assert(listener.addr.transport === "tcp"); - assertEquals(listener.addr.hostname, "127.0.0.1"); - assertEquals(listener.addr.port, listenPort); - assertNotEquals(listener.rid, 0); - listener.close(); -}); - -Deno.test( - { - permissions: { net: true }, - }, - function netUdpListenClose() { - const socket = Deno.listenDatagram({ - hostname: "127.0.0.1", - port: listenPort, - transport: "udp", - }); - assert(socket.addr.transport === "udp"); - assertEquals(socket.addr.hostname, "127.0.0.1"); - assertEquals(socket.addr.port, listenPort); - socket.close(); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - function netUnixListenClose() { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listen({ - path: filePath, - transport: "unix", - }); - assert(socket.addr.transport === "unix"); - assertEquals(socket.addr.path, filePath); - socket.close(); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - function netUnixPacketListenClose() { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listenDatagram({ - path: filePath, - transport: "unixpacket", - }); - assert(socket.addr.transport === "unixpacket"); - assertEquals(socket.addr.path, filePath); - socket.close(); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: false }, - }, - function netUnixListenWritePermission() { - assertThrows(() => { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listen({ - path: filePath, - transport: "unix", - }); - assert(socket.addr.transport === "unix"); - assertEquals(socket.addr.path, filePath); - socket.close(); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: false }, - }, - function netUnixPacketListenWritePermission() { - assertThrows(() => { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listenDatagram({ - path: filePath, - transport: "unixpacket", - }); - assert(socket.addr.transport === "unixpacket"); - assertEquals(socket.addr.path, filePath); - socket.close(); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function netTcpCloseWhileAccept() { - const listener = Deno.listen({ port: listenPort }); - const p = listener.accept(); - listener.close(); - // TODO(piscisaureus): the error type should be `Interrupted` here, which - // gets thrown, but then ext/net catches it and rethrows `BadResource`. - await assertRejects( - () => p, - Deno.errors.BadResource, - "Listener has been closed", - ); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function netUnixCloseWhileAccept() { - const filePath = tmpUnixSocketPath(); - const listener = Deno.listen({ - path: filePath, - transport: "unix", - }); - const p = listener.accept(); - listener.close(); - await assertRejects( - () => p, - Deno.errors.BadResource, - "Listener has been closed", - ); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netTcpConcurrentAccept() { - const listener = Deno.listen({ port: 4510 }); - let acceptErrCount = 0; - const checkErr = (e: Error) => { - if (e.message === "Listener has been closed") { - assertEquals(acceptErrCount, 1); - } else if (e.message === "Another accept task is ongoing") { - acceptErrCount++; - } else { - throw new Error("Unexpected error message"); - } - }; - const p = listener.accept().catch(checkErr); - const p1 = listener.accept().catch(checkErr); - await Promise.race([p, p1]); - listener.close(); - await Promise.all([p, p1]); - assertEquals(acceptErrCount, 1); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function netUnixConcurrentAccept() { - const filePath = tmpUnixSocketPath(); - const listener = Deno.listen({ transport: "unix", path: filePath }); - let acceptErrCount = 0; - const checkErr = (e: Error) => { - if (e.message === "Listener has been closed") { - assertEquals(acceptErrCount, 1); - } else if (e instanceof Deno.errors.Busy) { // "Listener already in use" - acceptErrCount++; - } else { - throw e; - } - }; - const p = listener.accept().catch(checkErr); - const p1 = listener.accept().catch(checkErr); - await Promise.race([p, p1]); - listener.close(); - await Promise.all([p, p1]); - assertEquals(acceptErrCount, 1); - }, -); - -Deno.test({ permissions: { net: true } }, async function netTcpDialListen() { - const listener = Deno.listen({ port: listenPort }); - listener.accept().then( - async (conn) => { - assert(conn.remoteAddr != null); - assert(conn.localAddr.transport === "tcp"); - assertEquals(conn.localAddr.hostname, "127.0.0.1"); - assertEquals(conn.localAddr.port, listenPort); - await conn.write(new Uint8Array([1, 2, 3])); - conn.close(); - }, - ); - - const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); - assert(conn.remoteAddr.transport === "tcp"); - assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); - assertEquals(conn.remoteAddr.port, listenPort); - assert(conn.localAddr != null); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - assert(conn.rid > 0); - - assert(readResult !== null); - - const readResult2 = await conn.read(buf); - assertEquals(readResult2, null); - - listener.close(); - conn.close(); -}); - -Deno.test({ permissions: { net: true } }, async function netTcpSetNoDelay() { - const listener = Deno.listen({ port: listenPort }); - listener.accept().then( - async (conn) => { - assert(conn.remoteAddr != null); - assert(conn.localAddr.transport === "tcp"); - assertEquals(conn.localAddr.hostname, "127.0.0.1"); - assertEquals(conn.localAddr.port, listenPort); - await conn.write(new Uint8Array([1, 2, 3])); - conn.close(); - }, - ); - - const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); - conn.setNoDelay(true); - assert(conn.remoteAddr.transport === "tcp"); - assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); - assertEquals(conn.remoteAddr.port, listenPort); - assert(conn.localAddr != null); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - assert(conn.rid > 0); - - assert(readResult !== null); - - const readResult2 = await conn.read(buf); - assertEquals(readResult2, null); - - listener.close(); - conn.close(); -}); - -Deno.test({ permissions: { net: true } }, async function netTcpSetKeepAlive() { - const listener = Deno.listen({ port: listenPort }); - listener.accept().then( - async (conn) => { - assert(conn.remoteAddr != null); - assert(conn.localAddr.transport === "tcp"); - assertEquals(conn.localAddr.hostname, "127.0.0.1"); - assertEquals(conn.localAddr.port, listenPort); - await conn.write(new Uint8Array([1, 2, 3])); - conn.close(); - }, - ); - - const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); - conn.setKeepAlive(true); - assert(conn.remoteAddr.transport === "tcp"); - assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); - assertEquals(conn.remoteAddr.port, listenPort); - assert(conn.localAddr != null); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - assert(conn.rid > 0); - - assert(readResult !== null); - - const readResult2 = await conn.read(buf); - assertEquals(readResult2, null); - - listener.close(); - conn.close(); -}); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function netUnixDialListen() { - const filePath = tmpUnixSocketPath(); - const listener = Deno.listen({ path: filePath, transport: "unix" }); - listener.accept().then( - async (conn) => { - assert(conn.remoteAddr != null); - assert(conn.localAddr.transport === "unix"); - assertEquals(conn.localAddr.path, filePath); - await conn.write(new Uint8Array([1, 2, 3])); - conn.close(); - }, - ); - const conn = await Deno.connect({ path: filePath, transport: "unix" }); - assert(conn.remoteAddr.transport === "unix"); - assertEquals(conn.remoteAddr.path, filePath); - assert(conn.remoteAddr != null); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - assert(conn.rid > 0); - - assert(readResult !== null); - - const readResult2 = await conn.read(buf); - assertEquals(readResult2, null); - - listener.close(); - conn.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netUdpSendReceive() { - const alice = Deno.listenDatagram({ port: listenPort, transport: "udp" }); - assert(alice.addr.transport === "udp"); - assertEquals(alice.addr.port, listenPort); - assertEquals(alice.addr.hostname, "127.0.0.1"); - - const bob = Deno.listenDatagram({ port: listenPort2, transport: "udp" }); - assert(bob.addr.transport === "udp"); - assertEquals(bob.addr.port, listenPort2); - assertEquals(bob.addr.hostname, "127.0.0.1"); - - const sent = new Uint8Array([1, 2, 3]); - const byteLength = await alice.send(sent, bob.addr); - - assertEquals(byteLength, 3); - - const [recvd, remote] = await bob.receive(); - assert(remote.transport === "udp"); - assertEquals(remote.port, listenPort); - assertEquals(recvd.length, 3); - assertEquals(1, recvd[0]); - assertEquals(2, recvd[1]); - assertEquals(3, recvd[2]); - alice.close(); - bob.close(); - }, -); - -Deno.test( - { permissions: { net: true }, ignore: true }, - async function netUdpSendReceiveBroadcast() { - // Must bind sender to an address that can send to the broadcast address on MacOS. - // Macos will give us error 49 when sending the broadcast packet if we omit hostname here. - const alice = Deno.listenDatagram({ - port: listenPort, - transport: "udp", - hostname: "0.0.0.0", - }); - - const bob = Deno.listenDatagram({ - port: listenPort, - transport: "udp", - hostname: "0.0.0.0", - }); - assert(bob.addr.transport === "udp"); - assertEquals(bob.addr.port, listenPort); - assertEquals(bob.addr.hostname, "0.0.0.0"); - - const broadcastAddr = { ...bob.addr, hostname: "255.255.255.255" }; - - const sent = new Uint8Array([1, 2, 3]); - const byteLength = await alice.send(sent, broadcastAddr); - - assertEquals(byteLength, 3); - const [recvd, remote] = await bob.receive(); - assert(remote.transport === "udp"); - assertEquals(remote.port, listenPort); - assertEquals(recvd.length, 3); - assertEquals(1, recvd[0]); - assertEquals(2, recvd[1]); - assertEquals(3, recvd[2]); - alice.close(); - bob.close(); - }, -); - -Deno.test( - { permissions: { net: true }, ignore: true }, - async function netUdpMulticastV4() { - const listener = Deno.listenDatagram({ - hostname: "0.0.0.0", - port: 5353, - transport: "udp", - reuseAddress: true, - }); - - const membership = await listener.joinMulticastV4( - "224.0.0.251", - "127.0.0.1", - ); - - membership.setLoopback(true); - membership.setLoopback(false); - membership.setTTL(50); - membership.leave(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true }, ignore: true }, - async function netUdpMulticastV6() { - const listener = Deno.listenDatagram({ - hostname: "::", - port: 5353, - transport: "udp", - reuseAddress: true, - }); - - const membership = await listener.joinMulticastV6( - "ff02::fb", - 1, - ); - - membership.setLoopback(true); - membership.setLoopback(false); - membership.leave(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true }, ignore: true }, - async function netUdpSendReceiveMulticastv4() { - const alice = Deno.listenDatagram({ - hostname: "0.0.0.0", - port: 5353, - transport: "udp", - reuseAddress: true, - loopback: true, - }); - - const bob = Deno.listenDatagram({ - hostname: "0.0.0.0", - port: 5353, - transport: "udp", - reuseAddress: true, - }); - - const aliceMembership = await alice.joinMulticastV4( - "224.0.0.1", - "0.0.0.0", - ); - - const bobMembership = await bob.joinMulticastV4("224.0.0.1", "0.0.0.0"); - - const sent = new Uint8Array([1, 2, 3]); - - await alice.send(sent, { - hostname: "224.0.0.1", - port: 5353, - transport: "udp", - }); - - const [recvd, remote] = await bob.receive(); - - assert(remote.transport === "udp"); - assertEquals(remote.port, 5353); - assertEquals(recvd.length, 3); - assertEquals(1, recvd[0]); - assertEquals(2, recvd[1]); - assertEquals(3, recvd[2]); - - aliceMembership.leave(); - bobMembership.leave(); - - alice.close(); - bob.close(); - }, -); - -Deno.test( - { permissions: { net: true }, ignore: true }, - async function netUdpMulticastLoopbackOption() { - // Must bind sender to an address that can send to the broadcast address on MacOS. - // Macos will give us error 49 when sending the broadcast packet if we omit hostname here. - const listener = Deno.listenDatagram({ - port: 5353, - transport: "udp", - hostname: "0.0.0.0", - loopback: true, - reuseAddress: true, - }); - - const membership = await listener.joinMulticastV4( - "224.0.0.1", - "0.0.0.0", - ); - - // await membership.setLoopback(true); - - const sent = new Uint8Array([1, 2, 3]); - const byteLength = await listener.send(sent, { - hostname: "224.0.0.1", - port: 5353, - transport: "udp", - }); - - assertEquals(byteLength, 3); - const [recvd, remote] = await listener.receive(); - assert(remote.transport === "udp"); - assertEquals(remote.port, 5353); - assertEquals(recvd.length, 3); - assertEquals(1, recvd[0]); - assertEquals(2, recvd[1]); - assertEquals(3, recvd[2]); - membership.leave(); - listener.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netUdpConcurrentSendReceive() { - const socket = Deno.listenDatagram({ port: listenPort, transport: "udp" }); - assert(socket.addr.transport === "udp"); - assertEquals(socket.addr.port, listenPort); - assertEquals(socket.addr.hostname, "127.0.0.1"); - - const recvPromise = socket.receive(); - - const sendBuf = new Uint8Array([1, 2, 3]); - const sendLen = await socket.send(sendBuf, socket.addr); - assertEquals(sendLen, 3); - - const [recvBuf, _recvAddr] = await recvPromise; - assertEquals(recvBuf.length, 3); - assertEquals(1, recvBuf[0]); - assertEquals(2, recvBuf[1]); - assertEquals(3, recvBuf[2]); - - socket.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netUdpBorrowMutError() { - const socket = Deno.listenDatagram({ - port: listenPort, - transport: "udp", - }); - // Panic happened on second send: BorrowMutError - const a = socket.send(new Uint8Array(), socket.addr); - const b = socket.send(new Uint8Array(), socket.addr); - await Promise.all([a, b]); - socket.close(); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function netUnixPacketSendReceive() { - const aliceFilePath = tmpUnixSocketPath(); - const alice = Deno.listenDatagram({ - path: aliceFilePath, - transport: "unixpacket", - }); - assert(alice.addr.transport === "unixpacket"); - assertEquals(alice.addr.path, aliceFilePath); - - const bobFilePath = tmpUnixSocketPath(); - const bob = Deno.listenDatagram({ - path: bobFilePath, - transport: "unixpacket", - }); - assert(bob.addr.transport === "unixpacket"); - assertEquals(bob.addr.path, bobFilePath); - - const sent = new Uint8Array([1, 2, 3]); - const byteLength = await alice.send(sent, bob.addr); - assertEquals(byteLength, 3); - - const [recvd, remote] = await bob.receive(); - assert(remote.transport === "unixpacket"); - assertEquals(remote.path, aliceFilePath); - assertEquals(recvd.length, 3); - assertEquals(1, recvd[0]); - assertEquals(2, recvd[1]); - assertEquals(3, recvd[2]); - alice.close(); - bob.close(); - }, -); - -// TODO(lucacasonato): support concurrent reads and writes on unixpacket sockets -Deno.test( - { ignore: true, permissions: { read: true, write: true } }, - async function netUnixPacketConcurrentSendReceive() { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listenDatagram({ - path: filePath, - transport: "unixpacket", - }); - assert(socket.addr.transport === "unixpacket"); - assertEquals(socket.addr.path, filePath); - - const recvPromise = socket.receive(); - - const sendBuf = new Uint8Array([1, 2, 3]); - const sendLen = await socket.send(sendBuf, socket.addr); - assertEquals(sendLen, 3); - - const [recvBuf, _recvAddr] = await recvPromise; - assertEquals(recvBuf.length, 3); - assertEquals(1, recvBuf[0]); - assertEquals(2, recvBuf[1]); - assertEquals(3, recvBuf[2]); - - socket.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netTcpListenIteratorBreakClosesResource() { - async function iterate(listener: Deno.Listener) { - let i = 0; - - for await (const conn of listener) { - conn.close(); - i++; - - if (i > 1) { - break; - } - } - } - - const addr = { hostname: "127.0.0.1", port: 8888 }; - const listener = Deno.listen(addr); - const iteratePromise = iterate(listener); - - await delay(100); - const conn1 = await Deno.connect(addr); - conn1.close(); - const conn2 = await Deno.connect(addr); - conn2.close(); - - await iteratePromise; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netTcpListenCloseWhileIterating() { - const listener = Deno.listen({ port: 8001 }); - const nextWhileClosing = listener[Symbol.asyncIterator]().next(); - listener.close(); - assertEquals(await nextWhileClosing, { value: undefined, done: true }); - - const nextAfterClosing = listener[Symbol.asyncIterator]().next(); - assertEquals(await nextAfterClosing, { value: undefined, done: true }); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netUdpListenCloseWhileIterating() { - const socket = Deno.listenDatagram({ port: 8000, transport: "udp" }); - const nextWhileClosing = socket[Symbol.asyncIterator]().next(); - socket.close(); - assertEquals(await nextWhileClosing, { value: undefined, done: true }); - - const nextAfterClosing = socket[Symbol.asyncIterator]().next(); - assertEquals(await nextAfterClosing, { value: undefined, done: true }); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function netUnixListenCloseWhileIterating() { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listen({ path: filePath, transport: "unix" }); - const nextWhileClosing = socket[Symbol.asyncIterator]().next(); - socket.close(); - assertEquals(await nextWhileClosing, { value: undefined, done: true }); - - const nextAfterClosing = socket[Symbol.asyncIterator]().next(); - assertEquals(await nextAfterClosing, { value: undefined, done: true }); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - async function netUnixPacketListenCloseWhileIterating() { - const filePath = tmpUnixSocketPath(); - const socket = Deno.listenDatagram({ - path: filePath, - transport: "unixpacket", - }); - const nextWhileClosing = socket[Symbol.asyncIterator]().next(); - socket.close(); - assertEquals(await nextWhileClosing, { value: undefined, done: true }); - - const nextAfterClosing = socket[Symbol.asyncIterator]().next(); - assertEquals(await nextAfterClosing, { value: undefined, done: true }); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netListenAsyncIterator() { - const addr = { hostname: "127.0.0.1", port: listenPort }; - const listener = Deno.listen(addr); - const runAsyncIterator = async () => { - for await (const conn of listener) { - await conn.write(new Uint8Array([1, 2, 3])); - conn.close(); - } - }; - runAsyncIterator(); - const conn = await Deno.connect(addr); - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - assert(conn.rid > 0); - - assert(readResult !== null); - - const readResult2 = await conn.read(buf); - assertEquals(readResult2, null); - - listener.close(); - conn.close(); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - async function netCloseWriteSuccess() { - const addr = { hostname: "127.0.0.1", port: listenPort }; - const listener = Deno.listen(addr); - const { promise: closePromise, resolve } = Promise.withResolvers<void>(); - listener.accept().then(async (conn) => { - await conn.write(new Uint8Array([1, 2, 3])); - await closePromise; - conn.close(); - }); - const conn = await Deno.connect(addr); - conn.closeWrite(); // closing write - const buf = new Uint8Array(1024); - // Check read not impacted - const readResult = await conn.read(buf); - assertEquals(3, readResult); - assertEquals(1, buf[0]); - assertEquals(2, buf[1]); - assertEquals(3, buf[2]); - // Verify that the write end of the socket is closed. - // TODO(piscisaureus): assert that thrown error is of a specific type. - await assertRejects(async () => { - await conn.write(new Uint8Array([1, 2, 3])); - }); - resolve(); - listener.close(); - conn.close(); - }, -); - -Deno.test( - { - // https://github.com/denoland/deno/issues/11580 - ignore: Deno.build.os === "darwin" && isCI, - permissions: { net: true }, - }, - async function netHangsOnClose() { - let acceptedConn: Deno.Conn; - - async function iteratorReq(listener: Deno.Listener) { - const p = new Uint8Array(10); - const conn = await listener.accept(); - acceptedConn = conn; - - try { - while (true) { - const nread = await conn.read(p); - if (nread === null) { - break; - } - await conn.write(new Uint8Array([1, 2, 3])); - } - } catch (err) { - assert(err); - assert(err instanceof Deno.errors.Interrupted); - } - } - - const addr = { hostname: "127.0.0.1", port: listenPort }; - const listener = Deno.listen(addr); - const listenerPromise = iteratorReq(listener); - const connectionPromise = (async () => { - const conn = await Deno.connect(addr); - await conn.write(new Uint8Array([1, 2, 3, 4])); - const buf = new Uint8Array(10); - await conn.read(buf); - conn!.close(); - acceptedConn!.close(); - listener.close(); - })(); - - await Promise.all([ - listenerPromise, - connectionPromise, - ]); - }, -); - -Deno.test( - { - permissions: { net: true }, - }, - function netExplicitUndefinedHostname() { - const listener = Deno.listen({ hostname: undefined, port: 8080 }); - assertEquals((listener.addr as Deno.NetAddr).hostname, "0.0.0.0"); - listener.close(); - }, -); - -Deno.test( - { - ignore: Deno.build.os !== "linux", - permissions: { read: true, write: true }, - }, - function netUnixAbstractPathShouldNotPanic() { - const listener = Deno.listen({ - path: "\0aaa", - transport: "unix", - }); - assert("not panic"); - listener.close(); - }, -); - -Deno.test({ permissions: { net: true } }, async function whatwgStreams() { - const server = (async () => { - const listener = Deno.listen({ hostname: "127.0.0.1", port: listenPort }); - const conn = await listener.accept(); - await conn.readable.pipeTo(conn.writable); - listener.close(); - })(); - - const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); - const reader = conn.readable.getReader(); - const writer = conn.writable.getWriter(); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - const data = encoder.encode("Hello World"); - - await writer.write(data); - const { value, done } = await reader.read(); - assert(!done); - assertEquals(decoder.decode(value), "Hello World"); - await reader.cancel(); - await server; -}); - -Deno.test( - { permissions: { read: true } }, - async function readableStreamTextEncoderPipe() { - const filename = "cli/tests/testdata/assets/hello.txt"; - const file = await Deno.open(filename); - const readable = file.readable.pipeThrough(new TextDecoderStream()); - const chunks = []; - for await (const chunk of readable) { - chunks.push(chunk); - } - assertEquals(chunks.length, 1); - assertEquals(chunks[0].length, 12); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function writableStream() { - const path = await Deno.makeTempFile(); - const file = await Deno.open(path, { write: true }); - assert(file.writable instanceof WritableStream); - const readable = new ReadableStream({ - start(controller) { - controller.enqueue(new TextEncoder().encode("hello ")); - controller.enqueue(new TextEncoder().encode("world!")); - controller.close(); - }, - }); - await readable.pipeTo(file.writable); - const res = await Deno.readTextFile(path); - assertEquals(res, "hello world!"); - }, -); - -Deno.test( - { permissions: { read: true, run: true } }, - async function netListenUnref() { - const [statusCode, _output] = await execCode(` - async function main() { - const listener = Deno.listen({ port: ${listenPort} }); - listener.unref(); - await listener.accept(); // This doesn't block the program from exiting - } - main(); - `); - assertEquals(statusCode, 0); - }, -); - -Deno.test( - { permissions: { read: true, run: true } }, - async function netListenUnref2() { - const [statusCode, _output] = await execCode(` - async function main() { - const listener = Deno.listen({ port: ${listenPort} }); - await listener.accept(); - listener.unref(); - await listener.accept(); // The program exits here - throw new Error(); // The program doesn't reach here - } - main(); - const conn = await Deno.connect({ port: ${listenPort} }); - conn.close(); - `); - assertEquals(statusCode, 0); - }, -); - -Deno.test( - { permissions: { read: true, run: true, net: true } }, - async function netListenUnrefAndRef() { - const p = execCode2(` - async function main() { - const listener = Deno.listen({ port: ${listenPort} }); - listener.unref(); - listener.ref(); // This restores 'ref' state of listener - console.log("started"); - await listener.accept(); - console.log("accepted") - } - main(); - `); - await p.waitStdoutText("started"); - const conn = await Deno.connect({ port: listenPort }); - conn.close(); - const [statusCode, output] = await p.finished(); - assertEquals(statusCode, 0); - assertEquals(output.trim(), "started\naccepted"); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function netListenUnrefConcurrentAccept() { - const timer = setTimeout(() => {}, 1000); - const listener = Deno.listen({ port: listenPort }); - listener.accept().catch(() => {}); - listener.unref(); - // Unref'd listener still causes Busy error - // on concurrent accept calls. - await assertRejects(async () => { - await listener.accept(); // The program exits here - }, Deno.errors.Busy); - listener.close(); - clearTimeout(timer); - }, -); - -Deno.test({ - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, -}, function netUnixListenAddrAlreadyInUse() { - const filePath = tmpUnixSocketPath(); - const listener = Deno.listen({ path: filePath, transport: "unix" }); - assertThrows( - () => { - Deno.listen({ path: filePath, transport: "unix" }); - }, - Deno.errors.AddrInUse, - ); - listener.close(); -}); - -Deno.test( - { permissions: { net: true, read: true, run: true } }, - async function netConnUnref() { - const listener = Deno.listen({ port: listenPort }); - const intervalId = setInterval(() => {}); // This keeps event loop alive. - - const program = execCode(` - async function main() { - const conn = await Deno.connect({ port: ${listenPort} }); - conn.unref(); - await conn.read(new Uint8Array(10)); // The program exits here - throw new Error(); // The program doesn't reach here - } - main(); - `); - const conn = await listener.accept(); - const [statusCode, _output] = await program; - conn.close(); - listener.close(); - clearInterval(intervalId); - assertEquals(statusCode, 0); - }, -); - -Deno.test( - { permissions: { net: true, read: true, run: true } }, - async function netConnUnrefReadable() { - const listener = Deno.listen({ port: listenPort }); - const intervalId = setInterval(() => {}); // This keeps event loop alive. - - const program = execCode(` - async function main() { - const conn = await Deno.connect({ port: ${listenPort} }); - conn.unref(); - const reader = conn.readable.getReader(); - await reader.read(); // The program exits here - throw new Error(); // The program doesn't reach here - } - main(); - `); - const conn = await listener.accept(); - const [statusCode, _output] = await program; - conn.close(); - listener.close(); - clearInterval(intervalId); - assertEquals(statusCode, 0); - }, -); - -Deno.test({ permissions: { net: true } }, async function netTcpReuseAddr() { - const listener1 = Deno.listen({ - hostname: "127.0.0.1", - port: listenPort, - }); - listener1.accept().then( - (conn) => { - conn.close(); - }, - ); - - const conn1 = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); - const buf1 = new Uint8Array(1024); - await conn1.read(buf1); - listener1.close(); - conn1.close(); - - const listener2 = Deno.listen({ - hostname: "127.0.0.1", - port: listenPort, - }); - - listener2.accept().then( - (conn) => { - conn.close(); - }, - ); - - const conn2 = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); - const buf2 = new Uint8Array(1024); - await conn2.read(buf2); - - listener2.close(); - conn2.close(); -}); - -Deno.test( - { permissions: { net: true } }, - async function netUdpReuseAddr() { - const sender = Deno.listenDatagram({ - port: 4002, - transport: "udp", - }); - const listener1 = Deno.listenDatagram({ - port: 4000, - transport: "udp", - reuseAddress: true, - }); - const listener2 = Deno.listenDatagram({ - port: 4000, - transport: "udp", - reuseAddress: true, - }); - - const sent = new Uint8Array([1, 2, 3]); - await sender.send(sent, listener1.addr); - await Promise.any([listener1.receive(), listener2.receive()]).then( - ([recvd, remote]) => { - assert(remote.transport === "udp"); - assertEquals(recvd.length, 3); - assertEquals(1, recvd[0]); - assertEquals(2, recvd[1]); - assertEquals(3, recvd[2]); - }, - ); - sender.close(); - listener1.close(); - listener2.close(); - }, -); - -Deno.test( - { permissions: { net: true } }, - function netUdpNoReuseAddr() { - let listener1; - try { - listener1 = Deno.listenDatagram({ - port: 4001, - transport: "udp", - reuseAddress: false, - }); - } catch (err) { - assert(err); - assert(err instanceof Deno.errors.AddrInUse); // AddrInUse from previous test - } - - assertThrows(() => { - Deno.listenDatagram({ - port: 4001, - transport: "udp", - reuseAddress: false, - }); - }, Deno.errors.AddrInUse); - if (typeof listener1 !== "undefined") { - listener1.close(); - } - }, -); - -Deno.test({ - ignore: Deno.build.os !== "linux", - permissions: { net: true }, -}, async function netTcpListenReusePort() { - const port = 4003; - const listener1 = Deno.listen({ port, reusePort: true }); - const listener2 = Deno.listen({ port, reusePort: true }); - let p1; - let p2; - let listener1Recv = false; - let listener2Recv = false; - while (!listener1Recv || !listener2Recv) { - if (!p1) { - p1 = listener1.accept().then((conn) => { - conn.close(); - listener1Recv = true; - p1 = undefined; - }).catch(() => {}); - } - if (!p2) { - p2 = listener2.accept().then((conn) => { - conn.close(); - listener2Recv = true; - p2 = undefined; - }).catch(() => {}); - } - const conn = await Deno.connect({ port }); - conn.close(); - await Promise.race([p1, p2]); - } - listener1.close(); - listener2.close(); -}); - -Deno.test({ - ignore: Deno.build.os === "linux", - permissions: { net: true }, -}, function netTcpListenReusePortDoesNothing() { - const listener1 = Deno.listen({ port: 4003, reusePort: true }); - assertThrows(() => { - Deno.listen({ port: 4003, reusePort: true }); - }, Deno.errors.AddrInUse); - listener1.close(); -}); - -Deno.test({ - permissions: { net: true }, -}, function netTcpListenDoesNotThrowOnStringPort() { - // @ts-ignore String port is not allowed by typing, but it shouldn't throw - // for backwards compatibility. - const listener = Deno.listen({ hostname: "localhost", port: "0" }); - listener.close(); -}); - -Deno.test( - { permissions: { net: true } }, - async function listenerExplicitResourceManagement() { - let done: Promise<Deno.errors.BadResource>; - - { - using listener = Deno.listen({ port: listenPort }); - - done = assertRejects( - () => listener.accept(), - Deno.errors.BadResource, - ); - } - - await done; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function listenerExplicitResourceManagementManualClose() { - using listener = Deno.listen({ port: listenPort }); - listener.close(); - await assertRejects( // definitely closed - () => listener.accept(), - Deno.errors.BadResource, - ); - // calling [Symbol.dispose] after manual close is a no-op - }, -); diff --git a/cli/tests/unit/read_dir_test.ts b/cli/tests/unit/read_dir_test.ts deleted file mode 100644 index 50447ef6a..000000000 --- a/cli/tests/unit/read_dir_test.ts +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertRejects, - assertThrows, - pathToAbsoluteFileUrl, -} from "./test_util.ts"; - -function assertSameContent(files: Deno.DirEntry[]) { - let counter = 0; - - for (const entry of files) { - if (entry.name === "subdir") { - assert(entry.isDirectory); - counter++; - } - } - - assertEquals(counter, 1); -} - -Deno.test({ permissions: { read: true } }, function readDirSyncSuccess() { - const files = [...Deno.readDirSync("cli/tests/testdata")]; - assertSameContent(files); -}); - -Deno.test({ permissions: { read: true } }, function readDirSyncWithUrl() { - const files = [ - ...Deno.readDirSync(pathToAbsoluteFileUrl("cli/tests/testdata")), - ]; - assertSameContent(files); -}); - -Deno.test({ permissions: { read: false } }, function readDirSyncPerm() { - assertThrows(() => { - Deno.readDirSync("tests/"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function readDirSyncNotDir() { - assertThrows( - () => { - Deno.readDirSync("cli/tests/testdata/assets/fixture.json"); - }, - Error, - `readdir 'cli/tests/testdata/assets/fixture.json'`, - ); -}); - -Deno.test({ permissions: { read: true } }, function readDirSyncNotFound() { - assertThrows( - () => { - Deno.readDirSync("bad_dir_name"); - }, - Deno.errors.NotFound, - `readdir 'bad_dir_name'`, - ); -}); - -Deno.test({ permissions: { read: true } }, async function readDirSuccess() { - const files = []; - for await (const dirEntry of Deno.readDir("cli/tests/testdata")) { - files.push(dirEntry); - } - assertSameContent(files); -}); - -Deno.test({ permissions: { read: true } }, async function readDirWithUrl() { - const files = []; - for await ( - const dirEntry of Deno.readDir(pathToAbsoluteFileUrl("cli/tests/testdata")) - ) { - files.push(dirEntry); - } - assertSameContent(files); -}); - -Deno.test({ permissions: { read: false } }, async function readDirPerm() { - await assertRejects(async () => { - await Deno.readDir("tests/")[Symbol.asyncIterator]().next(); - }, Deno.errors.PermissionDenied); -}); - -Deno.test( - { permissions: { read: true }, ignore: Deno.build.os == "windows" }, - async function readDirDevFd(): Promise< - void - > { - for await (const _ of Deno.readDir("/dev/fd")) { - // We don't actually care whats in here; just that we don't panic on non regular entries - } - }, -); - -Deno.test( - { permissions: { read: true }, ignore: Deno.build.os == "windows" }, - function readDirDevFdSync() { - for (const _ of Deno.readDirSync("/dev/fd")) { - // We don't actually care whats in here; just that we don't panic on non regular file entries - } - }, -); - -Deno.test({ permissions: { read: true } }, async function readDirNotFound() { - await assertRejects( - async () => { - await Deno.readDir("bad_dir_name")[Symbol.asyncIterator]().next(); - }, - Deno.errors.NotFound, - `readdir 'bad_dir_name'`, - ); -}); diff --git a/cli/tests/unit/read_file_test.ts b/cli/tests/unit/read_file_test.ts deleted file mode 100644 index 24ec1aedc..000000000 --- a/cli/tests/unit/read_file_test.ts +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertRejects, - assertThrows, - pathToAbsoluteFileUrl, - unreachable, -} from "./test_util.ts"; - -Deno.test({ permissions: { read: true } }, function readFileSyncSuccess() { - const data = Deno.readFileSync("cli/tests/testdata/assets/fixture.json"); - assert(data.byteLength > 0); - const decoder = new TextDecoder("utf-8"); - const json = decoder.decode(data); - const pkg = JSON.parse(json); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: true } }, function readFileSyncUrl() { - const data = Deno.readFileSync( - pathToAbsoluteFileUrl("cli/tests/testdata/assets/fixture.json"), - ); - assert(data.byteLength > 0); - const decoder = new TextDecoder("utf-8"); - const json = decoder.decode(data); - const pkg = JSON.parse(json); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: false } }, function readFileSyncPerm() { - assertThrows(() => { - Deno.readFileSync("cli/tests/testdata/assets/fixture.json"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function readFileSyncNotFound() { - assertThrows(() => { - Deno.readFileSync("bad_filename"); - }, Deno.errors.NotFound); -}); - -Deno.test({ permissions: { read: true } }, async function readFileUrl() { - const data = await Deno.readFile( - pathToAbsoluteFileUrl("cli/tests/testdata/assets/fixture.json"), - ); - assert(data.byteLength > 0); - const decoder = new TextDecoder("utf-8"); - const json = decoder.decode(data); - const pkg = JSON.parse(json); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: true } }, async function readFileSuccess() { - const data = await Deno.readFile("cli/tests/testdata/assets/fixture.json"); - assert(data.byteLength > 0); - const decoder = new TextDecoder("utf-8"); - const json = decoder.decode(data); - const pkg = JSON.parse(json); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: false } }, async function readFilePerm() { - await assertRejects(async () => { - await Deno.readFile("cli/tests/testdata/assets/fixture.json"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function readFileSyncLoop() { - for (let i = 0; i < 256; i++) { - Deno.readFileSync("cli/tests/testdata/assets/fixture.json"); - } -}); - -Deno.test( - { permissions: { read: true } }, - async function readFileDoesNotLeakResources() { - await assertRejects(async () => await Deno.readFile("cli")); - }, -); - -Deno.test( - { permissions: { read: true } }, - function readFileSyncDoesNotLeakResources() { - assertThrows(() => Deno.readFileSync("cli")); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readFileWithAbortSignal() { - const ac = new AbortController(); - queueMicrotask(() => ac.abort()); - const error = await assertRejects( - async () => { - await Deno.readFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - }, - ); - assert(error instanceof DOMException); - assertEquals(error.name, "AbortError"); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readFileWithAbortSignalReason() { - const ac = new AbortController(); - const abortReason = new Error(); - queueMicrotask(() => ac.abort(abortReason)); - const error = await assertRejects( - async () => { - await Deno.readFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - }, - ); - assertEquals(error, abortReason); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readFileWithAbortSignalPrimitiveReason() { - const ac = new AbortController(); - queueMicrotask(() => ac.abort("Some string")); - try { - await Deno.readFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - unreachable(); - } catch (e) { - assertEquals(e, "Some string"); - } - }, -); - -// Test that AbortController's cancel handle is cleaned-up correctly, and do not leak resources. -Deno.test( - { permissions: { read: true } }, - async function readFileWithAbortSignalNotCalled() { - const ac = new AbortController(); - await Deno.readFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - }, -); - -Deno.test( - { permissions: { read: true }, ignore: Deno.build.os !== "linux" }, - async function readFileProcFs() { - const data = await Deno.readFile("/proc/self/stat"); - assert(data.byteLength > 0); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readFileNotFoundErrorCode() { - try { - await Deno.readFile("definitely-not-found.json"); - } catch (e) { - assertEquals(e.code, "ENOENT"); - } - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readFileIsDirectoryErrorCode() { - try { - await Deno.readFile("cli/tests/testdata/assets/"); - } catch (e) { - if (Deno.build.os === "windows") { - assertEquals(e.code, "ENOENT"); - } else { - assertEquals(e.code, "EISDIR"); - } - } - }, -); diff --git a/cli/tests/unit/read_text_file_test.ts b/cli/tests/unit/read_text_file_test.ts deleted file mode 100644 index 5a64522af..000000000 --- a/cli/tests/unit/read_text_file_test.ts +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import { - assert, - assertEquals, - assertRejects, - assertThrows, - pathToAbsoluteFileUrl, - unreachable, -} from "./test_util.ts"; - -Deno.test({ permissions: { read: true } }, function readTextFileSyncSuccess() { - const data = Deno.readTextFileSync("cli/tests/testdata/assets/fixture.json"); - assert(data.length > 0); - const pkg = JSON.parse(data); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: true } }, function readTextFileSyncByUrl() { - const data = Deno.readTextFileSync( - pathToAbsoluteFileUrl("cli/tests/testdata/assets/fixture.json"), - ); - assert(data.length > 0); - const pkg = JSON.parse(data); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: false } }, function readTextFileSyncPerm() { - assertThrows(() => { - Deno.readTextFileSync("cli/tests/testdata/assets/fixture.json"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function readTextFileSyncNotFound() { - assertThrows(() => { - Deno.readTextFileSync("bad_filename"); - }, Deno.errors.NotFound); -}); - -Deno.test( - { permissions: { read: true } }, - async function readTextFileSuccess() { - const data = await Deno.readTextFile( - "cli/tests/testdata/assets/fixture.json", - ); - assert(data.length > 0); - const pkg = JSON.parse(data); - assertEquals(pkg.name, "deno"); - }, -); - -Deno.test({ permissions: { read: true } }, async function readTextFileByUrl() { - const data = await Deno.readTextFile( - pathToAbsoluteFileUrl("cli/tests/testdata/assets/fixture.json"), - ); - assert(data.length > 0); - const pkg = JSON.parse(data); - assertEquals(pkg.name, "deno"); -}); - -Deno.test({ permissions: { read: false } }, async function readTextFilePerm() { - await assertRejects(async () => { - await Deno.readTextFile("cli/tests/testdata/assets/fixture.json"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function readTextFileSyncLoop() { - for (let i = 0; i < 256; i++) { - Deno.readTextFileSync("cli/tests/testdata/assets/fixture.json"); - } -}); - -Deno.test( - { permissions: { read: true } }, - async function readTextFileDoesNotLeakResources() { - await assertRejects(async () => await Deno.readTextFile("cli")); - }, -); - -Deno.test( - { permissions: { read: true } }, - function readTextFileSyncDoesNotLeakResources() { - assertThrows(() => Deno.readTextFileSync("cli")); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readTextFileWithAbortSignal() { - const ac = new AbortController(); - queueMicrotask(() => ac.abort()); - const error = await assertRejects( - async () => { - await Deno.readTextFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - }, - ); - assert(error instanceof DOMException); - assertEquals(error.name, "AbortError"); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readTextFileWithAbortSignalReason() { - const ac = new AbortController(); - const abortReason = new Error(); - queueMicrotask(() => ac.abort(abortReason)); - const error = await assertRejects( - async () => { - await Deno.readTextFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - }, - ); - assertEquals(error, abortReason); - }, -); - -Deno.test( - { permissions: { read: true } }, - async function readTextFileWithAbortSignalPrimitiveReason() { - const ac = new AbortController(); - queueMicrotask(() => ac.abort("Some string")); - try { - await Deno.readTextFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - unreachable(); - } catch (e) { - assertEquals(e, "Some string"); - } - }, -); - -// Test that AbortController's cancel handle is cleaned-up correctly, and do not leak resources. -Deno.test( - { permissions: { read: true } }, - async function readTextFileWithAbortSignalNotCalled() { - const ac = new AbortController(); - await Deno.readTextFile("cli/tests/testdata/assets/fixture.json", { - signal: ac.signal, - }); - }, -); - -Deno.test( - { permissions: { read: true }, ignore: Deno.build.os !== "linux" }, - async function readTextFileProcFs() { - const data = await Deno.readTextFile("/proc/self/stat"); - assert(data.length > 0); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - function readTextFileSyncV8LimitError() { - const kStringMaxLengthPlusOne = 536870888 + 1; - const bytes = new Uint8Array(kStringMaxLengthPlusOne); - const filePath = "cli/tests/testdata/too_big_a_file.txt"; - - try { - Deno.writeFileSync(filePath, bytes); - } catch { - // NOTE(bartlomieju): writing a 0.5Gb file might be too much for CI, - // so skip running if writing fails. - return; - } - - assertThrows( - () => { - Deno.readTextFileSync(filePath); - }, - TypeError, - "buffer exceeds maximum length", - ); - - Deno.removeSync(filePath); - }, -); - -Deno.test( - { permissions: { read: true, write: true } }, - async function readTextFileV8LimitError() { - const kStringMaxLengthPlusOne = 536870888 + 1; - const bytes = new Uint8Array(kStringMaxLengthPlusOne); - const filePath = "cli/tests/testdata/too_big_a_file_2.txt"; - - try { - await Deno.writeFile(filePath, bytes); - } catch { - // NOTE(bartlomieju): writing a 0.5Gb file might be too much for CI, - // so skip running if writing fails. - return; - } - - await assertRejects( - async () => { - await Deno.readTextFile(filePath); - }, - TypeError, - "buffer exceeds maximum length", - ); - - await Deno.remove(filePath); - }, -); diff --git a/cli/tests/unit/real_path_test.ts b/cli/tests/unit/real_path_test.ts deleted file mode 100644 index 1b944f5ad..000000000 --- a/cli/tests/unit/real_path_test.ts +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertMatch, - assertRejects, - assertThrows, - pathToAbsoluteFileUrl, -} from "./test_util.ts"; - -Deno.test({ permissions: { read: true } }, function realPathSyncSuccess() { - const relative = "cli/tests/testdata/assets/fixture.json"; - const realPath = Deno.realPathSync(relative); - if (Deno.build.os !== "windows") { - assert(realPath.startsWith("/")); - assert(realPath.endsWith(relative)); - } else { - assertMatch(realPath, /^[A-Z]:\\/); - assert(realPath.endsWith(relative.replace(/\//g, "\\"))); - } -}); - -Deno.test({ permissions: { read: true } }, function realPathSyncUrl() { - const relative = "cli/tests/testdata/assets/fixture.json"; - const url = pathToAbsoluteFileUrl(relative); - assertEquals(Deno.realPathSync(relative), Deno.realPathSync(url)); -}); - -Deno.test( - { - permissions: { read: true, write: true }, - }, - function realPathSyncSymlink() { - const testDir = Deno.makeTempDirSync(); - const target = testDir + "/target"; - const symlink = testDir + "/symln"; - Deno.mkdirSync(target); - Deno.symlinkSync(target, symlink); - const realPath = Deno.realPathSync(symlink); - if (Deno.build.os !== "windows") { - assert(realPath.startsWith("/")); - assert(realPath.endsWith("/target")); - } else { - assertMatch(realPath, /^[A-Z]:\\/); - assert(realPath.endsWith("\\target")); - } - }, -); - -Deno.test({ permissions: { read: false } }, function realPathSyncPerm() { - assertThrows(() => { - Deno.realPathSync("some_file"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function realPathSyncNotFound() { - assertThrows(() => { - Deno.realPathSync("bad_filename"); - }, Deno.errors.NotFound); -}); - -Deno.test({ permissions: { read: true } }, async function realPathSuccess() { - const relativePath = "cli/tests/testdata/assets/fixture.json"; - const realPath = await Deno.realPath(relativePath); - if (Deno.build.os !== "windows") { - assert(realPath.startsWith("/")); - assert(realPath.endsWith(relativePath)); - } else { - assertMatch(realPath, /^[A-Z]:\\/); - assert(realPath.endsWith(relativePath.replace(/\//g, "\\"))); - } -}); - -Deno.test( - { permissions: { read: true } }, - async function realPathUrl() { - const relative = "cli/tests/testdata/assets/fixture.json"; - const url = pathToAbsoluteFileUrl(relative); - assertEquals(await Deno.realPath(relative), await Deno.realPath(url)); - }, -); - -Deno.test( - { - permissions: { read: true, write: true }, - }, - async function realPathSymlink() { - const testDir = Deno.makeTempDirSync(); - const target = testDir + "/target"; - const symlink = testDir + "/symln"; - Deno.mkdirSync(target); - Deno.symlinkSync(target, symlink); - const realPath = await Deno.realPath(symlink); - if (Deno.build.os !== "windows") { - assert(realPath.startsWith("/")); - assert(realPath.endsWith("/target")); - } else { - assertMatch(realPath, /^[A-Z]:\\/); - assert(realPath.endsWith("\\target")); - } - }, -); - -Deno.test({ permissions: { read: false } }, async function realPathPerm() { - await assertRejects(async () => { - await Deno.realPath("some_file"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, async function realPathNotFound() { - await assertRejects(async () => { - await Deno.realPath("bad_filename"); - }, Deno.errors.NotFound); -}); diff --git a/cli/tests/unit/resources_test.ts b/cli/tests/unit/resources_test.ts deleted file mode 100644 index 06558cdd1..000000000 --- a/cli/tests/unit/resources_test.ts +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { assert, assertEquals, assertThrows } from "./test_util.ts"; - -const listenPort = 4505; - -Deno.test(function resourcesCloseBadArgs() { - assertThrows(() => { - Deno.close((null as unknown) as number); - }, TypeError); -}); - -Deno.test(function resourcesStdio() { - const res = Deno.resources(); - - assertEquals(res[0], "stdin"); - assertEquals(res[1], "stdout"); - assertEquals(res[2], "stderr"); -}); - -Deno.test({ permissions: { net: true } }, async function resourcesNet() { - const listener = Deno.listen({ port: listenPort }); - const dialerConn = await Deno.connect({ port: listenPort }); - const listenerConn = await listener.accept(); - - const res = Deno.resources(); - assertEquals( - Object.values(res).filter((r): boolean => r === "tcpListener").length, - 1, - ); - const tcpStreams = Object.values(res).filter( - (r): boolean => r === "tcpStream", - ); - assert(tcpStreams.length >= 2); - - listenerConn.close(); - dialerConn.close(); - listener.close(); -}); - -Deno.test({ permissions: { read: true } }, async function resourcesFile() { - const resourcesBefore = Deno.resources(); - const f = await Deno.open("cli/tests/testdata/assets/hello.txt"); - const resourcesAfter = Deno.resources(); - f.close(); - - // check that exactly one new resource (file) was added - assertEquals( - Object.keys(resourcesAfter).length, - Object.keys(resourcesBefore).length + 1, - ); - const newRid = +Object.keys(resourcesAfter).find((rid): boolean => { - return !Object.prototype.hasOwnProperty.call(resourcesBefore, rid); - })!; - assertEquals(resourcesAfter[newRid], "fsFile"); -}); diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts deleted file mode 100644 index b5c966d6f..000000000 --- a/cli/tests/unit/serve_test.ts +++ /dev/null @@ -1,3932 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import { assertMatch, assertRejects } from "@test_util/std/assert/mod.ts"; -import { Buffer, BufReader, BufWriter } from "@test_util/std/io/mod.ts"; -import { TextProtoReader } from "../testdata/run/textproto.ts"; -import { - assert, - assertEquals, - assertStringIncludes, - assertThrows, - execCode, - fail, - tmpUnixSocketPath, -} from "./test_util.ts"; - -// Since these tests may run in parallel, ensure this port is unique to this file -const servePort = 4502; - -const { - upgradeHttpRaw, - addTrailers, - serveHttpOnListener, - serveHttpOnConnection, - // @ts-expect-error TypeScript (as of 3.7) does not support indexing namespaces by symbol -} = Deno[Deno.internal]; - -function createOnErrorCb(ac: AbortController): (err: unknown) => Response { - return (err) => { - console.error(err); - ac.abort(); - return new Response("Internal server error", { status: 500 }); - }; -} - -function onListen( - resolve: (value: void | PromiseLike<void>) => void, -): ({ hostname, port }: { hostname: string; port: number }) => void { - return () => { - resolve(); - }; -} - -async function makeServer( - handler: (req: Request) => Response | Promise<Response>, -): Promise< - { - finished: Promise<void>; - abort: () => void; - shutdown: () => Promise<void>; - [Symbol.asyncDispose](): PromiseLike<void>; - } -> { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - }); - - await promise; - return { - finished: server.finished, - abort() { - ac.abort(); - }, - async shutdown() { - await server.shutdown(); - }, - [Symbol.asyncDispose]() { - return server[Symbol.asyncDispose](); - }, - }; -} - -Deno.test(async function httpServerShutsDownPortBeforeResolving() { - const { finished, abort } = await makeServer((_req) => new Response("ok")); - assertThrows(() => Deno.listen({ port: servePort })); - abort(); - await finished; - - const listener = Deno.listen({ port: servePort }); - listener!.close(); -}); - -// When shutting down abruptly, we require that all in-progress connections are aborted, -// no new connections are allowed, and no new transactions are allowed on existing connections. -Deno.test( - { permissions: { net: true } }, - async function httpServerShutdownAbruptGuaranteeHttp11() { - const deferredQueue: { - input: ReturnType<typeof Promise.withResolvers<string>>; - out: ReturnType<typeof Promise.withResolvers<void>>; - }[] = []; - const { finished, abort } = await makeServer((_req) => { - const { input, out } = deferredQueue.shift()!; - return new Response( - new ReadableStream({ - async start(controller) { - controller.enqueue(new Uint8Array([46])); - out.resolve(); - controller.enqueue(encoder.encode(await input.promise)); - controller.close(); - }, - }), - ); - }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - const conn = await Deno.connect({ port: servePort }); - const w = conn.writable.getWriter(); - const r = conn.readable.getReader(); - - const deferred1 = { - input: Promise.withResolvers<string>(), - out: Promise.withResolvers<void>(), - }; - deferredQueue.push(deferred1); - const deferred2 = { - input: Promise.withResolvers<string>(), - out: Promise.withResolvers<void>(), - }; - deferredQueue.push(deferred2); - const deferred3 = { - input: Promise.withResolvers<string>(), - out: Promise.withResolvers<void>(), - }; - deferredQueue.push(deferred3); - deferred1.input.resolve("#"); - deferred2.input.resolve("$"); - await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); - await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); - - // Fully read two responses - let text = ""; - while (!text.includes("$\r\n")) { - text += decoder.decode((await r.read()).value); - } - - await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); - await deferred3.out.promise; - - // This is half served, so wait for the chunk that has the first '.' - text = ""; - while (!text.includes("1\r\n.\r\n")) { - text += decoder.decode((await r.read()).value); - } - - abort(); - - // This doesn't actually write anything, but we release it after aborting - deferred3.input.resolve("!"); - - // Guarantee: can't connect to an aborted server (though this may not happen immediately) - let failed = false; - for (let i = 0; i < 10; i++) { - try { - const conn = await Deno.connect({ port: servePort }); - conn.close(); - // Give the runtime a few ticks to settle (required for Windows) - await new Promise((r) => setTimeout(r, 2 ** i)); - continue; - } catch (_) { - failed = true; - break; - } - } - assert(failed, "The Deno.serve listener was not disabled promptly"); - - // Guarantee: the pipeline is closed abruptly - assert((await r.read()).done); - - try { - conn.close(); - } catch (_) { - // Ignore - } - await finished; - }, -); - -// When shutting down abruptly, we require that all in-progress connections are aborted, -// no new connections are allowed, and no new transactions are allowed on existing connections. -Deno.test( - { permissions: { net: true } }, - async function httpServerShutdownGracefulGuaranteeHttp11() { - const deferredQueue: { - input: ReturnType<typeof Promise.withResolvers<string>>; - out: ReturnType<typeof Promise.withResolvers<void>>; - }[] = []; - const { finished, shutdown } = await makeServer((_req) => { - const { input, out } = deferredQueue.shift()!; - return new Response( - new ReadableStream({ - async start(controller) { - controller.enqueue(new Uint8Array([46])); - out.resolve(); - controller.enqueue(encoder.encode(await input.promise)); - controller.close(); - }, - }), - ); - }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - const conn = await Deno.connect({ port: servePort }); - const w = conn.writable.getWriter(); - const r = conn.readable.getReader(); - - const deferred1 = { - input: Promise.withResolvers<string>(), - out: Promise.withResolvers<void>(), - }; - deferredQueue.push(deferred1); - const deferred2 = { - input: Promise.withResolvers<string>(), - out: Promise.withResolvers<void>(), - }; - deferredQueue.push(deferred2); - const deferred3 = { - input: Promise.withResolvers<string>(), - out: Promise.withResolvers<void>(), - }; - deferredQueue.push(deferred3); - deferred1.input.resolve("#"); - deferred2.input.resolve("$"); - await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); - await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); - - // Fully read two responses - let text = ""; - while (!text.includes("$\r\n")) { - text += decoder.decode((await r.read()).value); - } - - await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); - await deferred3.out.promise; - - // This is half served, so wait for the chunk that has the first '.' - text = ""; - while (!text.includes("1\r\n.\r\n")) { - text += decoder.decode((await r.read()).value); - } - - const shutdownPromise = shutdown(); - - // Release the final response _after_ we shut down - deferred3.input.resolve("!"); - - // Guarantee: can't connect to an aborted server (though this may not happen immediately) - let failed = false; - for (let i = 0; i < 10; i++) { - try { - const conn = await Deno.connect({ port: servePort }); - conn.close(); - // Give the runtime a few ticks to settle (required for Windows) - await new Promise((r) => setTimeout(r, 2 ** i)); - continue; - } catch (_) { - failed = true; - break; - } - } - assert(failed, "The Deno.serve listener was not disabled promptly"); - - // Guarantee: existing connections fully drain - while (!text.includes("!\r\n")) { - text += decoder.decode((await r.read()).value); - } - - await shutdownPromise; - - try { - conn.close(); - } catch (_) { - // Ignore - } - await finished; - }, -); - -// Ensure that resources don't leak during a graceful shutdown -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerShutdownGracefulResources() { - const { promise, resolve } = Promise.withResolvers<void>(); - const { finished, shutdown } = await makeServer(async (_req) => { - resolve(); - await new Promise((r) => setTimeout(r, 10)); - return new Response((await makeTempFile(1024 * 1024)).readable); - }); - - const f = fetch(`http://localhost:${servePort}`); - await promise; - assertEquals((await (await f).text()).length, 1048576); - await shutdown(); - await finished; - }, -); - -// Ensure that resources don't leak during a graceful shutdown -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerShutdownGracefulResources2() { - const waitForAbort = Promise.withResolvers<void>(); - const waitForRequest = Promise.withResolvers<void>(); - const { finished, shutdown } = await makeServer(async (_req) => { - waitForRequest.resolve(); - await waitForAbort.promise; - await new Promise((r) => setTimeout(r, 10)); - return new Response((await makeTempFile(1024 * 1024)).readable); - }); - - const f = fetch(`http://localhost:${servePort}`); - await waitForRequest.promise; - const s = shutdown(); - waitForAbort.resolve(); - assertEquals((await (await f).text()).length, 1048576); - await s; - await finished; - }, -); - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerExplicitResourceManagement() { - let dataPromise; - - { - await using _server = await makeServer(async (_req) => { - return new Response((await makeTempFile(1024 * 1024)).readable); - }); - - const resp = await fetch(`http://localhost:${servePort}`); - dataPromise = resp.arrayBuffer(); - } - - assertEquals((await dataPromise).byteLength, 1048576); - }, -); - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerExplicitResourceManagementManualClose() { - await using server = await makeServer(async (_req) => { - return new Response((await makeTempFile(1024 * 1024)).readable); - }); - - const resp = await fetch(`http://localhost:${servePort}`); - - const [_, data] = await Promise.all([ - server.shutdown(), - resp.arrayBuffer(), - ]); - - assertEquals(data.byteLength, 1048576); - }, -); - -Deno.test( - { permissions: { read: true, run: true } }, - async function httpServerUnref() { - const [statusCode, _output] = await execCode(` - async function main() { - const server = Deno.serve({ port: ${servePort}, handler: () => null }); - server.unref(); - await server.finished; // This doesn't block the program from exiting - } - main(); - `); - assertEquals(statusCode, 0); - }, -); - -Deno.test(async function httpServerCanResolveHostnames() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (_req) => new Response("ok"), - hostname: "localhost", - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - const resp = await fetch(`http://localhost:${servePort}/`, { - headers: { "connection": "close" }, - }); - const text = await resp.text(); - assertEquals(text, "ok"); - ac.abort(); - await server.finished; -}); - -Deno.test(async function httpServerRejectsOnAddrInUse() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (_req) => new Response("ok"), - hostname: "localhost", - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - await promise; - - assertThrows( - () => - Deno.serve({ - handler: (_req) => new Response("ok"), - hostname: "localhost", - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }), - Deno.errors.AddrInUse, - ); - ac.abort(); - await server.finished; -}); - -Deno.test({ permissions: { net: true } }, async function httpServerBasic() { - const ac = new AbortController(); - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: async (request, { remoteAddr }) => { - // FIXME(bartlomieju): - // make sure that request can be inspected - console.log(request); - assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); - assertEquals(await request.text(), ""); - assertEquals(remoteAddr.hostname, "127.0.0.1"); - deferred.resolve(); - return new Response("Hello World", { headers: { "foo": "bar" } }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - await deferred.promise; - const clone = resp.clone(); - const text = await resp.text(); - assertEquals(text, "Hello World"); - assertEquals(resp.headers.get("foo"), "bar"); - const cloneText = await clone.text(); - assertEquals(cloneText, "Hello World"); - ac.abort(); - await server.finished; -}); - -// Test serving of HTTP on an arbitrary listener. -Deno.test( - { permissions: { net: true } }, - async function httpServerOnListener() { - const ac = new AbortController(); - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const listener = Deno.listen({ port: servePort }); - const server = serveHttpOnListener( - listener, - ac.signal, - async ( - request: Request, - { remoteAddr }: { remoteAddr: { hostname: string } }, - ) => { - assertEquals( - new URL(request.url).href, - `http://127.0.0.1:${servePort}/`, - ); - assertEquals(await request.text(), ""); - assertEquals(remoteAddr.hostname, "127.0.0.1"); - deferred.resolve(); - return new Response("Hello World", { headers: { "foo": "bar" } }); - }, - createOnErrorCb(ac), - onListen(listeningDeferred.resolve), - ); - - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - await listeningDeferred.promise; - const clone = resp.clone(); - const text = await resp.text(); - assertEquals(text, "Hello World"); - assertEquals(resp.headers.get("foo"), "bar"); - const cloneText = await clone.text(); - assertEquals(cloneText, "Hello World"); - ac.abort(); - await server.finished; - }, -); - -// Test serving of HTTP on an arbitrary connection. -Deno.test( - { permissions: { net: true } }, - async function httpServerOnConnection() { - const ac = new AbortController(); - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const listener = Deno.listen({ port: servePort }); - const acceptPromise = listener.accept(); - const fetchPromise = fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - - const server = serveHttpOnConnection( - await acceptPromise, - ac.signal, - async ( - request: Request, - { remoteAddr }: { remoteAddr: { hostname: string } }, - ) => { - assertEquals( - new URL(request.url).href, - `http://127.0.0.1:${servePort}/`, - ); - assertEquals(await request.text(), ""); - assertEquals(remoteAddr.hostname, "127.0.0.1"); - deferred.resolve(); - return new Response("Hello World", { headers: { "foo": "bar" } }); - }, - createOnErrorCb(ac), - onListen(listeningDeferred.resolve), - ); - - const resp = await fetchPromise; - await deferred.promise; - const clone = resp.clone(); - const text = await resp.text(); - assertEquals(text, "Hello World"); - assertEquals(resp.headers.get("foo"), "bar"); - const cloneText = await clone.text(); - assertEquals(cloneText, "Hello World"); - // Note that we don't need to abort this server -- it closes when the connection does - // ac.abort(); - await server.finished; - listener.close(); - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerOnError() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - let requestStash: Request | null; - - const server = Deno.serve({ - handler: async (request: Request) => { - requestStash = request; - await new Promise((r) => setTimeout(r, 100)); - throw "fail"; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: () => { - return new Response("failed: " + requestStash!.url, { status: 500 }); - }, - }); - - await promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - const text = await resp.text(); - ac.abort(); - await server.finished; - - assertEquals(text, `failed: http://127.0.0.1:${servePort}/`); -}); - -Deno.test( - { permissions: { net: true } }, - async function httpServerOnErrorFails() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - // NOTE(bartlomieju): deno lint doesn't know that it's actually used later, - // but TypeScript can't see that either ¯\_(ツ)_/¯ - // deno-lint-ignore no-unused-vars - let requestStash: Request | null; - - const server = Deno.serve({ - handler: async (request: Request) => { - requestStash = request; - await new Promise((r) => setTimeout(r, 100)); - throw "fail"; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: () => { - throw "again"; - }, - }); - - await promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - const text = await resp.text(); - ac.abort(); - await server.finished; - - assertEquals(text, "Internal Server Error"); - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerOverload1() { - const ac = new AbortController(); - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }, async (request) => { - // FIXME(bartlomieju): - // make sure that request can be inspected - console.log(request); - assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); - assertEquals(await request.text(), ""); - deferred.resolve(); - return new Response("Hello World", { headers: { "foo": "bar" } }); - }); - - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - await deferred.promise; - const clone = resp.clone(); - const text = await resp.text(); - assertEquals(text, "Hello World"); - assertEquals(resp.headers.get("foo"), "bar"); - const cloneText = await clone.text(); - assertEquals(cloneText, "Hello World"); - ac.abort(); - await server.finished; -}); - -Deno.test({ permissions: { net: true } }, async function httpServerOverload2() { - const ac = new AbortController(); - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }, async (request) => { - // FIXME(bartlomieju): - // make sure that request can be inspected - console.log(request); - assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); - assertEquals(await request.text(), ""); - deferred.resolve(); - return new Response("Hello World", { headers: { "foo": "bar" } }); - }); - - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: { "connection": "close" }, - }); - await deferred.promise; - const clone = resp.clone(); - const text = await resp.text(); - assertEquals(text, "Hello World"); - assertEquals(resp.headers.get("foo"), "bar"); - const cloneText = await clone.text(); - assertEquals(cloneText, "Hello World"); - ac.abort(); - await server.finished; -}); - -Deno.test( - { permissions: { net: true } }, - function httpServerErrorOverloadMissingHandler() { - // @ts-ignore - testing invalid overload - assertThrows(() => Deno.serve(), TypeError, "handler"); - // @ts-ignore - testing invalid overload - assertThrows(() => Deno.serve({}), TypeError, "handler"); - assertThrows( - // @ts-ignore - testing invalid overload - () => Deno.serve({ handler: undefined }), - TypeError, - "handler", - ); - assertThrows( - // @ts-ignore - testing invalid overload - () => Deno.serve(undefined, { handler: () => {} }), - TypeError, - "handler", - ); - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerPort0() { - const ac = new AbortController(); - - const server = Deno.serve({ - handler() { - return new Response("Hello World"); - }, - port: 0, - signal: ac.signal, - onListen({ port }) { - assert(port > 0 && port < 65536); - ac.abort(); - }, - }); - await server.finished; -}); - -Deno.test( - { permissions: { net: true } }, - async function httpServerDefaultOnListenCallback() { - const ac = new AbortController(); - - const consoleLog = console.log; - console.log = (msg) => { - try { - const match = msg.match(/Listening on http:\/\/localhost:(\d+)\//); - assert(!!match, `Didn't match ${msg}`); - const port = +match[1]; - assert(port > 0 && port < 65536); - } finally { - ac.abort(); - } - }; - - try { - const server = Deno.serve({ - handler() { - return new Response("Hello World"); - }, - hostname: "0.0.0.0", - port: 0, - signal: ac.signal, - }); - - await server.finished; - } finally { - console.log = consoleLog; - } - }, -); - -// https://github.com/denoland/deno/issues/15107 -Deno.test( - { permissions: { net: true } }, - async function httpLazyHeadersIssue15107() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - let headers: Headers; - const server = Deno.serve({ - handler: async (request) => { - await request.text(); - headers = request.headers; - deferred.resolve(); - return new Response(""); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - conn.close(); - assertEquals(headers!.get("content-length"), "5"); - ac.abort(); - await server.finished; - }, -); - -function createUrlTest( - name: string, - methodAndPath: string, - host: string | null, - expected: string, -) { - Deno.test(`httpServerUrl${name}`, async () => { - const listeningDeferred = Promise.withResolvers<number>(); - const urlDeferred = Promise.withResolvers<string>(); - const ac = new AbortController(); - const server = Deno.serve({ - handler: (request: Request) => { - urlDeferred.resolve(request.url); - return new Response(""); - }, - port: 0, - signal: ac.signal, - onListen: ({ port }: { port: number }) => { - listeningDeferred.resolve(port); - }, - onError: createOnErrorCb(ac), - }); - - const port = await listeningDeferred.promise; - const conn = await Deno.connect({ port }); - - const encoder = new TextEncoder(); - const body = `${methodAndPath} HTTP/1.1\r\n${ - host ? ("Host: " + host + "\r\n") : "" - }Content-Length: 5\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - try { - const expectedResult = expected.replace("HOST", "localhost").replace( - "PORT", - `${port}`, - ); - assertEquals(await urlDeferred.promise, expectedResult); - } finally { - ac.abort(); - await server.finished; - conn.close(); - } - }); -} - -createUrlTest("WithPath", "GET /path", null, "http://HOST:PORT/path"); -createUrlTest( - "WithPathAndHost", - "GET /path", - "deno.land", - "http://deno.land/path", -); -createUrlTest( - "WithAbsolutePath", - "GET http://localhost/path", - null, - "http://localhost/path", -); -createUrlTest( - "WithAbsolutePathAndHost", - "GET http://localhost/path", - "deno.land", - "http://localhost/path", -); -createUrlTest( - "WithPortAbsolutePath", - "GET http://localhost:1234/path", - null, - "http://localhost:1234/path", -); -createUrlTest( - "WithPortAbsolutePathAndHost", - "GET http://localhost:1234/path", - "deno.land", - "http://localhost:1234/path", -); -createUrlTest( - "WithPortAbsolutePathAndHostWithPort", - "GET http://localhost:1234/path", - "deno.land:9999", - "http://localhost:1234/path", -); - -createUrlTest("WithAsterisk", "OPTIONS *", null, "*"); -createUrlTest( - "WithAuthorityForm", - "CONNECT deno.land:80", - null, - "deno.land:80", -); - -// TODO(mmastrac): These should probably be 400 errors -createUrlTest("WithInvalidAsterisk", "GET *", null, "*"); -createUrlTest("WithInvalidNakedPath", "GET path", null, "path"); -createUrlTest( - "WithInvalidNakedAuthority", - "GET deno.land:1234", - null, - "deno.land:1234", -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerGetRequestBody() { - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (request) => { - assertEquals(request.body, null); - deferred.resolve(); - return new Response("", { headers: {} }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\r\nContent-Length: 5\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - const resp = new Uint8Array(200); - const readResult = await conn.read(resp); - assert(readResult); - assert(readResult > 0); - - conn.close(); - await deferred.promise; - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerAbortedRequestBody() { - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: async (request) => { - await assertRejects(async () => { - await request.text(); - }); - deferred.resolve(); - // Not actually used - return new Response(); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - // Send POST request with a body + content-length, but don't send it all - const encoder = new TextEncoder(); - const body = - `POST / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\r\nContent-Length: 10\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - conn.close(); - await deferred.promise; - ac.abort(); - await server.finished; - }, -); - -function createStreamTest(count: number, delay: number, action: string) { - function doAction(controller: ReadableStreamDefaultController, i: number) { - if (i == count) { - if (action == "Throw") { - controller.error(new Error("Expected error!")); - } else { - controller.close(); - } - } else { - controller.enqueue(`a${i}`); - - if (delay == 0) { - doAction(controller, i + 1); - } else { - setTimeout(() => doAction(controller, i + 1), delay); - } - } - } - - function makeStream(_count: number, delay: number): ReadableStream { - return new ReadableStream({ - start(controller) { - if (delay == 0) { - doAction(controller, 0); - } else { - setTimeout(() => doAction(controller, 0), delay); - } - }, - }).pipeThrough(new TextEncoderStream()); - } - - Deno.test(`httpServerStreamCount${count}Delay${delay}${action}`, async () => { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: (_request) => { - return new Response(makeStream(count, delay)); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - try { - await promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`); - if (action == "Throw") { - await assertRejects(async () => { - await resp.text(); - }); - } else { - const text = await resp.text(); - - let expected = ""; - for (let i = 0; i < count; i++) { - expected += `a${i}`; - } - - assertEquals(text, expected); - } - } finally { - ac.abort(); - await server.shutdown(); - } - }); -} - -for (const count of [0, 1, 2, 3]) { - for (const delay of [0, 1, 25]) { - // Creating a stream that errors in start will throw - if (delay > 0) { - createStreamTest(count, delay, "Throw"); - } - createStreamTest(count, delay, "Close"); - } -} - -Deno.test( - { permissions: { net: true } }, - async function httpServerStreamRequest() { - const stream = new TransformStream(); - const writer = stream.writable.getWriter(); - writer.write(new TextEncoder().encode("hello ")); - writer.write(new TextEncoder().encode("world")); - writer.close(); - const { promise, resolve } = Promise.withResolvers<void>(); - const ac = new AbortController(); - const server = Deno.serve({ - handler: async (request) => { - const reqBody = await request.text(); - assertEquals("hello world", reqBody); - return new Response("yo"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - body: stream.readable, - method: "POST", - headers: { "connection": "close" }, - }); - - assertEquals(await resp.text(), "yo"); - ac.abort(); - await server.finished; - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerClose() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: () => new Response("ok"), - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - await promise; - const client = await Deno.connect({ port: servePort }); - client.close(); - ac.abort(); - await server.finished; -}); - -// https://github.com/denoland/deno/issues/15427 -Deno.test({ permissions: { net: true } }, async function httpServerCloseGet() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - const requestDeferred = Promise.withResolvers<void>(); - const responseDeferred = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: async () => { - requestDeferred.resolve(); - await new Promise((r) => setTimeout(r, 500)); - responseDeferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await requestDeferred.promise; - conn.close(); - await responseDeferred.promise; - ac.abort(); - await server.finished; -}); - -// FIXME: -Deno.test( - { permissions: { net: true } }, - async function httpServerEmptyBlobResponse() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: () => new Response(new Blob([])), - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`); - const respBody = await resp.text(); - - assertEquals("", respBody); - ac.abort(); - await server.finished; - }, -); - -// https://github.com/denoland/deno/issues/17291 -Deno.test( - { permissions: { net: true } }, - async function httpServerIncorrectChunkedResponse() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - const errorDeferred = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: () => { - const body = new ReadableStream({ - start(controller) { - // Non-encoded string is not a valid readable chunk. - // @ts-ignore we're testing that input is invalid - controller.enqueue("wat"); - }, - type: "bytes", - }); - return new Response(body); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: (err) => { - const errResp = new Response( - `Internal server error: ${(err as Error).message}`, - { status: 500 }, - ); - errorDeferred.resolve(); - return errResp; - }, - }); - - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`); - // Incorrectly implemented reader ReadableStream should reject. - assertStringIncludes(await resp.text(), "Failed to execute 'enqueue'"); - await errorDeferred.promise; - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerCorrectLengthForUnicodeString() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: () => new Response("韓國".repeat(10)), - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const body = - `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - - conn.close(); - - ac.abort(); - await server.finished; - assert(msg.includes("content-length: 60")); - }, -); - -Deno.test({ permissions: { net: true } }, async function httpServerWebSocket() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - const doneDeferred = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: (request) => { - const { - response, - socket, - } = Deno.upgradeWebSocket(request); - socket.onerror = (e) => { - console.error(e); - fail(); - }; - socket.onmessage = (m) => { - socket.send(m.data); - socket.close(1001); - }; - socket.onclose = () => doneDeferred.resolve(); - return response; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const def = Promise.withResolvers<void>(); - const ws = new WebSocket(`ws://localhost:${servePort}`); - ws.onmessage = (m) => assertEquals(m.data, "foo"); - ws.onerror = (e) => { - console.error(e); - fail(); - }; - ws.onclose = () => def.resolve(); - ws.onopen = () => ws.send("foo"); - - await def.promise; - await doneDeferred.promise; - ac.abort(); - await server.finished; -}); - -Deno.test( - { permissions: { net: true } }, - async function httpServerWebSocketRaw() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: async (request) => { - const { conn, response } = upgradeHttpRaw(request); - const buf = new Uint8Array(1024); - let read; - - // Write our fake HTTP upgrade - await conn.write( - new TextEncoder().encode( - "HTTP/1.1 101 Switching Protocols\r\nConnection: Upgraded\r\n\r\nExtra", - ), - ); - - // Upgrade data - read = await conn.read(buf); - assertEquals( - new TextDecoder().decode(buf.subarray(0, read!)), - "Upgrade data", - ); - // Read the packet to echo - read = await conn.read(buf); - // Echo - await conn.write(buf.subarray(0, read!)); - - conn.close(); - return response; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - - const conn = await Deno.connect({ port: servePort }); - await conn.write( - new TextEncoder().encode( - "GET / HTTP/1.1\r\nConnection: Upgrade\r\nUpgrade: websocket\r\n\r\nUpgrade data", - ), - ); - const buf = new Uint8Array(1024); - let len; - - // Headers - let headers = ""; - for (let i = 0; i < 2; i++) { - len = await conn.read(buf); - headers += new TextDecoder().decode(buf.subarray(0, len!)); - if (headers.endsWith("Extra")) { - break; - } - } - assertMatch( - headers, - /HTTP\/1\.1 101 Switching Protocols[ ,.A-Za-z:0-9\r\n]*Extra/im, - ); - - // Data to echo - await conn.write(new TextEncoder().encode("buffer data")); - - // Echo - len = await conn.read(buf); - assertEquals( - new TextDecoder().decode(buf.subarray(0, len!)), - "buffer data", - ); - - conn.close(); - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerWebSocketUpgradeTwice() { - const ac = new AbortController(); - const done = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: (request) => { - const { - response, - socket, - } = Deno.upgradeWebSocket(request); - assertThrows( - () => { - Deno.upgradeWebSocket(request); - }, - Deno.errors.Http, - "already upgraded", - ); - socket.onerror = (e) => { - console.error(e); - fail(); - }; - socket.onmessage = (m) => { - socket.send(m.data); - socket.close(1001); - }; - socket.onclose = () => done.resolve(); - return response; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const def = Promise.withResolvers<void>(); - const ws = new WebSocket(`ws://localhost:${servePort}`); - ws.onmessage = (m) => assertEquals(m.data, "foo"); - ws.onerror = (e) => { - console.error(e); - fail(); - }; - ws.onclose = () => def.resolve(); - ws.onopen = () => ws.send("foo"); - - await def.promise; - await done.promise; - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerWebSocketCloseFast() { - const ac = new AbortController(); - const done = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: (request) => { - const { - response, - socket, - } = Deno.upgradeWebSocket(request); - socket.onopen = () => socket.close(); - socket.onclose = () => done.resolve(); - return response; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const def = Promise.withResolvers<void>(); - const ws = new WebSocket(`ws://localhost:${servePort}`); - ws.onerror = (e) => { - console.error(e); - fail(); - }; - ws.onclose = () => def.resolve(); - - await def.promise; - await done.promise; - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerWebSocketCanAccessRequest() { - const ac = new AbortController(); - const done = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: (request) => { - const { - response, - socket, - } = Deno.upgradeWebSocket(request); - socket.onerror = (e) => { - console.error(e); - fail(); - }; - socket.onmessage = (_m) => { - socket.send(request.url.toString()); - socket.close(1001); - }; - socket.onclose = () => done.resolve(); - return response; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const def = Promise.withResolvers<void>(); - const ws = new WebSocket(`ws://localhost:${servePort}`); - ws.onmessage = (m) => - assertEquals(m.data, `http://localhost:${servePort}/`); - ws.onerror = (e) => { - console.error(e); - fail(); - }; - ws.onclose = () => def.resolve(); - ws.onopen = () => ws.send("foo"); - - await def.promise; - await done.promise; - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpVeryLargeRequest() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - let headers: Headers; - const server = Deno.serve({ - handler: (request) => { - headers = request.headers; - deferred.resolve(); - return new Response(""); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const smthElse = "x".repeat(16 * 1024 + 256); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\nSomething-Else: ${smthElse}\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - conn.close(); - assertEquals(headers!.get("content-length"), "5"); - assertEquals(headers!.get("something-else"), smthElse); - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpVeryLargeRequestAndBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - let headers: Headers; - let text: string; - const server = Deno.serve({ - handler: async (request) => { - headers = request.headers; - text = await request.text(); - deferred.resolve(); - return new Response(""); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - // Send GET request with a body + content-length. - const encoder = new TextEncoder(); - const smthElse = "x".repeat(16 * 1024 + 256); - const reqBody = "hello world".repeat(1024); - let body = - `PUT / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: ${reqBody.length}\r\nSomething-Else: ${smthElse}\r\n\r\n${reqBody}`; - - while (body.length > 0) { - const writeResult = await conn.write(encoder.encode(body)); - body = body.slice(writeResult); - } - - await deferred.promise; - conn.close(); - - assertEquals(headers!.get("content-length"), `${reqBody.length}`); - assertEquals(headers!.get("something-else"), smthElse); - assertEquals(text!, reqBody); - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpConnectionClose() { - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: () => { - deferred.resolve(); - return new Response(""); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - // Send GET request with a body + connection: close. - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nConnection: Close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - await deferred.promise; - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -async function testDuplex( - reader: ReadableStreamDefaultReader<Uint8Array>, - writable: WritableStreamDefaultWriter<Uint8Array>, -) { - await writable.write(new Uint8Array([1])); - const chunk1 = await reader.read(); - assert(!chunk1.done); - assertEquals(chunk1.value, new Uint8Array([1])); - await writable.write(new Uint8Array([2])); - const chunk2 = await reader.read(); - assert(!chunk2.done); - assertEquals(chunk2.value, new Uint8Array([2])); - await writable.close(); - const chunk3 = await reader.read(); - assert(chunk3.done); -} - -Deno.test( - { permissions: { net: true } }, - async function httpServerStreamDuplexDirect() { - const { promise, resolve } = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve( - { port: servePort, signal: ac.signal }, - (request: Request) => { - assert(request.body); - resolve(); - return new Response(request.body); - }, - ); - - const { readable, writable } = new TransformStream(); - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - method: "POST", - body: readable, - }); - - await promise; - assert(resp.body); - await testDuplex(resp.body.getReader(), writable.getWriter()); - ac.abort(); - await server.finished; - }, -); - -// Test that a duplex stream passing through JavaScript also works (ie: that the request body resource -// is still alive). https://github.com/denoland/deno/pull/20206 -Deno.test( - { permissions: { net: true } }, - async function httpServerStreamDuplexJavascript() { - const { promise, resolve } = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve( - { port: servePort, signal: ac.signal }, - (request: Request) => { - assert(request.body); - resolve(); - const reader = request.body.getReader(); - return new Response( - new ReadableStream({ - async pull(controller) { - await new Promise((r) => setTimeout(r, 100)); - const { done, value } = await reader.read(); - if (done) { - controller.close(); - } else { - controller.enqueue(value); - } - }, - }), - ); - }, - ); - - const { readable, writable } = new TransformStream(); - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - method: "POST", - body: readable, - }); - - await promise; - assert(resp.body); - await testDuplex(resp.body.getReader(), writable.getWriter()); - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - // Issue: https://github.com/denoland/deno/issues/10930 - async function httpServerStreamingResponse() { - // This test enqueues a single chunk for readable - // stream and waits for client to read that chunk and signal - // it before enqueueing subsequent chunk. Issue linked above - // presented a situation where enqueued chunks were not - // written to the HTTP connection until the next chunk was enqueued. - const listeningDeferred = Promise.withResolvers<void>(); - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - let counter = 0; - - const deferreds = [ - Promise.withResolvers<void>(), - Promise.withResolvers<void>(), - Promise.withResolvers<void>(), - ]; - - async function writeRequest(conn: Deno.Conn) { - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const w = new BufWriter(conn); - const r = new BufReader(conn); - const body = `GET / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\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); - const headers = await tpr.readMimeHeader(); - assert(headers !== null); - - const chunkedReader = chunkedBodyReader(headers, r); - - const buf = new Uint8Array(5); - const dest = new Buffer(); - - let result: number | null; - - try { - while ((result = await chunkedReader.read(buf)) !== null) { - const len = Math.min(buf.byteLength, result); - - await dest.write(buf.subarray(0, len)); - - // Resolve a deferred - this will make response stream to - // enqueue next chunk. - deferreds[counter - 1].resolve(); - } - return decoder.decode(dest.bytes()); - } catch (e) { - console.error(e); - } - } - - function periodicStream() { - return new ReadableStream({ - start(controller) { - controller.enqueue(`${counter}\n`); - counter++; - }, - - async pull(controller) { - if (counter >= 3) { - return controller.close(); - } - - await deferreds[counter - 1].promise; - - controller.enqueue(`${counter}\n`); - counter++; - }, - }).pipeThrough(new TextEncoderStream()); - } - - const server = Deno.serve({ - handler: () => { - deferred.resolve(); - return new Response(periodicStream()); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - // start a client - const clientConn = await Deno.connect({ port: servePort }); - - const r1 = await writeRequest(clientConn); - assertEquals(r1, "0\n1\n2\n"); - - ac.abort(); - await deferred.promise; - await server.finished; - clientConn.close(); - }, -); - -// Make sure that the chunks of a large response aren't repeated or corrupted in some other way by -// scatterning sentinels throughout. -// https://github.com/denoland/fresh/issues/1699 -Deno.test( - { permissions: { net: true } }, - async function httpLargeReadableStreamChunk() { - const ac = new AbortController(); - const server = Deno.serve({ - handler() { - return new Response( - new ReadableStream({ - start(controller) { - const buffer = new Uint8Array(1024 * 1024); - // Mark the buffer with sentinels - for (let i = 0; i < 256; i++) { - buffer[i * 4096] = i; - } - controller.enqueue(buffer); - controller.close(); - }, - }), - ); - }, - port: servePort, - signal: ac.signal, - }); - const response = await fetch(`http://localhost:${servePort}/`); - const body = await response.arrayBuffer(); - assertEquals(1024 * 1024, body.byteLength); - const buffer = new Uint8Array(body); - for (let i = 0; i < 256; i++) { - assertEquals( - i, - buffer[i * 4096], - `sentinel mismatch at index ${i * 4096}`, - ); - } - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpRequestLatin1Headers() { - const listeningDeferred = Promise.withResolvers<void>(); - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const server = Deno.serve({ - handler: (request) => { - assertEquals(request.headers.get("X-Header-Test"), "á"); - deferred.resolve(); - return new Response("hello", { headers: { "X-Header-Test": "Æ" } }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const clientConn = await Deno.connect({ port: servePort }); - const requestText = - `GET / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\r\nX-Header-Test: á\r\n\r\n`; - const requestBytes = new Uint8Array(requestText.length); - for (let i = 0; i < requestText.length; i++) { - requestBytes[i] = requestText.charCodeAt(i); - } - let written = 0; - while (written < requestBytes.byteLength) { - written += await clientConn.write(requestBytes.slice(written)); - } - - const buf = new Uint8Array(1024); - await clientConn.read(buf); - - await deferred.promise; - const responseText = new TextDecoder("iso-8859-1").decode(buf); - clientConn.close(); - - ac.abort(); - await server.finished; - - assertMatch(responseText, /\r\n[Xx]-[Hh]eader-[Tt]est: Æ\r\n/); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerRequestWithoutPath() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - // FIXME: - // assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); - assertEquals(await request.text(), ""); - deferred.resolve(); - return new Response("11"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const clientConn = await Deno.connect({ port: servePort }); - - async function writeRequest(conn: Deno.Conn) { - const encoder = new TextEncoder(); - - const w = new BufWriter(conn); - const r = new BufReader(conn); - const body = - `CONNECT 127.0.0.1:${servePort} HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\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); - const m = statusLine.match(/^(.+?) (.+?) (.+?)$/); - assert(m !== null, "must be matched"); - const [_, _proto, status, _ok] = m; - assertEquals(status, "200"); - const headers = await tpr.readMimeHeader(); - assert(headers !== null); - } - - await writeRequest(clientConn); - clientConn.close(); - await deferred.promise; - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpCookieConcatenation() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - assertEquals(await request.text(), ""); - assertEquals(request.headers.get("cookie"), "foo=bar; bar=foo"); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - reusePort: true, - }); - - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: [ - ["connection", "close"], - ["cookie", "foo=bar"], - ["cookie", "bar=foo"], - ], - }); - await deferred.promise; - - const text = await resp.text(); - assertEquals(text, "ok"); - - ac.abort(); - await server.finished; - }, -); - -// https://github.com/denoland/deno/issues/12741 -// https://github.com/denoland/deno/pull/12746 -// https://github.com/denoland/deno/pull/12798 -Deno.test( - { permissions: { net: true, run: true } }, - async function httpServerDeleteRequestHasBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const hostname = "localhost"; - - const server = Deno.serve({ - handler: () => { - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const url = `http://${hostname}:${servePort}/`; - const args = ["-X", "DELETE", url]; - const { success } = await new Deno.Command("curl", { - args, - stdout: "null", - stderr: "null", - }).output(); - assert(success); - await deferred.promise; - ac.abort(); - - await server.finished; - }, -); - -// FIXME: -Deno.test( - { permissions: { net: true } }, - async function httpServerRespondNonAsciiUint8Array() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: (request) => { - assertEquals(request.body, null); - deferred.resolve(); - return new Response(new Uint8Array([128])); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - await listeningDeferred.resolve; - const resp = await fetch(`http://localhost:${servePort}/`); - - await deferred.promise; - - assertEquals(resp.status, 200); - const body = await resp.arrayBuffer(); - assertEquals(new Uint8Array(body), new Uint8Array([128])); - - ac.abort(); - await server.finished; - }, -); - -// Some of these tests are ported from Hyper -// https://github.com/hyperium/hyper/blob/889fa2d87252108eb7668b8bf034ffcc30985117/src/proto/h1/role.rs -// https://github.com/hyperium/hyper/blob/889fa2d87252108eb7668b8bf034ffcc30985117/tests/server.rs - -Deno.test( - { permissions: { net: true } }, - async function httpServerParseRequest() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: (request) => { - assertEquals(request.method, "GET"); - assertEquals(request.headers.get("host"), "deno.land"); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const body = `GET /echo HTTP/1.1\r\nHost: deno.land\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerParseHeaderHtabs() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: (request) => { - assertEquals(request.method, "GET"); - assertEquals(request.headers.get("server"), "hello\tworld"); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const body = `GET / HTTP/1.1\r\nserver: hello\tworld\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerGetShouldIgnoreBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - assertEquals(request.method, "GET"); - assertEquals(await request.text(), ""); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - // Connection: close = don't try to parse the body as a new request - const body = - `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\nI shouldn't be read.\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerPostWithBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - assertEquals(request.method, "POST"); - assertEquals(await request.text(), "I'm a good request."); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 19\r\n\r\nI'm a good request.`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -type TestCase = { - headers?: Record<string, string>; - // deno-lint-ignore no-explicit-any - body: any; - expectsChunked?: boolean; - expectsConnLen?: boolean; -}; - -function hasHeader(msg: string, name: string): boolean { - const n = msg.indexOf("\r\n\r\n") || msg.length; - return msg.slice(0, n).includes(name); -} - -function createServerLengthTest(name: string, testCase: TestCase) { - Deno.test(name, async function () { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: (request) => { - assertEquals(request.method, "GET"); - deferred.resolve(); - return new Response(testCase.body, testCase.headers ?? {}); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const body = - `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - - const decoder = new TextDecoder(); - let msg = ""; - while (true) { - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - if (!readResult) { - break; - } - msg += decoder.decode(buf.subarray(0, readResult)); - try { - assert( - testCase.expectsChunked == hasHeader(msg, "Transfer-Encoding:"), - ); - assert(testCase.expectsChunked == hasHeader(msg, "chunked")); - assert(testCase.expectsConnLen == hasHeader(msg, "Content-Length:")); - - const n = msg.indexOf("\r\n\r\n") + 4; - - if (testCase.expectsChunked) { - assertEquals(msg.slice(n + 1, n + 3), "\r\n"); - assertEquals(msg.slice(msg.length - 7), "\r\n0\r\n\r\n"); - } - - if (testCase.expectsConnLen && typeof testCase.body === "string") { - assertEquals(msg.slice(n), testCase.body); - } - break; - } catch { - continue; - } - } - - conn.close(); - - ac.abort(); - await server.finished; - }); -} - -// Quick and dirty way to make a readable stream from a string. Alternatively, -// `readableStreamFromReader(file)` could be used. -function stream(s: string): ReadableStream<Uint8Array> { - return new Response(s).body!; -} - -createServerLengthTest("fixedResponseKnown", { - headers: { "content-length": "11" }, - body: "foo bar baz", - expectsChunked: false, - expectsConnLen: true, -}); - -createServerLengthTest("fixedResponseUnknown", { - headers: { "content-length": "11" }, - body: stream("foo bar baz"), - expectsChunked: true, - expectsConnLen: false, -}); - -createServerLengthTest("fixedResponseKnownEmpty", { - headers: { "content-length": "0" }, - body: "", - expectsChunked: false, - expectsConnLen: true, -}); - -createServerLengthTest("chunkedRespondKnown", { - headers: { "transfer-encoding": "chunked" }, - body: "foo bar baz", - expectsChunked: false, - expectsConnLen: true, -}); - -createServerLengthTest("chunkedRespondUnknown", { - headers: { "transfer-encoding": "chunked" }, - body: stream("foo bar baz"), - expectsChunked: true, - expectsConnLen: false, -}); - -createServerLengthTest("autoResponseWithKnownLength", { - body: "foo bar baz", - expectsChunked: false, - expectsConnLen: true, -}); - -createServerLengthTest("autoResponseWithUnknownLength", { - body: stream("foo bar baz"), - expectsChunked: true, - expectsConnLen: false, -}); - -createServerLengthTest("autoResponseWithKnownLengthEmpty", { - body: "", - expectsChunked: false, - expectsConnLen: true, -}); - -createServerLengthTest("autoResponseWithUnknownLengthEmpty", { - body: stream(""), - expectsChunked: true, - expectsConnLen: false, -}); - -Deno.test( - { permissions: { net: true } }, - async function httpServerPostWithContentLengthBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - assertEquals(request.method, "POST"); - assertEquals(request.headers.get("content-length"), "5"); - assertEquals(await request.text(), "hello"); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 5\r\n\r\nhello`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerPostWithInvalidPrefixContentLength() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: () => { - throw new Error("unreachable"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: +5\r\n\r\nhello`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - assert(msg.includes("HTTP/1.1 400 Bad Request")); - - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerPostWithChunkedBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - assertEquals(request.method, "POST"); - assertEquals(await request.text(), "qwert"); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nTransfer-Encoding: chunked\r\n\r\n1\r\nq\r\n2\r\nwe\r\n2\r\nrt\r\n0\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerPostWithIncompleteBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (r) => { - deferred.resolve(); - assertEquals(await r.text(), "12345"); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 10\r\n\r\n12345`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - await deferred.promise; - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerHeadResponseDoesntSendBody() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: () => { - deferred.resolve(); - return new Response("NaN".repeat(100)); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const body = - `HEAD / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - await deferred.promise; - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - - assert(msg.includes("content-length: 300\r\n")); - - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -function makeTempData(size: number) { - return new Uint8Array(size).fill(1); -} - -async function makeTempFile(size: number) { - const tmpFile = await Deno.makeTempFile(); - using file = await Deno.open(tmpFile, { write: true, read: true }); - const data = makeTempData(size); - await file.write(data); - - return await Deno.open(tmpFile, { write: true, read: true }); -} - -const compressionTestCases = [ - { name: "Empty", length: 0, in: {}, out: {}, expect: null }, - { - name: "EmptyAcceptGzip", - length: 0, - in: { "Accept-Encoding": "gzip" }, - out: {}, - expect: null, - }, - // This technically would be compressible if not for the size, however the size_hint is not implemented - // for FileResource and we don't currently peek ahead on resources. - // { - // name: "EmptyAcceptGzip2", - // length: 0, - // in: { "Accept-Encoding": "gzip" }, - // out: { "Content-Type": "text/plain" }, - // expect: null, - // }, - { name: "Incompressible", length: 1024, in: {}, out: {}, expect: null }, - { - name: "IncompressibleAcceptGzip", - length: 1024, - in: { "Accept-Encoding": "gzip" }, - out: {}, - expect: null, - }, - { - name: "IncompressibleType", - length: 1024, - in: { "Accept-Encoding": "gzip" }, - out: { "Content-Type": "text/fake" }, - expect: null, - }, - { - name: "CompressibleType", - length: 1024, - in: { "Accept-Encoding": "gzip" }, - out: { "Content-Type": "text/plain" }, - expect: "gzip", - }, - { - name: "CompressibleType2", - length: 1024, - in: { "Accept-Encoding": "gzip, deflate, br" }, - out: { "Content-Type": "text/plain" }, - expect: "gzip", - }, - { - name: "CompressibleType3", - length: 1024, - in: { "Accept-Encoding": "br" }, - out: { "Content-Type": "text/plain" }, - expect: "br", - }, - { - name: "IncompressibleRange", - length: 1024, - in: { "Accept-Encoding": "gzip" }, - out: { "Content-Type": "text/plain", "Content-Range": "1" }, - expect: null, - }, - { - name: "IncompressibleCE", - length: 1024, - in: { "Accept-Encoding": "gzip" }, - out: { "Content-Type": "text/plain", "Content-Encoding": "random" }, - expect: null, - }, - { - name: "IncompressibleCC", - length: 1024, - in: { "Accept-Encoding": "gzip" }, - out: { "Content-Type": "text/plain", "Cache-Control": "no-transform" }, - expect: null, - }, - { - name: "BadHeader", - length: 1024, - in: { "Accept-Encoding": "\x81" }, - out: { "Content-Type": "text/plain", "Cache-Control": "no-transform" }, - expect: null, - }, -]; - -for (const testCase of compressionTestCases) { - const name = `httpServerCompression${testCase.name}`; - Deno.test( - { permissions: { net: true, write: true, read: true } }, - { - [name]: async function () { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const server = Deno.serve({ - handler: async (_request) => { - const f = await makeTempFile(testCase.length); - deferred.resolve(); - // deno-lint-ignore no-explicit-any - const headers = testCase.out as any; - headers["Content-Length"] = testCase.length.toString(); - return new Response(f.readable, { - headers: headers as HeadersInit, - }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - try { - await listeningDeferred.promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - headers: testCase.in as HeadersInit, - }); - await deferred.promise; - const body = await resp.arrayBuffer(); - if (testCase.expect == null) { - assertEquals(body.byteLength, testCase.length); - assertEquals( - resp.headers.get("content-length"), - testCase.length.toString(), - ); - assertEquals( - resp.headers.get("content-encoding"), - testCase.out["Content-Encoding"] || null, - ); - } else if (testCase.expect == "gzip") { - // Note the fetch will transparently decompress this response, BUT we can detect that a response - // was compressed by the lack of a content length. - assertEquals(body.byteLength, testCase.length); - assertEquals(resp.headers.get("content-encoding"), null); - assertEquals(resp.headers.get("content-length"), null); - } - } finally { - ac.abort(); - await server.finished; - } - }, - }[name], - ); -} - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerPostFile() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (request) => { - assertEquals( - new Uint8Array(await request.arrayBuffer()), - makeTempData(70 * 1024), - ); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const f = await makeTempFile(70 * 1024); - const response = await fetch(`http://localhost:${servePort}/`, { - method: "POST", - body: f.readable, - }); - - await deferred.promise; - - assertEquals(response.status, 200); - assertEquals(await response.text(), "ok"); - - ac.abort(); - await server.finished; - }, -); - -for (const delay of ["delay", "nodelay"]) { - for (const url of ["text", "file", "stream"]) { - // Ensure that we don't panic when the incoming TCP request was dropped - // https://github.com/denoland/deno/issues/20315 and that we correctly - // close/cancel the response - Deno.test({ - permissions: { read: true, write: true, net: true }, - name: `httpServerTcpCancellation_${url}_${delay}`, - fn: async function () { - const ac = new AbortController(); - const streamCancelled = url == "stream" - ? Promise.withResolvers<void>() - : undefined; - const listeningDeferred = Promise.withResolvers<void>(); - const waitForAbort = Promise.withResolvers<void>(); - const waitForRequest = Promise.withResolvers<void>(); - const server = Deno.serve({ - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - handler: async (req: Request) => { - let respBody = null; - if (req.url.includes("/text")) { - respBody = "text"; - } else if (req.url.includes("/file")) { - respBody = (await makeTempFile(1024)).readable; - } else if (req.url.includes("/stream")) { - respBody = new ReadableStream({ - start(controller) { - controller.enqueue(new Uint8Array([1])); - }, - cancel(reason) { - streamCancelled!.resolve(reason); - }, - }); - } else { - fail(); - } - waitForRequest.resolve(); - await waitForAbort.promise; - - if (delay == "delay") { - await new Promise((r) => setTimeout(r, 1000)); - } - // Allocate the request body - req.body; - return new Response(respBody); - }, - }); - - await listeningDeferred.promise; - - // Create a POST request and drop it once the server has received it - const conn = await Deno.connect({ port: servePort }); - const writer = conn.writable.getWriter(); - await writer.write( - new TextEncoder().encode(`POST /${url} HTTP/1.0\n\n`), - ); - await waitForRequest.promise; - await writer.close(); - - waitForAbort.resolve(); - - // Wait for cancellation before we shut the server down - if (streamCancelled !== undefined) { - await streamCancelled; - } - - // Since the handler has a chance of creating resources or running async - // ops, we need to use a graceful shutdown here to ensure they have fully - // drained. - await server.shutdown(); - - await server.finished; - }, - }); - } -} - -Deno.test( - { permissions: { net: true } }, - async function httpServerCancelFetch() { - const request2 = Promise.withResolvers<void>(); - const request2Aborted = Promise.withResolvers<string>(); - const { finished, abort } = await makeServer(async (req) => { - if (req.url.endsWith("/1")) { - const fetchRecursive = await fetch(`http://localhost:${servePort}/2`); - return new Response(fetchRecursive.body); - } else if (req.url.endsWith("/2")) { - request2.resolve(); - return new Response( - new ReadableStream({ - start(_controller) {/* just hang */}, - cancel(reason) { - request2Aborted.resolve(reason); - }, - }), - ); - } - fail(); - }); - const fetchAbort = new AbortController(); - const fetchPromise = await fetch(`http://localhost:${servePort}/1`, { - signal: fetchAbort.signal, - }); - await fetchPromise; - await request2.promise; - fetchAbort.abort(); - assertEquals("resource closed", await request2Aborted.promise); - - abort(); - await finished; - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function httpServerWithTls() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const hostname = "127.0.0.1"; - - const server = Deno.serve({ - handler: () => new Response("Hello World"), - hostname, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - cert: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.crt"), - key: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.key"), - }); - - await promise; - const caCert = Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem"); - const client = Deno.createHttpClient({ caCerts: [caCert] }); - const resp = await fetch(`https://localhost:${servePort}/`, { - client, - headers: { "connection": "close" }, - }); - - const respBody = await resp.text(); - assertEquals("Hello World", respBody); - - client.close(); - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerRequestCLTE() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - const deferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: async (req) => { - assertEquals(await req.text(), ""); - deferred.resolve(); - return new Response("ok"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 13\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\nEXTRA`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - await deferred.promise; - - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true, write: true, read: true } }, - async function httpServerRequestTETE() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: () => { - throw new Error("oops"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const variations = [ - "Transfer-Encoding : chunked", - "Transfer-Encoding: xchunked", - "Transfer-Encoding: chunkedx", - "Transfer-Encoding\n: chunked", - ]; - - await promise; - for (const teHeader of variations) { - const conn = await Deno.connect({ port: servePort }); - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\n${teHeader}\r\n\r\n0\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - assert(msg.includes("HTTP/1.1 400 Bad Request\r\n")); - - conn.close(); - } - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServer204ResponseDoesntSendContentLength() { - const { promise, resolve } = Promise.withResolvers<void>(); - const ac = new AbortController(); - const server = Deno.serve({ - handler: (_request) => new Response(null, { status: 204 }), - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - try { - await promise; - const resp = await fetch(`http://127.0.0.1:${servePort}/`, { - method: "GET", - headers: { "connection": "close" }, - }); - assertEquals(resp.status, 204); - assertEquals(resp.headers.get("Content-Length"), null); - } finally { - ac.abort(); - await server.finished; - } - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServer304ResponseDoesntSendBody() { - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: () => { - deferred.resolve(); - return new Response(null, { status: 304 }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - const body = - `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - - await deferred.promise; - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - - assert(msg.startsWith("HTTP/1.1 304 Not Modified")); - assert(msg.endsWith("\r\n\r\n")); - - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerExpectContinue() { - const deferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: async (req) => { - deferred.resolve(); - assertEquals(await req.text(), "hello"); - return new Response(null, { status: 304 }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - { - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nExpect: 100-continue\r\nContent-Length: 5\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - } - - await deferred.promise; - - { - const msgExpected = "HTTP/1.1 100 Continue\r\n\r\n"; - const buf = new Uint8Array(encoder.encode(msgExpected).byteLength); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - assert(msg.startsWith(msgExpected)); - } - - { - const body = "hello"; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - } - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - - assert(msg.startsWith("HTTP/1.1 304 Not Modified")); - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function httpServerExpectContinueButNoBodyLOL() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve({ - handler: async (req) => { - deferred.resolve(); - assertEquals(await req.text(), ""); - return new Response(null, { status: 304 }); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), - onError: createOnErrorCb(ac), - }); - - await listeningDeferred.promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - { - // // no content-length or transfer-encoding means no body! - const body = - `POST / HTTP/1.1\r\nHost: example.domain\r\nExpect: 100-continue\r\nConnection: close\r\n\r\n`; - const writeResult = await conn.write(encoder.encode(body)); - assertEquals(body.length, writeResult); - } - - await deferred.promise; - - const buf = new Uint8Array(1024); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - - assert(msg.startsWith("HTTP/1.1 304 Not Modified")); - conn.close(); - - ac.abort(); - await server.finished; - }, -); - -const badRequests = [ - ["weirdMethodName", "GE T / HTTP/1.1\r\n\r\n"], - ["illegalRequestLength", "POST / HTTP/1.1\r\nContent-Length: foo\r\n\r\n"], - ["illegalRequestLength2", "POST / HTTP/1.1\r\nContent-Length: -1\r\n\r\n"], - ["illegalRequestLength3", "POST / HTTP/1.1\r\nContent-Length: 1.1\r\n\r\n"], - ["illegalRequestLength4", "POST / HTTP/1.1\r\nContent-Length: 1.\r\n\r\n"], -]; - -for (const [name, req] of badRequests) { - const testFn = { - [name]: async () => { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: () => { - throw new Error("oops"); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - await promise; - const conn = await Deno.connect({ port: servePort }); - const encoder = new TextEncoder(); - const decoder = new TextDecoder(); - - { - const writeResult = await conn.write(encoder.encode(req)); - assertEquals(req.length, writeResult); - } - - const buf = new Uint8Array(100); - const readResult = await conn.read(buf); - assert(readResult); - const msg = decoder.decode(buf.subarray(0, readResult)); - - assert(msg.startsWith("HTTP/1.1 400 ")); - conn.close(); - - ac.abort(); - await server.finished; - }, - }[name]; - - Deno.test( - { permissions: { net: true } }, - testFn, - ); -} - -Deno.test( - { permissions: { net: true } }, - async function httpServerConcurrentRequests() { - const ac = new AbortController(); - const { resolve } = Promise.withResolvers<void>(); - - let reqCount = -1; - let timerId: number | undefined; - const server = Deno.serve({ - handler: (_req) => { - reqCount++; - if (reqCount === 0) { - const msg = new TextEncoder().encode("data: hello\r\n\r\n"); - // SSE - const body = new ReadableStream({ - start(controller) { - timerId = setInterval(() => { - controller.enqueue(msg); - }, 1000); - }, - cancel() { - if (typeof timerId === "number") { - clearInterval(timerId); - } - }, - }); - return new Response(body, { - headers: { - "Content-Type": "text/event-stream", - }, - }); - } - - return new Response(`hello ${reqCount}`); - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - const sseRequest = await fetch(`http://localhost:${servePort}/`); - - const decoder = new TextDecoder(); - const stream = sseRequest.body!.getReader(); - { - const { done, value } = await stream.read(); - assert(!done); - assertEquals(decoder.decode(value), "data: hello\r\n\r\n"); - } - - const helloRequest = await fetch(`http://localhost:${servePort}/`); - assertEquals(helloRequest.status, 200); - assertEquals(await helloRequest.text(), "hello 1"); - - { - const { done, value } = await stream.read(); - assert(!done); - assertEquals(decoder.decode(value), "data: hello\r\n\r\n"); - } - - await stream.cancel(); - clearInterval(timerId); - ac.abort(); - await server.finished; - }, -); - -Deno.test( - { permissions: { net: true } }, - async function serveWithPrototypePollution() { - const originalThen = Promise.prototype.then; - const originalSymbolIterator = Array.prototype[Symbol.iterator]; - try { - Promise.prototype.then = Array.prototype[Symbol.iterator] = () => { - throw new Error(); - }; - const ac = new AbortController(); - const { resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - handler: (_req) => new Response("ok"), - hostname: "localhost", - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - ac.abort(); - await server.finished; - } finally { - Promise.prototype.then = originalThen; - Array.prototype[Symbol.iterator] = originalSymbolIterator; - } - }, -); - -// https://github.com/denoland/deno/issues/15549 -Deno.test( - { permissions: { net: true } }, - async function testIssue15549() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - let count = 0; - const server = Deno.serve({ - async onListen({ port }: { port: number }) { - const res1 = await fetch(`http://localhost:${port}/`); - assertEquals(await res1.text(), "hello world 1"); - - const res2 = await fetch(`http://localhost:${port}/`); - assertEquals(await res2.text(), "hello world 2"); - - resolve(); - ac.abort(); - }, - signal: ac.signal, - }, () => { - count++; - return new Response(`hello world ${count}`); - }); - - await promise; - await server.finished; - }, -); - -// https://github.com/denoland/deno/issues/15858 -Deno.test( - "Clone should work", - { permissions: { net: true } }, - async function httpServerCanCloneRequest() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<number>(); - - const server = Deno.serve({ - handler: async (req) => { - const cloned = req.clone(); - assertEquals(req.headers, cloned.headers); - - assertEquals(cloned.url, req.url); - assertEquals(cloned.cache, req.cache); - assertEquals(cloned.destination, req.destination); - assertEquals(cloned.headers, req.headers); - assertEquals(cloned.integrity, req.integrity); - assertEquals(cloned.isHistoryNavigation, req.isHistoryNavigation); - assertEquals(cloned.isReloadNavigation, req.isReloadNavigation); - assertEquals(cloned.keepalive, req.keepalive); - assertEquals(cloned.method, req.method); - assertEquals(cloned.mode, req.mode); - assertEquals(cloned.redirect, req.redirect); - assertEquals(cloned.referrer, req.referrer); - assertEquals(cloned.referrerPolicy, req.referrerPolicy); - - // both requests can read body - await req.text(); - await cloned.json(); - - return new Response("ok"); - }, - signal: ac.signal, - onListen: ({ port }: { port: number }) => resolve(port), - onError: createOnErrorCb(ac), - }); - - try { - const port = await promise; - const resp = await fetch(`http://localhost:${port}/`, { - headers: { connection: "close" }, - method: "POST", - body: '{"sus":true}', - }); - const text = await resp.text(); - assertEquals(text, "ok"); - } finally { - ac.abort(); - await server.finished; - } - }, -); - -// https://fetch.spec.whatwg.org/#dom-request-clone -Deno.test( - "Throw if disturbed", - { permissions: { net: true } }, - async function shouldThrowIfBodyIsUnusableDisturbed() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<number>(); - - const server = Deno.serve({ - handler: async (req) => { - await req.text(); - - try { - req.clone(); - fail(); - } catch (cloneError) { - assert(cloneError instanceof TypeError); - assert( - cloneError.message.endsWith("Body is unusable."), - ); - - ac.abort(); - await server.finished; - } - - return new Response("ok"); - }, - signal: ac.signal, - onListen: ({ port }: { port: number }) => resolve(port), - }); - - try { - const port = await promise; - await fetch(`http://localhost:${port}/`, { - headers: { connection: "close" }, - method: "POST", - body: '{"bar":true}', - }); - fail(); - } catch (clientError) { - assert(clientError instanceof TypeError); - assert( - clientError.message.endsWith( - "connection closed before message completed", - ), - ); - } finally { - ac.abort(); - await server.finished; - } - }, -); - -// https://fetch.spec.whatwg.org/#dom-request-clone -Deno.test({ - name: "Throw if locked", - permissions: { net: true }, - fn: async function shouldThrowIfBodyIsUnusableLocked() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<number>(); - - const server = Deno.serve({ - handler: async (req) => { - const _reader = req.body?.getReader(); - - try { - req.clone(); - fail(); - } catch (cloneError) { - assert(cloneError instanceof TypeError); - assert( - cloneError.message.endsWith("Body is unusable."), - ); - - ac.abort(); - await server.finished; - } - return new Response("ok"); - }, - signal: ac.signal, - onListen: ({ port }: { port: number }) => resolve(port), - }); - - try { - const port = await promise; - await fetch(`http://localhost:${port}/`, { - headers: { connection: "close" }, - method: "POST", - body: '{"bar":true}', - }); - fail(); - } catch (clientError) { - assert(clientError instanceof TypeError); - assert( - clientError.message.endsWith( - "connection closed before message completed", - ), - ); - } finally { - ac.abort(); - await server.finished; - } - }, -}); - -// Checks large streaming response -// https://github.com/denoland/deno/issues/16567 -Deno.test( - { permissions: { net: true } }, - async function testIssue16567() { - const ac = new AbortController(); - const { promise, resolve } = Promise.withResolvers<void>(); - const server = Deno.serve({ - async onListen({ port }) { - const res1 = await fetch(`http://localhost:${port}/`); - assertEquals((await res1.text()).length, 40 * 50_000); - - resolve(); - ac.abort(); - }, - signal: ac.signal, - }, () => - new Response( - new ReadableStream({ - start(c) { - // 2MB "a...a" response with 40 chunks - for (const _ of Array(40)) { - c.enqueue(new Uint8Array(50_000).fill(97)); - } - c.close(); - }, - }), - )); - - await promise; - await server.finished; - }, -); - -function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { - // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 - const tp = new TextProtoReader(r); - let finished = false; - const chunks: Array<{ - offset: number; - data: Uint8Array; - }> = []; - async function read(buf: Uint8Array): Promise<number | null> { - if (finished) return null; - const [chunk] = chunks; - if (chunk) { - const chunkRemaining = chunk.data.byteLength - chunk.offset; - const readLength = Math.min(chunkRemaining, buf.byteLength); - for (let i = 0; i < readLength; i++) { - buf[i] = chunk.data[chunk.offset + i]; - } - chunk.offset += readLength; - if (chunk.offset === chunk.data.byteLength) { - chunks.shift(); - // Consume \r\n; - if ((await tp.readLine()) === null) { - throw new Deno.errors.UnexpectedEof(); - } - } - return readLength; - } - const line = await tp.readLine(); - if (line === null) throw new Deno.errors.UnexpectedEof(); - // TODO(bartlomieju): handle chunk extension - const [chunkSizeString] = line.split(";"); - const chunkSize = parseInt(chunkSizeString, 16); - if (Number.isNaN(chunkSize) || chunkSize < 0) { - throw new Deno.errors.InvalidData("Invalid chunk size"); - } - if (chunkSize > 0) { - if (chunkSize > buf.byteLength) { - let eof = await r.readFull(buf); - if (eof === null) { - throw new Deno.errors.UnexpectedEof(); - } - const restChunk = new Uint8Array(chunkSize - buf.byteLength); - eof = await r.readFull(restChunk); - if (eof === null) { - throw new Deno.errors.UnexpectedEof(); - } else { - chunks.push({ - offset: 0, - data: restChunk, - }); - } - return buf.byteLength; - } else { - const bufToFill = buf.subarray(0, chunkSize); - const eof = await r.readFull(bufToFill); - if (eof === null) { - throw new Deno.errors.UnexpectedEof(); - } - // Consume \r\n - if ((await tp.readLine()) === null) { - throw new Deno.errors.UnexpectedEof(); - } - return chunkSize; - } - } else { - assert(chunkSize === 0); - // Consume \r\n - if ((await r.readLine()) === null) { - throw new Deno.errors.UnexpectedEof(); - } - await readTrailers(h, r); - finished = true; - return null; - } - } - return { read }; -} - -async function readTrailers( - headers: Headers, - r: BufReader, -) { - const trailers = parseTrailer(headers.get("trailer")); - if (trailers == null) return; - const trailerNames = [...trailers.keys()]; - const tp = new TextProtoReader(r); - const result = await tp.readMimeHeader(); - if (result == null) { - throw new Deno.errors.InvalidData("Missing trailer header."); - } - const undeclared = [...result.keys()].filter( - (k) => !trailerNames.includes(k), - ); - if (undeclared.length > 0) { - throw new Deno.errors.InvalidData( - `Undeclared trailers: ${Deno.inspect(undeclared)}.`, - ); - } - for (const [k, v] of result) { - headers.append(k, v); - } - const missingTrailers = trailerNames.filter((k) => !result.has(k)); - if (missingTrailers.length > 0) { - throw new Deno.errors.InvalidData( - `Missing trailers: ${Deno.inspect(missingTrailers)}.`, - ); - } - headers.delete("trailer"); -} - -function parseTrailer(field: string | null): Headers | undefined { - if (field == null) { - return undefined; - } - const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); - if (trailerNames.length === 0) { - throw new Deno.errors.InvalidData("Empty trailer header."); - } - const prohibited = trailerNames.filter((k) => isProhibitedForTrailer(k)); - if (prohibited.length > 0) { - throw new Deno.errors.InvalidData( - `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, - ); - } - return new Headers(trailerNames.map((key) => [key, ""])); -} - -function isProhibitedForTrailer(key: string): boolean { - const s = new Set(["transfer-encoding", "content-length", "trailer"]); - return s.has(key.toLowerCase()); -} - -// TODO(mmastrac): curl on Windows CI stopped supporting --http2? -Deno.test( - { - permissions: { net: true, run: true }, - ignore: Deno.build.os === "windows", - }, - async function httpServeCurlH2C() { - const ac = new AbortController(); - const server = Deno.serve( - { port: servePort, signal: ac.signal }, - () => new Response("hello world!"), - ); - - assertEquals( - "hello world!", - await curlRequest([`http://localhost:${servePort}/path`]), - ); - assertEquals( - "hello world!", - await curlRequest([`http://localhost:${servePort}/path`, "--http2"]), - ); - assertEquals( - "hello world!", - await curlRequest([ - `http://localhost:${servePort}/path`, - "--http2", - "--http2-prior-knowledge", - ]), - ); - - ac.abort(); - await server.finished; - }, -); - -// TODO(mmastrac): This test should eventually use fetch, when we support trailers there. -// This test is ignored because it's flaky and relies on cURL's verbose output. -Deno.test( - { permissions: { net: true, run: true, read: true }, ignore: true }, - async function httpServerTrailers() { - const ac = new AbortController(); - const { resolve } = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: () => { - const response = new Response("Hello World", { - headers: { - "trailer": "baz", - "transfer-encoding": "chunked", - "foo": "bar", - }, - }); - addTrailers(response, [["baz", "why"]]); - return response; - }, - port: servePort, - signal: ac.signal, - onListen: onListen(resolve), - onError: createOnErrorCb(ac), - }); - - // We don't have a great way to access this right now, so just fetch the trailers with cURL - const [_, stderr] = await curlRequestWithStdErr([ - `http://localhost:${servePort}/path`, - "-v", - "--http2", - "--http2-prior-knowledge", - ]); - assertMatch(stderr, /baz: why/); - ac.abort(); - await server.finished; - }, -); - -// TODO(mmastrac): curl on CI stopped supporting --http2? -Deno.test( - { - permissions: { - net: true, - run: true, - read: true, - }, - ignore: Deno.build.os === "windows", - }, - async function httpsServeCurlH2C() { - const ac = new AbortController(); - const server = Deno.serve( - { - signal: ac.signal, - port: servePort, - cert: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.crt"), - key: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.key"), - }, - () => new Response("hello world!"), - ); - - assertEquals( - "hello world!", - await curlRequest([`https://localhost:${servePort}/path`, "-k"]), - ); - assertEquals( - "hello world!", - await curlRequest([ - `https://localhost:${servePort}/path`, - "-k", - "--http2", - ]), - ); - assertEquals( - "hello world!", - await curlRequest([ - `https://localhost:${servePort}/path`, - "-k", - "--http2", - "--http2-prior-knowledge", - ]), - ); - - ac.abort(); - await server.finished; - }, -); - -async function curlRequest(args: string[]) { - const { success, stdout, stderr } = await new Deno.Command("curl", { - args, - stdout: "piped", - stderr: "piped", - }).output(); - assert( - success, - `Failed to cURL ${args}: stdout\n\n${stdout}\n\nstderr:\n\n${stderr}`, - ); - return new TextDecoder().decode(stdout); -} - -async function curlRequestWithStdErr(args: string[]) { - const { success, stdout, stderr } = await new Deno.Command("curl", { - args, - stdout: "piped", - stderr: "piped", - }).output(); - assert( - success, - `Failed to cURL ${args}: stdout\n\n${stdout}\n\nstderr:\n\n${stderr}`, - ); - return [new TextDecoder().decode(stdout), new TextDecoder().decode(stderr)]; -} - -Deno.test("Deno.HttpServer is not thenable", async () => { - // deno-lint-ignore require-await - async function serveTest() { - const server = Deno.serve({ port: servePort }, (_) => new Response("")); - assert(!("then" in server)); - return server; - } - const server = await serveTest(); - await server.shutdown(); -}); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { run: true, read: true, write: true }, - }, - async function httpServerUnixDomainSocket() { - const { promise, resolve } = Promise.withResolvers<{ path: string }>(); - const ac = new AbortController(); - const filePath = tmpUnixSocketPath(); - const server = Deno.serve( - { - signal: ac.signal, - path: filePath, - onListen(info) { - resolve(info); - }, - onError: createOnErrorCb(ac), - }, - (_req, { remoteAddr }) => { - assertEquals(remoteAddr, { path: filePath, transport: "unix" }); - return new Response("hello world!"); - }, - ); - - assertEquals(await promise, { path: filePath }); - assertEquals( - "hello world!", - await curlRequest(["--unix-socket", filePath, "http://localhost"]), - ); - ac.abort(); - await server.finished; - }, -); - -// serve Handler must return Response class or promise that resolves Response class -Deno.test( - { permissions: { net: true, run: true } }, - async function handleServeCallbackReturn() { - const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve( - { - port: servePort, - onListen: onListen(listeningDeferred.resolve), - signal: ac.signal, - onError: (error) => { - assert(error instanceof TypeError); - assert( - error.message === - "Return value from serve handler must be a response or a promise resolving to a response", - ); - deferred.resolve(); - return new Response("Customized Internal Error from onError"); - }, - }, - () => { - // Trick the typechecker - return <Response> <unknown> undefined; - }, - ); - await listeningDeferred.promise; - const respText = await curlRequest([`http://localhost:${servePort}`]); - await deferred.promise; - ac.abort(); - await server.finished; - assert(respText === "Customized Internal Error from onError"); - }, -); - -// onError Handler must return Response class or promise that resolves Response class -Deno.test( - { permissions: { net: true, run: true } }, - async function handleServeErrorCallbackReturn() { - const { promise, resolve } = Promise.withResolvers<void>(); - const ac = new AbortController(); - - const server = Deno.serve( - { - port: servePort, - onListen: onListen(resolve), - signal: ac.signal, - onError: () => { - // Trick the typechecker - return <Response> <unknown> undefined; - }, - }, - () => { - // Trick the typechecker - return <Response> <unknown> undefined; - }, - ); - await promise; - const respText = await curlRequest([`http://localhost:${servePort}`]); - ac.abort(); - await server.finished; - assert(respText === "Internal Server Error"); - }, -); diff --git a/cli/tests/unit/stat_test.ts b/cli/tests/unit/stat_test.ts deleted file mode 100644 index ccb17b164..000000000 --- a/cli/tests/unit/stat_test.ts +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertRejects, - assertThrows, - pathToAbsoluteFileUrl, -} from "./test_util.ts"; - -Deno.test({ permissions: { read: true } }, function fstatSyncSuccess() { - using file = Deno.openSync("README.md"); - const fileInfo = Deno.fstatSync(file.rid); - assert(fileInfo.isFile); - assert(!fileInfo.isSymlink); - assert(!fileInfo.isDirectory); - assert(fileInfo.size); - assert(fileInfo.atime); - assert(fileInfo.mtime); - // The `birthtime` field is not available on Linux before kernel version 4.11. - assert(fileInfo.birthtime || Deno.build.os === "linux"); -}); - -Deno.test({ permissions: { read: true } }, async function fstatSuccess() { - using file = await Deno.open("README.md"); - const fileInfo = await Deno.fstat(file.rid); - assert(fileInfo.isFile); - assert(!fileInfo.isSymlink); - assert(!fileInfo.isDirectory); - assert(fileInfo.size); - assert(fileInfo.atime); - assert(fileInfo.mtime); - // The `birthtime` field is not available on Linux before kernel version 4.11. - assert(fileInfo.birthtime || Deno.build.os === "linux"); -}); - -Deno.test( - { permissions: { read: true, write: true } }, - function statSyncSuccess() { - const readmeInfo = Deno.statSync("README.md"); - assert(readmeInfo.isFile); - assert(!readmeInfo.isSymlink); - - const modulesInfo = Deno.statSync("cli/tests/testdata/symlink_to_subdir"); - assert(modulesInfo.isDirectory); - assert(!modulesInfo.isSymlink); - - const testsInfo = Deno.statSync("cli/tests"); - assert(testsInfo.isDirectory); - assert(!testsInfo.isSymlink); - - const tempFile = Deno.makeTempFileSync(); - const tempInfo = Deno.statSync(tempFile); - let now = Date.now(); - assert(tempInfo.atime !== null && now - tempInfo.atime.valueOf() < 1000); - assert(tempInfo.mtime !== null && now - tempInfo.mtime.valueOf() < 1000); - assert( - tempInfo.birthtime === null || now - tempInfo.birthtime.valueOf() < 1000, - ); - - const readmeInfoByUrl = Deno.statSync(pathToAbsoluteFileUrl("README.md")); - assert(readmeInfoByUrl.isFile); - assert(!readmeInfoByUrl.isSymlink); - - const modulesInfoByUrl = Deno.statSync( - pathToAbsoluteFileUrl("cli/tests/testdata/symlink_to_subdir"), - ); - assert(modulesInfoByUrl.isDirectory); - assert(!modulesInfoByUrl.isSymlink); - - const testsInfoByUrl = Deno.statSync(pathToAbsoluteFileUrl("cli/tests")); - assert(testsInfoByUrl.isDirectory); - assert(!testsInfoByUrl.isSymlink); - - const tempFileForUrl = Deno.makeTempFileSync(); - const tempInfoByUrl = Deno.statSync( - new URL( - `file://${Deno.build.os === "windows" ? "/" : ""}${tempFileForUrl}`, - ), - ); - now = Date.now(); - assert( - tempInfoByUrl.atime !== null && - now - tempInfoByUrl.atime.valueOf() < 1000, - ); - assert( - tempInfoByUrl.mtime !== null && - now - tempInfoByUrl.mtime.valueOf() < 1000, - ); - assert( - tempInfoByUrl.birthtime === null || - now - tempInfoByUrl.birthtime.valueOf() < 1000, - ); - - Deno.removeSync(tempFile, { recursive: true }); - Deno.removeSync(tempFileForUrl, { recursive: true }); - }, -); - -Deno.test({ permissions: { read: false } }, function statSyncPerm() { - assertThrows(() => { - Deno.statSync("README.md"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function statSyncNotFound() { - assertThrows( - () => { - Deno.statSync("bad_file_name"); - }, - Deno.errors.NotFound, - `stat 'bad_file_name'`, - ); -}); - -Deno.test({ permissions: { read: true } }, function lstatSyncSuccess() { - const packageInfo = Deno.lstatSync("README.md"); - assert(packageInfo.isFile); - assert(!packageInfo.isSymlink); - - const packageInfoByUrl = Deno.lstatSync(pathToAbsoluteFileUrl("README.md")); - assert(packageInfoByUrl.isFile); - assert(!packageInfoByUrl.isSymlink); - - const modulesInfo = Deno.lstatSync("cli/tests/testdata/symlink_to_subdir"); - assert(!modulesInfo.isDirectory); - assert(modulesInfo.isSymlink); - - const modulesInfoByUrl = Deno.lstatSync( - pathToAbsoluteFileUrl("cli/tests/testdata/symlink_to_subdir"), - ); - assert(!modulesInfoByUrl.isDirectory); - assert(modulesInfoByUrl.isSymlink); - - const coreInfo = Deno.lstatSync("cli"); - assert(coreInfo.isDirectory); - assert(!coreInfo.isSymlink); - - const coreInfoByUrl = Deno.lstatSync(pathToAbsoluteFileUrl("cli")); - assert(coreInfoByUrl.isDirectory); - assert(!coreInfoByUrl.isSymlink); -}); - -Deno.test({ permissions: { read: false } }, function lstatSyncPerm() { - assertThrows(() => { - Deno.lstatSync("assets/hello.txt"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, function lstatSyncNotFound() { - assertThrows( - () => { - Deno.lstatSync("bad_file_name"); - }, - Deno.errors.NotFound, - `stat 'bad_file_name'`, - ); -}); - -Deno.test( - { permissions: { read: true, write: true } }, - async function statSuccess() { - const readmeInfo = await Deno.stat("README.md"); - assert(readmeInfo.isFile); - assert(!readmeInfo.isSymlink); - - const readmeInfoByUrl = await Deno.stat( - pathToAbsoluteFileUrl("README.md"), - ); - assert(readmeInfoByUrl.isFile); - assert(!readmeInfoByUrl.isSymlink); - - const modulesInfo = await Deno.stat("cli/tests/testdata/symlink_to_subdir"); - assert(modulesInfo.isDirectory); - assert(!modulesInfo.isSymlink); - - const modulesInfoByUrl = await Deno.stat( - pathToAbsoluteFileUrl("cli/tests/testdata/symlink_to_subdir"), - ); - assert(modulesInfoByUrl.isDirectory); - assert(!modulesInfoByUrl.isSymlink); - - const testsInfo = await Deno.stat("cli/tests"); - assert(testsInfo.isDirectory); - assert(!testsInfo.isSymlink); - - const testsInfoByUrl = await Deno.stat(pathToAbsoluteFileUrl("cli/tests")); - assert(testsInfoByUrl.isDirectory); - assert(!testsInfoByUrl.isSymlink); - - const tempFile = await Deno.makeTempFile(); - const tempInfo = await Deno.stat(tempFile); - let now = Date.now(); - assert(tempInfo.atime !== null && now - tempInfo.atime.valueOf() < 1000); - assert(tempInfo.mtime !== null && now - tempInfo.mtime.valueOf() < 1000); - - assert( - tempInfo.birthtime === null || now - tempInfo.birthtime.valueOf() < 1000, - ); - - const tempFileForUrl = await Deno.makeTempFile(); - const tempInfoByUrl = await Deno.stat( - new URL( - `file://${Deno.build.os === "windows" ? "/" : ""}${tempFileForUrl}`, - ), - ); - now = Date.now(); - assert( - tempInfoByUrl.atime !== null && - now - tempInfoByUrl.atime.valueOf() < 1000, - ); - assert( - tempInfoByUrl.mtime !== null && - now - tempInfoByUrl.mtime.valueOf() < 1000, - ); - assert( - tempInfoByUrl.birthtime === null || - now - tempInfoByUrl.birthtime.valueOf() < 1000, - ); - - Deno.removeSync(tempFile, { recursive: true }); - Deno.removeSync(tempFileForUrl, { recursive: true }); - }, -); - -Deno.test({ permissions: { read: false } }, async function statPerm() { - await assertRejects(async () => { - await Deno.stat("README.md"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, async function statNotFound() { - await assertRejects( - async () => { - await Deno.stat("bad_file_name"); - }, - Deno.errors.NotFound, - `stat 'bad_file_name'`, - ); -}); - -Deno.test({ permissions: { read: true } }, async function lstatSuccess() { - const readmeInfo = await Deno.lstat("README.md"); - assert(readmeInfo.isFile); - assert(!readmeInfo.isSymlink); - - const readmeInfoByUrl = await Deno.lstat(pathToAbsoluteFileUrl("README.md")); - assert(readmeInfoByUrl.isFile); - assert(!readmeInfoByUrl.isSymlink); - - const modulesInfo = await Deno.lstat("cli/tests/testdata/symlink_to_subdir"); - assert(!modulesInfo.isDirectory); - assert(modulesInfo.isSymlink); - - const modulesInfoByUrl = await Deno.lstat( - pathToAbsoluteFileUrl("cli/tests/testdata/symlink_to_subdir"), - ); - assert(!modulesInfoByUrl.isDirectory); - assert(modulesInfoByUrl.isSymlink); - - const coreInfo = await Deno.lstat("cli"); - assert(coreInfo.isDirectory); - assert(!coreInfo.isSymlink); - - const coreInfoByUrl = await Deno.lstat(pathToAbsoluteFileUrl("cli")); - assert(coreInfoByUrl.isDirectory); - assert(!coreInfoByUrl.isSymlink); -}); - -Deno.test({ permissions: { read: false } }, async function lstatPerm() { - await assertRejects(async () => { - await Deno.lstat("README.md"); - }, Deno.errors.PermissionDenied); -}); - -Deno.test({ permissions: { read: true } }, async function lstatNotFound() { - await assertRejects( - async () => { - await Deno.lstat("bad_file_name"); - }, - Deno.errors.NotFound, - `stat 'bad_file_name'`, - ); -}); - -Deno.test( - { - ignore: Deno.build.os !== "windows", - permissions: { read: true, write: true }, - }, - function statNoUnixFields() { - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - const tempDir = Deno.makeTempDirSync(); - const filename = tempDir + "/test.txt"; - Deno.writeFileSync(filename, data, { mode: 0o666 }); - const s = Deno.statSync(filename); - assert(s.dev !== 0); - assert(s.ino === null); - assert(s.mode === null); - assert(s.nlink === null); - assert(s.uid === null); - assert(s.gid === null); - assert(s.rdev === null); - assert(s.blksize === null); - assert(s.blocks === null); - assert(s.isBlockDevice === null); - assert(s.isCharDevice === null); - assert(s.isFifo === null); - assert(s.isSocket === null); - }, -); - -Deno.test( - { - ignore: Deno.build.os === "windows", - permissions: { read: true, write: true }, - }, - function statUnixFields() { - const enc = new TextEncoder(); - const data = enc.encode("Hello"); - const tempDir = Deno.makeTempDirSync(); - const filename = tempDir + "/test.txt"; - const filename2 = tempDir + "/test2.txt"; - Deno.writeFileSync(filename, data, { mode: 0o666 }); - // Create a link - Deno.linkSync(filename, filename2); - const s = Deno.statSync(filename); - assert(s.dev !== null); - assert(s.ino !== null); - assertEquals(s.mode! & 0o666, 0o666); - assertEquals(s.nlink, 2); - assert(s.uid !== null); - assert(s.gid !== null); - assert(s.rdev !== null); - assert(s.blksize !== null); - assert(s.blocks !== null); - assert(!s.isBlockDevice); - assert(!s.isCharDevice); - assert(!s.isFifo); - assert(!s.isSocket); - }, -); diff --git a/cli/tests/unit/tls_test.ts b/cli/tests/unit/tls_test.ts deleted file mode 100644 index bbf48cf8f..000000000 --- a/cli/tests/unit/tls_test.ts +++ /dev/null @@ -1,1546 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { - assert, - assertEquals, - assertNotEquals, - assertRejects, - assertStrictEquals, - assertThrows, -} from "./test_util.ts"; -import { BufReader, BufWriter } from "@test_util/std/io/mod.ts"; -import { readAll } from "@test_util/std/streams/read_all.ts"; -import { writeAll } from "@test_util/std/streams/write_all.ts"; -import { TextProtoReader } from "../testdata/run/textproto.ts"; - -const encoder = new TextEncoder(); -const decoder = new TextDecoder(); -const cert = await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"); -const key = await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"); -const caCerts = [await Deno.readTextFile("cli/tests/testdata/tls/RootCA.pem")]; - -async function sleep(msec: number) { - await new Promise((res, _rej) => setTimeout(res, msec)); -} - -function unreachable(): never { - throw new Error("Unreachable code reached"); -} - -Deno.test({ permissions: { net: false } }, async function connectTLSNoPerm() { - await assertRejects(async () => { - await Deno.connectTls({ hostname: "deno.land", port: 443 }); - }, Deno.errors.PermissionDenied); -}); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectTLSInvalidHost() { - await assertRejects(async () => { - await Deno.connectTls({ hostname: "256.0.0.0", port: 3567 }); - }, TypeError); - }, -); - -Deno.test( - { permissions: { net: true, read: false } }, - async function connectTLSCertFileNoReadPerm() { - await assertRejects(async () => { - await Deno.connectTls({ - hostname: "deno.land", - port: 443, - certFile: "cli/tests/testdata/tls/RootCA.crt", - }); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - function listenTLSNonExistentCertKeyFiles() { - const options = { - hostname: "localhost", - port: 3500, - certFile: "cli/tests/testdata/tls/localhost.crt", - keyFile: "cli/tests/testdata/tls/localhost.key", - }; - - assertThrows(() => { - Deno.listenTls({ - ...options, - certFile: "./non/existent/file", - }); - }, Deno.errors.NotFound); - - assertThrows(() => { - Deno.listenTls({ - ...options, - keyFile: "./non/existent/file", - }); - }, Deno.errors.NotFound); - }, -); - -Deno.test( - { permissions: { net: true, read: false } }, - function listenTLSNoReadPerm() { - assertThrows(() => { - Deno.listenTls({ - hostname: "localhost", - port: 3500, - certFile: "cli/tests/testdata/tls/localhost.crt", - keyFile: "cli/tests/testdata/tls/localhost.key", - }); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - { - permissions: { read: true, write: true, net: true }, - }, - function listenTLSEmptyKeyFile() { - const options = { - hostname: "localhost", - port: 3500, - certFile: "cli/tests/testdata/tls/localhost.crt", - keyFile: "cli/tests/testdata/tls/localhost.key", - }; - - const testDir = Deno.makeTempDirSync(); - const keyFilename = testDir + "/key.pem"; - Deno.writeFileSync(keyFilename, new Uint8Array([]), { - mode: 0o666, - }); - - assertThrows(() => { - Deno.listenTls({ - ...options, - keyFile: keyFilename, - }); - }, Error); - }, -); - -Deno.test( - { permissions: { read: true, write: true, net: true } }, - function listenTLSEmptyCertFile() { - const options = { - hostname: "localhost", - port: 3500, - certFile: "cli/tests/testdata/tls/localhost.crt", - keyFile: "cli/tests/testdata/tls/localhost.key", - }; - - const testDir = Deno.makeTempDirSync(); - const certFilename = testDir + "/cert.crt"; - Deno.writeFileSync(certFilename, new Uint8Array([]), { - mode: 0o666, - }); - - assertThrows(() => { - Deno.listenTls({ - ...options, - certFile: certFilename, - }); - }, Error); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function startTlsWithoutExclusiveAccessToTcpConn() { - const hostname = "localhost"; - const port = getPort(); - - const tcpListener = Deno.listen({ hostname, port }); - const [serverConn, clientConn] = await Promise.all([ - tcpListener.accept(), - Deno.connect({ hostname, port }), - ]); - - const buf = new Uint8Array(128); - const readPromise = clientConn.read(buf); - // `clientConn` is being used by a pending promise (`readPromise`) so - // `Deno.startTls` cannot consume the connection. - await assertRejects( - () => Deno.startTls(clientConn, { hostname }), - Deno.errors.BadResource, - ); - - serverConn.close(); - tcpListener.close(); - await readPromise; - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function dialAndListenTLS() { - const { promise, resolve } = Promise.withResolvers<void>(); - const hostname = "localhost"; - const port = 3500; - - const listener = Deno.listenTls({ - hostname, - port, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/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, caCerts }); - assert(conn.rid > 0); - 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; - }, -); -Deno.test( - { permissions: { read: false, net: true } }, - async function listenTlsWithCertAndKey() { - const { promise, resolve } = Promise.withResolvers<void>(); - const hostname = "localhost"; - const port = 3500; - - const listener = Deno.listenTls({ hostname, port, cert, 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); - setTimeout(() => { - conn.close(); - resolve(); - }, 0); - }, - ); - - const conn = await Deno.connectTls({ hostname, port, caCerts }); - assert(conn.rid > 0); - 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; - }, -); - -let nextPort = 3501; -function getPort() { - return nextPort++; -} - -async function tlsPair(): Promise<[Deno.Conn, Deno.Conn]> { - const port = getPort(); - const listener = Deno.listenTls({ - hostname: "localhost", - port, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"), - }); - - const acceptPromise = listener.accept(); - const connectPromise = Deno.connectTls({ - hostname: "localhost", - port, - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }); - const endpoints = await Promise.all([acceptPromise, connectPromise]); - - listener.close(); - - return endpoints; -} - -async function tlsAlpn( - useStartTls: boolean, -): Promise<[Deno.TlsConn, Deno.TlsConn]> { - const port = getPort(); - const listener = Deno.listenTls({ - hostname: "localhost", - port, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"), - alpnProtocols: ["deno", "rocks"], - }); - - const acceptPromise = listener.accept(); - - const caCerts = [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")]; - const clientAlpnProtocols = ["rocks", "rises"]; - let endpoints: [Deno.TlsConn, Deno.TlsConn]; - - if (!useStartTls) { - const connectPromise = Deno.connectTls({ - hostname: "localhost", - port, - caCerts, - alpnProtocols: clientAlpnProtocols, - }); - endpoints = await Promise.all([acceptPromise, connectPromise]); - } else { - const client = await Deno.connect({ - hostname: "localhost", - port, - }); - const connectPromise = Deno.startTls(client, { - hostname: "localhost", - caCerts, - alpnProtocols: clientAlpnProtocols, - }); - endpoints = await Promise.all([acceptPromise, connectPromise]); - } - - listener.close(); - return endpoints; -} - -async function sendThenCloseWriteThenReceive( - conn: Deno.Conn, - chunkCount: number, - chunkSize: number, -) { - const byteCount = chunkCount * chunkSize; - const buf = new Uint8Array(chunkSize); // Note: buf is size of _chunk_. - let n: number; - - // Slowly send 42s. - buf.fill(42); - for (let remaining = byteCount; remaining > 0; remaining -= n) { - n = await conn.write(buf.subarray(0, remaining)); - assert(n >= 1); - await sleep(10); - } - - // Send EOF. - await conn.closeWrite(); - - // Receive 69s. - for (let remaining = byteCount; remaining > 0; remaining -= n) { - buf.fill(0); - n = await conn.read(buf) as number; - assert(n >= 1); - assertStrictEquals(buf[0], 69); - assertStrictEquals(buf[n - 1], 69); - } - - conn.close(); -} - -async function receiveThenSend( - conn: Deno.Conn, - chunkCount: number, - chunkSize: number, -) { - const byteCount = chunkCount * chunkSize; - const buf = new Uint8Array(byteCount); // Note: buf size equals `byteCount`. - let n: number; - - // Receive 42s. - for (let remaining = byteCount; remaining > 0; remaining -= n) { - buf.fill(0); - n = await conn.read(buf) as number; - assert(n >= 1); - assertStrictEquals(buf[0], 42); - assertStrictEquals(buf[n - 1], 42); - } - - // Slowly send 69s. - buf.fill(69); - for (let remaining = byteCount; remaining > 0; remaining -= n) { - n = await conn.write(buf.subarray(0, remaining)); - assert(n >= 1); - await sleep(10); - } - - conn.close(); -} - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerAlpnListenConnect() { - const [serverConn, clientConn] = await tlsAlpn(false); - const [serverHS, clientHS] = await Promise.all([ - serverConn.handshake(), - clientConn.handshake(), - ]); - assertStrictEquals(serverHS.alpnProtocol, "rocks"); - assertStrictEquals(clientHS.alpnProtocol, "rocks"); - - serverConn.close(); - clientConn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerAlpnListenStartTls() { - const [serverConn, clientConn] = await tlsAlpn(true); - const [serverHS, clientHS] = await Promise.all([ - serverConn.handshake(), - clientConn.handshake(), - ]); - assertStrictEquals(serverHS.alpnProtocol, "rocks"); - assertStrictEquals(clientHS.alpnProtocol, "rocks"); - - serverConn.close(); - clientConn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerStreamHalfCloseSendOneByte() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(serverConn, 1, 1), - receiveThenSend(clientConn, 1, 1), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientStreamHalfCloseSendOneByte() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(clientConn, 1, 1), - receiveThenSend(serverConn, 1, 1), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerStreamHalfCloseSendOneChunk() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(serverConn, 1, 1 << 20 /* 1 MB */), - receiveThenSend(clientConn, 1, 1 << 20 /* 1 MB */), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientStreamHalfCloseSendOneChunk() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(clientConn, 1, 1 << 20 /* 1 MB */), - receiveThenSend(serverConn, 1, 1 << 20 /* 1 MB */), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerStreamHalfCloseSendManyBytes() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(serverConn, 100, 1), - receiveThenSend(clientConn, 100, 1), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientStreamHalfCloseSendManyBytes() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(clientConn, 100, 1), - receiveThenSend(serverConn, 100, 1), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerStreamHalfCloseSendManyChunks() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(serverConn, 100, 1 << 16 /* 64 kB */), - receiveThenSend(clientConn, 100, 1 << 16 /* 64 kB */), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientStreamHalfCloseSendManyChunks() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendThenCloseWriteThenReceive(clientConn, 100, 1 << 16 /* 64 kB */), - receiveThenSend(serverConn, 100, 1 << 16 /* 64 kB */), - ]); - }, -); - -const largeAmount = 1 << 20 /* 1 MB */; - -async function sendAlotReceiveNothing(conn: Deno.Conn) { - // Start receive op. - const readBuf = new Uint8Array(1024); - const readPromise = conn.read(readBuf); - - const timeout = setTimeout(() => { - throw new Error("Failed to send buffer in a reasonable amount of time"); - }, 10_000); - - // Send 1 MB of data. - const writeBuf = new Uint8Array(largeAmount); - writeBuf.fill(42); - await writeAll(conn, writeBuf); - - clearTimeout(timeout); - - // Send EOF. - await conn.closeWrite(); - - // Close the connection. - conn.close(); - - // Read op should be canceled. - await assertRejects( - async () => await readPromise, - Deno.errors.Interrupted, - ); -} - -async function receiveAlotSendNothing(conn: Deno.Conn) { - const readBuf = new Uint8Array(1024); - let n: number | null; - let nread = 0; - - const timeout = setTimeout(() => { - throw new Error( - `Failed to read buffer in a reasonable amount of time (got ${nread}/${largeAmount})`, - ); - }, 10_000); - - // Receive 1 MB of data. - try { - for (; nread < largeAmount; nread += n!) { - n = await conn.read(readBuf); - assertStrictEquals(typeof n, "number"); - assert(n! > 0); - assertStrictEquals(readBuf[0], 42); - } - } catch (e) { - throw new Error( - `Got an error (${e.message}) after reading ${nread}/${largeAmount} bytes`, - { cause: e }, - ); - } - clearTimeout(timeout); - - // Close the connection, without sending anything at all. - conn.close(); -} - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerStreamCancelRead() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendAlotReceiveNothing(serverConn), - receiveAlotSendNothing(clientConn), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientStreamCancelRead() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendAlotReceiveNothing(clientConn), - receiveAlotSendNothing(serverConn), - ]); - }, -); - -async function sendReceiveEmptyBuf(conn: Deno.Conn) { - const byteBuf = new Uint8Array([1]); - const emptyBuf = new Uint8Array(0); - let n: number | null; - - n = await conn.write(emptyBuf); - assertStrictEquals(n, 0); - - n = await conn.read(emptyBuf); - assertStrictEquals(n, 0); - - n = await conn.write(byteBuf); - assertStrictEquals(n, 1); - - n = await conn.read(byteBuf); - assertStrictEquals(n, 1); - - await conn.closeWrite(); - - n = await conn.write(emptyBuf); - assertStrictEquals(n, 0); - - await assertRejects(async () => { - await conn.write(byteBuf); - }, Deno.errors.NotConnected); - - n = await conn.write(emptyBuf); - assertStrictEquals(n, 0); - - n = await conn.read(byteBuf); - assertStrictEquals(n, null); - - conn.close(); -} - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsStreamSendReceiveEmptyBuf() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - sendReceiveEmptyBuf(serverConn), - sendReceiveEmptyBuf(clientConn), - ]); - }, -); - -function immediateClose(conn: Deno.Conn) { - conn.close(); - return Promise.resolve(); -} - -async function closeWriteAndClose(conn: Deno.Conn) { - await conn.closeWrite(); - - if (await conn.read(new Uint8Array(1)) !== null) { - throw new Error("did not expect to receive data on TLS stream"); - } - - conn.close(); -} - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsServerStreamImmediateClose() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - immediateClose(serverConn), - closeWriteAndClose(clientConn), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientStreamImmediateClose() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - closeWriteAndClose(serverConn), - immediateClose(clientConn), - ]); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsClientAndServerStreamImmediateClose() { - const [serverConn, clientConn] = await tlsPair(); - await Promise.all([ - immediateClose(serverConn), - immediateClose(clientConn), - ]); - }, -); - -async function tlsWithTcpFailureTestImpl( - phase: "handshake" | "traffic", - cipherByteCount: number, - failureMode: "corruption" | "shutdown", - reverse: boolean, -) { - const tlsPort = getPort(); - const tlsListener = Deno.listenTls({ - hostname: "localhost", - port: tlsPort, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"), - }); - - const tcpPort = getPort(); - const tcpListener = Deno.listen({ hostname: "localhost", port: tcpPort }); - - const [tlsServerConn, tcpServerConn] = await Promise.all([ - tlsListener.accept(), - Deno.connect({ hostname: "localhost", port: tlsPort }), - ]); - - const [tcpClientConn, tlsClientConn] = await Promise.all([ - tcpListener.accept(), - Deno.connectTls({ - hostname: "localhost", - port: tcpPort, - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }), - ]); - - tlsListener.close(); - tcpListener.close(); - - const { - tlsConn1, - tlsConn2, - tcpConn1, - tcpConn2, - } = reverse - ? { - tlsConn1: tlsClientConn, - tlsConn2: tlsServerConn, - tcpConn1: tcpClientConn, - tcpConn2: tcpServerConn, - } - : { - tlsConn1: tlsServerConn, - tlsConn2: tlsClientConn, - tcpConn1: tcpServerConn, - tcpConn2: tcpClientConn, - }; - - const tcpForwardingInterruptDeferred1 = Promise.withResolvers<void>(); - const tcpForwardingPromise1 = forwardBytes( - tcpConn2, - tcpConn1, - cipherByteCount, - tcpForwardingInterruptDeferred1, - ); - - const tcpForwardingInterruptDeferred2 = Promise.withResolvers<void>(); - const tcpForwardingPromise2 = forwardBytes( - tcpConn1, - tcpConn2, - Infinity, - tcpForwardingInterruptDeferred2, - ); - - switch (phase) { - case "handshake": { - let expectedError; - switch (failureMode) { - case "corruption": - expectedError = Deno.errors.InvalidData; - break; - case "shutdown": - expectedError = Deno.errors.UnexpectedEof; - break; - default: - unreachable(); - } - - const tlsTrafficPromise1 = Promise.all([ - assertRejects( - () => sendBytes(tlsConn1, 0x01, 1), - expectedError, - ), - assertRejects( - () => receiveBytes(tlsConn1, 0x02, 1), - expectedError, - ), - ]); - - const tlsTrafficPromise2 = Promise.all([ - assertRejects( - () => sendBytes(tlsConn2, 0x02, 1), - Deno.errors.UnexpectedEof, - ), - assertRejects( - () => receiveBytes(tlsConn2, 0x01, 1), - Deno.errors.UnexpectedEof, - ), - ]); - - await tcpForwardingPromise1; - - switch (failureMode) { - case "corruption": - await sendBytes(tcpConn1, 0xff, 1 << 14 /* 16 kB */); - break; - case "shutdown": - await tcpConn1.closeWrite(); - break; - default: - unreachable(); - } - await tlsTrafficPromise1; - - tcpForwardingInterruptDeferred2.resolve(); - await tcpForwardingPromise2; - await tcpConn2.closeWrite(); - await tlsTrafficPromise2; - - break; - } - - case "traffic": { - await Promise.all([ - sendBytes(tlsConn2, 0x88, 8888), - receiveBytes(tlsConn1, 0x88, 8888), - sendBytes(tlsConn1, 0x99, 99999), - receiveBytes(tlsConn2, 0x99, 99999), - ]); - - tcpForwardingInterruptDeferred1.resolve(); - await tcpForwardingInterruptDeferred1.promise; - - switch (failureMode) { - case "corruption": - await sendBytes(tcpConn1, 0xff, 1 << 14 /* 16 kB */); - await assertRejects( - () => receiveEof(tlsConn1), - Deno.errors.InvalidData, - ); - tcpForwardingInterruptDeferred2.resolve(); - break; - case "shutdown": - await Promise.all([ - tcpConn1.closeWrite(), - await assertRejects( - () => receiveEof(tlsConn1), - Deno.errors.UnexpectedEof, - ), - await tlsConn1.closeWrite(), - await receiveEof(tlsConn2), - ]); - break; - default: - unreachable(); - } - - await tcpForwardingPromise2; - - break; - } - - default: - unreachable(); - } - - tlsServerConn.close(); - tlsClientConn.close(); - tcpServerConn.close(); - tcpClientConn.close(); - - async function sendBytes( - conn: Deno.Conn, - byte: number, - count: number, - ) { - let buf = new Uint8Array(1 << 12 /* 4 kB */); - buf.fill(byte); - - while (count > 0) { - buf = buf.subarray(0, Math.min(buf.length, count)); - const nwritten = await conn.write(buf); - assertStrictEquals(nwritten, buf.length); - count -= nwritten; - } - } - - async function receiveBytes( - conn: Deno.Conn, - byte: number, - count: number, - ) { - let buf = new Uint8Array(1 << 12 /* 4 kB */); - while (count > 0) { - buf = buf.subarray(0, Math.min(buf.length, count)); - const r = await conn.read(buf); - assertNotEquals(r, null); - assert(buf.subarray(0, r!).every((b) => b === byte)); - count -= r!; - } - } - - async function receiveEof(conn: Deno.Conn) { - const buf = new Uint8Array(1); - const r = await conn.read(buf); - assertStrictEquals(r, null); - } - - async function forwardBytes( - source: Deno.Conn, - sink: Deno.Conn, - count: number, - interruptPromise: ReturnType<typeof Promise.withResolvers<void>>, - ) { - let buf = new Uint8Array(1 << 12 /* 4 kB */); - while (count > 0) { - buf = buf.subarray(0, Math.min(buf.length, count)); - const nread = await Promise.race([ - source.read(buf), - interruptPromise.promise, - ]); - if (nread == null) break; // Either EOF or interrupted. - const nwritten = await sink.write(buf.subarray(0, nread)); - assertStrictEquals(nread, nwritten); - count -= nwritten; - } - } -} - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeWithTcpCorruptionImmediately() { - await tlsWithTcpFailureTestImpl("handshake", 0, "corruption", false); - await tlsWithTcpFailureTestImpl("handshake", 0, "corruption", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeWithTcpShutdownImmediately() { - await tlsWithTcpFailureTestImpl("handshake", 0, "shutdown", false); - await tlsWithTcpFailureTestImpl("handshake", 0, "shutdown", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeWithTcpCorruptionAfter70Bytes() { - await tlsWithTcpFailureTestImpl("handshake", 76, "corruption", false); - await tlsWithTcpFailureTestImpl("handshake", 78, "corruption", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeWithTcpShutdownAfter70bytes() { - await tlsWithTcpFailureTestImpl("handshake", 77, "shutdown", false); - await tlsWithTcpFailureTestImpl("handshake", 79, "shutdown", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeWithTcpCorruptionAfter200Bytes() { - await tlsWithTcpFailureTestImpl("handshake", 200, "corruption", false); - await tlsWithTcpFailureTestImpl("handshake", 202, "corruption", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeWithTcpShutdownAfter200bytes() { - await tlsWithTcpFailureTestImpl("handshake", 201, "shutdown", false); - await tlsWithTcpFailureTestImpl("handshake", 203, "shutdown", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsTrafficWithTcpCorruption() { - await tlsWithTcpFailureTestImpl("traffic", Infinity, "corruption", false); - await tlsWithTcpFailureTestImpl("traffic", Infinity, "corruption", true); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsTrafficWithTcpShutdown() { - await tlsWithTcpFailureTestImpl("traffic", Infinity, "shutdown", false); - await tlsWithTcpFailureTestImpl("traffic", Infinity, "shutdown", true); - }, -); - -function createHttpsListener(port: number): Deno.Listener { - // Query format: `curl --insecure https://localhost:8443/z/12345` - // The server returns a response consisting of 12345 times the letter 'z'. - const listener = Deno.listenTls({ - hostname: "localhost", - port, - cert: Deno.readTextFileSync("./cli/tests/testdata/tls/localhost.crt"), - key: Deno.readTextFileSync("./cli/tests/testdata/tls/localhost.key"), - }); - - serve(listener); - return listener; - - async function serve(listener: Deno.Listener) { - for await (const conn of listener) { - const EOL = "\r\n"; - - // Read GET request plus headers. - const buf = new Uint8Array(1 << 12 /* 4 kB */); - const decoder = new TextDecoder(); - let req = ""; - while (!req.endsWith(EOL + EOL)) { - const n = await conn.read(buf); - if (n === null) throw new Error("Unexpected EOF"); - req += decoder.decode(buf.subarray(0, n)); - } - - // Parse GET request. - const { filler, count, version } = - /^GET \/(?<filler>[^\/]+)\/(?<count>\d+) HTTP\/(?<version>1\.\d)\r\n/ - .exec(req)!.groups as { - filler: string; - count: string; - version: string; - }; - - // Generate response. - const resBody = new TextEncoder().encode(filler.repeat(+count)); - const resHead = new TextEncoder().encode( - [ - `HTTP/${version} 200 OK`, - `Content-Length: ${resBody.length}`, - "Content-Type: text/plain", - ].join(EOL) + EOL + EOL, - ); - - // Send response. - await writeAll(conn, resHead); - await writeAll(conn, resBody); - - // Close TCP connection. - conn.close(); - } - } -} - -async function curl(url: string): Promise<string> { - const { success, code, stdout, stderr } = await new Deno.Command("curl", { - args: ["--insecure", url], - }).output(); - - if (!success) { - throw new Error( - `curl ${url} failed: ${code}:\n${new TextDecoder().decode(stderr)}`, - ); - } - return new TextDecoder().decode(stdout); -} - -Deno.test( - { permissions: { read: true, net: true, run: true } }, - async function curlFakeHttpsServer() { - const port = getPort(); - const listener = createHttpsListener(port); - - const res1 = await curl(`https://localhost:${port}/d/1`); - assertStrictEquals(res1, "d"); - - const res2 = await curl(`https://localhost:${port}/e/12345`); - assertStrictEquals(res2, "e".repeat(12345)); - - const count3 = 1 << 17; // 128 kB. - const res3 = await curl(`https://localhost:${port}/n/${count3}`); - assertStrictEquals(res3, "n".repeat(count3)); - - const count4 = 12345678; - const res4 = await curl(`https://localhost:${port}/o/${count4}`); - assertStrictEquals(res4, "o".repeat(count4)); - - listener.close(); - }, -); - -Deno.test( - // Ignored because gmail appears to reject us on CI sometimes - { ignore: true, permissions: { read: true, net: true } }, - async function startTls() { - const hostname = "smtp.gmail.com"; - const port = 587; - const encoder = new TextEncoder(); - - const conn = await Deno.connect({ - hostname, - port, - }); - - let writer = new BufWriter(conn); - let reader = new TextProtoReader(new BufReader(conn)); - - let line: string | null = (await reader.readLine()) as string; - assert(line.startsWith("220")); - - await writer.write(encoder.encode(`EHLO ${hostname}\r\n`)); - await writer.flush(); - - while ((line = (await reader.readLine()) as string)) { - assert(line.startsWith("250")); - if (line.startsWith("250 ")) break; - } - - await writer.write(encoder.encode("STARTTLS\r\n")); - await writer.flush(); - - line = await reader.readLine(); - - // Received the message that the server is ready to establish TLS - assertEquals(line, "220 2.0.0 Ready to start TLS"); - - const tlsConn = await Deno.startTls(conn, { hostname }); - writer = new BufWriter(tlsConn); - reader = new TextProtoReader(new BufReader(tlsConn)); - - // After that use TLS communication again - await writer.write(encoder.encode(`EHLO ${hostname}\r\n`)); - await writer.flush(); - - while ((line = (await reader.readLine()) as string)) { - assert(line.startsWith("250")); - if (line.startsWith("250 ")) break; - } - - tlsConn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectTLSBadClientCertPrivateKey(): Promise<void> { - await assertRejects(async () => { - await Deno.connectTls({ - hostname: "deno.land", - port: 443, - certChain: "bad data", - privateKey: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.key", - ), - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectTLSBadPrivateKey(): Promise<void> { - await assertRejects(async () => { - await Deno.connectTls({ - hostname: "deno.land", - port: 443, - certChain: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.crt", - ), - privateKey: "bad data", - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectTLSNotPrivateKey(): Promise<void> { - await assertRejects(async () => { - await Deno.connectTls({ - hostname: "deno.land", - port: 443, - certChain: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.crt", - ), - privateKey: "", - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectWithClientCert() { - // The test_server running on port 4552 responds with 'PASS' if client - // authentication was successful. Try it by running test_server and - // curl --key cli/tests/testdata/tls/localhost.key \ - // --cert cli/tests/testdata/tls/localhost.crt \ - // --cacert cli/tests/testdata/tls/RootCA.crt https://localhost:4552/ - const conn = await Deno.connectTls({ - hostname: "localhost", - port: 4552, - certChain: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.crt", - ), - privateKey: await Deno.readTextFile( - "cli/tests/testdata/tls/localhost.key", - ), - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }); - const result = decoder.decode(await readAll(conn)); - assertEquals(result, "PASS"); - conn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectTLSCaCerts() { - const conn = await Deno.connectTls({ - hostname: "localhost", - port: 4557, - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }); - const result = decoder.decode(await readAll(conn)); - assertEquals(result, "PASS"); - conn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function connectTLSCertFile() { - const conn = await Deno.connectTls({ - hostname: "localhost", - port: 4557, - certFile: "cli/tests/testdata/tls/RootCA.pem", - }); - const result = decoder.decode(await readAll(conn)); - assertEquals(result, "PASS"); - conn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function startTLSCaCerts() { - const plainConn = await Deno.connect({ - hostname: "localhost", - port: 4557, - }); - const conn = await Deno.startTls(plainConn, { - hostname: "localhost", - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }); - const result = decoder.decode(await readAll(conn)); - assertEquals(result, "PASS"); - conn.close(); - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeSuccess() { - const hostname = "localhost"; - const port = getPort(); - - const listener = Deno.listenTls({ - hostname, - port, - cert: await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"), - key: await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"), - }); - const acceptPromise = listener.accept(); - const connectPromise = Deno.connectTls({ - hostname, - port, - certFile: "cli/tests/testdata/tls/RootCA.crt", - }); - const [conn1, conn2] = await Promise.all([acceptPromise, connectPromise]); - listener.close(); - - await Promise.all([conn1.handshake(), conn2.handshake()]); - - // Begin sending a 10mb blob over the TLS connection. - const whole = new Uint8Array(10 << 20); // 10mb. - whole.fill(42); - const sendPromise = writeAll(conn1, whole); - // Set up the other end to receive half of the large blob. - const half = new Uint8Array(whole.byteLength / 2); - const receivePromise = readFull(conn2, half); - - await conn1.handshake(); - await conn2.handshake(); - - // Finish receiving the first 5mb. - assertEquals(await receivePromise, half.length); - - // See that we can call `handshake()` in the middle of large reads and writes. - await conn1.handshake(); - await conn2.handshake(); - - // Receive second half of large blob. Wait for the send promise and check it. - assertEquals(await readFull(conn2, half), half.length); - await sendPromise; - - await conn1.handshake(); - await conn2.handshake(); - - await conn1.closeWrite(); - await conn2.closeWrite(); - - await conn1.handshake(); - await conn2.handshake(); - - conn1.close(); - conn2.close(); - - async function readFull(conn: Deno.Conn, buf: Uint8Array) { - let offset, n; - for (offset = 0; offset < buf.length; offset += n) { - n = await conn.read(buf.subarray(offset, buf.length)); - assert(n != null && n > 0); - } - return offset; - } - }, -); - -Deno.test( - { permissions: { read: true, net: true } }, - async function tlsHandshakeFailure() { - const hostname = "localhost"; - const port = getPort(); - - async function server() { - const listener = Deno.listenTls({ - hostname, - port, - cert: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.crt"), - key: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.key"), - }); - for await (const conn of listener) { - for (let i = 0; i < 10; i++) { - // Handshake fails because the client rejects the server certificate. - await assertRejects( - () => conn.handshake(), - Deno.errors.InvalidData, - "received fatal alert", - ); - } - conn.close(); - break; - } - } - - async function connectTlsClient() { - const conn = await Deno.connectTls({ hostname, port }); - // Handshake fails because the server presents a self-signed certificate. - await assertRejects( - () => conn.handshake(), - Deno.errors.InvalidData, - "invalid peer certificate: UnknownIssuer", - ); - conn.close(); - } - - await Promise.all([server(), connectTlsClient()]); - - async function startTlsClient() { - const tcpConn = await Deno.connect({ hostname, port }); - const tlsConn = await Deno.startTls(tcpConn, { - hostname: "foo.land", - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }); - // Handshake fails because hostname doesn't match the certificate. - await assertRejects( - () => tlsConn.handshake(), - Deno.errors.InvalidData, - "NotValidForName", - ); - tlsConn.close(); - } - - await Promise.all([server(), startTlsClient()]); - }, -); - -Deno.test( - { permissions: { net: true } }, - async function listenTlsWithReuseAddr() { - const deferred1 = Promise.withResolvers<void>(); - const hostname = "localhost"; - const port = 3500; - - const listener1 = Deno.listenTls({ hostname, port, cert, key }); - - listener1.accept().then((conn) => { - conn.close(); - deferred1.resolve(); - }); - - const conn1 = await Deno.connectTls({ hostname, port, caCerts }); - conn1.close(); - await deferred1.promise; - listener1.close(); - - const deferred2 = Promise.withResolvers<void>(); - const listener2 = Deno.listenTls({ hostname, port, cert, key }); - - listener2.accept().then((conn) => { - conn.close(); - deferred2.resolve(); - }); - - const conn2 = await Deno.connectTls({ hostname, port, caCerts }); - conn2.close(); - await deferred2.promise; - listener2.close(); - }, -); - -Deno.test({ - ignore: Deno.build.os !== "linux", - permissions: { net: true }, -}, async function listenTlsReusePort() { - const hostname = "localhost"; - const port = 4003; - const listener1 = Deno.listenTls({ - hostname, - port, - cert, - key, - reusePort: true, - }); - const listener2 = Deno.listenTls({ - hostname, - port, - cert, - key, - reusePort: true, - }); - let p1; - let p2; - let listener1Recv = false; - let listener2Recv = false; - while (!listener1Recv || !listener2Recv) { - if (!p1) { - p1 = listener1.accept().then((conn) => { - conn.close(); - listener1Recv = true; - p1 = undefined; - }).catch(() => {}); - } - if (!p2) { - p2 = listener2.accept().then((conn) => { - conn.close(); - listener2Recv = true; - p2 = undefined; - }).catch(() => {}); - } - const conn = await Deno.connectTls({ hostname, port, caCerts }); - conn.close(); - await Promise.race([p1, p2]); - } - listener1.close(); - listener2.close(); -}); - -Deno.test({ - ignore: Deno.build.os === "linux", - permissions: { net: true }, -}, function listenTlsReusePortDoesNothing() { - const hostname = "localhost"; - const port = 4003; - const listener1 = Deno.listenTls({ - hostname, - port, - cert, - key, - reusePort: true, - }); - assertThrows(() => { - Deno.listenTls({ hostname, port, cert, key, reusePort: true }); - }, Deno.errors.AddrInUse); - listener1.close(); -}); - -Deno.test({ - permissions: { net: true }, -}, function listenTlsDoesNotThrowOnStringPort() { - const listener = Deno.listenTls({ - hostname: "localhost", - // @ts-ignore String port is not allowed by typing, but it shouldn't throw - // for backwards compatibility. - port: "0", - cert, - key, - }); - listener.close(); -}); - -Deno.test( - { permissions: { net: true, read: true } }, - function listenTLSInvalidCert() { - assertThrows(() => { - Deno.listenTls({ - hostname: "localhost", - port: 3500, - certFile: "cli/tests/testdata/tls/invalid.crt", - keyFile: "cli/tests/testdata/tls/localhost.key", - }); - }, Deno.errors.InvalidData); - }, -); - -Deno.test( - { permissions: { net: true, read: true } }, - function listenTLSInvalidKey() { - assertThrows(() => { - Deno.listenTls({ - hostname: "localhost", - port: 3500, - certFile: "cli/tests/testdata/tls/localhost.crt", - keyFile: "cli/tests/testdata/tls/invalid.key", - }); - }, Deno.errors.InvalidData); - }, -); diff --git a/cli/tests/unit/tty_test.ts b/cli/tests/unit/tty_test.ts deleted file mode 100644 index 8ca9a5d5b..000000000 --- a/cli/tests/unit/tty_test.ts +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { assert } from "./test_util.ts"; - -// Note tests for Deno.stdin.setRaw is in integration tests. - -Deno.test(function consoleSize() { - if (!Deno.stdout.isTerminal()) { - return; - } - const result = Deno.consoleSize(); - assert(typeof result.columns !== "undefined"); - assert(typeof result.rows !== "undefined"); -}); - -Deno.test({ permissions: { read: true } }, function isatty() { - // CI not under TTY, so cannot test stdin/stdout/stderr. - const f = Deno.openSync("cli/tests/testdata/assets/hello.txt"); - assert(!Deno.isatty(f.rid)); - f.close(); -}); - -Deno.test(function isattyError() { - let caught = false; - try { - // Absurdly large rid. - Deno.isatty(0x7fffffff); - } catch (e) { - caught = true; - assert(e instanceof Deno.errors.BadResource); - } - assert(caught); -}); diff --git a/cli/tests/unit/webcrypto_test.ts b/cli/tests/unit/webcrypto_test.ts deleted file mode 100644 index 829330eba..000000000 --- a/cli/tests/unit/webcrypto_test.ts +++ /dev/null @@ -1,2047 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import { - assert, - assertEquals, - assertNotEquals, - assertRejects, -} from "./test_util.ts"; - -// https://github.com/denoland/deno/issues/11664 -Deno.test(async function testImportArrayBufferKey() { - const subtle = window.crypto.subtle; - assert(subtle); - - // deno-fmt-ignore - const key = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]); - - const cryptoKey = await subtle.importKey( - "raw", - key.buffer, - { name: "HMAC", hash: "SHA-1" }, - true, - ["sign"], - ); - assert(cryptoKey); - - // Test key usage - await subtle.sign({ name: "HMAC" }, cryptoKey, new Uint8Array(8)); -}); - -Deno.test(async function testSignVerify() { - const subtle = window.crypto.subtle; - assert(subtle); - for (const algorithm of ["RSA-PSS", "RSASSA-PKCS1-v1_5"]) { - for ( - const hash of [ - "SHA-1", - "SHA-256", - "SHA-384", - "SHA-512", - ] - ) { - const keyPair = await subtle.generateKey( - { - name: algorithm, - modulusLength: 2048, - publicExponent: new Uint8Array([1, 0, 1]), - hash, - }, - true, - ["sign", "verify"], - ); - - const data = new Uint8Array([1, 2, 3]); - - const signAlgorithm = { name: algorithm, saltLength: 32 }; - - const signature = await subtle.sign( - signAlgorithm, - keyPair.privateKey, - data, - ); - - assert(signature); - assert(signature.byteLength > 0); - assert(signature.byteLength % 8 == 0); - assert(signature instanceof ArrayBuffer); - - const verified = await subtle.verify( - signAlgorithm, - keyPair.publicKey, - signature, - data, - ); - assert(verified); - } - } -}); - -// deno-fmt-ignore -const plainText = new Uint8Array([95, 77, 186, 79, 50, 12, 12, 232, 118, 114, 90, 252, 229, 251, 210, 91, 248, 62, 90, 113, 37, 160, 140, 175, 231, 60, 62, 186, 196, 33, 119, 157, 249, 213, 93, 24, 12, 58, 233, 148, 38, 69, 225, 216, 47, 238, 140, 157, 41, 75, 60, 177, 160, 138, 153, 49, 32, 27, 60, 14, 129, 252, 71, 202, 207, 131, 21, 162, 175, 102, 50, 65, 19, 195, 182, 98, 48, 195, 70, 8, 196, 244, 89, 54, 52, 206, 2, 178, 103, 54, 34, 119, 240, 168, 64, 202, 116, 188, 61, 26, 98, 54, 149, 44, 94, 215, 170, 248, 168, 254, 203, 221, 250, 117, 132, 230, 151, 140, 234, 93, 42, 91, 159, 183, 241, 180, 140, 139, 11, 229, 138, 48, 82, 2, 117, 77, 131, 118, 16, 115, 116, 121, 60, 240, 38, 170, 238, 83, 0, 114, 125, 131, 108, 215, 30, 113, 179, 69, 221, 178, 228, 68, 70, 255, 197, 185, 1, 99, 84, 19, 137, 13, 145, 14, 163, 128, 152, 74, 144, 25, 16, 49, 50, 63, 22, 219, 204, 157, 107, 225, 104, 184, 72, 133, 56, 76, 160, 62, 18, 96, 10, 193, 194, 72, 2, 138, 243, 114, 108, 201, 52, 99, 136, 46, 168, 192, 42, 171]); - -// Passing -const hashPlainTextVector = [ - { - hash: "SHA-1", - plainText: plainText.slice(0, 214), - }, - { - hash: "SHA-256", - plainText: plainText.slice(0, 190), - }, - { - hash: "SHA-384", - plainText: plainText.slice(0, 158), - }, - { - hash: "SHA-512", - plainText: plainText.slice(0, 126), - }, -]; - -Deno.test(async function testEncryptDecrypt() { - const subtle = window.crypto.subtle; - assert(subtle); - for ( - const { hash, plainText } of hashPlainTextVector - ) { - const keyPair = await subtle.generateKey( - { - name: "RSA-OAEP", - modulusLength: 2048, - publicExponent: new Uint8Array([1, 0, 1]), - hash, - }, - true, - ["encrypt", "decrypt"], - ); - - const encryptAlgorithm = { name: "RSA-OAEP" }; - const cipherText = await subtle.encrypt( - encryptAlgorithm, - keyPair.publicKey, - plainText, - ); - - assert(cipherText); - assert(cipherText.byteLength > 0); - assertEquals(cipherText.byteLength * 8, 2048); - assert(cipherText instanceof ArrayBuffer); - - const decrypted = await subtle.decrypt( - encryptAlgorithm, - keyPair.privateKey, - cipherText, - ); - assert(decrypted); - assert(decrypted instanceof ArrayBuffer); - assertEquals(new Uint8Array(decrypted), plainText); - - const badPlainText = new Uint8Array(plainText.byteLength + 1); - badPlainText.set(plainText, 0); - badPlainText.set(new Uint8Array([32]), plainText.byteLength); - await assertRejects(async () => { - // Should fail - await subtle.encrypt( - encryptAlgorithm, - keyPair.publicKey, - badPlainText, - ); - throw new TypeError("unreachable"); - }, DOMException); - } -}); - -Deno.test(async function testGenerateRSAKey() { - const subtle = window.crypto.subtle; - assert(subtle); - - const keyPair = await subtle.generateKey( - { - name: "RSA-PSS", - modulusLength: 2048, - publicExponent: new Uint8Array([1, 0, 1]), - hash: "SHA-256", - }, - true, - ["sign", "verify"], - ); - - assert(keyPair.privateKey); - assert(keyPair.publicKey); - assertEquals(keyPair.privateKey.extractable, true); - assert(keyPair.privateKey.usages.includes("sign")); -}); - -Deno.test(async function testGenerateHMACKey() { - const key = await window.crypto.subtle.generateKey( - { - name: "HMAC", - hash: "SHA-512", - }, - true, - ["sign", "verify"], - ); - - assert(key); - assertEquals(key.extractable, true); - assert(key.usages.includes("sign")); -}); - -Deno.test(async function testECDSASignVerify() { - const key = await window.crypto.subtle.generateKey( - { - name: "ECDSA", - namedCurve: "P-384", - }, - true, - ["sign", "verify"], - ); - - const encoder = new TextEncoder(); - const encoded = encoder.encode("Hello, World!"); - const signature = await window.crypto.subtle.sign( - { name: "ECDSA", hash: "SHA-384" }, - key.privateKey, - encoded, - ); - - assert(signature); - assert(signature instanceof ArrayBuffer); - - const verified = await window.crypto.subtle.verify( - { hash: { name: "SHA-384" }, name: "ECDSA" }, - key.publicKey, - signature, - encoded, - ); - assert(verified); -}); - -// Tests the "bad paths" as a temporary replacement for sign_verify/ecdsa WPT. -Deno.test(async function testECDSASignVerifyFail() { - const key = await window.crypto.subtle.generateKey( - { - name: "ECDSA", - namedCurve: "P-384", - }, - true, - ["sign", "verify"], - ); - - const encoded = new Uint8Array([1]); - // Signing with a public key (InvalidAccessError) - await assertRejects(async () => { - await window.crypto.subtle.sign( - { name: "ECDSA", hash: "SHA-384" }, - key.publicKey, - new Uint8Array([1]), - ); - throw new TypeError("unreachable"); - }, DOMException); - - // Do a valid sign for later verifying. - const signature = await window.crypto.subtle.sign( - { name: "ECDSA", hash: "SHA-384" }, - key.privateKey, - encoded, - ); - - // Verifying with a private key (InvalidAccessError) - await assertRejects(async () => { - await window.crypto.subtle.verify( - { hash: { name: "SHA-384" }, name: "ECDSA" }, - key.privateKey, - signature, - encoded, - ); - throw new TypeError("unreachable"); - }, DOMException); -}); - -// https://github.com/denoland/deno/issues/11313 -Deno.test(async function testSignRSASSAKey() { - const subtle = window.crypto.subtle; - assert(subtle); - - const keyPair = await subtle.generateKey( - { - name: "RSASSA-PKCS1-v1_5", - modulusLength: 2048, - publicExponent: new Uint8Array([1, 0, 1]), - hash: "SHA-256", - }, - true, - ["sign", "verify"], - ); - - assert(keyPair.privateKey); - assert(keyPair.publicKey); - assertEquals(keyPair.privateKey.extractable, true); - assert(keyPair.privateKey.usages.includes("sign")); - - const encoder = new TextEncoder(); - const encoded = encoder.encode("Hello, World!"); - - const signature = await window.crypto.subtle.sign( - { name: "RSASSA-PKCS1-v1_5" }, - keyPair.privateKey, - encoded, - ); - - assert(signature); -}); - -// deno-fmt-ignore -const rawKey = new Uint8Array([ - 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16 -]); - -const jwk: JsonWebKey = { - kty: "oct", - // unpadded base64 for rawKey. - k: "AQIDBAUGBwgJCgsMDQ4PEA", - alg: "HS256", - ext: true, - "key_ops": ["sign"], -}; - -Deno.test(async function subtleCryptoHmacImportExport() { - const key1 = await crypto.subtle.importKey( - "raw", - rawKey, - { name: "HMAC", hash: "SHA-256" }, - true, - ["sign"], - ); - const key2 = await crypto.subtle.importKey( - "jwk", - jwk, - { name: "HMAC", hash: "SHA-256" }, - true, - ["sign"], - ); - const actual1 = await crypto.subtle.sign( - { name: "HMAC" }, - key1, - new Uint8Array([1, 2, 3, 4]), - ); - - const actual2 = await crypto.subtle.sign( - { name: "HMAC" }, - key2, - new Uint8Array([1, 2, 3, 4]), - ); - // deno-fmt-ignore - const expected = new Uint8Array([ - 59, 170, 255, 216, 51, 141, 51, 194, - 213, 48, 41, 191, 184, 40, 216, 47, - 130, 165, 203, 26, 163, 43, 38, 71, - 23, 122, 222, 1, 146, 46, 182, 87, - ]); - assertEquals( - new Uint8Array(actual1), - expected, - ); - assertEquals( - new Uint8Array(actual2), - expected, - ); - - const exportedKey1 = await crypto.subtle.exportKey("raw", key1); - assertEquals(new Uint8Array(exportedKey1), rawKey); - - const exportedKey2 = await crypto.subtle.exportKey("jwk", key2); - assertEquals(exportedKey2, jwk); -}); - -// https://github.com/denoland/deno/issues/12085 -Deno.test(async function generateImportHmacJwk() { - const key = await crypto.subtle.generateKey( - { - name: "HMAC", - hash: "SHA-512", - }, - true, - ["sign"], - ); - assert(key); - assertEquals(key.type, "secret"); - assertEquals(key.extractable, true); - assertEquals(key.usages, ["sign"]); - - const exportedKey = await crypto.subtle.exportKey("jwk", key); - assertEquals(exportedKey.kty, "oct"); - assertEquals(exportedKey.alg, "HS512"); - assertEquals(exportedKey.key_ops, ["sign"]); - assertEquals(exportedKey.ext, true); - assert(typeof exportedKey.k == "string"); - assertEquals(exportedKey.k.length, 171); -}); - -// 2048-bits publicExponent=65537 -const pkcs8TestVectors = [ - // rsaEncryption - { pem: "cli/tests/testdata/webcrypto/id_rsaEncryption.pem", hash: "SHA-256" }, -]; - -Deno.test({ permissions: { read: true } }, async function importRsaPkcs8() { - const pemHeader = "-----BEGIN PRIVATE KEY-----"; - const pemFooter = "-----END PRIVATE KEY-----"; - for (const { pem, hash } of pkcs8TestVectors) { - const keyFile = await Deno.readTextFile(pem); - const pemContents = keyFile.substring( - pemHeader.length, - keyFile.length - pemFooter.length, - ); - const binaryDerString = atob(pemContents); - const binaryDer = new Uint8Array(binaryDerString.length); - for (let i = 0; i < binaryDerString.length; i++) { - binaryDer[i] = binaryDerString.charCodeAt(i); - } - - const key = await crypto.subtle.importKey( - "pkcs8", - binaryDer, - { name: "RSA-PSS", hash }, - true, - ["sign"], - ); - - assert(key); - assertEquals(key.type, "private"); - assertEquals(key.extractable, true); - assertEquals(key.usages, ["sign"]); - const algorithm = key.algorithm as RsaHashedKeyAlgorithm; - assertEquals(algorithm.name, "RSA-PSS"); - assertEquals(algorithm.hash.name, hash); - assertEquals(algorithm.modulusLength, 2048); - assertEquals(algorithm.publicExponent, new Uint8Array([1, 0, 1])); - } -}); - -const nonInteroperableVectors = [ - // id-RSASSA-PSS (sha256) - // `openssl genpkey -algorithm rsa-pss -pkeyopt rsa_pss_keygen_md:sha256 -out id_rsassaPss.pem` - { pem: "cli/tests/testdata/webcrypto/id_rsassaPss.pem", hash: "SHA-256" }, - // id-RSASSA-PSS (default parameters) - // `openssl genpkey -algorithm rsa-pss -out id_rsassaPss.pem` - { - pem: "cli/tests/testdata/webcrypto/id_rsassaPss_default.pem", - hash: "SHA-1", - }, - // id-RSASSA-PSS (default hash) - // `openssl genpkey -algorithm rsa-pss -pkeyopt rsa_pss_keygen_saltlen:30 -out rsaPss_saltLen_30.pem` - { - pem: "cli/tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem", - hash: "SHA-1", - }, -]; - -Deno.test( - { permissions: { read: true } }, - async function importNonInteroperableRsaPkcs8() { - const pemHeader = "-----BEGIN PRIVATE KEY-----"; - const pemFooter = "-----END PRIVATE KEY-----"; - for (const { pem, hash } of nonInteroperableVectors) { - const keyFile = await Deno.readTextFile(pem); - const pemContents = keyFile.substring( - pemHeader.length, - keyFile.length - pemFooter.length, - ); - const binaryDerString = atob(pemContents); - const binaryDer = new Uint8Array(binaryDerString.length); - for (let i = 0; i < binaryDerString.length; i++) { - binaryDer[i] = binaryDerString.charCodeAt(i); - } - - await assertRejects( - () => - crypto.subtle.importKey( - "pkcs8", - binaryDer, - { name: "RSA-PSS", hash }, - true, - ["sign"], - ), - DOMException, - "unsupported algorithm", - ); - } - }, -); - -// deno-fmt-ignore -const asn1AlgorithmIdentifier = new Uint8Array([ - 0x02, 0x01, 0x00, // INTEGER - 0x30, 0x0d, // SEQUENCE (2 elements) - 0x06, 0x09, // OBJECT IDENTIFIER - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, // 1.2.840.113549.1.1.1 (rsaEncryption) - 0x05, 0x00, // NULL -]); - -Deno.test(async function rsaExport() { - for (const algorithm of ["RSASSA-PKCS1-v1_5", "RSA-PSS", "RSA-OAEP"]) { - const keyPair = await crypto.subtle.generateKey( - { - name: algorithm, - modulusLength: 2048, - publicExponent: new Uint8Array([1, 0, 1]), - hash: "SHA-256", - }, - true, - algorithm !== "RSA-OAEP" ? ["sign", "verify"] : ["encrypt", "decrypt"], - ); - - assert(keyPair.privateKey); - assert(keyPair.publicKey); - assertEquals(keyPair.privateKey.extractable, true); - - const exportedPrivateKey = await crypto.subtle.exportKey( - "pkcs8", - keyPair.privateKey, - ); - - assert(exportedPrivateKey); - assert(exportedPrivateKey instanceof ArrayBuffer); - - const pkcs8 = new Uint8Array(exportedPrivateKey); - assert(pkcs8.length > 0); - - assertEquals( - pkcs8.slice(4, asn1AlgorithmIdentifier.byteLength + 4), - asn1AlgorithmIdentifier, - ); - - const exportedPublicKey = await crypto.subtle.exportKey( - "spki", - keyPair.publicKey, - ); - - const spki = new Uint8Array(exportedPublicKey); - assert(spki.length > 0); - - assertEquals( - spki.slice(4, asn1AlgorithmIdentifier.byteLength + 1), - asn1AlgorithmIdentifier.slice(3), - ); - } -}); - -Deno.test(async function testHkdfDeriveBits() { - const rawKey = crypto.getRandomValues(new Uint8Array(16)); - const key = await crypto.subtle.importKey( - "raw", - rawKey, - { name: "HKDF", hash: "SHA-256" }, - false, - ["deriveBits"], - ); - const salt = crypto.getRandomValues(new Uint8Array(16)); - const info = crypto.getRandomValues(new Uint8Array(16)); - const result = await crypto.subtle.deriveBits( - { - name: "HKDF", - hash: "SHA-256", - salt: salt, - info: info, - }, - key, - 128, - ); - assertEquals(result.byteLength, 128 / 8); -}); - -Deno.test(async function testHkdfDeriveBitsWithLargeKeySize() { - const key = await crypto.subtle.importKey( - "raw", - new Uint8Array([0x00]), - "HKDF", - false, - ["deriveBits"], - ); - await assertRejects( - () => - crypto.subtle.deriveBits( - { - name: "HKDF", - hash: "SHA-1", - salt: new Uint8Array(), - info: new Uint8Array(), - }, - key, - ((20 * 255) << 3) + 8, - ), - DOMException, - "The length provided for HKDF is too large", - ); -}); - -Deno.test(async function testEcdhDeriveBitsWithShorterLength() { - const keypair = await crypto.subtle.generateKey( - { - name: "ECDH", - namedCurve: "P-384", - }, - true, - ["deriveBits", "deriveKey"], - ); - const result = await crypto.subtle.deriveBits( - { - name: "ECDH", - public: keypair.publicKey, - }, - keypair.privateKey, - 256, - ); - assertEquals(result.byteLength * 8, 256); -}); - -Deno.test(async function testEcdhDeriveBitsWithLongerLength() { - const keypair = await crypto.subtle.generateKey( - { - name: "ECDH", - namedCurve: "P-384", - }, - true, - ["deriveBits", "deriveKey"], - ); - await assertRejects( - () => - crypto.subtle.deriveBits( - { - name: "ECDH", - public: keypair.publicKey, - }, - keypair.privateKey, - 512, - ), - DOMException, - "Invalid length", - ); -}); - -Deno.test(async function testEcdhDeriveBitsWithNullLength() { - const keypair = await crypto.subtle.generateKey( - { - name: "ECDH", - namedCurve: "P-384", - }, - true, - ["deriveBits", "deriveKey"], - ); - const result = await crypto.subtle.deriveBits( - { - name: "ECDH", - public: keypair.publicKey, - }, - keypair.privateKey, - // @ts-ignore: necessary until .d.ts file allows passing null (see https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1416) - null, - ); - assertEquals(result.byteLength * 8, 384); -}); - -Deno.test(async function testDeriveKey() { - // Test deriveKey - const rawKey = crypto.getRandomValues(new Uint8Array(16)); - const key = await crypto.subtle.importKey( - "raw", - rawKey, - "PBKDF2", - false, - ["deriveKey", "deriveBits"], - ); - - const salt = crypto.getRandomValues(new Uint8Array(16)); - const derivedKey = await crypto.subtle.deriveKey( - { - name: "PBKDF2", - salt, - iterations: 1000, - hash: "SHA-256", - }, - key, - { name: "HMAC", hash: "SHA-256" }, - true, - ["sign"], - ); - - assert(derivedKey instanceof CryptoKey); - assertEquals(derivedKey.type, "secret"); - assertEquals(derivedKey.extractable, true); - assertEquals(derivedKey.usages, ["sign"]); - - const algorithm = derivedKey.algorithm as HmacKeyAlgorithm; - assertEquals(algorithm.name, "HMAC"); - assertEquals(algorithm.hash.name, "SHA-256"); - assertEquals(algorithm.length, 512); -}); - -Deno.test(async function testAesCbcEncryptDecrypt() { - const key = await crypto.subtle.generateKey( - { name: "AES-CBC", length: 128 }, - true, - ["encrypt", "decrypt"], - ); - - const iv = crypto.getRandomValues(new Uint8Array(16)); - const encrypted = await crypto.subtle.encrypt( - { - name: "AES-CBC", - iv, - }, - key as CryptoKey, - new Uint8Array([1, 2, 3, 4, 5, 6]), - ); - - assert(encrypted instanceof ArrayBuffer); - assertEquals(encrypted.byteLength, 16); - - const decrypted = await crypto.subtle.decrypt( - { - name: "AES-CBC", - iv, - }, - key as CryptoKey, - encrypted, - ); - - assert(decrypted instanceof ArrayBuffer); - assertEquals(decrypted.byteLength, 6); - assertEquals(new Uint8Array(decrypted), new Uint8Array([1, 2, 3, 4, 5, 6])); -}); - -Deno.test(async function testAesCtrEncryptDecrypt() { - async function aesCtrRoundTrip( - key: CryptoKey, - counter: Uint8Array, - length: number, - plainText: Uint8Array, - ) { - const cipherText = await crypto.subtle.encrypt( - { - name: "AES-CTR", - counter, - length, - }, - key, - plainText, - ); - - assert(cipherText instanceof ArrayBuffer); - assertEquals(cipherText.byteLength, plainText.byteLength); - assertNotEquals(new Uint8Array(cipherText), plainText); - - const decryptedText = await crypto.subtle.decrypt( - { - name: "AES-CTR", - counter, - length, - }, - key, - cipherText, - ); - - assert(decryptedText instanceof ArrayBuffer); - assertEquals(decryptedText.byteLength, plainText.byteLength); - assertEquals(new Uint8Array(decryptedText), plainText); - } - for (const keySize of [128, 192, 256]) { - const key = await crypto.subtle.generateKey( - { name: "AES-CTR", length: keySize }, - true, - ["encrypt", "decrypt"], - ) as CryptoKey; - - // test normal operation - for (const length of [128 /*, 64, 128 */]) { - const counter = crypto.getRandomValues(new Uint8Array(16)); - - await aesCtrRoundTrip( - key, - counter, - length, - new Uint8Array([1, 2, 3, 4, 5, 6]), - ); - } - - // test counter-wrapping - for (const length of [32, 64, 128]) { - const plaintext1 = crypto.getRandomValues(new Uint8Array(32)); - const counter = new Uint8Array(16); - - // fixed upper part - for (let off = 0; off < 16 - (length / 8); ++off) { - counter[off] = off; - } - const ciphertext1 = await crypto.subtle.encrypt( - { - name: "AES-CTR", - counter, - length, - }, - key, - plaintext1, - ); - - // Set lower [length] counter bits to all '1's - for (let off = 16 - (length / 8); off < 16; ++off) { - counter[off] = 0xff; - } - - // = [ 1 block of 0x00 + plaintext1 ] - const plaintext2 = new Uint8Array(48); - plaintext2.set(plaintext1, 16); - - const ciphertext2 = await crypto.subtle.encrypt( - { - name: "AES-CTR", - counter, - length, - }, - key, - plaintext2, - ); - - // If counter wrapped, 2nd block of ciphertext2 should be equal to 1st block of ciphertext1 - // since ciphertext1 used counter = 0x00...00 - // and ciphertext2 used counter = 0xFF..FF which should wrap to 0x00..00 without affecting - // higher bits - assertEquals( - new Uint8Array(ciphertext1), - new Uint8Array(ciphertext2).slice(16), - ); - } - } -}); - -Deno.test(async function testECDH() { - for (const keySize of [256, 384]) { - const keyPair = await crypto.subtle.generateKey( - { - name: "ECDH", - namedCurve: "P-" + keySize, - }, - true, - ["deriveBits"], - ); - - const derivedKey = await crypto.subtle.deriveBits( - { - name: "ECDH", - public: keyPair.publicKey, - }, - keyPair.privateKey, - keySize, - ); - - assert(derivedKey instanceof ArrayBuffer); - assertEquals(derivedKey.byteLength, keySize / 8); - } -}); - -Deno.test(async function testWrapKey() { - // Test wrapKey - const key = await crypto.subtle.generateKey( - { - name: "RSA-OAEP", - modulusLength: 4096, - publicExponent: new Uint8Array([1, 0, 1]), - hash: "SHA-256", - }, - true, - ["wrapKey", "unwrapKey"], - ); - - const hmacKey = await crypto.subtle.generateKey( - { - name: "HMAC", - hash: "SHA-256", - length: 128, - }, - true, - ["sign"], - ); - - const wrappedKey = await crypto.subtle.wrapKey( - "raw", - hmacKey, - key.publicKey, - { - name: "RSA-OAEP", - label: new Uint8Array(8), - }, - ); - - assert(wrappedKey instanceof ArrayBuffer); - assertEquals(wrappedKey.byteLength, 512); -}); - -// Doesn't need to cover all cases. -// Only for testing types. -Deno.test(async function testAesKeyGen() { - const key = await crypto.subtle.generateKey( - { - name: "AES-GCM", - length: 256, - }, - true, - ["encrypt", "decrypt"], - ); - - assert(key); - assertEquals(key.type, "secret"); - assertEquals(key.extractable, true); - assertEquals(key.usages, ["encrypt", "decrypt"]); - const algorithm = key.algorithm as AesKeyAlgorithm; - assertEquals(algorithm.name, "AES-GCM"); - assertEquals(algorithm.length, 256); -}); - -Deno.test(async function testUnwrapKey() { - const subtle = crypto.subtle; - - const AES_KEY: AesKeyAlgorithm & AesCbcParams = { - name: "AES-CBC", - length: 128, - iv: new Uint8Array(16), - }; - - const RSA_KEY: RsaHashedKeyGenParams & RsaOaepParams = { - name: "RSA-OAEP", - modulusLength: 2048, - publicExponent: new Uint8Array([1, 0, 1]), - hash: "SHA-1", - }; - - const aesKey = await subtle.generateKey(AES_KEY, true, [ - "encrypt", - "decrypt", - ]); - - const rsaKeyPair = await subtle.generateKey( - { - name: "RSA-OAEP", - hash: "SHA-1", - publicExponent: new Uint8Array([1, 0, 1]), - modulusLength: 2048, - }, - false, - ["wrapKey", "encrypt", "unwrapKey", "decrypt"], - ); - - const enc = await subtle.wrapKey( - "raw", - aesKey, - rsaKeyPair.publicKey, - RSA_KEY, - ); - const unwrappedKey = await subtle.unwrapKey( - "raw", - enc, - rsaKeyPair.privateKey, - RSA_KEY, - AES_KEY, - false, - ["encrypt", "decrypt"], - ); - - assert(unwrappedKey instanceof CryptoKey); - assertEquals(unwrappedKey.type, "secret"); - assertEquals(unwrappedKey.extractable, false); - assertEquals(unwrappedKey.usages, ["encrypt", "decrypt"]); -}); - -Deno.test(async function testDecryptWithInvalidIntializationVector() { - // deno-fmt-ignore - const data = new Uint8Array([42,42,42,42,42,42,42,42,42,42,42,42,42,42,42]); - const key = await crypto.subtle.importKey( - "raw", - new Uint8Array(16), - { name: "AES-CBC", length: 256 }, - true, - ["encrypt", "decrypt"], - ); - // deno-fmt-ignore - const initVector = new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]); - const encrypted = await crypto.subtle.encrypt( - { name: "AES-CBC", iv: initVector }, - key, - data, - ); - // deno-fmt-ignore - const initVector2 = new Uint8Array([15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]); - await assertRejects(async () => { - await crypto.subtle.decrypt( - { name: "AES-CBC", iv: initVector2 }, - key, - encrypted, - ); - }, DOMException); -}); - -const jwtRSAKeys = { - "1024": { - size: 1024, - publicJWK: { - kty: "RSA", - n: "zZn4sRGfjQos56yL_Qy1R9NI-THMnFynn94g5RxA6wGrJh4BJT3x6I9x0IbpS3q-d4ORA6R2vuDMh8dDFRr9RDH6XY-gUScc9U5Jz3UA2KmVfsCbnUPvcAmMV_ENA7_TF0ivVjuIFodyDTx7EKHNVTrHHSlrbt7spbmcivs23Zc", - e: "AQAB", - }, - privateJWK: { - kty: "RSA", - n: "zZn4sRGfjQos56yL_Qy1R9NI-THMnFynn94g5RxA6wGrJh4BJT3x6I9x0IbpS3q-d4ORA6R2vuDMh8dDFRr9RDH6XY-gUScc9U5Jz3UA2KmVfsCbnUPvcAmMV_ENA7_TF0ivVjuIFodyDTx7EKHNVTrHHSlrbt7spbmcivs23Zc", - e: "AQAB", - d: "YqIK_GdH85F-GWZdgfgmv15NE78gOaL5h2g4v7DeM9-JC7A5PHSLKNYn87HFGcC4vv0PBIBRtyCA_mJJfEaGWORVCOXSBpWNepMYpio52n3w5uj5UZEsBnbtZc0EtWhVF2Auqa7VbiKrWcQUEgEI8V0gE5D4tyBg8GXv9975dQE", - p: "9BrAg5L1zfqGPuWJDuDCBX-TmtZdrOI3Ys4ZaN-yMPlTjwWSEPO0qnfjEZcw2VgXHgJJmbVco6TxckJCmEYqeQ", - q: "157jDJ1Ya5nmQvTPbhKAPAeMWogxCyaQTkBrp30pEKd6mGSB385hqr4BIk8s3f7MdXpM-USpaZgUoT4o_2VEjw", - dp: - "qdd_QUzcaB-6jkKo1Ug-1xKIAgDLFsIjJUUfWt_iHL8ti2Kl2dOnTcCypgebPm5TT1bqHN-agGYAdK5zpX2UiQ", - dq: - "hNRfwOSplNfhLvxLUN7a2qA3yYm-1MSz_1DWQP7srlLORlUcYPht2FZmsnEeDcAqynBGPQUcbG2Av_hgHz2OZw", - qi: - "zbpJQAhinrxSbVKxBQ2EZGFUD2e3WCXbAJRYpk8HVQ5AA52OhKTicOye2hEHnrgpFKzC8iznTsCG3FMkvwcj4Q", - }, - }, - - "2048": { - size: 2048, - publicJWK: { - kty: "RSA", - // unpadded base64 for rawKey. - n: "09eVwAhT9SPBxdEN-74BBeEANGaVGwqH-YglIc4VV7jfhR2by5ivzVq8NCeQ1_ACDIlTDY8CTMQ5E1c1SEXmo_T7q84XUGXf8U9mx6uRg46sV7fF-hkwJR80BFVsvWxp4ahPlVJYj__94ft7rIVvchb5tyalOjrYFCJoFnSgq-i3ZjU06csI9XnO5klINucD_Qq0vUhO23_Add2HSYoRjab8YiJJR_Eths7Pq6HHd2RSXmwYp5foRnwe0_U75XmesHWDJlJUHYbwCZo0kP9G8g4QbucwU-MSNBkZOO2x2ZtZNexpHd0ThkATbnNlpVG_z2AGNORp_Ve3rlXwrGIXXw", - e: "AQAB", - }, - privateJWK: { - kty: "RSA", - // unpadded base64 for rawKey. - n: "09eVwAhT9SPBxdEN-74BBeEANGaVGwqH-YglIc4VV7jfhR2by5ivzVq8NCeQ1_ACDIlTDY8CTMQ5E1c1SEXmo_T7q84XUGXf8U9mx6uRg46sV7fF-hkwJR80BFVsvWxp4ahPlVJYj__94ft7rIVvchb5tyalOjrYFCJoFnSgq-i3ZjU06csI9XnO5klINucD_Qq0vUhO23_Add2HSYoRjab8YiJJR_Eths7Pq6HHd2RSXmwYp5foRnwe0_U75XmesHWDJlJUHYbwCZo0kP9G8g4QbucwU-MSNBkZOO2x2ZtZNexpHd0ThkATbnNlpVG_z2AGNORp_Ve3rlXwrGIXXw", - e: "AQAB", - d: "H4xboN2co0VP9kXL71G8lUOM5EDis8Q9u8uqu_4U75t4rjpamVeD1vFMVfgOehokM_m_hKVnkkcmuNqj9L90ObaiRFPM5QxG7YkFpXbHlPAKeoXD1hsqMF0VQg_2wb8DhberInHA_rEA_kaVhHvavQLu7Xez45gf1d_J4I4931vjlCB6cupbLL0H5hHsxbMsX_5nnmAJdL_U3gD-U7ZdQheUPhDBJR2KeGzvnTm3KVKpOnwn-1Cd45MU4-KDdP0FcBVEuBsSrsQHliTaciBgkbyj__BangPj3edDxTkb-fKkEvhkXRjAoJs1ixt8nfSGDce9cM_GqAX9XGb4s2QkAQ", - dp: - "mM82RBwzGzi9LAqjGbi-badLtHRRBoH9sfMrJuOtzxRnmwBFccg_lwy-qAhUTqnN9kvD0H1FzXWzoFPFJbyi-AOmumYGpWm_PvzQGldne5CPJ02pYaeg-t1BePsT3OpIq0Am8E2Kjf9polpRJwIjO7Kx8UJKkhg5bISnsy0V8wE", - dq: - "ZlM4AvrWIpXwqsH_5Q-6BsLJdbnN_GypFCXoT9VXniXncSBZIWCkgDndBdWkSzyzIN65NiMRBfZaf9yduTFj4kvOPwb3ch3J0OxGJk0Ary4OGSlS1zNwMl93ALGal1FzpWUuiia9L9RraGqXAUr13L7TIIMRobRjpAV-z7M-ruM", - p: "7VwGt_tJcAFQHrmDw5dM1EBru6fidM45NDv6VVOEbxKuD5Sh2EfAHfm5c6oouA1gZqwvKH0sn_XpB1NsyYyHEQd3sBVdK0zRjTo-E9mRP-1s-LMd5YDXVq6HE339nxpXsmO25slQEF6zBrj1bSNNXBFc7fgDnlq-HIeleMvsY_E", - q: "5HqMHLzb4IgXhUl4pLz7E4kjY8PH2YGzaQfK805zJMbOXzmlZK0hizKo34Qqd2nB9xos7QgzOYQrNfSWheARwVsSQzAE0vGvw3zHIPP_lTtChBlCTPctQcURjw4dXcnK1oQ-IT321FNOW3EO-YTsyGcypJqJujlZrLbxYjOjQE8", - qi: - "OQXzi9gypDnpdHatIi0FaUGP8LSzfVH0AUugURJXs4BTJpvA9y4hcpBQLrcl7H_vq6kbGmvC49V-9I5HNVX_AuxGIXKuLZr5WOxPq8gLTqHV7X5ZJDtWIP_nq2NNgCQQyNNRrxebiWlwGK9GnX_unewT6jopI_oFhwp0Q13rBR0", - }, - }, - "4096": { - size: 4096, - publicJWK: { - kty: "RSA", - n: "2qr2TL2c2JmbsN0OLIRnaAB_ZKb1-Gh9H0qb4lrBuDaqkW_eFPwT-JIsvnNJvDT7BLJ57tTMIj56ZMtv6efSSTWSk9MOoW2J1K_iEretZ2cegB_aRX7qQVjnoFsz9U02BKfAIUT0o_K7b9G08d1rrAUohi_SVQhwObodg7BddMbKUmz70QNIS487LN44WUVnn9OgE9atTYUARNukT0DuQb3J-K20ksTuVujXbSelohDmLobqlGoi5sY_548Qs9BtFmQ2nGuEHNB2zdlZ5EvEqbUFVZ2QboG6jXdoos6qcwdgUvAhj1Hz10Ngic_RFqL7bNDoIOzNp66hdA35uxbwuaygZ16ikxoPj7eTYud1hrkyQCgeGw2YhCiKIE6eos_U5dL7WHRD5aSkkzsgXtnF8pVmStsuf0QcdAoC-eeCex0tSTgRw9AtGTz8Yr1tGQD9l_580zAXnE6jmrwRRQ68EEA7vohGov3tnG8pGyg_zcxeADLtPlfTc1tEwmh3SGrioDClioYCipm1JvkweEgP9eMPpEC8SgRU1VNDSVe1SF4uNsH8vA7PHFKfg6juqJEc5ht-l10FYER-Qq6bZXsU2oNcfE5SLDeLTWmxiHmxK00M8ABMFIV5gUkPoMiWcl87O6XwzA2chsIERp7Vb-Vn2O-EELiXzv7lPhc6fTGQ0Nc", - e: "AQAB", - }, - privateJWK: { - kty: "RSA", - n: "2qr2TL2c2JmbsN0OLIRnaAB_ZKb1-Gh9H0qb4lrBuDaqkW_eFPwT-JIsvnNJvDT7BLJ57tTMIj56ZMtv6efSSTWSk9MOoW2J1K_iEretZ2cegB_aRX7qQVjnoFsz9U02BKfAIUT0o_K7b9G08d1rrAUohi_SVQhwObodg7BddMbKUmz70QNIS487LN44WUVnn9OgE9atTYUARNukT0DuQb3J-K20ksTuVujXbSelohDmLobqlGoi5sY_548Qs9BtFmQ2nGuEHNB2zdlZ5EvEqbUFVZ2QboG6jXdoos6qcwdgUvAhj1Hz10Ngic_RFqL7bNDoIOzNp66hdA35uxbwuaygZ16ikxoPj7eTYud1hrkyQCgeGw2YhCiKIE6eos_U5dL7WHRD5aSkkzsgXtnF8pVmStsuf0QcdAoC-eeCex0tSTgRw9AtGTz8Yr1tGQD9l_580zAXnE6jmrwRRQ68EEA7vohGov3tnG8pGyg_zcxeADLtPlfTc1tEwmh3SGrioDClioYCipm1JvkweEgP9eMPpEC8SgRU1VNDSVe1SF4uNsH8vA7PHFKfg6juqJEc5ht-l10FYER-Qq6bZXsU2oNcfE5SLDeLTWmxiHmxK00M8ABMFIV5gUkPoMiWcl87O6XwzA2chsIERp7Vb-Vn2O-EELiXzv7lPhc6fTGQ0Nc", - e: "AQAB", - d: "uXPRXBhcE5-DWabBRKQuhxgU8ype5gTISWefeYP7U96ZHqu_sBByZ5ihdgyU9pgAZGVx4Ep9rnVKnH2lNr2zrP9Qhyqy99nM0aMxmypIWLAuP__DwLj4t99M4sU29c48CAq1egHfccSFjzpNuetOTCA71EJuokt70pm0OmGzgTyvjuR7VTLxd5PMXitBowSn8_cphmnFpT8tkTiuy8CH0R3DU7MOuINomDD1s8-yPBcVAVTPUnwJiauNuzestLQKMLlhT5wn-cAbYk36XRKdgkjSc2AkhHRl4WDqT1nzWYdh_DVIYSLiKSktkPO9ovMrRYiPtozfhl0m9SR9Ll0wXtcnnDlWXc_MSGpw18vmUBSJ4PIhkiFsvLn-db3wUkA8uve-iqqfk0sxlGWughWx03kGmZDmprWbXugCBHfsI4X93w4exznXH_tapxPnmjbhVUQR6p41MvO2lcHWPLwGJgLIoejBHpnn3TmMN0UjFZki7q9B_dJ3fXh0mX9DzAlC0sil1NgCPhMPq02393_giinQquMknrBvgKxGSfGUrDKuflCx611ZZlRM3R7YMX2OIy1g4DyhPzBVjxRMtm8PnIs3m3Hi-O-C_PHF93w9J8Wqd0yIw7SpavDqZXLPC6Cqi8K7MBZyVECXHtRj1bBqT-h_xZmFCDjSU0NqfOdgApE", - p: "9NrXwq4kY9kBBOwLoFZVQc4kJI_NbKa_W9FLdQdRIbMsZZHXJ3XDUR9vJAcaaR75WwIC7X6N55nVtWTq28Bys9flJ9RrCTfciOntHEphBhYaL5ZTUl-6khYmsOf_psff2VaOOCvHGff5ejuOmBQxkw2E-cv7knRgWFHoLWpku2NJIMuGHt9ks7OAUfIZVYl9YJnw4FYUzhgaxemknjLeZ8XTkGW2zckzF-d95YI9i8zD80Umubsw-YxriSfqFQ0rGHBsbQ8ZOTd_KJju42BWnXIjNDYmjFUqdzVjI4XQ8EGrCEf_8_iwphGyXD7LOJ4fqd97B3bYpoRTPnCgY_SEHQ", - q: "5J758_NeKr1XPZiLxXohYQQnh0Lb4QtGZ1xzCgjhBQLcIBeTOG_tYjCues9tmLt93LpJfypSJ-SjDLwkR2s069_IByYGpxyeGtV-ulqYhSw1nD2CXKMDGyO5jXDs9tJrS_UhfobXKQH03CRdFugyPkSNmXY-AafFynG7xLr7oYBC05FnhUXPm3VBTPt9K-BpqwYd_h9vkAWeprSPo83UlwcLMupSJY9LaHxhRdz2yi0ZKNwXXHRwcszGjDBvvzUcCYbqWqjzbEvFY6KtH8Jh4LhM46rHaoEOTernJsDF6a6W8Df88RthqTExcwnaQf0O_dlbjSxEIPfbxx8t1EQugw", - dp: - "4Y7Hu5tYAnLhMXuQqj9dgqU3PkcKYdCp7xc6f7Ah2P2JJHfYz4z4RD7Ez1eLyNKzulZ8A_PVHUjlSZiRkaYTBAEaJDrV70P6cFWuC6WpA0ZREQ1V7EgrQnANbGILa8QsPbYyhSQu4YlB1IwQq5_OmzyVBtgWA7AZIMMzMsMT0FuB_if-gWohBjmRN-vh0p45VUf6UW568-_YmgDFmMYbg1UFs7s_TwrNenPR0h7MO4CB8hP9vJLoZrooRczzIjljPbwy5bRG9CJfjTJ0vhj9MUT3kR1hHV1HJVGU5iBbfTfBKnvJGSI6-IDM4ZUm-B0R5hbs6s9cfOjhFmACIJIbMQ", - dq: - "gT4iPbfyHyVEwWyQb4X4grjvg7bXSKSwG1SXMDAOzV9tg7LwJjKYNy8gJAtJgNNVdsfVLs-E_Epzpoph1AIWO9YZZXkov6Yc9zyEVONMX9S7ReU74hTBd8E9b2lMfMg9ogYk9jtSPTt-6kigW4fOh4cHqZ6_tP3cgfLD3JZ8FDPHE4WaySvLDq49yUBO5dQKyIU_xV6OGhQjOUjP_yEoMmzn9tOittsIHTxbXTxqQ6c1FvU9O6YTv8Jl5_Cl66khfX1I1RG38xvurcHULyUbYgeuZ_Iuo9XreT73h9_owo9RguGT29XH4vcNZmRGf5GIvRb4e5lvtleIZkwJA3u78w", - qi: - "JHmVKb1zwW5iRR6RCeexYnh2fmY-3DrPSdM8Dxhr0F8dayi-tlRqEdnG0hvp45n8gLUskWWcB9EXlUJObZGKDfGuxgMa3g_xeLA2vmFQ12MxPsyH4iCNZvsgmGxx7TuOHrnDh5EBVnM4_de63crEJON2sYI8Ozi-xp2OEmAr2seWKq4sxkFni6exLhqb-NE4m9HMKlng1EtQh2rLBFG1VYD3SYYpMLc5fxzqGvSxn3Fa-Xgg-IZPY3ubrcm52KYgmLUGmnYStfVqGSWSdhDXHlNgI5pdAA0FzpyBk3ZX-JsxhwcnneKrYBBweq06kRMGWgvdbdAQ-7wSeGqqj5VPwA", - }, - }, -}; - -Deno.test(async function testImportRsaJwk() { - const subtle = window.crypto.subtle; - assert(subtle); - - for (const [_key, jwkData] of Object.entries(jwtRSAKeys)) { - const { size, publicJWK, privateJWK } = jwkData; - if (size < 2048) { - continue; - } - - // 1. Test import PSS - for (const hash of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) { - const hashMapPSS: Record<string, string> = { - "SHA-1": "PS1", - "SHA-256": "PS256", - "SHA-384": "PS384", - "SHA-512": "PS512", - }; - - if (size == 1024 && hash == "SHA-512") { - continue; - } - - const privateKeyPSS = await crypto.subtle.importKey( - "jwk", - { - alg: hashMapPSS[hash], - ...privateJWK, - ext: true, - "key_ops": ["sign"], - }, - { name: "RSA-PSS", hash }, - true, - ["sign"], - ); - - const publicKeyPSS = await crypto.subtle.importKey( - "jwk", - { - alg: hashMapPSS[hash], - ...publicJWK, - ext: true, - "key_ops": ["verify"], - }, - { name: "RSA-PSS", hash }, - true, - ["verify"], - ); - - const signaturePSS = await crypto.subtle.sign( - { name: "RSA-PSS", saltLength: 32 }, - privateKeyPSS, - new Uint8Array([1, 2, 3, 4]), - ); - - const verifyPSS = await crypto.subtle.verify( - { name: "RSA-PSS", saltLength: 32 }, - publicKeyPSS, - signaturePSS, - new Uint8Array([1, 2, 3, 4]), - ); - assert(verifyPSS); - } - - // 2. Test import PKCS1 - for (const hash of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) { - const hashMapPKCS1: Record<string, string> = { - "SHA-1": "RS1", - "SHA-256": "RS256", - "SHA-384": "RS384", - "SHA-512": "RS512", - }; - - if (size == 1024 && hash == "SHA-512") { - continue; - } - - const privateKeyPKCS1 = await crypto.subtle.importKey( - "jwk", - { - alg: hashMapPKCS1[hash], - ...privateJWK, - ext: true, - "key_ops": ["sign"], - }, - { name: "RSASSA-PKCS1-v1_5", hash }, - true, - ["sign"], - ); - - const publicKeyPKCS1 = await crypto.subtle.importKey( - "jwk", - { - alg: hashMapPKCS1[hash], - ...publicJWK, - ext: true, - "key_ops": ["verify"], - }, - { name: "RSASSA-PKCS1-v1_5", hash }, - true, - ["verify"], - ); - - const signaturePKCS1 = await crypto.subtle.sign( - { name: "RSASSA-PKCS1-v1_5", saltLength: 32 }, - privateKeyPKCS1, - new Uint8Array([1, 2, 3, 4]), - ); - - const verifyPKCS1 = await crypto.subtle.verify( - { name: "RSASSA-PKCS1-v1_5", saltLength: 32 }, - publicKeyPKCS1, - signaturePKCS1, - new Uint8Array([1, 2, 3, 4]), - ); - assert(verifyPKCS1); - } - - // 3. Test import OAEP - for ( - const { hash, plainText } of hashPlainTextVector - ) { - const hashMapOAEP: Record<string, string> = { - "SHA-1": "RSA-OAEP", - "SHA-256": "RSA-OAEP-256", - "SHA-384": "RSA-OAEP-384", - "SHA-512": "RSA-OAEP-512", - }; - - if (size == 1024 && hash == "SHA-512") { - continue; - } - - const encryptAlgorithm = { name: "RSA-OAEP" }; - - const privateKeyOAEP = await crypto.subtle.importKey( - "jwk", - { - alg: hashMapOAEP[hash], - ...privateJWK, - ext: true, - "key_ops": ["decrypt"], - }, - { ...encryptAlgorithm, hash }, - true, - ["decrypt"], - ); - - const publicKeyOAEP = await crypto.subtle.importKey( - "jwk", - { - alg: hashMapOAEP[hash], - ...publicJWK, - ext: true, - "key_ops": ["encrypt"], - }, - { ...encryptAlgorithm, hash }, - true, - ["encrypt"], - ); - const cipherText = await subtle.encrypt( - encryptAlgorithm, - publicKeyOAEP, - plainText, - ); - - assert(cipherText); - assert(cipherText.byteLength > 0); - assertEquals(cipherText.byteLength * 8, size); - assert(cipherText instanceof ArrayBuffer); - - const decrypted = await subtle.decrypt( - encryptAlgorithm, - privateKeyOAEP, - cipherText, - ); - assert(decrypted); - assert(decrypted instanceof ArrayBuffer); - assertEquals(new Uint8Array(decrypted), plainText); - } - } -}); - -const jwtECKeys = { - "256": { - size: 256, - algo: "ES256", - publicJWK: { - kty: "EC", - crv: "P-256", - x: "0hCwpvnZ8BKGgFi0P6T0cQGFQ7ugDJJQ35JXwqyuXdE", - y: "zgN1UtSBRQzjm00QlXAbF1v6s0uObAmeGPHBmDWDYeg", - }, - privateJWK: { - kty: "EC", - crv: "P-256", - x: "0hCwpvnZ8BKGgFi0P6T0cQGFQ7ugDJJQ35JXwqyuXdE", - y: "zgN1UtSBRQzjm00QlXAbF1v6s0uObAmeGPHBmDWDYeg", - d: "E9M6LVq_nPnrsh_4YNSu_m5W53eQ9N7ptAiE69M1ROo", - }, - }, - "384": { - size: 384, - algo: "ES384", - publicJWK: { - kty: "EC", - crv: "P-384", - x: "IZwU1mYXs27G2IVrOFtzp000T9iude8EZDXdpU47RL1fvevR0I3Wni19wdwhjLQ1", - y: "vSgTjMd4M3qEL2vWGyQOdCSfJGZ8KlgQp2v8KOAzX4imUB3sAZdtqFr7AIactqzo", - }, - privateJWK: { - kty: "EC", - crv: "P-384", - x: "IZwU1mYXs27G2IVrOFtzp000T9iude8EZDXdpU47RL1fvevR0I3Wni19wdwhjLQ1", - y: "vSgTjMd4M3qEL2vWGyQOdCSfJGZ8KlgQp2v8KOAzX4imUB3sAZdtqFr7AIactqzo", - d: "RTe1mQeE08LSLpao-S-hqkku6HPldqQVguFEGDyYiNEOa560ztSyzEAS5KxeqEBz", - }, - }, -}; - -type JWK = Record<string, string>; - -function equalJwk(expected: JWK, got: JWK): boolean { - const fields = Object.keys(expected); - - for (let i = 0; i < fields.length; i++) { - const fieldName = fields[i]; - - if (!(fieldName in got)) { - return false; - } - if (expected[fieldName] !== got[fieldName]) { - return false; - } - } - - return true; -} - -Deno.test(async function testImportExportEcDsaJwk() { - const subtle = crypto.subtle; - assert(subtle); - - for ( - const [_key, keyData] of Object.entries(jwtECKeys) - ) { - const { publicJWK, privateJWK, algo } = keyData; - - // 1. Test import EcDsa - const privateKeyECDSA = await subtle.importKey( - "jwk", - { - alg: algo, - ...privateJWK, - ext: true, - "key_ops": ["sign"], - }, - { name: "ECDSA", namedCurve: privateJWK.crv }, - true, - ["sign"], - ); - const expPrivateKeyJWK = await subtle.exportKey( - "jwk", - privateKeyECDSA, - ); - assert(equalJwk(privateJWK, expPrivateKeyJWK as JWK)); - - const publicKeyECDSA = await subtle.importKey( - "jwk", - { - alg: algo, - ...publicJWK, - ext: true, - "key_ops": ["verify"], - }, - { name: "ECDSA", namedCurve: publicJWK.crv }, - true, - ["verify"], - ); - - const expPublicKeyJWK = await subtle.exportKey( - "jwk", - publicKeyECDSA, - ); - - assert(equalJwk(publicJWK, expPublicKeyJWK as JWK)); - - const signatureECDSA = await subtle.sign( - { name: "ECDSA", hash: `SHA-${keyData.size}` }, - privateKeyECDSA, - new Uint8Array([1, 2, 3, 4]), - ); - - const verifyECDSA = await subtle.verify( - { name: "ECDSA", hash: `SHA-${keyData.size}` }, - publicKeyECDSA, - signatureECDSA, - new Uint8Array([1, 2, 3, 4]), - ); - assert(verifyECDSA); - } -}); - -Deno.test(async function testImportEcDhJwk() { - const subtle = crypto.subtle; - assert(subtle); - - for ( - const [_key, jwkData] of Object.entries(jwtECKeys) - ) { - const { size, publicJWK, privateJWK } = jwkData; - - // 1. Test import EcDsa - const privateKeyECDH = await subtle.importKey( - "jwk", - { - ...privateJWK, - ext: true, - "key_ops": ["deriveBits"], - }, - { name: "ECDH", namedCurve: privateJWK.crv }, - true, - ["deriveBits"], - ); - - const expPrivateKeyJWK = await subtle.exportKey( - "jwk", - privateKeyECDH, - ); - assert(equalJwk(privateJWK, expPrivateKeyJWK as JWK)); - - const publicKeyECDH = await subtle.importKey( - "jwk", - { - ...publicJWK, - ext: true, - "key_ops": [], - }, - { name: "ECDH", namedCurve: publicJWK.crv }, - true, - [], - ); - const expPublicKeyJWK = await subtle.exportKey( - "jwk", - publicKeyECDH, - ); - assert(equalJwk(publicJWK, expPublicKeyJWK as JWK)); - - const derivedKey = await subtle.deriveBits( - { - name: "ECDH", - public: publicKeyECDH, - }, - privateKeyECDH, - size, - ); - - assert(derivedKey instanceof ArrayBuffer); - assertEquals(derivedKey.byteLength, size / 8); - } -}); - -const ecTestKeys = [ - { - size: 256, - namedCurve: "P-256", - signatureLength: 64, - // deno-fmt-ignore - raw: new Uint8Array([ - 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, - 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, - 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, 112, 27, - 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, 131, 97, - 232, - ]), - // deno-fmt-ignore - spki: new Uint8Array([ - 48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, - 61, 3, 1, 7, 3, 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, - 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, - 87, 194, 172, 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, - 77, 16, 149, 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, - 193, 152, 53, 131, 97, 232, - ]), - // deno-fmt-ignore - pkcs8: new Uint8Array([ - 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, - 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 19, 211, 58, - 45, 90, 191, 156, 249, 235, 178, 31, 248, 96, 212, 174, 254, 110, 86, 231, - 119, 144, 244, 222, 233, 180, 8, 132, 235, 211, 53, 68, 234, 161, 68, 3, - 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, - 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, - 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, - 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, - 131, 97, 232, - ]), - }, - { - size: 384, - namedCurve: "P-384", - signatureLength: 96, - // deno-fmt-ignore - raw: new Uint8Array([ - 4, 118, 64, 176, 165, 100, 177, 112, 49, 254, 58, 53, 158, 63, 73, 200, - 148, 248, 242, 216, 186, 80, 92, 160, 53, 64, 232, 157, 19, 1, 12, 226, - 115, 51, 42, 143, 98, 206, 55, 220, 108, 78, 24, 71, 157, 21, 120, 126, - 104, 157, 86, 48, 226, 110, 96, 52, 48, 77, 170, 9, 231, 159, 26, 165, - 200, 26, 164, 99, 46, 227, 169, 105, 172, 225, 60, 102, 141, 145, 139, - 165, 47, 72, 53, 17, 17, 246, 161, 220, 26, 21, 23, 219, 1, 107, 185, - 163, 215, - ]), - // deno-fmt-ignore - spki: new Uint8Array([ - 48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, - 34, 3, 98, 0, 4, 118, 64, 176, 165, 100, 177, 112, 49, 254, 58, 53, 158, - 63, 73, 200, 148, 248, 242, 216, 186, 80, 92, 160, 53, 64, 232, 157, 19, - 1, 12, 226, 115, 51, 42, 143, 98, 206, 55, 220, 108, 78, 24, 71, 157, 21, - 120, 126, 104, 157, 86, 48, 226, 110, 96, 52, 48, 77, 170, 9, 231, 159, - 26, 165, 200, 26, 164, 99, 46, 227, 169, 105, 172, 225, 60, 102, 141, - 145, 139, 165, 47, 72, 53, 17, 17, 246, 161, 220, 26, 21, 23, 219, 1, - 107, 185, 163, 215, - ]), - // deno-fmt-ignore - pkcs8: new Uint8Array([ - 48, 129, 182, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, - 129, 4, 0, 34, 4, 129, 158, 48, 129, 155, 2, 1, 1, 4, 48, 202, 7, 195, - 169, 124, 170, 81, 169, 253, 127, 56, 28, 98, 90, 255, 165, 72, 142, 133, - 138, 237, 200, 176, 92, 179, 192, 83, 28, 47, 118, 157, 152, 47, 65, 133, - 140, 50, 83, 182, 191, 224, 96, 216, 179, 59, 150, 15, 233, 161, 100, 3, - 98, 0, 4, 118, 64, 176, 165, 100, 177, 112, 49, 254, 58, 53, 158, 63, 73, - 200, 148, 248, 242, 216, 186, 80, 92, 160, 53, 64, 232, 157, 19, 1, 12, - 226, 115, 51, 42, 143, 98, 206, 55, 220, 108, 78, 24, 71, 157, 21, 120, - 126, 104, 157, 86, 48, 226, 110, 96, 52, 48, 77, 170, 9, 231, 159, 26, - 165, 200, 26, 164, 99, 46, 227, 169, 105, 172, 225, 60, 102, 141, 145, - 139, 165, 47, 72, 53, 17, 17, 246, 161, 220, 26, 21, 23, 219, 1, 107, - 185, 163, 215, - ]), - }, -]; - -Deno.test(async function testImportEcSpkiPkcs8() { - const subtle = window.crypto.subtle; - assert(subtle); - - for ( - const { namedCurve, raw, spki, pkcs8, signatureLength } of ecTestKeys - ) { - const rawPublicKeyECDSA = await subtle.importKey( - "raw", - raw, - { name: "ECDSA", namedCurve }, - true, - ["verify"], - ); - - const expPublicKeyRaw = await subtle.exportKey( - "raw", - rawPublicKeyECDSA, - ); - - assertEquals(new Uint8Array(expPublicKeyRaw), raw); - - const privateKeyECDSA = await subtle.importKey( - "pkcs8", - pkcs8, - { name: "ECDSA", namedCurve }, - true, - ["sign"], - ); - - const expPrivateKeyPKCS8 = await subtle.exportKey( - "pkcs8", - privateKeyECDSA, - ); - - assertEquals(new Uint8Array(expPrivateKeyPKCS8), pkcs8); - - const expPrivateKeyJWK = await subtle.exportKey( - "jwk", - privateKeyECDSA, - ); - - assertEquals(expPrivateKeyJWK.crv, namedCurve); - - const publicKeyECDSA = await subtle.importKey( - "spki", - spki, - { name: "ECDSA", namedCurve }, - true, - ["verify"], - ); - - const expPublicKeySPKI = await subtle.exportKey( - "spki", - publicKeyECDSA, - ); - - assertEquals(new Uint8Array(expPublicKeySPKI), spki); - - const expPublicKeyJWK = await subtle.exportKey( - "jwk", - publicKeyECDSA, - ); - - assertEquals(expPublicKeyJWK.crv, namedCurve); - - for ( - const hash of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"] - ) { - if ( - (hash == "SHA-256" && namedCurve == "P-256") || - (hash == "SHA-384" && namedCurve == "P-384") - ) { - const signatureECDSA = await subtle.sign( - { name: "ECDSA", hash }, - privateKeyECDSA, - new Uint8Array([1, 2, 3, 4]), - ); - - const verifyECDSA = await subtle.verify( - { name: "ECDSA", hash }, - publicKeyECDSA, - signatureECDSA, - new Uint8Array([1, 2, 3, 4]), - ); - assert(verifyECDSA); - } else { - await assertRejects( - async () => { - await subtle.sign( - { name: "ECDSA", hash }, - privateKeyECDSA, - new Uint8Array([1, 2, 3, 4]), - ); - }, - DOMException, - "Not implemented", - ); - await assertRejects( - async () => { - await subtle.verify( - { name: "ECDSA", hash }, - publicKeyECDSA, - new Uint8Array(signatureLength), - new Uint8Array([1, 2, 3, 4]), - ); - }, - DOMException, - "Not implemented", - ); - } - } - } -}); - -Deno.test(async function testAesGcmEncrypt() { - const key = await crypto.subtle.importKey( - "raw", - new Uint8Array(16), - { name: "AES-GCM", length: 256 }, - true, - ["encrypt", "decrypt"], - ); - - const nonces = [{ - iv: new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]), - ciphertext: new Uint8Array([ - 50, - 223, - 112, - 178, - 166, - 156, - 255, - 110, - 125, - 138, - 95, - 141, - 82, - 47, - 14, - 164, - 134, - 247, - 22, - ]), - }, { - iv: new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), - ciphertext: new Uint8Array([ - 210, - 101, - 81, - 216, - 151, - 9, - 192, - 197, - 62, - 254, - 28, - 132, - 89, - 106, - 40, - 29, - 175, - 232, - 201, - ]), - }]; - for (const { iv, ciphertext: fixture } of nonces) { - const data = new Uint8Array([1, 2, 3]); - - const cipherText = await crypto.subtle.encrypt( - { name: "AES-GCM", iv }, - key, - data, - ); - - assert(cipherText instanceof ArrayBuffer); - assertEquals(cipherText.byteLength, 19); - assertEquals( - new Uint8Array(cipherText), - fixture, - ); - - const plainText = await crypto.subtle.decrypt( - { name: "AES-GCM", iv }, - key, - cipherText, - ); - assert(plainText instanceof ArrayBuffer); - assertEquals(plainText.byteLength, 3); - assertEquals(new Uint8Array(plainText), data); - } -}); - -async function roundTripSecretJwk( - jwk: JsonWebKey, - algId: AlgorithmIdentifier | HmacImportParams, - ops: KeyUsage[], - validateKeys: ( - key: CryptoKey, - originalJwk: JsonWebKey, - exportedJwk: JsonWebKey, - ) => void, -) { - const key = await crypto.subtle.importKey( - "jwk", - jwk, - algId, - true, - ops, - ); - - assert(key instanceof CryptoKey); - assertEquals(key.type, "secret"); - - const exportedKey = await crypto.subtle.exportKey("jwk", key); - - validateKeys(key, jwk, exportedKey); -} - -Deno.test(async function testSecretJwkBase64Url() { - // Test 16bits with "overflow" in 3rd pos of 'quartet', no padding - const keyData = `{ - "kty": "oct", - "k": "xxx", - "alg": "HS512", - "key_ops": ["sign", "verify"], - "ext": true - }`; - - await roundTripSecretJwk( - JSON.parse(keyData), - { name: "HMAC", hash: "SHA-512" }, - ["sign", "verify"], - (key, _orig, exp) => { - assertEquals((key.algorithm as HmacKeyAlgorithm).length, 16); - - assertEquals(exp.k, "xxw"); - }, - ); - - // HMAC 128bits with base64url characters (-_) - await roundTripSecretJwk( - { - kty: "oct", - k: "HnZXRyDKn-_G5Fx4JWR1YA", - alg: "HS256", - "key_ops": ["sign", "verify"], - ext: true, - }, - { name: "HMAC", hash: "SHA-256" }, - ["sign", "verify"], - (key, orig, exp) => { - assertEquals((key.algorithm as HmacKeyAlgorithm).length, 128); - - assertEquals(orig.k, exp.k); - }, - ); - - // HMAC 104bits/(12+1) bytes with base64url characters (-_), padding and overflow in 2rd pos of "quartet" - await roundTripSecretJwk( - { - kty: "oct", - k: "a-_AlFa-2-OmEGa_-z==", - alg: "HS384", - "key_ops": ["sign", "verify"], - ext: true, - }, - { name: "HMAC", hash: "SHA-384" }, - ["sign", "verify"], - (key, _orig, exp) => { - assertEquals((key.algorithm as HmacKeyAlgorithm).length, 104); - - assertEquals("a-_AlFa-2-OmEGa_-w", exp.k); - }, - ); - - // AES-CBC 128bits with base64url characters (-_) no padding - await roundTripSecretJwk( - { - kty: "oct", - k: "_u3K_gEjRWf-7cr-ASNFZw", - alg: "A128CBC", - "key_ops": ["encrypt", "decrypt"], - ext: true, - }, - { name: "AES-CBC" }, - ["encrypt", "decrypt"], - (_key, orig, exp) => { - assertEquals(orig.k, exp.k); - }, - ); - - // AES-CBC 128bits of '1' with padding chars - await roundTripSecretJwk( - { - kty: "oct", - k: "_____________________w==", - alg: "A128CBC", - "key_ops": ["encrypt", "decrypt"], - ext: true, - }, - { name: "AES-CBC" }, - ["encrypt", "decrypt"], - (_key, _orig, exp) => { - assertEquals(exp.k, "_____________________w"); - }, - ); -}); - -Deno.test(async function testAESWrapKey() { - const key = await crypto.subtle.generateKey( - { - name: "AES-KW", - length: 128, - }, - true, - ["wrapKey", "unwrapKey"], - ); - - const hmacKey = await crypto.subtle.generateKey( - { - name: "HMAC", - hash: "SHA-256", - length: 128, - }, - true, - ["sign"], - ); - - //round-trip - // wrap-unwrap-export compare - const wrappedKey = await crypto.subtle.wrapKey( - "raw", - hmacKey, - key, - { - name: "AES-KW", - }, - ); - - assert(wrappedKey instanceof ArrayBuffer); - assertEquals(wrappedKey.byteLength, 16 + 8); // 8 = 'auth tag' - - const unwrappedKey = await crypto.subtle.unwrapKey( - "raw", - wrappedKey, - key, - { - name: "AES-KW", - }, - { - name: "HMAC", - hash: "SHA-256", - }, - true, - ["sign"], - ); - - assert(unwrappedKey instanceof CryptoKey); - assertEquals((unwrappedKey.algorithm as HmacKeyAlgorithm).length, 128); - - const hmacKeyBytes = await crypto.subtle.exportKey("raw", hmacKey); - const unwrappedKeyBytes = await crypto.subtle.exportKey("raw", unwrappedKey); - - assertEquals(new Uint8Array(hmacKeyBytes), new Uint8Array(unwrappedKeyBytes)); -}); - -// https://github.com/denoland/deno/issues/13534 -Deno.test(async function testAesGcmTagLength() { - const key = await crypto.subtle.importKey( - "raw", - new Uint8Array(32), - "AES-GCM", - false, - ["encrypt", "decrypt"], - ); - - const iv = crypto.getRandomValues(new Uint8Array(12)); - - // encrypt won't fail, it will simply truncate the tag - // as expected. - const encrypted = await crypto.subtle.encrypt( - { name: "AES-GCM", iv, tagLength: 96 }, - key, - new Uint8Array(32), - ); - - await assertRejects(async () => { - await crypto.subtle.decrypt( - { name: "AES-GCM", iv, tagLength: 96 }, - key, - encrypted, - ); - }); -}); - -Deno.test(async function ecPrivateKeyMaterialExportSpki() { - // `generateKey` generates a key pair internally stored as "private" key. - const keys = await crypto.subtle.generateKey( - { name: "ECDSA", namedCurve: "P-256" }, - true, - ["sign", "verify"], - ); - - assert(keys.privateKey instanceof CryptoKey); - assert(keys.publicKey instanceof CryptoKey); - - // `exportKey` should be able to perform necessary conversion to export spki. - const spki = await crypto.subtle.exportKey("spki", keys.publicKey); - assert(spki instanceof ArrayBuffer); -}); - -// https://github.com/denoland/deno/issues/13911 -Deno.test(async function importJwkWithUse() { - const jwk = { - "kty": "EC", - "use": "sig", - "crv": "P-256", - "x": "FWZ9rSkLt6Dx9E3pxLybhdM6xgR5obGsj5_pqmnz5J4", - "y": "_n8G69C-A2Xl4xUW2lF0i8ZGZnk_KPYrhv4GbTGu5G4", - }; - - const algorithm = { name: "ECDSA", namedCurve: "P-256" }; - - const key = await crypto.subtle.importKey( - "jwk", - jwk, - algorithm, - true, - ["verify"], - ); - - assert(key instanceof CryptoKey); -}); - -// https://github.com/denoland/deno/issues/14215 -Deno.test(async function exportKeyNotExtractable() { - const key = await crypto.subtle.generateKey( - { - name: "HMAC", - hash: "SHA-512", - }, - false, - ["sign", "verify"], - ); - - assert(key); - assertEquals(key.extractable, false); - - await assertRejects(async () => { - // Should fail - await crypto.subtle.exportKey("raw", key); - }, DOMException); -}); - -// https://github.com/denoland/deno/issues/15126 -Deno.test(async function testImportLeadingZeroesKey() { - const alg = { name: "ECDSA", namedCurve: "P-256" }; - - const jwk = { - kty: "EC", - crv: "P-256", - alg: "ES256", - x: "EvidcdFB1xC6tgfakqZsU9aIURxAJkcX62zHe1Nt6xU", - y: "AHsk6BioGM7MZWeXOE_49AGmtuaXFT3Ill3DYtz9uYg", - d: "WDeYo4o1heCF9l_2VIaClRyIeO16zsMlN8UG6Le9dU8", - "key_ops": ["sign"], - ext: true, - }; - - const key = await crypto.subtle.importKey( - "jwk", - jwk, - alg, - true, - ["sign"], - ); - - assert(key instanceof CryptoKey); - assertEquals(key.type, "private"); -}); - -// https://github.com/denoland/deno/issues/15523 -Deno.test(async function testECspkiRoundTrip() { - const alg = { name: "ECDH", namedCurve: "P-256" }; - const { publicKey } = await crypto.subtle.generateKey(alg, true, [ - "deriveBits", - ]); - const spki = await crypto.subtle.exportKey("spki", publicKey); - await crypto.subtle.importKey("spki", spki, alg, true, []); -}); - -Deno.test(async function testHmacJwkImport() { - await crypto.subtle.importKey( - "jwk", - { - kty: "oct", - use: "sig", - alg: "HS256", - k: "hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg", - }, - { name: "HMAC", hash: "SHA-256" }, - false, - ["sign", "verify"], - ); -}); - -Deno.test(async function p521Import() { - const jwk = { - "crv": "P-521", - "ext": true, - "key_ops": [ - "verify", - ], - "kty": "EC", - "x": - "AXkSI8nfkc6bu3fifXGuKKbu08g5LKPfxUNQJJYzzPgmN8XLDzx0C9Sdeejl1XoWGrheKPHl0k4tUmHw0cdInpfj", - "y": - "AT4vjsO0bzVRlN3Wthv9DewncDXS2tlTob5QojV8WX1GzOAikRfWFEP3nspoSv88U447acZAsk5IvgGJuVjgMDlx", - }; - const algorithm = { name: "ECDSA", namedCurve: "P-521" }; - - const key = await crypto.subtle.importKey( - "jwk", - jwk, - algorithm, - true, - ["verify"], - ); - - assert(key instanceof CryptoKey); -}); - -Deno.test(async function p521Generate() { - const algorithm = { name: "ECDSA", namedCurve: "P-521" }; - - const key = await crypto.subtle.generateKey( - algorithm, - true, - ["sign", "verify"], - ); - - assert(key.privateKey instanceof CryptoKey); - assert(key.publicKey instanceof CryptoKey); -}); diff --git a/cli/tests/unit/webgpu_test.ts b/cli/tests/unit/webgpu_test.ts deleted file mode 100644 index 75ae34981..000000000 --- a/cli/tests/unit/webgpu_test.ts +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import { assert, assertEquals, assertThrows } from "./test_util.ts"; - -let isCI: boolean; -try { - isCI = (Deno.env.get("CI")?.length ?? 0) > 0; -} catch { - isCI = true; -} - -// Skip these tests on linux CI, because the vulkan emulator is not good enough -// yet, and skip on macOS CI because these do not have virtual GPUs. -const isLinuxOrMacCI = - (Deno.build.os === "linux" || Deno.build.os === "darwin") && isCI; -// Skip these tests in WSL because it doesn't have good GPU support. -const isWsl = await checkIsWsl(); - -Deno.test({ - permissions: { read: true, env: true }, - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuComputePass() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - - const numbers = [1, 4, 3, 295]; - - const device = await adapter.requestDevice(); - assert(device); - - const shaderCode = await Deno.readTextFile( - "cli/tests/testdata/webgpu/computepass_shader.wgsl", - ); - - const shaderModule = device.createShaderModule({ - code: shaderCode, - }); - - const size = new Uint32Array(numbers).byteLength; - - const stagingBuffer = device.createBuffer({ - size: size, - usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST, - }); - - const storageBuffer = device.createBuffer({ - label: "Storage Buffer", - size: size, - usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | - GPUBufferUsage.COPY_SRC, - mappedAtCreation: true, - }); - - const buf = new Uint32Array(storageBuffer.getMappedRange()); - - buf.set(numbers); - - storageBuffer.unmap(); - - const computePipeline = device.createComputePipeline({ - layout: "auto", - compute: { - module: shaderModule, - entryPoint: "main", - }, - }); - const bindGroupLayout = computePipeline.getBindGroupLayout(0); - - const bindGroup = device.createBindGroup({ - layout: bindGroupLayout, - entries: [ - { - binding: 0, - resource: { - buffer: storageBuffer, - }, - }, - ], - }); - - const encoder = device.createCommandEncoder(); - - const computePass = encoder.beginComputePass(); - computePass.setPipeline(computePipeline); - computePass.setBindGroup(0, bindGroup); - computePass.insertDebugMarker("compute collatz iterations"); - computePass.dispatchWorkgroups(numbers.length); - computePass.end(); - - encoder.copyBufferToBuffer(storageBuffer, 0, stagingBuffer, 0, size); - - device.queue.submit([encoder.finish()]); - - await stagingBuffer.mapAsync(1); - - const data = stagingBuffer.getMappedRange(); - - assertEquals(new Uint32Array(data), new Uint32Array([0, 2, 7, 55])); - - stagingBuffer.unmap(); - - device.destroy(); - - // TODO(lucacasonato): webgpu spec should add a explicit destroy method for - // adapters. - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -Deno.test({ - permissions: { read: true, env: true }, - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuHelloTriangle() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - - const device = await adapter.requestDevice(); - assert(device); - - const shaderCode = await Deno.readTextFile( - "cli/tests/testdata/webgpu/hellotriangle_shader.wgsl", - ); - - const shaderModule = device.createShaderModule({ - code: shaderCode, - }); - - const pipelineLayout = device.createPipelineLayout({ - bindGroupLayouts: [], - }); - - const renderPipeline = device.createRenderPipeline({ - layout: pipelineLayout, - vertex: { - module: shaderModule, - entryPoint: "vs_main", - }, - fragment: { - module: shaderModule, - entryPoint: "fs_main", - targets: [ - { - format: "rgba8unorm-srgb", - }, - ], - }, - }); - - const dimensions = { - width: 200, - height: 200, - }; - const unpaddedBytesPerRow = dimensions.width * 4; - const align = 256; - const paddedBytesPerRowPadding = (align - unpaddedBytesPerRow % align) % - align; - const paddedBytesPerRow = unpaddedBytesPerRow + paddedBytesPerRowPadding; - - const outputBuffer = device.createBuffer({ - label: "Capture", - size: paddedBytesPerRow * dimensions.height, - usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST, - }); - const texture = device.createTexture({ - label: "Capture", - size: dimensions, - format: "rgba8unorm-srgb", - usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC, - }); - - const encoder = device.createCommandEncoder(); - const view = texture.createView(); - const renderPass = encoder.beginRenderPass({ - colorAttachments: [ - { - view, - storeOp: "store", - loadOp: "clear", - clearValue: [0, 1, 0, 1], - }, - ], - }); - renderPass.setPipeline(renderPipeline); - renderPass.draw(3, 1); - renderPass.end(); - - encoder.copyTextureToBuffer( - { - texture, - }, - { - buffer: outputBuffer, - bytesPerRow: paddedBytesPerRow, - rowsPerImage: 0, - }, - dimensions, - ); - - const bundle = encoder.finish(); - device.queue.submit([bundle]); - - await outputBuffer.mapAsync(1); - const data = new Uint8Array(outputBuffer.getMappedRange()); - - assertEquals( - data, - await Deno.readFile("cli/tests/testdata/webgpu/hellotriangle.out"), - ); - - outputBuffer.unmap(); - - device.destroy(); - - // TODO(lucacasonato): webgpu spec should add a explicit destroy method for - // adapters. - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -Deno.test({ - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuAdapterHasFeatures() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - assert(adapter.features); - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -Deno.test({ - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuNullWindowSurfaceThrows() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - - const device = await adapter.requestDevice(); - assert(device); - - assertThrows( - () => { - new Deno.UnsafeWindowSurface("cocoa", null, null); - }, - ); - - device.destroy(); - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -Deno.test(function getPreferredCanvasFormat() { - const preferredFormat = navigator.gpu.getPreferredCanvasFormat(); - assert(preferredFormat === "bgra8unorm" || preferredFormat === "rgba8unorm"); -}); - -async function checkIsWsl() { - return Deno.build.os === "linux" && await hasMicrosoftProcVersion(); - - async function hasMicrosoftProcVersion() { - // https://github.com/microsoft/WSL/issues/423#issuecomment-221627364 - try { - const procVersion = await Deno.readTextFile("/proc/version"); - return /microsoft/i.test(procVersion); - } catch { - return false; - } - } -} diff --git a/cli/tests/unit/websocket_test.ts b/cli/tests/unit/websocket_test.ts deleted file mode 100644 index 42681c187..000000000 --- a/cli/tests/unit/websocket_test.ts +++ /dev/null @@ -1,738 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { assert, assertEquals, assertThrows, fail } from "./test_util.ts"; - -const servePort = 4248; -const serveUrl = `ws://localhost:${servePort}/`; - -Deno.test({ permissions: "none" }, function websocketPermissionless() { - assertThrows( - () => new WebSocket("ws://localhost"), - Deno.errors.PermissionDenied, - ); -}); - -Deno.test(async function websocketConstructorTakeURLObjectAsParameter() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket(new URL("ws://localhost:4242/")); - assertEquals(ws.url, "ws://localhost:4242/"); - ws.onerror = (e) => reject(e); - ws.onopen = () => ws.close(); - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test(async function websocketH2SendSmallPacket() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket(new URL("wss://localhost:4249/")); - assertEquals(ws.url, "wss://localhost:4249/"); - let messageCount = 0; - ws.onerror = (e) => reject(e); - ws.onopen = () => { - ws.send("a".repeat(16)); - ws.send("a".repeat(16)); - ws.send("a".repeat(16)); - }; - ws.onmessage = () => { - if (++messageCount == 3) { - ws.close(); - } - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test(async function websocketH2SendLargePacket() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket(new URL("wss://localhost:4249/")); - assertEquals(ws.url, "wss://localhost:4249/"); - let messageCount = 0; - ws.onerror = (e) => reject(e); - ws.onopen = () => { - ws.send("a".repeat(65000)); - ws.send("a".repeat(65000)); - ws.send("a".repeat(65000)); - }; - ws.onmessage = () => { - if (++messageCount == 3) { - ws.close(); - } - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test(async function websocketSendLargePacket() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket(new URL("wss://localhost:4243/")); - assertEquals(ws.url, "wss://localhost:4243/"); - ws.onerror = (e) => reject(e); - ws.onopen = () => { - ws.send("a".repeat(65000)); - }; - ws.onmessage = () => { - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test(async function websocketSendLargeBinaryPacket() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket(new URL("wss://localhost:4243/")); - ws.binaryType = "arraybuffer"; - assertEquals(ws.url, "wss://localhost:4243/"); - ws.onerror = (e) => reject(e); - ws.onopen = () => { - ws.send(new Uint8Array(65000)); - }; - ws.onmessage = (msg: MessageEvent) => { - assertEquals(msg.data.byteLength, 65000); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test(async function websocketSendLargeBlobPacket() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket(new URL("wss://localhost:4243/")); - ws.binaryType = "arraybuffer"; - assertEquals(ws.url, "wss://localhost:4243/"); - ws.onerror = (e) => reject(e); - ws.onopen = () => { - ws.send(new Blob(["a".repeat(65000)])); - }; - ws.onmessage = (msg: MessageEvent) => { - assertEquals(msg.data.byteLength, 65000); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -// https://github.com/denoland/deno/pull/17762 -// https://github.com/denoland/deno/issues/17761 -Deno.test(async function websocketPingPong() { - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4245/"); - assertEquals(ws.url, "ws://localhost:4245/"); - ws.onerror = (e) => reject(e); - ws.onmessage = (e) => { - ws.send(e.data); - }; - ws.onclose = () => { - resolve(); - }; - await promise; - ws.close(); -}); - -// TODO(mmastrac): This requires us to ignore bad certs -// Deno.test(async function websocketSecureConnect() { -// const { promise, resolve } = Promise.withResolvers<void>(); -// const ws = new WebSocket("wss://localhost:4243/"); -// assertEquals(ws.url, "wss://localhost:4243/"); -// ws.onerror = (error) => { -// console.log(error); -// fail(); -// }; -// ws.onopen = () => ws.close(); -// ws.onclose = () => { -// resolve(); -// }; -// await promise; -// }); - -// https://github.com/denoland/deno/issues/18700 -Deno.test( - { sanitizeOps: false, sanitizeResources: false }, - async function websocketWriteLock() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (req) => { - const { socket, response } = Deno.upgradeWebSocket(req); - socket.onopen = function () { - setTimeout(() => socket.send("Hello"), 500); - }; - socket.onmessage = function (e) { - assertEquals(e.data, "Hello"); - ac.abort(); - }; - return response; - }, - signal: ac.signal, - onListen: () => listeningDeferred.resolve(), - hostname: "localhost", - port: servePort, - }); - - await listeningDeferred.promise; - const deferred = Promise.withResolvers<void>(); - const ws = new WebSocket(serveUrl); - assertEquals(ws.url, serveUrl); - ws.onerror = () => fail(); - ws.onmessage = (e) => { - assertEquals(e.data, "Hello"); - setTimeout(() => { - ws.send(e.data); - }, 1000); - deferred.resolve(); - }; - ws.onclose = () => { - deferred.resolve(); - }; - - await Promise.all([deferred.promise, server.finished]); - ws.close(); - }, -); - -// https://github.com/denoland/deno/issues/18775 -Deno.test({ - sanitizeOps: false, - sanitizeResources: false, -}, async function websocketDoubleClose() { - const deferred = Promise.withResolvers<void>(); - - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (req) => { - const { response, socket } = Deno.upgradeWebSocket(req); - let called = false; - socket.onopen = () => socket.send("Hello"); - socket.onmessage = () => { - assert(!called); - called = true; - socket.send("bye"); - socket.close(); - }; - socket.onclose = () => ac.abort(); - socket.onerror = () => fail(); - return response; - }, - signal: ac.signal, - onListen: () => listeningDeferred.resolve(), - hostname: "localhost", - port: servePort, - }); - - await listeningDeferred.promise; - - const ws = new WebSocket(serveUrl); - assertEquals(ws.url, serveUrl); - ws.onerror = () => fail(); - ws.onmessage = (m: MessageEvent) => { - if (m.data == "Hello") ws.send("bye"); - }; - ws.onclose = () => { - deferred.resolve(); - }; - await Promise.all([deferred.promise, server.finished]); -}); - -// https://github.com/denoland/deno/issues/19483 -Deno.test({ - sanitizeOps: false, - sanitizeResources: false, -}, async function websocketCloseFlushes() { - const deferred = Promise.withResolvers<void>(); - - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (req) => { - const { response, socket } = Deno.upgradeWebSocket(req); - socket.onopen = () => socket.send("Hello"); - socket.onmessage = () => { - socket.send("Bye"); - socket.close(); - }; - socket.onclose = () => ac.abort(); - socket.onerror = () => fail(); - return response; - }, - signal: ac.signal, - onListen: () => listeningDeferred.resolve(), - hostname: "localhost", - port: servePort, - }); - - await listeningDeferred.promise; - - const ws = new WebSocket(serveUrl); - assertEquals(ws.url, serveUrl); - let seenBye = false; - ws.onerror = () => fail(); - ws.onmessage = ({ data }) => { - if (data == "Hello") { - ws.send("Hello!"); - } else { - assertEquals(data, "Bye"); - seenBye = true; - } - }; - ws.onclose = () => { - deferred.resolve(); - }; - await Promise.all([deferred.promise, server.finished]); - - assert(seenBye); -}); - -Deno.test( - { sanitizeOps: false }, - function websocketConstructorWithPrototypePollution() { - const originalSymbolIterator = Array.prototype[Symbol.iterator]; - try { - Array.prototype[Symbol.iterator] = () => { - throw Error("unreachable"); - }; - assertThrows(() => { - new WebSocket( - new URL("ws://localhost:4242/"), - // Allow `Symbol.iterator` to be called in WebIDL conversion to `sequence<DOMString>` - // deno-lint-ignore no-explicit-any - ["soap", "soap"].values() as any, - ); - }, DOMException); - } finally { - Array.prototype[Symbol.iterator] = originalSymbolIterator; - } - }, -); - -Deno.test(async function websocketTlsSocketWorks() { - const cert = await Deno.readTextFile("cli/tests/testdata/tls/localhost.crt"); - const key = await Deno.readTextFile("cli/tests/testdata/tls/localhost.key"); - - const messages: string[] = [], - errors: { server?: Event; client?: Event }[] = []; - const promise = new Promise((okay, nope) => { - const ac = new AbortController(); - const server = Deno.serve({ - handler: (req) => { - const { response, socket } = Deno.upgradeWebSocket(req); - socket.onopen = () => socket.send("ping"); - socket.onmessage = (e) => { - messages.push(e.data); - socket.close(); - }; - socket.onerror = (e) => errors.push({ server: e }); - socket.onclose = () => ac.abort(); - return response; - }, - signal: ac.signal, - hostname: "localhost", - port: servePort, - cert, - key, - }); - setTimeout(() => { - const ws = new WebSocket(`wss://localhost:${servePort}`); - ws.onmessage = (e) => { - messages.push(e.data); - ws.send("pong"); - }; - ws.onerror = (e) => { - errors.push({ client: e }); - nope(); - }; - ws.onclose = () => okay(server.finished); - }, 1000); - }); - - const finished = await promise; - - assertEquals(errors, []); - assertEquals(messages, ["ping", "pong"]); - - await finished; -}); - -// https://github.com/denoland/deno/issues/15340 -Deno.test( - async function websocketServerFieldInit() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (req) => { - const { socket, response } = Deno.upgradeWebSocket(req, { - idleTimeout: 0, - }); - socket.onopen = function () { - assert(typeof socket.url == "string"); - assert(socket.readyState == WebSocket.OPEN); - assert(socket.protocol == ""); - assert(socket.binaryType == "arraybuffer"); - socket.close(); - }; - socket.onclose = () => ac.abort(); - return response; - }, - signal: ac.signal, - onListen: () => listeningDeferred.resolve(), - hostname: "localhost", - port: servePort, - }); - - await listeningDeferred.promise; - const deferred = Promise.withResolvers<void>(); - const ws = new WebSocket(serveUrl); - assertEquals(ws.url, serveUrl); - ws.onerror = () => fail(); - ws.onclose = () => { - deferred.resolve(); - }; - - await Promise.all([deferred.promise, server.finished]); - }, -); - -Deno.test( - { sanitizeOps: false }, - async function websocketServerGetsGhosted() { - const ac = new AbortController(); - const listeningDeferred = Promise.withResolvers<void>(); - - const server = Deno.serve({ - handler: (req) => { - const { socket, response } = Deno.upgradeWebSocket(req, { - idleTimeout: 2, - }); - socket.onerror = () => socket.close(); - socket.onclose = () => ac.abort(); - return response; - }, - signal: ac.signal, - onListen: () => listeningDeferred.resolve(), - hostname: "localhost", - port: servePort, - }); - - await listeningDeferred.promise; - const r = await fetch("http://localhost:4545/ghost_ws_client"); - assertEquals(r.status, 200); - await r.body?.cancel(); - - await server.finished; - }, -); - -Deno.test("invalid scheme", () => { - assertThrows(() => new WebSocket("foo://localhost:4242")); -}); - -Deno.test("fragment", () => { - assertThrows(() => new WebSocket("ws://localhost:4242/#")); - assertThrows(() => new WebSocket("ws://localhost:4242/#foo")); -}); - -Deno.test("duplicate protocols", () => { - assertThrows(() => new WebSocket("ws://localhost:4242", ["foo", "foo"])); -}); - -Deno.test("invalid server", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:2121"); - let err = false; - ws.onerror = () => { - err = true; - }; - ws.onclose = () => { - if (err) { - resolve(); - } else { - fail(); - } - }; - ws.onopen = () => fail(); - await promise; -}); - -Deno.test("connect & close", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.onerror = () => fail(); - ws.onopen = () => { - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("connect & abort", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.close(); - let err = false; - ws.onerror = () => { - err = true; - }; - ws.onclose = () => { - if (err) { - resolve(); - } else { - fail(); - } - }; - ws.onopen = () => fail(); - await promise; -}); - -Deno.test("connect & close custom valid code", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.onerror = () => fail(); - ws.onopen = () => ws.close(1000); - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("connect & close custom invalid code", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.onerror = () => fail(); - ws.onopen = () => { - assertThrows(() => ws.close(1001)); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("connect & close custom valid reason", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.onerror = () => fail(); - ws.onopen = () => ws.close(1000, "foo"); - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("connect & close custom invalid reason", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.onerror = () => fail(); - ws.onopen = () => { - assertThrows(() => ws.close(1000, "".padEnd(124, "o"))); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo string", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.onerror = () => fail(); - ws.onopen = () => ws.send("foo"); - ws.onmessage = (e) => { - assertEquals(e.data, "foo"); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo string tls", async () => { - const deferred1 = Promise.withResolvers<void>(); - const deferred2 = Promise.withResolvers<void>(); - const ws = new WebSocket("wss://localhost:4243"); - ws.onerror = () => fail(); - ws.onopen = () => ws.send("foo"); - ws.onmessage = (e) => { - assertEquals(e.data, "foo"); - ws.close(); - deferred1.resolve(); - }; - ws.onclose = () => { - deferred2.resolve(); - }; - await deferred1.promise; - await deferred2.promise; -}); - -Deno.test("websocket error", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("wss://localhost:4242"); - ws.onopen = () => fail(); - ws.onerror = (err) => { - assert(err instanceof ErrorEvent); - assertEquals( - err.message, - "NetworkError: failed to connect to WebSocket: received corrupt message of type InvalidContentType", - ); - resolve(); - }; - await promise; -}); - -Deno.test("echo blob with binaryType blob", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - const blob = new Blob(["foo"]); - ws.onerror = () => fail(); - ws.onopen = () => ws.send(blob); - ws.onmessage = (e) => { - e.data.text().then((actual: string) => { - blob.text().then((expected) => { - assertEquals(actual, expected); - }); - }); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo blob with binaryType arraybuffer", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.binaryType = "arraybuffer"; - const blob = new Blob(["foo"]); - ws.onerror = () => fail(); - ws.onopen = () => ws.send(blob); - ws.onmessage = (e) => { - blob.arrayBuffer().then((expected) => { - assertEquals(e.data, expected); - }); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo uint8array with binaryType blob", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - const uint = new Uint8Array([102, 111, 111]); - ws.onerror = () => fail(); - ws.onopen = () => ws.send(uint); - ws.onmessage = (e) => { - e.data.arrayBuffer().then((actual: ArrayBuffer) => { - assertEquals(actual, uint.buffer); - }); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo uint8array with binaryType arraybuffer", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.binaryType = "arraybuffer"; - const uint = new Uint8Array([102, 111, 111]); - ws.onerror = () => fail(); - ws.onopen = () => ws.send(uint); - ws.onmessage = (e) => { - assertEquals(e.data, uint.buffer); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo arraybuffer with binaryType blob", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - const buffer = new ArrayBuffer(3); - ws.onerror = () => fail(); - ws.onopen = () => ws.send(buffer); - ws.onmessage = (e) => { - e.data.arrayBuffer().then((actual: ArrayBuffer) => { - assertEquals(actual, buffer); - }); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("echo arraybuffer with binaryType arraybuffer", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - ws.binaryType = "arraybuffer"; - const buffer = new ArrayBuffer(3); - ws.onerror = () => fail(); - ws.onopen = () => ws.send(buffer); - ws.onmessage = (e) => { - assertEquals(e.data, buffer); - ws.close(); - }; - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("Event Handlers order", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4242"); - const arr: number[] = []; - ws.onerror = () => fail(); - ws.addEventListener("message", () => arr.push(1)); - ws.onmessage = () => fail(); - ws.addEventListener("message", () => { - arr.push(3); - ws.close(); - assertEquals(arr, [1, 2, 3]); - }); - ws.onmessage = () => arr.push(2); - ws.onopen = () => ws.send("Echo"); - ws.onclose = () => { - resolve(); - }; - await promise; -}); - -Deno.test("Close without frame", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const ws = new WebSocket("ws://localhost:4244"); - ws.onerror = () => fail(); - ws.onclose = (e) => { - assertEquals(e.code, 1005); - resolve(); - }; - await promise; -}); diff --git a/cli/tests/unit_node/fs_test.ts b/cli/tests/unit_node/fs_test.ts deleted file mode 100644 index c7698cb7d..000000000 --- a/cli/tests/unit_node/fs_test.ts +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import { - assert, - assertEquals, - assertThrows, -} from "@test_util/std/assert/mod.ts"; -import { join } from "node:path"; -import { tmpdir } from "node:os"; -import { - constants, - existsSync, - mkdtempSync, - promises, - readFileSync, - writeFileSync, -} from "node:fs"; -import { constants as fsPromiseConstants, cp } from "node:fs/promises"; -import { pathToAbsoluteFileUrl } from "../unit/test_util.ts"; - -Deno.test( - "[node/fs writeFileSync] write file without option", - () => { - const data = "Hello"; - const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; - - writeFileSync(filename, data); - const dataRead = readFileSync(filename, "utf8"); - - assert(dataRead === "Hello"); - }, -); - -Deno.test( - "[node/fs writeFileSync] write file with option ASCII", - () => { - const data = "Hello"; - const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; - - writeFileSync(filename, data, { encoding: "ascii" }); - const dataRead = readFileSync(filename, "utf8"); - - assert(dataRead === "Hello"); - }, -); - -Deno.test( - "[node/fs writeFileSync] write file throws error when encoding is not implemented", - () => { - const data = "Hello"; - const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; - - assertThrows( - () => writeFileSync(filename, data, { encoding: "utf16le" }), - 'The value "utf16le" is invalid for option "encoding"', - ); - }, -); - -Deno.test( - "[node/fs existsSync] path", - { permissions: { read: true } }, - () => { - assert(existsSync("cli/tests/testdata/assets/fixture.json")); - }, -); - -Deno.test( - "[node/fs existsSync] url", - { permissions: { read: true } }, - () => { - assert(existsSync( - pathToAbsoluteFileUrl("cli/tests/testdata/assets/fixture.json"), - )); - }, -); - -Deno.test( - "[node/fs existsSync] no permission", - { permissions: { read: false } }, - () => { - assertThrows(() => { - existsSync("cli/tests/testdata/assets/fixture.json"); - }, Deno.errors.PermissionDenied); - }, -); - -Deno.test( - "[node/fs existsSync] not exists", - { permissions: { read: true } }, - () => { - assert(!existsSync("bad_filename")); - }, -); - -Deno.test( - "[node/fs/promises constants] is the same as from node:fs", - () => { - assertEquals(constants, fsPromiseConstants); - assertEquals(constants, promises.constants); - }, -); - -Deno.test( - "[node/fs/promises cp] copy file", - async () => { - const src = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; - const dest = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; - writeFileSync(src, "Hello"); - - await cp(src, dest); - - const dataRead = readFileSync(dest, "utf8"); - assert(dataRead === "Hello"); - }, -); diff --git a/cli/tests/unit_node/http_test.ts b/cli/tests/unit_node/http_test.ts deleted file mode 100644 index c94d05ad9..000000000 --- a/cli/tests/unit_node/http_test.ts +++ /dev/null @@ -1,940 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import EventEmitter from "node:events"; -import http, { type RequestOptions } from "node:http"; -import https from "node:https"; -import { assert, assertEquals, fail } from "@test_util/std/assert/mod.ts"; -import { assertSpyCalls, spy } from "@test_util/std/testing/mock.ts"; - -import { gzip } from "node:zlib"; -import { Buffer } from "node:buffer"; -import { serve } from "@test_util/std/http/server.ts"; -import { execCode } from "../unit/test_util.ts"; - -Deno.test("[node/http listen]", async () => { - { - const server = http.createServer(); - assertEquals(0, EventEmitter.listenerCount(server, "request")); - } - - { - const server = http.createServer(() => {}); - assertEquals(1, EventEmitter.listenerCount(server, "request")); - } - - { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer(); - - server.listen(() => { - server.close(); - }); - server.on("close", () => { - resolve(); - }); - - await promise; - } - - { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer(); - - server.listen().on("listening", () => { - server.close(); - }); - server.on("close", () => { - resolve(); - }); - - await promise; - } - - for (const port of [0, -0, 0.0, "0", null, undefined]) { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer(); - - server.listen(port, () => { - server.close(); - }); - server.on("close", () => { - resolve(); - }); - - await promise; - } -}); - -Deno.test("[node/http close]", async () => { - { - const deferred1 = Promise.withResolvers<void>(); - const deferred2 = Promise.withResolvers<void>(); - // Node quirk: callback gets exception object, event listener does not. - // deno-lint-ignore no-explicit-any - const server = http.createServer().close((err: any) => { - assertEquals(err.code, "ERR_SERVER_NOT_RUNNING"); - deferred1.resolve(); - }); - // deno-lint-ignore no-explicit-any - server.on("close", (err: any) => { - assertEquals(err, undefined); - deferred2.resolve(); - }); - server.on("listening", () => { - throw Error("unreachable"); - }); - await deferred1.promise; - await deferred2.promise; - } - - { - const deferred1 = Promise.withResolvers<void>(); - const deferred2 = Promise.withResolvers<void>(); - const server = http.createServer().listen().close((err) => { - assertEquals(err, undefined); - deferred1.resolve(); - }); - // deno-lint-ignore no-explicit-any - server.on("close", (err: any) => { - assertEquals(err, undefined); - deferred2.resolve(); - }); - server.on("listening", () => { - throw Error("unreachable"); - }); - await deferred1.promise; - await deferred2.promise; - } -}); - -Deno.test("[node/http] chunked response", async () => { - for ( - const body of [undefined, "", "ok"] - ) { - const expected = body ?? ""; - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = http.createServer((_req, res) => { - res.writeHead(200, { "transfer-encoding": "chunked" }); - res.end(body); - }); - - server.listen(async () => { - const res = await fetch( - // deno-lint-ignore no-explicit-any - `http://127.0.0.1:${(server.address() as any).port}/`, - ); - assert(res.ok); - - const actual = await res.text(); - assertEquals(actual, expected); - - server.close(() => resolve()); - }); - - await promise; - } -}); - -// Test empty chunks: https://github.com/denoland/deno/issues/17194 -Deno.test("[node/http] empty chunk in the middle of response", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - - const server = http.createServer((_req, res) => { - res.write("a"); - res.write(""); - res.write("b"); - res.end(); - }); - - server.listen(async () => { - const res = await fetch( - // deno-lint-ignore no-explicit-any - `http://127.0.0.1:${(server.address() as any).port}/`, - ); - const actual = await res.text(); - assertEquals(actual, "ab"); - server.close(() => resolve()); - }); - - await promise; -}); - -Deno.test("[node/http] server can respond with 101, 204, 205, 304 status", async () => { - for (const status of [101, 204, 205, 304]) { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((_req, res) => { - res.statusCode = status; - res.end(""); - }); - server.listen(async () => { - const res = await fetch( - // deno-lint-ignore no-explicit-any - `http://127.0.0.1:${(server.address() as any).port}/`, - ); - await res.arrayBuffer(); - assertEquals(res.status, status); - server.close(() => resolve()); - }); - await promise; - } -}); - -Deno.test("[node/http] IncomingRequest socket has remoteAddress + remotePort", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - - let remoteAddress: string | undefined; - let remotePort: number | undefined; - const server = http.createServer((req, res) => { - remoteAddress = req.socket.remoteAddress; - remotePort = req.socket.remotePort; - res.end(); - }); - server.listen(async () => { - // deno-lint-ignore no-explicit-any - const port = (server.address() as any).port; - const res = await fetch( - `http://127.0.0.1:${port}/`, - ); - await res.arrayBuffer(); - assertEquals(remoteAddress, "127.0.0.1"); - assertEquals(typeof remotePort, "number"); - server.close(() => resolve()); - }); - await promise; -}); - -Deno.test("[node/http] request default protocol", async () => { - const deferred1 = Promise.withResolvers<void>(); - const deferred2 = Promise.withResolvers<void>(); - const server = http.createServer((_, res) => { - res.end("ok"); - }); - - // @ts-ignore IncomingMessageForClient - // deno-lint-ignore no-explicit-any - let clientRes: any; - // deno-lint-ignore no-explicit-any - let clientReq: any; - server.listen(() => { - clientReq = http.request( - // deno-lint-ignore no-explicit-any - { host: "localhost", port: (server.address() as any).port }, - (res) => { - assert(res.socket instanceof EventEmitter); - assertEquals(res.complete, false); - res.on("data", () => {}); - res.on("end", () => { - server.close(); - }); - clientRes = res; - assertEquals(res.statusCode, 200); - deferred2.resolve(); - }, - ); - clientReq.end(); - }); - server.on("close", () => { - deferred1.resolve(); - }); - await deferred1.promise; - await deferred2.promise; - assert(clientReq.socket instanceof EventEmitter); - assertEquals(clientRes!.complete, true); -}); - -Deno.test("[node/http] request with headers", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((req, res) => { - assertEquals(req.headers["x-foo"], "bar"); - res.end("ok"); - }); - server.listen(() => { - const req = http.request( - { - host: "localhost", - // deno-lint-ignore no-explicit-any - port: (server.address() as any).port, - headers: { "x-foo": "bar" }, - }, - (res) => { - res.on("data", () => {}); - res.on("end", () => { - server.close(); - }); - assertEquals(res.statusCode, 200); - }, - ); - req.end(); - }); - server.on("close", () => { - resolve(); - }); - await promise; -}); - -Deno.test("[node/http] non-string buffer response", { - // TODO(kt3k): Enable sanitizer. A "zlib" resource is leaked in this test case. - sanitizeResources: false, -}, async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((_, res) => { - res.socket!.end(); - gzip( - Buffer.from("a".repeat(100), "utf8"), - {}, - (_err: Error | null, data: Buffer) => { - res.setHeader("Content-Encoding", "gzip"); - res.end(data); - }, - ); - }); - server.listen(async () => { - const res = await fetch( - // deno-lint-ignore no-explicit-any - `http://localhost:${(server.address() as any).port}`, - ); - try { - const text = await res.text(); - assertEquals(text, "a".repeat(100)); - } catch (e) { - server.emit("error", e); - } finally { - server.close(() => resolve()); - } - }); - await promise; -}); - -// TODO(kt3k): Enable this test -// Currently IncomingMessage constructor has incompatible signature. -/* -Deno.test("[node/http] http.IncomingMessage can be created without url", () => { - const message = new http.IncomingMessage( - // adapted from https://github.com/dougmoscrop/serverless-http/blob/80bfb3e940057d694874a8b0bc12ad96d2abe7ab/lib/request.js#L7 - { - // @ts-expect-error - non-request properties will also be passed in, e.g. by serverless-http - encrypted: true, - readable: false, - remoteAddress: "foo", - address: () => ({ port: 443 }), - // deno-lint-ignore no-explicit-any - end: Function.prototype as any, - // deno-lint-ignore no-explicit-any - destroy: Function.prototype as any, - }, - ); - message.url = "https://example.com"; -}); -*/ - -Deno.test("[node/http] send request with non-chunked body", async () => { - let requestHeaders: Headers; - let requestBody = ""; - - const hostname = "localhost"; - const port = 4505; - - // NOTE: Instead of node/http.createServer(), serve() in std/http/server.ts is used. - // https://github.com/denoland/deno_std/pull/2755#discussion_r1005592634 - const handler = async (req: Request) => { - requestHeaders = req.headers; - requestBody = await req.text(); - return new Response("ok"); - }; - const abortController = new AbortController(); - const servePromise = serve(handler, { - hostname, - port, - signal: abortController.signal, - onListen: undefined, - }); - - const opts: RequestOptions = { - host: hostname, - port, - method: "POST", - headers: { - "Content-Type": "text/plain; charset=utf-8", - "Content-Length": "11", - }, - }; - const req = http.request(opts, (res) => { - res.on("data", () => {}); - res.on("end", () => { - abortController.abort(); - }); - assertEquals(res.statusCode, 200); - assertEquals(requestHeaders.get("content-length"), "11"); - assertEquals(requestHeaders.has("transfer-encoding"), false); - assertEquals(requestBody, "hello world"); - }); - req.on("socket", (socket) => { - assert(socket.writable); - assert(socket.readable); - socket.setKeepAlive(); - socket.destroy(); - socket.setTimeout(100); - }); - req.write("hello "); - req.write("world"); - req.end(); - - await servePromise; -}); - -Deno.test("[node/http] send request with chunked body", async () => { - let requestHeaders: Headers; - let requestBody = ""; - - const hostname = "localhost"; - const port = 4505; - - // NOTE: Instead of node/http.createServer(), serve() in std/http/server.ts is used. - // https://github.com/denoland/deno_std/pull/2755#discussion_r1005592634 - const handler = async (req: Request) => { - requestHeaders = req.headers; - requestBody = await req.text(); - return new Response("ok"); - }; - const abortController = new AbortController(); - const servePromise = serve(handler, { - hostname, - port, - signal: abortController.signal, - onListen: undefined, - }); - - const opts: RequestOptions = { - host: hostname, - port, - method: "POST", - headers: { - "Content-Type": "text/plain; charset=utf-8", - "Content-Length": "11", - "Transfer-Encoding": "chunked", - }, - }; - const req = http.request(opts, (res) => { - res.on("data", () => {}); - res.on("end", () => { - abortController.abort(); - }); - assertEquals(res.statusCode, 200); - assertEquals(requestHeaders.has("content-length"), false); - assertEquals(requestHeaders.get("transfer-encoding"), "chunked"); - assertEquals(requestBody, "hello world"); - }); - req.write("hello "); - req.write("world"); - req.end(); - - await servePromise; -}); - -Deno.test("[node/http] send request with chunked body as default", async () => { - let requestHeaders: Headers; - let requestBody = ""; - - const hostname = "localhost"; - const port = 4505; - - // NOTE: Instead of node/http.createServer(), serve() in std/http/server.ts is used. - // https://github.com/denoland/deno_std/pull/2755#discussion_r1005592634 - const handler = async (req: Request) => { - requestHeaders = req.headers; - requestBody = await req.text(); - return new Response("ok"); - }; - const abortController = new AbortController(); - const servePromise = serve(handler, { - hostname, - port, - signal: abortController.signal, - onListen: undefined, - }); - - const opts: RequestOptions = { - host: hostname, - port, - method: "POST", - headers: { - "Content-Type": "text/plain; charset=utf-8", - }, - }; - const req = http.request(opts, (res) => { - res.on("data", () => {}); - res.on("end", () => { - abortController.abort(); - }); - assertEquals(res.statusCode, 200); - assertEquals(requestHeaders.has("content-length"), false); - assertEquals(requestHeaders.get("transfer-encoding"), "chunked"); - assertEquals(requestBody, "hello world"); - }); - req.write("hello "); - req.write("world"); - req.end(); - - await servePromise; -}); - -Deno.test("[node/http] ServerResponse _implicitHeader", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((_req, res) => { - const writeHeadSpy = spy(res, "writeHead"); - // deno-lint-ignore no-explicit-any - (res as any)._implicitHeader(); - assertSpyCalls(writeHeadSpy, 1); - writeHeadSpy.restore(); - res.end("Hello World"); - }); - - server.listen(async () => { - const { port } = server.address() as { port: number }; - const res = await fetch(`http://localhost:${port}`); - assertEquals(await res.text(), "Hello World"); - server.close(() => { - resolve(); - }); - }); - - await promise; -}); - -// https://github.com/denoland/deno/issues/21509 -Deno.test("[node/http] ServerResponse flushHeaders", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((_req, res) => { - res.flushHeaders(); // no-op - res.end("Hello World"); - }); - - server.listen(async () => { - const { port } = server.address() as { port: number }; - const res = await fetch(`http://localhost:${port}`); - assertEquals(await res.text(), "Hello World"); - server.close(() => { - resolve(); - }); - }); - - await promise; -}); - -Deno.test("[node/http] server unref", async () => { - const [statusCode, _output] = await execCode(` - import http from "node:http"; - const server = http.createServer((_req, res) => { - res.statusCode = status; - res.end(""); - }); - - // This should let the program to exit without waiting for the - // server to close. - server.unref(); - - server.listen(async () => { - }); - `); - assertEquals(statusCode, 0); -}); - -Deno.test("[node/http] ClientRequest handle non-string headers", async () => { - // deno-lint-ignore no-explicit-any - let headers: any; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const req = http.request("http://localhost:4545/echo_server", { - method: "POST", - headers: { 1: 2 }, - }, (resp) => { - headers = resp.headers; - - resp.on("data", () => {}); - - resp.on("end", () => { - resolve(); - }); - }); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - assertEquals(headers!["1"], "2"); -}); - -Deno.test("[node/http] ClientRequest uses HTTP/1.1", async () => { - let body = ""; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const req = https.request("https://localhost:5545/http_version", { - method: "POST", - headers: { 1: 2 }, - }, (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - assertEquals(body, "HTTP/1.1"); -}); - -Deno.test("[node/http] ClientRequest setTimeout", async () => { - let body = ""; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const timer = setTimeout(() => reject("timed out"), 50000); - const req = http.request("http://localhost:4545/http_version", (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }); - req.setTimeout(120000); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - clearTimeout(timer); - assertEquals(body, "HTTP/1.1"); -}); - -Deno.test("[node/http] ClientRequest setNoDelay", async () => { - let body = ""; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const timer = setTimeout(() => reject("timed out"), 50000); - const req = http.request("http://localhost:4545/http_version", (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }); - req.setNoDelay(true); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - clearTimeout(timer); - assertEquals(body, "HTTP/1.1"); -}); - -Deno.test("[node/http] ClientRequest PATCH", async () => { - let body = ""; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const req = http.request("http://localhost:4545/echo_server", { - method: "PATCH", - }, (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }); - req.write("hello "); - req.write("world"); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - assertEquals(body, "hello world"); -}); - -Deno.test("[node/http] ClientRequest PUT", async () => { - let body = ""; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const req = http.request("http://localhost:4545/echo_server", { - method: "PUT", - }, (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }); - req.write("hello "); - req.write("world"); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - assertEquals(body, "hello world"); -}); - -Deno.test("[node/http] ClientRequest search params", async () => { - let body = ""; - const { promise, resolve, reject } = Promise.withResolvers<void>(); - const req = http.request({ - host: "localhost:4545", - path: "search_params?foo=bar", - }, (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }); - req.once("error", (e) => reject(e)); - req.end(); - await promise; - assertEquals(body, "foo=bar"); -}); - -Deno.test("[node/http] HTTPS server", async () => { - const deferred = Promise.withResolvers<void>(); - const deferred2 = Promise.withResolvers<void>(); - const client = Deno.createHttpClient({ - caCerts: [Deno.readTextFileSync("cli/tests/testdata/tls/RootCA.pem")], - }); - const server = https.createServer({ - cert: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.crt"), - key: Deno.readTextFileSync("cli/tests/testdata/tls/localhost.key"), - }, (req, res) => { - // @ts-ignore: It exists on TLSSocket - assert(req.socket.encrypted); - res.end("success!"); - }); - server.listen(() => { - // deno-lint-ignore no-explicit-any - fetch(`https://localhost:${(server.address() as any).port}`, { - client, - }).then(async (res) => { - assertEquals(res.status, 200); - assertEquals(await res.text(), "success!"); - server.close(); - deferred2.resolve(); - }); - }) - .on("error", () => fail()); - server.on("close", () => { - deferred.resolve(); - }); - await Promise.all([deferred.promise, deferred2.promise]); - client.close(); -}); - -Deno.test( - "[node/http] client upgrade", - { permissions: { net: true } }, - async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((req, res) => { - // @ts-ignore: It exists on TLSSocket - assert(!req.socket.encrypted); - res.writeHead(200, { "Content-Type": "text/plain" }); - res.end("okay"); - }); - // @ts-ignore it's a socket for real - let serverSocket; - server.on("upgrade", (req, socket, _head) => { - // https://github.com/denoland/deno/issues/21979 - assert(req.socket?.write); - socket.write( - "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" + - "Upgrade: WebSocket\r\n" + - "Connection: Upgrade\r\n" + - "\r\n", - ); - serverSocket = socket; - }); - - // Now that server is running - server.listen(1337, "127.0.0.1", () => { - // make a request - const options = { - port: 1337, - host: "127.0.0.1", - headers: { - "Connection": "Upgrade", - "Upgrade": "websocket", - }, - }; - - const req = http.request(options); - req.end(); - - req.on("upgrade", (_res, socket, _upgradeHead) => { - socket.end(); - // @ts-ignore it's a socket for real - serverSocket!.end(); - server.close(() => { - resolve(); - }); - }); - }); - - await promise; - }, -); - -Deno.test( - "[node/http] client end with callback", - { permissions: { net: true } }, - async () => { - let received = false; - const ac = new AbortController(); - const server = Deno.serve({ port: 5928, signal: ac.signal }, (_req) => { - received = true; - return new Response("hello"); - }); - const { promise, resolve, reject } = Promise.withResolvers<void>(); - let body = ""; - - const request = http.request( - "http://localhost:5928/", - (resp) => { - resp.on("data", (chunk) => { - body += chunk; - }); - - resp.on("end", () => { - resolve(); - }); - }, - ); - request.on("error", reject); - request.end(() => { - assert(received); - }); - - await promise; - ac.abort(); - await server.finished; - - assertEquals(body, "hello"); - }, -); - -Deno.test("[node/http] server emits error if addr in use", async () => { - const deferred1 = Promise.withResolvers<void>(); - const deferred2 = Promise.withResolvers<Error>(); - - const server = http.createServer(); - server.listen(9001); - - const server2 = http.createServer(); - server2.on("error", (e) => { - deferred2.resolve(e); - }); - server2.listen(9001); - - const err = await deferred2.promise; - server.close(() => deferred1.resolve()); - server2.close(); - await deferred1.promise; - const expectedMsg = Deno.build.os === "windows" - ? "Only one usage of each socket address" - : "Address already in use"; - assert( - err.message.startsWith(expectedMsg), - `Wrong error: ${err.message}`, - ); -}); - -Deno.test( - "[node/http] client destroy doesn't leak", - { permissions: { net: true } }, - async () => { - const ac = new AbortController(); - let timerId; - - const server = Deno.serve( - { port: 5929, signal: ac.signal }, - async (_req) => { - await new Promise((resolve) => { - timerId = setTimeout(resolve, 5000); - }); - return new Response("hello"); - }, - ); - const { promise, resolve, reject } = Promise.withResolvers<void>(); - - const request = http.request("http://localhost:5929/"); - request.on("error", reject); - request.on("close", () => {}); - request.end(); - setTimeout(() => { - request.destroy(new Error()); - resolve(); - }, 100); - - await promise; - clearTimeout(timerId); - ac.abort(); - await server.finished; - }, -); - -Deno.test("[node/http] node:http exports globalAgent", async () => { - const http = await import("node:http"); - assert( - http.globalAgent, - "node:http must export 'globalAgent' on module namespace", - ); - assert( - http.default.globalAgent, - "node:http must export 'globalAgent' on module default export", - ); -}); - -Deno.test("[node/https] node:https exports globalAgent", async () => { - const https = await import("node:https"); - assert( - https.globalAgent, - "node:https must export 'globalAgent' on module namespace", - ); - assert( - https.default.globalAgent, - "node:https must export 'globalAgent' on module default export", - ); -}); - -Deno.test("[node/http] node:http request.setHeader(header, null) doesn't throw", () => { - { - const req = http.request("http://localhost:4545/"); - req.on("error", () => {}); - // @ts-expect-error - null is not a valid header value - req.setHeader("foo", null); - req.end(); - req.destroy(); - } - { - const req = https.request("https://localhost:4545/"); - req.on("error", () => {}); - // @ts-expect-error - null is not a valid header value - req.setHeader("foo", null); - req.end(); - req.destroy(); - } -}); - -Deno.test("[node/http] ServerResponse getHeader", async () => { - const { promise, resolve } = Promise.withResolvers<void>(); - const server = http.createServer((_req, res) => { - res.setHeader("foo", "bar"); - assertEquals(res.getHeader("foo"), "bar"); - assertEquals(res.getHeader("ligma"), undefined); - res.end("Hello World"); - }); - - server.listen(async () => { - const { port } = server.address() as { port: number }; - const res = await fetch(`http://localhost:${port}`); - assertEquals(await res.text(), "Hello World"); - server.close(() => { - resolve(); - }); - }); - - await promise; -}); diff --git a/cli/tests/unit_node/module_test.ts b/cli/tests/unit_node/module_test.ts deleted file mode 100644 index a27fccd7c..000000000 --- a/cli/tests/unit_node/module_test.ts +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -import { createRequire, Module } from "node:module"; -import { assert, assertEquals } from "@test_util/std/assert/mod.ts"; -import process from "node:process"; -import * as path from "node:path"; - -Deno.test("[node/module _preloadModules] has internal require hook", () => { - // Check if it's there - // deno-lint-ignore no-explicit-any - (Module as any)._preloadModules([ - "./cli/tests/unit_node/testdata/add_global_property.js", - ]); - // deno-lint-ignore no-explicit-any - assertEquals((globalThis as any).foo, "Hello"); -}); - -Deno.test("[node/module runMain] loads module using the current process.argv", () => { - process.argv = [ - process.argv[0], - "./cli/tests/unit_node/testdata/add_global_property_run_main.js", - ]; - - // deno-lint-ignore no-explicit-any - (Module as any).runMain(); - // deno-lint-ignore no-explicit-any - assertEquals((globalThis as any).calledViaRunMain, true); -}); - -Deno.test("[node/module _nodeModulePaths] prevents duplicate /node_modules/node_modules suffix", () => { - // deno-lint-ignore no-explicit-any - const actual: string[] = (Module as any)._nodeModulePaths( - path.join(process.cwd(), "testdata", "node_modules", "foo"), - ); - - assert( - !actual.some((dir) => /node_modules[/\\]node_modules/g.test(dir)), - "Duplicate 'node_modules/node_modules' suffix found", - ); -}); - -Deno.test("[node/module _nodeModulePaths] prevents duplicate root /node_modules", () => { - // deno-lint-ignore no-explicit-any - const actual: string[] = (Module as any)._nodeModulePaths( - path.join(process.cwd(), "testdata", "node_modules", "foo"), - ); - - assert( - new Set(actual).size === actual.length, - "Duplicate path entries found", - ); - const root = path.parse(actual[0]).root; - assert( - actual.includes(path.join(root, "node_modules")), - "Missing root 'node_modules' directory", - ); -}); - -Deno.test("Built-in Node modules have `node:` prefix", () => { - let thrown = false; - try { - // @ts-ignore We want to explicitly test wrong call signature - createRequire(); - } catch (e) { - thrown = true; - const stackLines = e.stack.split("\n"); - // Assert that built-in node modules have `node:<mod_name>` specifiers. - assert(stackLines.some((line: string) => line.includes("(node:module:"))); - } - - assert(thrown); -}); diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs index dda62a591..eda386a82 100644 --- a/test_util/src/lib.rs +++ b/test_util/src/lib.rs @@ -76,7 +76,7 @@ pub fn prebuilt_path() -> PathRef { } pub fn tests_path() -> PathRef { - root_path().join("cli").join("tests") + root_path().join("tests") } pub fn testdata_path() -> PathRef { diff --git a/test_util/src/servers/mod.rs b/test_util/src/servers/mod.rs index e6084dd81..f828f1bd4 100644 --- a/test_util/src/servers/mod.rs +++ b/test_util/src/servers/mod.rs @@ -327,9 +327,9 @@ async fn get_tcp_listener_stream( /// This server responds with 'PASS' if client authentication was successful. Try it by running /// test_server and -/// curl --key cli/tests/testdata/tls/localhost.key \ +/// curl --key tests/testdata/tls/localhost.key \ /// --cert cli/tests/testsdata/tls/localhost.crt \ -/// --cacert cli/tests/testdata/tls/RootCA.crt https://localhost:4552/ +/// --cacert tests/testdata/tls/RootCA.crt https://localhost:4552/ async fn run_tls_client_auth_server(port: u16) { let mut tls = get_tls_listener_stream("tls client auth", port, Default::default()).await; @@ -352,7 +352,7 @@ async fn run_tls_client_auth_server(port: u16) { /// This server responds with 'PASS' if client authentication was successful. Try it by running /// test_server and -/// curl --cacert cli/tests/testdata/tls/RootCA.crt https://localhost:4553/ +/// curl --cacert tests/testdata/tls/RootCA.crt https://localhost:4553/ async fn run_tls_server(port: u16) { let mut tls = get_tls_listener_stream("tls", port, Default::default()).await; while let Some(Ok(mut tls_stream)) = tls.next().await { diff --git a/cli/tests/Cargo.toml b/tests/Cargo.toml index 578aaf47b..578aaf47b 100644 --- a/cli/tests/Cargo.toml +++ b/tests/Cargo.toml diff --git a/tests/config/deno.json b/tests/config/deno.json new file mode 100644 index 000000000..ec93111fd --- /dev/null +++ b/tests/config/deno.json @@ -0,0 +1,5 @@ +{ + "imports": { + "@test_util/": "../../test_util/" + } +} diff --git a/cli/tests/integration/bench_tests.rs b/tests/integration/bench_tests.rs index f92006eb9..f92006eb9 100644 --- a/cli/tests/integration/bench_tests.rs +++ b/tests/integration/bench_tests.rs diff --git a/cli/tests/integration/bundle_tests.rs b/tests/integration/bundle_tests.rs index 08e3fb06a..08e3fb06a 100644 --- a/cli/tests/integration/bundle_tests.rs +++ b/tests/integration/bundle_tests.rs diff --git a/cli/tests/integration/cache_tests.rs b/tests/integration/cache_tests.rs index 2aa0f9d8b..2aa0f9d8b 100644 --- a/cli/tests/integration/cache_tests.rs +++ b/tests/integration/cache_tests.rs diff --git a/cli/tests/integration/cert_tests.rs b/tests/integration/cert_tests.rs index 9e89a9f3e..9e89a9f3e 100644 --- a/cli/tests/integration/cert_tests.rs +++ b/tests/integration/cert_tests.rs diff --git a/cli/tests/integration/check_tests.rs b/tests/integration/check_tests.rs index f836957ce..f836957ce 100644 --- a/cli/tests/integration/check_tests.rs +++ b/tests/integration/check_tests.rs diff --git a/tests/integration/compile_tests.rs b/tests/integration/compile_tests.rs new file mode 100644 index 000000000..fbf924fbb --- /dev/null +++ b/tests/integration/compile_tests.rs @@ -0,0 +1,1180 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +use test_util as util; +use util::assert_contains; +use util::assert_not_contains; +use util::testdata_path; +use util::TestContext; +use util::TestContextBuilder; + +#[test] +fn compile_basic() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("welcome.exe") + } else { + dir.path().join("welcome") + }; + // try this twice to ensure it works with the cache + for _ in 0..2 { + let output = context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "../../tests/testdata/welcome.ts", + ]) + .run(); + output.assert_exit_code(0); + output.skip_output_check(); + let output = context.new_command().name(&exe).run(); + output.assert_matches_text("Welcome to Deno!\n"); + } + + // now ensure this works when the deno_dir is readonly + let readonly_dir = dir.path().join("readonly"); + readonly_dir.make_dir_readonly(); + let readonly_sub_dir = readonly_dir.join("sub"); + + let output = context + .new_command() + // it should fail creating this, but still work + .env("DENO_DIR", readonly_sub_dir) + .name(exe) + .run(); + output.assert_matches_text("Welcome to Deno!\n"); +} + +#[test] +fn standalone_args() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("args.exe") + } else { + dir.path().join("args") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/args.ts", + "a", + "b", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .name(&exe) + .args("foo --bar --unstable") + .run() + .assert_matches_text("a\nb\nfoo\n--bar\n--unstable\n") + .assert_exit_code(0); +} + +#[test] +fn standalone_error() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("error.exe") + } else { + dir.path().join("error") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_error.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + + let output = context.new_command().name(&exe).split_output().run(); + output.assert_exit_code(1); + output.assert_stdout_matches_text(""); + let stderr = output.stderr(); + // On Windows, we cannot assert the file path (because '\'). + // Instead we just check for relevant output. + assert_contains!(stderr, "error: Uncaught (in promise) Error: boom!"); + assert_contains!(stderr, "throw new Error(\"boom!\");"); + assert_contains!(stderr, "\n at boom (file://"); + assert_contains!(stderr, "standalone_error.ts:2:9"); + assert_contains!(stderr, "at foo (file://"); + assert_contains!(stderr, "standalone_error.ts:5:3"); + assert_contains!(stderr, "standalone_error.ts:7:1"); +} + +#[test] +fn standalone_error_module_with_imports() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("error.exe") + } else { + dir.path().join("error") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_error_module_with_imports_1.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + + let output = context + .new_command() + .name(&exe) + .env("NO_COLOR", "1") + .split_output() + .run(); + output.assert_stdout_matches_text("hello\n"); + let stderr = output.stderr(); + // On Windows, we cannot assert the file path (because '\'). + // Instead we just check for relevant output. + assert_contains!(stderr, "error: Uncaught (in promise) Error: boom!"); + assert_contains!(stderr, "throw new Error(\"boom!\");"); + assert_contains!(stderr, "\n at file://"); + assert_contains!(stderr, "standalone_error_module_with_imports_2.ts:2:7"); + output.assert_exit_code(1); +} + +#[test] +fn standalone_load_datauri() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("load_datauri.exe") + } else { + dir.path().join("load_datauri") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_import_datauri.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .name(&exe) + .run() + .assert_matches_text("Hello Deno!\n") + .assert_exit_code(0); +} + +// https://github.com/denoland/deno/issues/13704 +#[test] +fn standalone_follow_redirects() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("follow_redirects.exe") + } else { + dir.path().join("follow_redirects") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_follow_redirects.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .name(&exe) + .run() + .assert_matches_text("Hello\n") + .assert_exit_code(0); +} + +#[test] +fn compile_with_file_exists_error() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let output_path = if cfg!(windows) { + dir.path().join(r"args\") + } else { + dir.path().join("args/") + }; + let file_path = dir.path().join("args"); + file_path.write(""); + context + .new_command() + .args_vec([ + "compile", + "--output", + &output_path.to_string_lossy(), + "./compile/args.ts", + ]) + .run() + .assert_matches_text(&format!( + concat!( + "[WILDCARD]error: Could not compile to file '{}' because its parent directory ", + "is an existing file. You can use the `--output <file-path>` flag to ", + "provide an alternative name.\n", + ), + file_path, + )) + .assert_exit_code(1); +} + +#[test] +fn compile_with_directory_exists_error() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("args.exe") + } else { + dir.path().join("args") + }; + std::fs::create_dir(&exe).unwrap(); + context.new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/args.ts" + ]).run() + .assert_matches_text(&format!( + concat!( + "[WILDCARD]error: Could not compile to file '{}' because a directory exists with ", + "the same name. You can use the `--output <file-path>` flag to ", + "provide an alternative name.\n" + ), + exe + )) + .assert_exit_code(1); +} + +#[test] +fn compile_with_conflict_file_exists_error() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("args.exe") + } else { + dir.path().join("args") + }; + std::fs::write(&exe, b"SHOULD NOT BE OVERWRITTEN").unwrap(); + context.new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/args.ts" + ]).run() + .assert_matches_text(&format!( + concat!( + "[WILDCARD]error: Could not compile to file '{}' because the file already exists ", + "and cannot be overwritten. Please delete the existing file or ", + "use the `--output <file-path>` flag to provide an alternative name.\n" + ), + exe + )) + .assert_exit_code(1); + exe.assert_matches_text("SHOULD NOT BE OVERWRITTEN"); +} + +#[test] +fn compile_and_overwrite_file() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("args.exe") + } else { + dir.path().join("args") + }; + + // do this twice + for _ in 0..2 { + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/args.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + assert!(&exe.exists()); + } +} + +#[test] +fn standalone_runtime_flags() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("flags.exe") + } else { + dir.path().join("flags") + }; + context + .new_command() + .args_vec([ + "compile", + "--allow-read", + "--seed", + "1", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_runtime_flags.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .env("NO_COLOR", "1") + .name(&exe) + .split_output() + .run() + .assert_stdout_matches_text("0.147205063401058\n") + .assert_stderr_matches_text( + "[WILDCARD]PermissionDenied: Requires write access to[WILDCARD]", + ) + .assert_exit_code(1); +} + +#[test] +fn standalone_ext_flag_ts() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("ext_flag_ts.exe") + } else { + dir.path().join("ext_flag_ts") + }; + context + .new_command() + .args_vec([ + "compile", + "--ext", + "ts", + "--output", + &exe.to_string_lossy(), + "./file_extensions/ts_without_extension", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .env("NO_COLOR", "1") + .name(&exe) + .run() + .assert_matches_text("executing typescript with no extension\n") + .assert_exit_code(0); +} + +#[test] +fn standalone_ext_flag_js() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("ext_flag_js.exe") + } else { + dir.path().join("ext_flag_js") + }; + context + .new_command() + .args_vec([ + "compile", + "--ext", + "js", + "--output", + &exe.to_string_lossy(), + "./file_extensions/js_without_extension", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .env("NO_COLOR", "1") + .name(&exe) + .run() + .assert_matches_text("executing javascript with no extension\n"); +} + +#[test] +fn standalone_import_map() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("import_map.exe") + } else { + dir.path().join("import_map") + }; + context + .new_command() + .args_vec([ + "compile", + "--allow-read", + "--import-map", + "compile/standalone_import_map.json", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_import_map.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .name(&exe) + .run() + .skip_output_check() + .assert_exit_code(0); +} + +#[test] +fn standalone_import_map_config_file() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("import_map.exe") + } else { + dir.path().join("import_map") + }; + context + .new_command() + .args_vec([ + "compile", + "--allow-read", + "--config", + "compile/standalone_import_map_config.json", + "--output", + &exe.to_string_lossy(), + "./compile/standalone_import_map.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + context + .new_command() + .name(&exe) + .run() + .skip_output_check() + .assert_exit_code(0); +} + +#[test] +// https://github.com/denoland/deno/issues/12670 +fn skip_rebundle() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("hello_world.exe") + } else { + dir.path().join("hello_world") + }; + let output = context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./run/001_hello.js", + ]) + .run(); + + //no "Bundle testdata_path/run/001_hello.js" in output + assert_not_contains!(output.combined_output(), "Bundle"); + + context + .new_command() + .name(&exe) + .run() + .assert_matches_text("Hello World\n") + .assert_exit_code(0); +} + +#[test] +fn check_local_by_default() { + let context = TestContext::with_http_server(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("welcome.exe") + } else { + dir.path().join("welcome") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/check_local_by_default.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); +} + +#[test] +fn check_local_by_default2() { + let context = TestContext::with_http_server(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("welcome.exe") + } else { + dir.path().join("welcome") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/check_local_by_default2.ts" + ]) + .run() + .assert_matches_text( + r#"[WILDCARD]error: TS2322 [ERROR]: Type '12' is not assignable to type '"b"'.[WILDCARD]"#, + ) + .assert_exit_code(1); +} + +#[test] +fn workers_basic() { + let context = TestContext::with_http_server(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("basic.exe") + } else { + dir.path().join("basic") + }; + context + .new_command() + .args_vec([ + "compile", + "--no-check", + "--output", + &exe.to_string_lossy(), + "./compile/workers/basic.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + + context + .new_command() + .name(&exe) + .run() + .assert_matches_file("./compile/workers/basic.out") + .assert_exit_code(0); +} + +#[test] +fn workers_not_in_module_map() { + let context = TestContext::with_http_server(); + let temp_dir = context.temp_dir(); + let exe = if cfg!(windows) { + temp_dir.path().join("not_in_module_map.exe") + } else { + temp_dir.path().join("not_in_module_map") + }; + let output = context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/workers/not_in_module_map.ts", + ]) + .run(); + output.assert_exit_code(0); + output.skip_output_check(); + + let output = context.new_command().name(exe).env("NO_COLOR", "").run(); + output.assert_exit_code(1); + output.assert_matches_text(concat!( + "error: Uncaught (in worker \"\") Module not found: [WILDCARD]", + "error: Uncaught (in promise) Error: Unhandled error in child worker.\n[WILDCARD]" + )); +} + +#[test] +fn workers_with_include_flag() { + let context = TestContext::with_http_server(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("workers_with_include_flag.exe") + } else { + dir.path().join("workers_with_include_flag") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "--include", + "./compile/workers/worker.ts", + "./compile/workers/not_in_module_map.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + + context + .new_command() + .name(&exe) + .env("NO_COLOR", "") + .run() + .assert_matches_text("Hello from worker!\nReceived 42\nClosing\n"); +} + +#[test] +fn dynamic_import() { + let context = TestContext::with_http_server(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("dynamic_import.exe") + } else { + dir.path().join("dynamic_import") + }; + context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/dynamic_imports/main.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + + context + .new_command() + .name(&exe) + .env("NO_COLOR", "") + .run() + .assert_matches_file("./compile/dynamic_imports/main.out") + .assert_exit_code(0); +} + +#[test] +fn dynamic_import_unanalyzable() { + let context = TestContext::with_http_server(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("dynamic_import_unanalyzable.exe") + } else { + dir.path().join("dynamic_import_unanalyzable") + }; + context + .new_command() + .args_vec([ + "compile", + "--allow-read", + "--include", + "./compile/dynamic_imports/import1.ts", + "--output", + &exe.to_string_lossy(), + "./compile/dynamic_imports/main_unanalyzable.ts", + ]) + .run() + .skip_output_check() + .assert_exit_code(0); + + context + .new_command() + .current_dir(util::root_path()) + .name(&exe) + .env("NO_COLOR", "") + .run() + .assert_matches_file("./compile/dynamic_imports/main.out") + .assert_exit_code(0); +} + +#[test] +fn compile_npm_specifiers() { + let context = TestContextBuilder::for_npm().use_temp_cwd().build(); + + let temp_dir = context.temp_dir(); + temp_dir.write( + "main.ts", + concat!( + "import path from 'node:path';\n", + "import { getValue, setValue } from 'npm:@denotest/esm-basic';\n", + "import getValueDefault from 'npm:@denotest/esm-import-cjs-default';\n", + "setValue(2);\n", + "console.log(path.join('testing', 'this'));", + "console.log(getValue());", + "console.log(getValueDefault());", + ), + ); + + let binary_path = if cfg!(windows) { + temp_dir.path().join("binary.exe") + } else { + temp_dir.path().join("binary") + }; + + // try with and without --node-modules-dir + let compile_commands = &[ + "compile --output binary main.ts", + "compile --node-modules-dir --output binary main.ts", + ]; + + for compile_command in compile_commands { + let output = context.new_command().args(compile_command).run(); + output.assert_exit_code(0); + output.skip_output_check(); + + let output = context.new_command().name(&binary_path).run(); + output.assert_matches_text( + r#"Node esm importing node cjs +=========================== +{ + default: [Function (anonymous)], + named: [Function (anonymous)], + MyClass: [class MyClass] +} +{ default: [Function (anonymous)], named: [Function (anonymous)] } +[Module: null prototype] { + MyClass: [class MyClass], + __esModule: true, + default: { + default: [Function (anonymous)], + named: [Function (anonymous)], + MyClass: [class MyClass] + }, + named: [Function (anonymous)] +} +[Module: null prototype] { + __esModule: true, + default: { default: [Function (anonymous)], named: [Function (anonymous)] }, + named: [Function (anonymous)] +} +=========================== +static method +testing[WILDCARD]this +2 +5 +"#, + ); + } + + // try with a package.json + temp_dir.remove_dir_all("node_modules"); + temp_dir.write( + "main.ts", + concat!( + "import { getValue, setValue } from '@denotest/esm-basic';\n", + "setValue(2);\n", + "console.log(getValue());", + ), + ); + temp_dir.write( + "package.json", + r#"{ "dependencies": { "@denotest/esm-basic": "1" } }"#, + ); + + context + .new_command() + .args("compile --output binary main.ts") + .run() + .assert_exit_code(0) + .skip_output_check(); + + context + .new_command() + .name(&binary_path) + .run() + .assert_matches_text("2\n"); + + // now try with byonm + temp_dir.remove_dir_all("node_modules"); + temp_dir.write("deno.json", r#"{"unstable":["byonm"]}"#); + context.run_npm("install"); + + context + .new_command() + .args("compile --output binary main.ts") + .run() + .assert_exit_code(0) + .assert_matches_text("Check file:///[WILDCARD]/main.ts\nCompile file:///[WILDCARD]/main.ts to binary[WILDCARD]\n"); + + context + .new_command() + .name(&binary_path) + .run() + .assert_matches_text("2\n"); +} + +#[test] +fn compile_npm_file_system() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "compile/npm_fs/main.ts", + compile_args: vec!["-A"], + run_args: vec![], + output_file: "compile/npm_fs/main.out", + node_modules_dir: true, + input_name: Some("binary"), + expected_name: "binary", + exit_code: 0, + }); +} + +#[test] +fn compile_npm_bin_esm() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "npm:@denotest/bin/cli-esm", + compile_args: vec![], + run_args: vec!["this", "is", "a", "test"], + output_file: "npm/deno_run_esm.out", + node_modules_dir: false, + input_name: None, + expected_name: "cli-esm", + exit_code: 0, + }); +} + +#[test] +fn compile_npm_bin_cjs() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "npm:@denotest/bin/cli-cjs", + compile_args: vec![], + run_args: vec!["this", "is", "a", "test"], + output_file: "npm/deno_run_cjs.out", + node_modules_dir: false, + input_name: None, + expected_name: "cli-cjs", + exit_code: 0, + }); +} + +#[test] +fn compile_npm_cowsay_main() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "npm:cowsay@1.5.0", + compile_args: vec!["--allow-read"], + run_args: vec!["Hello"], + output_file: "npm/deno_run_cowsay.out", + node_modules_dir: false, + input_name: None, + expected_name: "cowsay", + exit_code: 0, + }); +} + +#[test] +fn compile_npm_vfs_implicit_read_permissions() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "compile/vfs_implicit_read_permission/main.ts", + compile_args: vec![], + run_args: vec![], + output_file: "compile/vfs_implicit_read_permission/main.out", + node_modules_dir: false, + input_name: Some("binary"), + expected_name: "binary", + exit_code: 0, + }); +} + +#[test] +fn compile_npm_no_permissions() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "npm:cowsay@1.5.0", + compile_args: vec![], + run_args: vec!["Hello"], + output_file: "npm/deno_run_cowsay_no_permissions.out", + node_modules_dir: false, + input_name: None, + expected_name: "cowsay", + exit_code: 1, + }); +} + +#[test] +fn compile_npm_cowsay_explicit() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "npm:cowsay@1.5.0/cowsay", + compile_args: vec!["--allow-read"], + run_args: vec!["Hello"], + output_file: "npm/deno_run_cowsay.out", + node_modules_dir: false, + input_name: None, + expected_name: "cowsay", + exit_code: 0, + }); +} + +#[test] +fn compile_npm_cowthink() { + run_npm_bin_compile_test(RunNpmBinCompileOptions { + input_specifier: "npm:cowsay@1.5.0/cowthink", + compile_args: vec!["--allow-read"], + run_args: vec!["Hello"], + output_file: "npm/deno_run_cowthink.out", + node_modules_dir: false, + input_name: None, + expected_name: "cowthink", + exit_code: 0, + }); +} + +struct RunNpmBinCompileOptions<'a> { + input_specifier: &'a str, + node_modules_dir: bool, + output_file: &'a str, + input_name: Option<&'a str>, + expected_name: &'a str, + run_args: Vec<&'a str>, + compile_args: Vec<&'a str>, + exit_code: i32, +} + +fn run_npm_bin_compile_test(opts: RunNpmBinCompileOptions) { + let context = TestContextBuilder::for_npm().use_temp_cwd().build(); + + let temp_dir = context.temp_dir(); + let main_specifier = if opts.input_specifier.starts_with("npm:") { + opts.input_specifier.to_string() + } else { + testdata_path().join(opts.input_specifier).to_string() + }; + + let mut args = vec!["compile".to_string()]; + + args.extend(opts.compile_args.iter().map(|s| s.to_string())); + + if opts.node_modules_dir { + args.push("--node-modules-dir".to_string()); + } + + if let Some(bin_name) = opts.input_name { + args.push("--output".to_string()); + args.push(bin_name.to_string()); + } + + args.push(main_specifier); + + // compile + let output = context.new_command().args_vec(args).run(); + output.assert_exit_code(0); + output.skip_output_check(); + + // delete the npm folder in the DENO_DIR to ensure it's not using it + context.deno_dir().remove_dir_all("./npm"); + + // run + let binary_path = if cfg!(windows) { + temp_dir.path().join(format!("{}.exe", opts.expected_name)) + } else { + temp_dir.path().join(opts.expected_name) + }; + let output = context + .new_command() + .name(binary_path) + .args_vec(opts.run_args) + .run(); + output.assert_matches_file(opts.output_file); + output.assert_exit_code(opts.exit_code); +} + +#[test] +fn compile_node_modules_symlink_outside() { + let context = TestContextBuilder::for_npm() + .use_copy_temp_dir("compile/node_modules_symlink_outside") + .cwd("compile/node_modules_symlink_outside") + .build(); + + let temp_dir = context.temp_dir(); + let project_dir = temp_dir + .path() + .join("compile") + .join("node_modules_symlink_outside"); + temp_dir.create_dir_all(project_dir.join("node_modules")); + temp_dir.create_dir_all(project_dir.join("some_folder")); + temp_dir.write(project_dir.join("test.txt"), "5"); + + // create a symlink in the node_modules directory that points to a folder in the cwd + temp_dir.symlink_dir( + project_dir.join("some_folder"), + project_dir.join("node_modules").join("some_folder"), + ); + // compile folder + let output = context + .new_command() + .args("compile --allow-read --node-modules-dir --output bin main.ts") + .run(); + output.assert_exit_code(0); + output.assert_matches_file( + "compile/node_modules_symlink_outside/main_compile_folder.out", + ); + assert!(project_dir.join("node_modules/some_folder").exists()); + + // Cleanup and remove the folder. The folder test is done separately from + // the file symlink test because different systems would traverse + // the directory items in different order. + temp_dir.remove_dir_all(project_dir.join("node_modules/some_folder")); + + // create a symlink in the node_modules directory that points to a file in the cwd + temp_dir.symlink_file( + project_dir.join("test.txt"), + project_dir.join("node_modules").join("test.txt"), + ); + assert!(project_dir.join("node_modules/test.txt").exists()); + + // compile + let output = context + .new_command() + .args("compile --allow-read --node-modules-dir --output bin main.ts") + .run(); + output.assert_exit_code(0); + output.assert_matches_file( + "compile/node_modules_symlink_outside/main_compile_file.out", + ); + + // run + let binary_path = + project_dir.join(if cfg!(windows) { "bin.exe" } else { "bin" }); + let output = context.new_command().name(binary_path).run(); + output.assert_matches_file("compile/node_modules_symlink_outside/main.out"); +} + +#[test] +fn compile_node_modules_symlink_non_existent() { + let context = TestContextBuilder::for_npm().use_temp_cwd().build(); + let temp_dir = context.temp_dir().path(); + temp_dir.join("main.ts").write( + r#"import { getValue, setValue } from "npm:@denotest/esm-basic"; +setValue(4); +console.log(getValue());"#, + ); + let node_modules_dir = temp_dir.join("node_modules"); + node_modules_dir.create_dir_all(); + // create a symlink that points to a non_existent file + node_modules_dir.symlink_dir("non_existent", "folder"); + // compile folder + let output = context + .new_command() + .args("compile --allow-read --node-modules-dir --output bin main.ts") + .run(); + output.assert_exit_code(0); + output.assert_matches_text( + r#"Download http://localhost:4545/npm/registry/@denotest/esm-basic +Download http://localhost:4545/npm/registry/@denotest/esm-basic/1.0.0.tgz +Initialize @denotest/esm-basic@1.0.0 +Check file:///[WILDCARD]/main.ts +Compile file:///[WILDCARD]/main.ts to [WILDCARD] +Warning Failed resolving symlink. Ignoring. + Path: [WILDCARD] + Message: [WILDCARD]) +"#, + ); + + // run + let binary_path = + temp_dir.join(if cfg!(windows) { "bin.exe" } else { "bin" }); + let output = context.new_command().name(binary_path).run(); + output.assert_matches_text("4\n"); +} + +#[test] +fn dynamic_imports_tmp_lit() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("app.exe") + } else { + dir.path().join("app") + }; + let output = context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "./compile/dynamic_imports_tmp_lit/main.js", + ]) + .run(); + output.assert_exit_code(0); + output.skip_output_check(); + let output = context.new_command().name(&exe).run(); + output.assert_matches_text("a\nb\n{ data: 5 }\n{ data: 1 }\n"); +} + +#[test] +fn granular_unstable_features() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("app.exe") + } else { + dir.path().join("app") + }; + let output = context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + "--unstable-kv", + "./compile/unstable_features.ts", + ]) + .run(); + output.assert_exit_code(0); + output.skip_output_check(); + let output = context.new_command().name(&exe).run(); + output.assert_exit_code(0); + output.assert_matches_text("Kv {}\n"); +} + +#[test] +fn dynamic_import_bad_data_uri() { + let context = TestContextBuilder::new().build(); + let dir = context.temp_dir(); + let exe = if cfg!(windows) { + dir.path().join("app.exe") + } else { + dir.path().join("app") + }; + let file = dir.path().join("bad_data_uri.ts"); + file.write("await import('data:application/')"); + let output = context + .new_command() + .args_vec([ + "compile", + "--output", + &exe.to_string_lossy(), + &file.to_string_lossy(), + ]) + .run(); + output.assert_exit_code(0); + output.skip_output_check(); + let output = context.new_command().name(&exe).run(); + output.assert_exit_code(1); + output.assert_matches_text( + "[WILDCARD]TypeError: Unable to decode data url.[WILDCARD]", + ); +} diff --git a/cli/tests/integration/coverage_tests.rs b/tests/integration/coverage_tests.rs index 804f9b578..804f9b578 100644 --- a/cli/tests/integration/coverage_tests.rs +++ b/tests/integration/coverage_tests.rs diff --git a/cli/tests/integration/doc_tests.rs b/tests/integration/doc_tests.rs index 62fd2a5b4..62fd2a5b4 100644 --- a/cli/tests/integration/doc_tests.rs +++ b/tests/integration/doc_tests.rs diff --git a/cli/tests/integration/eval_tests.rs b/tests/integration/eval_tests.rs index 1ae65e49e..1ae65e49e 100644 --- a/cli/tests/integration/eval_tests.rs +++ b/tests/integration/eval_tests.rs diff --git a/cli/tests/integration/flags_tests.rs b/tests/integration/flags_tests.rs index a22cb0548..a22cb0548 100644 --- a/cli/tests/integration/flags_tests.rs +++ b/tests/integration/flags_tests.rs diff --git a/cli/tests/integration/fmt_tests.rs b/tests/integration/fmt_tests.rs index 94eca295e..94eca295e 100644 --- a/cli/tests/integration/fmt_tests.rs +++ b/tests/integration/fmt_tests.rs diff --git a/cli/tests/integration/info_tests.rs b/tests/integration/info_tests.rs index 922fcee06..922fcee06 100644 --- a/cli/tests/integration/info_tests.rs +++ b/tests/integration/info_tests.rs diff --git a/cli/tests/integration/init_tests.rs b/tests/integration/init_tests.rs index d3908eae4..d3908eae4 100644 --- a/cli/tests/integration/init_tests.rs +++ b/tests/integration/init_tests.rs diff --git a/cli/tests/integration/inspector_tests.rs b/tests/integration/inspector_tests.rs index bbe70ae5e..bbe70ae5e 100644 --- a/cli/tests/integration/inspector_tests.rs +++ b/tests/integration/inspector_tests.rs diff --git a/cli/tests/integration/install_tests.rs b/tests/integration/install_tests.rs index 54df82549..54df82549 100644 --- a/cli/tests/integration/install_tests.rs +++ b/tests/integration/install_tests.rs diff --git a/tests/integration/js_unit_tests.rs b/tests/integration/js_unit_tests.rs new file mode 100644 index 000000000..16aebd8c4 --- /dev/null +++ b/tests/integration/js_unit_tests.rs @@ -0,0 +1,201 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +use std::io::BufRead; +use std::io::BufReader; +use std::time::Duration; +use std::time::Instant; +use test_util as util; + +util::unit_test_factory!( + js_unit_test, + "../tests/unit", + "*.ts", + [ + abort_controller_test, + blob_test, + body_test, + broadcast_channel_test, + buffer_test, + build_test, + cache_api_test, + chmod_test, + chown_test, + command_test, + console_test, + copy_file_test, + custom_event_test, + cron_test, + dir_test, + dom_exception_test, + error_stack_test, + error_test, + esnext_test, + event_target_test, + event_test, + fetch_test, + ffi_test, + file_test, + filereader_test, + files_test, + flock_test, + fs_events_test, + get_random_values_test, + globals_test, + headers_test, + http_test, + image_bitmap_test, + image_data_test, + internals_test, + intl_test, + io_test, + jupyter_test, + kv_test, + kv_queue_test_no_db_close, + kv_queue_test, + kv_queue_undelivered_test, + link_test, + make_temp_test, + message_channel_test, + mkdir_test, + navigator_test, + net_test, + network_interfaces_test, + os_test, + ops_test, + path_from_url_test, + performance_test, + permissions_test, + process_test, + progressevent_test, + promise_hooks_test, + read_dir_test, + read_file_test, + read_link_test, + read_text_file_test, + real_path_test, + ref_unref_test, + remove_test, + rename_test, + request_test, + resources_test, + response_test, + serve_test, + signal_test, + stat_test, + stdio_test, + streams_test, + structured_clone_test, + symbol_test, + symlink_test, + sync_test, + test_util, + testing_test, + text_encoding_test, + timers_test, + tls_test, + truncate_test, + tty_color_test, + tty_test, + umask_test, + url_search_params_test, + url_test, + urlpattern_test, + utime_test, + version_test, + wasm_test, + webcrypto_test, + webgpu_test, + websocket_test, + webstorage_test, + worker_permissions_test, + worker_test, + write_file_test, + write_text_file_test, + ] +); + +fn js_unit_test(test: String) { + let _g = util::http_server(); + + let deno = util::deno_cmd() + .current_dir(util::root_path()) + .arg("test") + .arg("--config") + .arg("tests/config/deno.json") + .arg("--no-lock") + .arg("--unstable") + .arg("--location=http://127.0.0.1:4545/") + .arg("--no-prompt"); + + // TODO(mmastrac): it would be better to just load a test CA for all tests + let deno = if test == "websocket_test" { + deno.arg("--unsafely-ignore-certificate-errors") + } else { + deno + }; + + let mut deno = deno + .arg("-A") + .arg(util::tests_path().join("unit").join(format!("{test}.ts"))) + .piped_output() + .spawn() + .expect("failed to spawn script"); + + let now = Instant::now(); + let stdout = deno.stdout.take().unwrap(); + let test_name = test.clone(); + let stdout = std::thread::spawn(move || { + let reader = BufReader::new(stdout); + for line in reader.lines() { + if let Ok(line) = line { + println!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); + } else { + break; + } + } + }); + + let now = Instant::now(); + let stderr = deno.stderr.take().unwrap(); + let test_name = test.clone(); + let stderr = std::thread::spawn(move || { + let reader = BufReader::new(stderr); + for line in reader.lines() { + if let Ok(line) = line { + eprintln!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); + } else { + break; + } + } + }); + + const PER_TEST_TIMEOUT: Duration = Duration::from_secs(3 * 60); + + let now = Instant::now(); + let status = loop { + if now.elapsed() > PER_TEST_TIMEOUT { + // Last-ditch kill + _ = deno.kill(); + panic!("Test {test} failed to complete in time"); + } + if let Some(status) = deno + .try_wait() + .expect("failed to wait for the child process") + { + break status; + } + std::thread::sleep(Duration::from_millis(100)); + }; + + #[cfg(unix)] + assert_eq!( + std::os::unix::process::ExitStatusExt::signal(&status), + None, + "Deno should not have died with a signal" + ); + assert_eq!(Some(0), status.code(), "Deno should have exited cleanly"); + + stdout.join().unwrap(); + stderr.join().unwrap(); + + assert!(status.success()); +} diff --git a/cli/tests/integration/jsr_tests.rs b/tests/integration/jsr_tests.rs index 2de4f0056..2de4f0056 100644 --- a/cli/tests/integration/jsr_tests.rs +++ b/tests/integration/jsr_tests.rs diff --git a/cli/tests/integration/jupyter_tests.rs b/tests/integration/jupyter_tests.rs index 59c247e5d..59c247e5d 100644 --- a/cli/tests/integration/jupyter_tests.rs +++ b/tests/integration/jupyter_tests.rs diff --git a/cli/tests/integration/lint_tests.rs b/tests/integration/lint_tests.rs index b266fb5b7..b266fb5b7 100644 --- a/cli/tests/integration/lint_tests.rs +++ b/tests/integration/lint_tests.rs diff --git a/cli/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs index c9abae241..c9abae241 100644 --- a/cli/tests/integration/lsp_tests.rs +++ b/tests/integration/lsp_tests.rs diff --git a/cli/tests/integration/mod.rs b/tests/integration/mod.rs index 19796f245..19796f245 100644 --- a/cli/tests/integration/mod.rs +++ b/tests/integration/mod.rs diff --git a/tests/integration/node_compat_tests.rs b/tests/integration/node_compat_tests.rs new file mode 100644 index 000000000..d592c75a5 --- /dev/null +++ b/tests/integration/node_compat_tests.rs @@ -0,0 +1,31 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +use test_util as util; +use util::env_vars_for_npm_tests; + +#[test] +fn node_compat_tests() { + let mut deno = util::deno_cmd() + .current_dir(util::root_path()) + .arg("test") + .arg("--config") + .arg("tests/config/deno.json") + .arg("--no-lock") + .arg("--unstable") + .arg("-A") + .arg(util::tests_path().join("node_compat")) + .spawn() + .expect("failed to spawn script"); + + let status = deno.wait().expect("failed to wait for the child process"); + assert_eq!(Some(0), status.code()); + assert!(status.success()); +} + +itest!(node_test_module { + args: "test node/test.js", + output: "node/test.out", + envs: env_vars_for_npm_tests(), + exit_code: 1, + http_server: true, +}); diff --git a/tests/integration/node_unit_tests.rs b/tests/integration/node_unit_tests.rs new file mode 100644 index 000000000..c99586fa1 --- /dev/null +++ b/tests/integration/node_unit_tests.rs @@ -0,0 +1,207 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +use std::io::BufRead; +use std::io::BufReader; +use std::time::Duration; +use std::time::Instant; +use test_util as util; +use util::env_vars_for_npm_tests; + +util::unit_test_factory!( + node_unit_test, + "../tests/unit_node", + "**/*_test.ts", + [ + _fs_access_test = _fs / _fs_access_test, + _fs_appendFile_test = _fs / _fs_appendFile_test, + _fs_chmod_test = _fs / _fs_chmod_test, + _fs_chown_test = _fs / _fs_chown_test, + _fs_close_test = _fs / _fs_close_test, + _fs_copy_test = _fs / _fs_copy_test, + _fs_dir_test = _fs / _fs_dir_test, + _fs_dirent_test = _fs / _fs_dirent_test, + _fs_open_test = _fs / _fs_open_test, + _fs_read_test = _fs / _fs_read_test, + _fs_exists_test = _fs / _fs_exists_test, + _fs_fdatasync_test = _fs / _fs_fdatasync_test, + _fs_fstat_test = _fs / _fs_fstat_test, + _fs_fsync_test = _fs / _fs_fsync_test, + _fs_ftruncate_test = _fs / _fs_ftruncate_test, + _fs_futimes_test = _fs / _fs_futimes_test, + _fs_handle_test = _fs / _fs_handle_test, + _fs_link_test = _fs / _fs_link_test, + _fs_lstat_test = _fs / _fs_lstat_test, + _fs_mkdir_test = _fs / _fs_mkdir_test, + _fs_mkdtemp_test = _fs / _fs_mkdtemp_test, + _fs_opendir_test = _fs / _fs_opendir_test, + _fs_readFile_test = _fs / _fs_readFile_test, + _fs_readdir_test = _fs / _fs_readdir_test, + _fs_readlink_test = _fs / _fs_readlink_test, + _fs_realpath_test = _fs / _fs_realpath_test, + _fs_rename_test = _fs / _fs_rename_test, + _fs_rm_test = _fs / _fs_rm_test, + _fs_rmdir_test = _fs / _fs_rmdir_test, + _fs_stat_test = _fs / _fs_stat_test, + _fs_symlink_test = _fs / _fs_symlink_test, + _fs_truncate_test = _fs / _fs_truncate_test, + _fs_unlink_test = _fs / _fs_unlink_test, + _fs_utimes_test = _fs / _fs_utimes_test, + _fs_watch_test = _fs / _fs_watch_test, + _fs_writeFile_test = _fs / _fs_writeFile_test, + _fs_write_test = _fs / _fs_write_test, + async_hooks_test, + assertion_error_test, + buffer_test, + child_process_test, + console_test, + crypto_cipher_test = crypto / crypto_cipher_test, + crypto_cipher_gcm_test = crypto / crypto_cipher_gcm_test, + crypto_hash_test = crypto / crypto_hash_test, + crypto_key_test = crypto / crypto_key_test, + crypto_sign_test = crypto / crypto_sign_test, + events_test, + dgram_test, + fs_test, + http_test, + http2_test, + _randomBytes_test = internal / _randomBytes_test, + _randomFill_test = internal / _randomFill_test, + _randomInt_test = internal / _randomInt_test, + pbkdf2_test = internal / pbkdf2_test, + scrypt_test = internal / scrypt_test, + module_test, + net_test, + os_test, + path_test, + perf_hooks_test, + process_test, + querystring_test, + readline_test, + repl_test, + stream_test, + string_decoder_test, + timers_test, + tls_test, + tty_test, + util_test, + v8_test, + vm_test, + worker_threads_test, + zlib_test + ] +); + +fn node_unit_test(test: String) { + let _g = util::http_server(); + + let mut deno = util::deno_cmd() + .current_dir(util::root_path()) + .arg("test") + .arg("--config") + .arg("tests/config/deno.json") + .arg("--no-lock") + .arg("--unstable") + // TODO(kt3k): This option is required to pass tls_test.ts, + // but this shouldn't be necessary. tls.connect currently doesn't + // pass hostname option correctly and it causes cert errors. + .arg("--unsafely-ignore-certificate-errors") + .arg("-A"); + // Parallel tests for crypto + if test.starts_with("crypto/") { + deno = deno.arg("--parallel"); + } + let mut deno = deno + .arg( + util::tests_path() + .join("unit_node") + .join(format!("{test}.ts")), + ) + .envs(env_vars_for_npm_tests()) + .piped_output() + .spawn() + .expect("failed to spawn script"); + + let now = Instant::now(); + let stdout = deno.stdout.take().unwrap(); + let test_name = test.clone(); + let stdout = std::thread::spawn(move || { + let reader = BufReader::new(stdout); + for line in reader.lines() { + if let Ok(line) = line { + println!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); + } else { + break; + } + } + }); + + let now = Instant::now(); + let stderr = deno.stderr.take().unwrap(); + let test_name = test.clone(); + let stderr = std::thread::spawn(move || { + let reader = BufReader::new(stderr); + for line in reader.lines() { + if let Ok(line) = line { + eprintln!("[{test_name} {:0>6.2}] {line}", now.elapsed().as_secs_f32()); + } else { + break; + } + } + }); + + const PER_TEST_TIMEOUT: Duration = Duration::from_secs(5 * 60); + + let now = Instant::now(); + let status = loop { + if now.elapsed() > PER_TEST_TIMEOUT { + // Last-ditch kill + _ = deno.kill(); + panic!("Test {test} failed to complete in time"); + } + if let Some(status) = deno + .try_wait() + .expect("failed to wait for the child process") + { + break status; + } + std::thread::sleep(Duration::from_millis(100)); + }; + + #[cfg(unix)] + assert_eq!( + std::os::unix::process::ExitStatusExt::signal(&status), + None, + "Deno should not have died with a signal" + ); + assert_eq!(Some(0), status.code(), "Deno should have exited cleanly"); + + stdout.join().unwrap(); + stderr.join().unwrap(); + + assert!(status.success()); +} + +// Regression test for https://github.com/denoland/deno/issues/16928 +itest!(unhandled_rejection_web { + args: "run -A node/unhandled_rejection_web.ts", + output: "node/unhandled_rejection_web.ts.out", + envs: env_vars_for_npm_tests(), + http_server: true, +}); + +// Ensure that Web `onunhandledrejection` is fired before +// Node's `process.on('unhandledRejection')`. +itest!(unhandled_rejection_web_process { + args: "run -A node/unhandled_rejection_web_process.ts", + output: "node/unhandled_rejection_web_process.ts.out", + envs: env_vars_for_npm_tests(), + http_server: true, +}); + +// Ensure that Web `onrejectionhandled` is fired before +// Node's `process.on('rejectionHandled')`. +itest!(rejection_handled_web_process { + args: "run -A --quiet node/rejection_handled_web_process.ts", + output: "node/rejection_handled_web_process.ts.out", + envs: env_vars_for_npm_tests(), + http_server: true, +}); diff --git a/cli/tests/integration/npm_tests.rs b/tests/integration/npm_tests.rs index a63253260..a63253260 100644 --- a/cli/tests/integration/npm_tests.rs +++ b/tests/integration/npm_tests.rs diff --git a/cli/tests/integration/publish_tests.rs b/tests/integration/publish_tests.rs index 330a7692b..330a7692b 100644 --- a/cli/tests/integration/publish_tests.rs +++ b/tests/integration/publish_tests.rs diff --git a/cli/tests/integration/repl_tests.rs b/tests/integration/repl_tests.rs index 0e63f1589..0e63f1589 100644 --- a/cli/tests/integration/repl_tests.rs +++ b/tests/integration/repl_tests.rs diff --git a/cli/tests/integration/run_tests.rs b/tests/integration/run_tests.rs index 298ce1715..298ce1715 100644 --- a/cli/tests/integration/run_tests.rs +++ b/tests/integration/run_tests.rs diff --git a/cli/tests/integration/shared_library_tests.rs b/tests/integration/shared_library_tests.rs index 4d33e6584..4d33e6584 100644 --- a/cli/tests/integration/shared_library_tests.rs +++ b/tests/integration/shared_library_tests.rs diff --git a/cli/tests/integration/task_tests.rs b/tests/integration/task_tests.rs index c8531c13f..c8531c13f 100644 --- a/cli/tests/integration/task_tests.rs +++ b/tests/integration/task_tests.rs diff --git a/cli/tests/integration/test_tests.rs b/tests/integration/test_tests.rs index 27bef8007..27bef8007 100644 --- a/cli/tests/integration/test_tests.rs +++ b/tests/integration/test_tests.rs diff --git a/cli/tests/integration/upgrade_tests.rs b/tests/integration/upgrade_tests.rs index c016b61fc..c016b61fc 100644 --- a/cli/tests/integration/upgrade_tests.rs +++ b/tests/integration/upgrade_tests.rs diff --git a/cli/tests/integration/vendor_tests.rs b/tests/integration/vendor_tests.rs index c38fb653a..c38fb653a 100644 --- a/cli/tests/integration/vendor_tests.rs +++ b/tests/integration/vendor_tests.rs diff --git a/cli/tests/integration/watcher_tests.rs b/tests/integration/watcher_tests.rs index 6a2cab08a..6a2cab08a 100644 --- a/cli/tests/integration/watcher_tests.rs +++ b/tests/integration/watcher_tests.rs diff --git a/cli/tests/integration/worker_tests.rs b/tests/integration/worker_tests.rs index e2d1ef868..e2d1ef868 100644 --- a/cli/tests/integration/worker_tests.rs +++ b/tests/integration/worker_tests.rs diff --git a/cli/tests/integration_tests.rs b/tests/integration_tests.rs index 8469b5416..8469b5416 100644 --- a/cli/tests/integration_tests.rs +++ b/tests/integration_tests.rs diff --git a/cli/tests/integration_tests_runner.rs b/tests/integration_tests_runner.rs index 12e83a019..12e83a019 100644 --- a/cli/tests/integration_tests_runner.rs +++ b/tests/integration_tests_runner.rs diff --git a/cli/tests/lib.rs b/tests/lib.rs index 0a39b9f87..0a39b9f87 100644 --- a/cli/tests/lib.rs +++ b/tests/lib.rs diff --git a/cli/tests/node_compat/common.ts b/tests/node_compat/common.ts index e079c6aaf..e079c6aaf 100644 --- a/cli/tests/node_compat/common.ts +++ b/tests/node_compat/common.ts diff --git a/cli/tests/node_compat/config.jsonc b/tests/node_compat/config.jsonc index d84cc4dd2..d84cc4dd2 100644 --- a/cli/tests/node_compat/config.jsonc +++ b/tests/node_compat/config.jsonc diff --git a/tests/node_compat/deno.json b/tests/node_compat/deno.json new file mode 100644 index 000000000..ec93111fd --- /dev/null +++ b/tests/node_compat/deno.json @@ -0,0 +1,5 @@ +{ + "imports": { + "@test_util/": "../../test_util/" + } +} diff --git a/cli/tests/node_compat/polyfill_globals.js b/tests/node_compat/polyfill_globals.js index 93246d2ef..93246d2ef 100644 --- a/cli/tests/node_compat/polyfill_globals.js +++ b/tests/node_compat/polyfill_globals.js diff --git a/cli/tests/node_compat/runner.ts b/tests/node_compat/runner.ts index 4695037cc..4695037cc 100644 --- a/cli/tests/node_compat/runner.ts +++ b/tests/node_compat/runner.ts diff --git a/cli/tests/node_compat/test.ts b/tests/node_compat/test.ts index 13ff429b5..13ff429b5 100644 --- a/cli/tests/node_compat/test.ts +++ b/tests/node_compat/test.ts diff --git a/cli/tests/node_compat/test/common/child_process.js b/tests/node_compat/test/common/child_process.js index b860d7697..b860d7697 100644 --- a/cli/tests/node_compat/test/common/child_process.js +++ b/tests/node_compat/test/common/child_process.js diff --git a/cli/tests/node_compat/test/common/countdown.js b/tests/node_compat/test/common/countdown.js index a7ae0d029..a7ae0d029 100644 --- a/cli/tests/node_compat/test/common/countdown.js +++ b/tests/node_compat/test/common/countdown.js diff --git a/cli/tests/node_compat/test/common/dns.js b/tests/node_compat/test/common/dns.js index 54df6a55e..54df6a55e 100644 --- a/cli/tests/node_compat/test/common/dns.js +++ b/tests/node_compat/test/common/dns.js diff --git a/cli/tests/node_compat/test/common/duplexpair.js b/tests/node_compat/test/common/duplexpair.js index 6e5286cc8..6e5286cc8 100644 --- a/cli/tests/node_compat/test/common/duplexpair.js +++ b/tests/node_compat/test/common/duplexpair.js diff --git a/cli/tests/node_compat/test/common/fixtures.js b/tests/node_compat/test/common/fixtures.js index 64b888eb6..64b888eb6 100644 --- a/cli/tests/node_compat/test/common/fixtures.js +++ b/tests/node_compat/test/common/fixtures.js diff --git a/cli/tests/node_compat/test/common/hijackstdio.js b/tests/node_compat/test/common/hijackstdio.js index 38582ece2..38582ece2 100644 --- a/cli/tests/node_compat/test/common/hijackstdio.js +++ b/tests/node_compat/test/common/hijackstdio.js diff --git a/cli/tests/node_compat/test/common/index.js b/tests/node_compat/test/common/index.js index 9f5b4814c..9f5b4814c 100644 --- a/cli/tests/node_compat/test/common/index.js +++ b/tests/node_compat/test/common/index.js diff --git a/cli/tests/node_compat/test/common/index.mjs b/tests/node_compat/test/common/index.mjs index 25fe5cbb0..25fe5cbb0 100644 --- a/cli/tests/node_compat/test/common/index.mjs +++ b/tests/node_compat/test/common/index.mjs diff --git a/cli/tests/node_compat/test/common/internet.js b/tests/node_compat/test/common/internet.js index b42fda66c..b42fda66c 100644 --- a/cli/tests/node_compat/test/common/internet.js +++ b/tests/node_compat/test/common/internet.js diff --git a/cli/tests/node_compat/test/common/package.json b/tests/node_compat/test/common/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/common/package.json +++ b/tests/node_compat/test/common/package.json diff --git a/cli/tests/node_compat/test/common/tmpdir.js b/tests/node_compat/test/common/tmpdir.js index 886c4a107..886c4a107 100644 --- a/cli/tests/node_compat/test/common/tmpdir.js +++ b/tests/node_compat/test/common/tmpdir.js diff --git a/cli/tests/node_compat/test/fixtures/GH-1899-output.js b/tests/node_compat/test/fixtures/GH-1899-output.js index d647eb320..d647eb320 100644 --- a/cli/tests/node_compat/test/fixtures/GH-1899-output.js +++ b/tests/node_compat/test/fixtures/GH-1899-output.js diff --git a/cli/tests/node_compat/test/fixtures/a.js b/tests/node_compat/test/fixtures/a.js index 9f5a21a06..9f5a21a06 100644 --- a/cli/tests/node_compat/test/fixtures/a.js +++ b/tests/node_compat/test/fixtures/a.js diff --git a/tests/node_compat/test/fixtures/child-process-spawn-node.js b/tests/node_compat/test/fixtures/child-process-spawn-node.js new file mode 100644 index 000000000..da2b557c9 --- /dev/null +++ b/tests/node_compat/test/fixtures/child-process-spawn-node.js @@ -0,0 +1,14 @@ +const assert = require("assert"); +// TODO(kt3k): Uncomment this when util.debuglog is added +// const debug = require('util').debuglog('test'); +const debug = console.log; + +function onmessage(m) { + debug("CHILD got message:", m); + assert.ok(m.hello); + process.removeListener("message", onmessage); +} + +process.on("message", onmessage); +// TODO(kt3k): Uncomment the below when the ipc features are ready +// process.send({ foo: 'bar' }); diff --git a/cli/tests/node_compat/test/fixtures/child_process_should_emit_error.js b/tests/node_compat/test/fixtures/child_process_should_emit_error.js index 5a56c312b..5a56c312b 100644 --- a/cli/tests/node_compat/test/fixtures/child_process_should_emit_error.js +++ b/tests/node_compat/test/fixtures/child_process_should_emit_error.js diff --git a/cli/tests/node_compat/test/fixtures/echo.js b/tests/node_compat/test/fixtures/echo.js index 893099e9b..893099e9b 100644 --- a/cli/tests/node_compat/test/fixtures/echo.js +++ b/tests/node_compat/test/fixtures/echo.js diff --git a/cli/tests/node_compat/test/fixtures/elipses.txt b/tests/node_compat/test/fixtures/elipses.txt index 610560050..610560050 100644 --- a/cli/tests/node_compat/test/fixtures/elipses.txt +++ b/tests/node_compat/test/fixtures/elipses.txt diff --git a/cli/tests/node_compat/test/fixtures/empty.txt b/tests/node_compat/test/fixtures/empty.txt index e69de29bb..e69de29bb 100644 --- a/cli/tests/node_compat/test/fixtures/empty.txt +++ b/tests/node_compat/test/fixtures/empty.txt diff --git a/cli/tests/node_compat/test/fixtures/exit.js b/tests/node_compat/test/fixtures/exit.js index ca80f4828..ca80f4828 100644 --- a/cli/tests/node_compat/test/fixtures/exit.js +++ b/tests/node_compat/test/fixtures/exit.js diff --git a/cli/tests/node_compat/test/fixtures/keys/agent1-cert.pem b/tests/node_compat/test/fixtures/keys/agent1-cert.pem index bef645b0f..bef645b0f 100644 --- a/cli/tests/node_compat/test/fixtures/keys/agent1-cert.pem +++ b/tests/node_compat/test/fixtures/keys/agent1-cert.pem diff --git a/cli/tests/node_compat/test/fixtures/keys/agent1-key.pem b/tests/node_compat/test/fixtures/keys/agent1-key.pem index 1bd840716..1bd840716 100644 --- a/cli/tests/node_compat/test/fixtures/keys/agent1-key.pem +++ b/tests/node_compat/test/fixtures/keys/agent1-key.pem diff --git a/cli/tests/node_compat/test/fixtures/keys/ca1-cert.pem b/tests/node_compat/test/fixtures/keys/ca1-cert.pem index e1a012c6b..e1a012c6b 100644 --- a/cli/tests/node_compat/test/fixtures/keys/ca1-cert.pem +++ b/tests/node_compat/test/fixtures/keys/ca1-cert.pem diff --git a/cli/tests/node_compat/test/fixtures/loop.js b/tests/node_compat/test/fixtures/loop.js index f9bcfc66e..f9bcfc66e 100644 --- a/cli/tests/node_compat/test/fixtures/loop.js +++ b/tests/node_compat/test/fixtures/loop.js diff --git a/cli/tests/node_compat/test/fixtures/package.json b/tests/node_compat/test/fixtures/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/fixtures/package.json +++ b/tests/node_compat/test/fixtures/package.json diff --git a/cli/tests/node_compat/test/fixtures/print-chars.js b/tests/node_compat/test/fixtures/print-chars.js index 2519c77fd..2519c77fd 100644 --- a/cli/tests/node_compat/test/fixtures/print-chars.js +++ b/tests/node_compat/test/fixtures/print-chars.js diff --git a/cli/tests/node_compat/test/fixtures/x.txt b/tests/node_compat/test/fixtures/x.txt index cd470e619..cd470e619 100644 --- a/cli/tests/node_compat/test/fixtures/x.txt +++ b/tests/node_compat/test/fixtures/x.txt diff --git a/cli/tests/node_compat/test/internet/package.json b/tests/node_compat/test/internet/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/internet/package.json +++ b/tests/node_compat/test/internet/package.json diff --git a/cli/tests/node_compat/test/internet/test-dns-any.js b/tests/node_compat/test/internet/test-dns-any.js index b8a70b8e2..b8a70b8e2 100644 --- a/cli/tests/node_compat/test/internet/test-dns-any.js +++ b/tests/node_compat/test/internet/test-dns-any.js diff --git a/cli/tests/node_compat/test/internet/test-dns-idna2008.js b/tests/node_compat/test/internet/test-dns-idna2008.js index 7308f9deb..7308f9deb 100644 --- a/cli/tests/node_compat/test/internet/test-dns-idna2008.js +++ b/tests/node_compat/test/internet/test-dns-idna2008.js diff --git a/cli/tests/node_compat/test/internet/test-dns-ipv4.js b/tests/node_compat/test/internet/test-dns-ipv4.js index 43b60950a..43b60950a 100644 --- a/cli/tests/node_compat/test/internet/test-dns-ipv4.js +++ b/tests/node_compat/test/internet/test-dns-ipv4.js diff --git a/cli/tests/node_compat/test/internet/test-dns-ipv6.js b/tests/node_compat/test/internet/test-dns-ipv6.js index 4b94d6041..4b94d6041 100644 --- a/cli/tests/node_compat/test/internet/test-dns-ipv6.js +++ b/tests/node_compat/test/internet/test-dns-ipv6.js diff --git a/cli/tests/node_compat/test/internet/test-dns-lookup.js b/tests/node_compat/test/internet/test-dns-lookup.js index cfd3e758c..cfd3e758c 100644 --- a/cli/tests/node_compat/test/internet/test-dns-lookup.js +++ b/tests/node_compat/test/internet/test-dns-lookup.js diff --git a/cli/tests/node_compat/test/internet/test-dns-promises-resolve.js b/tests/node_compat/test/internet/test-dns-promises-resolve.js index e4ee5f782..e4ee5f782 100644 --- a/cli/tests/node_compat/test/internet/test-dns-promises-resolve.js +++ b/tests/node_compat/test/internet/test-dns-promises-resolve.js diff --git a/cli/tests/node_compat/test/internet/test-dns-regress-6244.js b/tests/node_compat/test/internet/test-dns-regress-6244.js index 988cf21ee..988cf21ee 100644 --- a/cli/tests/node_compat/test/internet/test-dns-regress-6244.js +++ b/tests/node_compat/test/internet/test-dns-regress-6244.js diff --git a/cli/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js b/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js index b4360c205..b4360c205 100644 --- a/cli/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js +++ b/tests/node_compat/test/internet/test-dns-setserver-in-callback-of-resolve4.js diff --git a/cli/tests/node_compat/test/internet/test-dns.js b/tests/node_compat/test/internet/test-dns.js index 8aaeb728d..8aaeb728d 100644 --- a/cli/tests/node_compat/test/internet/test-dns.js +++ b/tests/node_compat/test/internet/test-dns.js diff --git a/cli/tests/node_compat/test/internet/test-http-https-default-ports.js b/tests/node_compat/test/internet/test-http-https-default-ports.js index ef3edd2fc..ef3edd2fc 100644 --- a/cli/tests/node_compat/test/internet/test-http-https-default-ports.js +++ b/tests/node_compat/test/internet/test-http-https-default-ports.js diff --git a/cli/tests/node_compat/test/parallel/package.json b/tests/node_compat/test/parallel/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/parallel/package.json +++ b/tests/node_compat/test/parallel/package.json diff --git a/cli/tests/node_compat/test/parallel/test-assert-async.js b/tests/node_compat/test/parallel/test-assert-async.js index a2a8315d8..a2a8315d8 100644 --- a/cli/tests/node_compat/test/parallel/test-assert-async.js +++ b/tests/node_compat/test/parallel/test-assert-async.js diff --git a/cli/tests/node_compat/test/parallel/test-assert-fail.js b/tests/node_compat/test/parallel/test-assert-fail.js index 03def3a88..03def3a88 100644 --- a/cli/tests/node_compat/test/parallel/test-assert-fail.js +++ b/tests/node_compat/test/parallel/test-assert-fail.js diff --git a/cli/tests/node_compat/test/parallel/test-assert-strict-exists.js b/tests/node_compat/test/parallel/test-assert-strict-exists.js index 49499c3f6..49499c3f6 100644 --- a/cli/tests/node_compat/test/parallel/test-assert-strict-exists.js +++ b/tests/node_compat/test/parallel/test-assert-strict-exists.js diff --git a/cli/tests/node_compat/test/parallel/test-assert.js b/tests/node_compat/test/parallel/test-assert.js index 58b95068c..58b95068c 100644 --- a/cli/tests/node_compat/test/parallel/test-assert.js +++ b/tests/node_compat/test/parallel/test-assert.js diff --git a/cli/tests/node_compat/test/parallel/test-bad-unicode.js b/tests/node_compat/test/parallel/test-bad-unicode.js index b4188878d..b4188878d 100644 --- a/cli/tests/node_compat/test/parallel/test-bad-unicode.js +++ b/tests/node_compat/test/parallel/test-bad-unicode.js diff --git a/cli/tests/node_compat/test/parallel/test-btoa-atob.js b/tests/node_compat/test/parallel/test-btoa-atob.js index 3fd8d323c..3fd8d323c 100644 --- a/cli/tests/node_compat/test/parallel/test-btoa-atob.js +++ b/tests/node_compat/test/parallel/test-btoa-atob.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-alloc.js b/tests/node_compat/test/parallel/test-buffer-alloc.js index bb0af6456..bb0af6456 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-alloc.js +++ b/tests/node_compat/test/parallel/test-buffer-alloc.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-arraybuffer.js b/tests/node_compat/test/parallel/test-buffer-arraybuffer.js index 286481758..286481758 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-arraybuffer.js +++ b/tests/node_compat/test/parallel/test-buffer-arraybuffer.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-ascii.js b/tests/node_compat/test/parallel/test-buffer-ascii.js index 08e4e6543..08e4e6543 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-ascii.js +++ b/tests/node_compat/test/parallel/test-buffer-ascii.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-badhex.js b/tests/node_compat/test/parallel/test-buffer-badhex.js index cafaa0887..cafaa0887 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-badhex.js +++ b/tests/node_compat/test/parallel/test-buffer-badhex.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-bigint64.js b/tests/node_compat/test/parallel/test-buffer-bigint64.js index 7aa391f0a..7aa391f0a 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-bigint64.js +++ b/tests/node_compat/test/parallel/test-buffer-bigint64.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-bytelength.js b/tests/node_compat/test/parallel/test-buffer-bytelength.js index 4f10596a2..4f10596a2 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-bytelength.js +++ b/tests/node_compat/test/parallel/test-buffer-bytelength.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-compare-offset.js b/tests/node_compat/test/parallel/test-buffer-compare-offset.js index bb7ba2998..bb7ba2998 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-compare-offset.js +++ b/tests/node_compat/test/parallel/test-buffer-compare-offset.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-concat.js b/tests/node_compat/test/parallel/test-buffer-concat.js index 5d2e2c4a5..5d2e2c4a5 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-concat.js +++ b/tests/node_compat/test/parallel/test-buffer-concat.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-constants.js b/tests/node_compat/test/parallel/test-buffer-constants.js index 0c4f6e21b..0c4f6e21b 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-constants.js +++ b/tests/node_compat/test/parallel/test-buffer-constants.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-copy.js b/tests/node_compat/test/parallel/test-buffer-copy.js index a10bfebc5..a10bfebc5 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-copy.js +++ b/tests/node_compat/test/parallel/test-buffer-copy.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-equals.js b/tests/node_compat/test/parallel/test-buffer-equals.js index 3d22fae84..3d22fae84 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-equals.js +++ b/tests/node_compat/test/parallel/test-buffer-equals.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js b/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js index fc822ec86..fc822ec86 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js +++ b/tests/node_compat/test/parallel/test-buffer-failed-alloc-typed-arrays.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-fakes.js b/tests/node_compat/test/parallel/test-buffer-fakes.js index 2e25d6219..2e25d6219 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-fakes.js +++ b/tests/node_compat/test/parallel/test-buffer-fakes.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-from.js b/tests/node_compat/test/parallel/test-buffer-from.js index 6483e2a63..6483e2a63 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-from.js +++ b/tests/node_compat/test/parallel/test-buffer-from.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-includes.js b/tests/node_compat/test/parallel/test-buffer-includes.js index 797ec8246..797ec8246 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-includes.js +++ b/tests/node_compat/test/parallel/test-buffer-includes.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-indexof.js b/tests/node_compat/test/parallel/test-buffer-indexof.js index 802e0208b..802e0208b 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-indexof.js +++ b/tests/node_compat/test/parallel/test-buffer-indexof.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-inheritance.js b/tests/node_compat/test/parallel/test-buffer-inheritance.js index 6440a84cb..6440a84cb 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-inheritance.js +++ b/tests/node_compat/test/parallel/test-buffer-inheritance.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-isencoding.js b/tests/node_compat/test/parallel/test-buffer-isencoding.js index 439e6860a..439e6860a 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-isencoding.js +++ b/tests/node_compat/test/parallel/test-buffer-isencoding.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-iterator.js b/tests/node_compat/test/parallel/test-buffer-iterator.js index 8ac97e259..8ac97e259 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-iterator.js +++ b/tests/node_compat/test/parallel/test-buffer-iterator.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-new.js b/tests/node_compat/test/parallel/test-buffer-new.js index d15138327..d15138327 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-new.js +++ b/tests/node_compat/test/parallel/test-buffer-new.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js b/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js index df4a6cb52..df4a6cb52 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js +++ b/tests/node_compat/test/parallel/test-buffer-no-negative-allocation.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js b/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js index a6320d0b0..a6320d0b0 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js +++ b/tests/node_compat/test/parallel/test-buffer-nopendingdep-map.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js b/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js index b2b48d51d..b2b48d51d 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js +++ b/tests/node_compat/test/parallel/test-buffer-of-no-deprecation.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-over-max-length.js b/tests/node_compat/test/parallel/test-buffer-over-max-length.js index c10c1e9d1..c10c1e9d1 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-over-max-length.js +++ b/tests/node_compat/test/parallel/test-buffer-over-max-length.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-parent-property.js b/tests/node_compat/test/parallel/test-buffer-parent-property.js index 6efc42d06..6efc42d06 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-parent-property.js +++ b/tests/node_compat/test/parallel/test-buffer-parent-property.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-read.js b/tests/node_compat/test/parallel/test-buffer-read.js index 391b309a8..391b309a8 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-read.js +++ b/tests/node_compat/test/parallel/test-buffer-read.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-readdouble.js b/tests/node_compat/test/parallel/test-buffer-readdouble.js index f4ab9ba88..f4ab9ba88 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-readdouble.js +++ b/tests/node_compat/test/parallel/test-buffer-readdouble.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-readfloat.js b/tests/node_compat/test/parallel/test-buffer-readfloat.js index 780d3a6ac..780d3a6ac 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-readfloat.js +++ b/tests/node_compat/test/parallel/test-buffer-readfloat.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-readint.js b/tests/node_compat/test/parallel/test-buffer-readint.js index 0c865eb92..0c865eb92 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-readint.js +++ b/tests/node_compat/test/parallel/test-buffer-readint.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-readuint.js b/tests/node_compat/test/parallel/test-buffer-readuint.js index bbef6f49a..bbef6f49a 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-readuint.js +++ b/tests/node_compat/test/parallel/test-buffer-readuint.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js b/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js index 180af8993..180af8993 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js +++ b/tests/node_compat/test/parallel/test-buffer-safe-unsafe.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-slice.js b/tests/node_compat/test/parallel/test-buffer-slice.js index 518618d8d..518618d8d 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-slice.js +++ b/tests/node_compat/test/parallel/test-buffer-slice.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-slow.js b/tests/node_compat/test/parallel/test-buffer-slow.js index eed2898c5..eed2898c5 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-slow.js +++ b/tests/node_compat/test/parallel/test-buffer-slow.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-swap.js b/tests/node_compat/test/parallel/test-buffer-swap.js index 8e1315601..8e1315601 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-swap.js +++ b/tests/node_compat/test/parallel/test-buffer-swap.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-tojson.js b/tests/node_compat/test/parallel/test-buffer-tojson.js index d21786c37..d21786c37 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-tojson.js +++ b/tests/node_compat/test/parallel/test-buffer-tojson.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-tostring-range.js b/tests/node_compat/test/parallel/test-buffer-tostring-range.js index 9fa199bd5..9fa199bd5 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-tostring-range.js +++ b/tests/node_compat/test/parallel/test-buffer-tostring-range.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js b/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js index 793d2d891..793d2d891 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js +++ b/tests/node_compat/test/parallel/test-buffer-tostring-rangeerror.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-tostring.js b/tests/node_compat/test/parallel/test-buffer-tostring.js index a6f5cabe0..a6f5cabe0 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-tostring.js +++ b/tests/node_compat/test/parallel/test-buffer-tostring.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-writedouble.js b/tests/node_compat/test/parallel/test-buffer-writedouble.js index 3e4d4e676..3e4d4e676 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-writedouble.js +++ b/tests/node_compat/test/parallel/test-buffer-writedouble.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-writefloat.js b/tests/node_compat/test/parallel/test-buffer-writefloat.js index 4dd75f83e..4dd75f83e 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-writefloat.js +++ b/tests/node_compat/test/parallel/test-buffer-writefloat.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-writeint.js b/tests/node_compat/test/parallel/test-buffer-writeint.js index 117ba47c0..117ba47c0 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-writeint.js +++ b/tests/node_compat/test/parallel/test-buffer-writeint.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-writeuint.js b/tests/node_compat/test/parallel/test-buffer-writeuint.js index 1c954bb9f..1c954bb9f 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-writeuint.js +++ b/tests/node_compat/test/parallel/test-buffer-writeuint.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js b/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js index c3250b870..c3250b870 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js +++ b/tests/node_compat/test/parallel/test-buffer-zero-fill-cli.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js b/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js index 1f1baed66..1f1baed66 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js +++ b/tests/node_compat/test/parallel/test-buffer-zero-fill-reset.js diff --git a/cli/tests/node_compat/test/parallel/test-buffer-zero-fill.js b/tests/node_compat/test/parallel/test-buffer-zero-fill.js index be8ce1412..be8ce1412 100644 --- a/cli/tests/node_compat/test/parallel/test-buffer-zero-fill.js +++ b/tests/node_compat/test/parallel/test-buffer-zero-fill.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-default-options.js b/tests/node_compat/test/parallel/test-child-process-default-options.js index 265cfe22f..265cfe22f 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-default-options.js +++ b/tests/node_compat/test/parallel/test-child-process-default-options.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-double-pipe.js b/tests/node_compat/test/parallel/test-child-process-double-pipe.js index bd31d1038..bd31d1038 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-double-pipe.js +++ b/tests/node_compat/test/parallel/test-child-process-double-pipe.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-abortcontroller-promisified.js b/tests/node_compat/test/parallel/test-child-process-exec-abortcontroller-promisified.js index 4ba699ba4..4ba699ba4 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-abortcontroller-promisified.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-abortcontroller-promisified.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-cwd.js b/tests/node_compat/test/parallel/test-child-process-exec-cwd.js index 4bd394cca..4bd394cca 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-cwd.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-cwd.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-encoding.js b/tests/node_compat/test/parallel/test-child-process-exec-encoding.js index fe03e98d0..fe03e98d0 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-encoding.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-env.js b/tests/node_compat/test/parallel/test-child-process-exec-env.js index 2797b8761..2797b8761 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-env.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-env.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-error.js b/tests/node_compat/test/parallel/test-child-process-exec-error.js index 3f809ed18..3f809ed18 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-error.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-error.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js b/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js index 6a28c2a18..6a28c2a18 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-kill-throws.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-exec-maxbuf.js index 2e99855c0..2e99855c0 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-maxbuf.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-maxbuf.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-std-encoding.js b/tests/node_compat/test/parallel/test-child-process-exec-std-encoding.js index 85f3ec2bf..85f3ec2bf 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-std-encoding.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-std-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js b/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js index 0e5453926..0e5453926 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-stdout-stderr-data-string.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exec-timeout-not-expired.js b/tests/node_compat/test/parallel/test-child-process-exec-timeout-not-expired.js index 31fa1f725..31fa1f725 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exec-timeout-not-expired.js +++ b/tests/node_compat/test/parallel/test-child-process-exec-timeout-not-expired.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js index 729929c78..729929c78 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js +++ b/tests/node_compat/test/parallel/test-child-process-execfile-maxbuf.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-execfile.js b/tests/node_compat/test/parallel/test-child-process-execfile.js index 9f9268407..9f9268407 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-execfile.js +++ b/tests/node_compat/test/parallel/test-child-process-execfile.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js index 7ad857a18..7ad857a18 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js +++ b/tests/node_compat/test/parallel/test-child-process-execfilesync-maxbuf.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-execsync-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-execsync-maxbuf.js index 703896ef1..703896ef1 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-execsync-maxbuf.js +++ b/tests/node_compat/test/parallel/test-child-process-execsync-maxbuf.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-exit-code.js b/tests/node_compat/test/parallel/test-child-process-exit-code.js index caa57986b..caa57986b 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-exit-code.js +++ b/tests/node_compat/test/parallel/test-child-process-exit-code.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-flush-stdio.js b/tests/node_compat/test/parallel/test-child-process-flush-stdio.js index c39bcbdbe..c39bcbdbe 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-flush-stdio.js +++ b/tests/node_compat/test/parallel/test-child-process-flush-stdio.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-fork-ref.js b/tests/node_compat/test/parallel/test-child-process-fork-ref.js index 37c186af8..37c186af8 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-fork-ref.js +++ b/tests/node_compat/test/parallel/test-child-process-fork-ref.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-fork-ref2.js b/tests/node_compat/test/parallel/test-child-process-fork-ref2.js index da59d9378..da59d9378 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-fork-ref2.js +++ b/tests/node_compat/test/parallel/test-child-process-fork-ref2.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js b/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js index d255a0a64..d255a0a64 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js +++ b/tests/node_compat/test/parallel/test-child-process-ipc-next-tick.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-ipc.js b/tests/node_compat/test/parallel/test-child-process-ipc.js index c1d7bc2b6..c1d7bc2b6 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-ipc.js +++ b/tests/node_compat/test/parallel/test-child-process-ipc.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-kill.js b/tests/node_compat/test/parallel/test-child-process-kill.js index 4d4ac3033..4d4ac3033 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-kill.js +++ b/tests/node_compat/test/parallel/test-child-process-kill.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-set-blocking.js b/tests/node_compat/test/parallel/test-child-process-set-blocking.js index b43d9ba9c..b43d9ba9c 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-set-blocking.js +++ b/tests/node_compat/test/parallel/test-child-process-set-blocking.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawn-args.js b/tests/node_compat/test/parallel/test-child-process-spawn-args.js index e2597c921..e2597c921 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawn-args.js +++ b/tests/node_compat/test/parallel/test-child-process-spawn-args.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawn-event.js b/tests/node_compat/test/parallel/test-child-process-spawn-event.js index 315644fd1..315644fd1 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawn-event.js +++ b/tests/node_compat/test/parallel/test-child-process-spawn-event.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js index 05e04a92e..05e04a92e 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js +++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-args.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js index d08ed48d9..d08ed48d9 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js +++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-env.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js index 62b71c729..62b71c729 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js +++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-maxbuf.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js b/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js index 89ff02260..89ff02260 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js +++ b/tests/node_compat/test/parallel/test-child-process-spawnsync-validation-errors.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync.js b/tests/node_compat/test/parallel/test-child-process-spawnsync.js index bb60f3bef..bb60f3bef 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-spawnsync.js +++ b/tests/node_compat/test/parallel/test-child-process-spawnsync.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js b/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js index e213dd6b8..e213dd6b8 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js +++ b/tests/node_compat/test/parallel/test-child-process-stdio-inherit.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js b/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js index 585cc6084..585cc6084 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js +++ b/tests/node_compat/test/parallel/test-child-process-stdout-flush-exit.js diff --git a/cli/tests/node_compat/test/parallel/test-child-process-stdout-flush.js b/tests/node_compat/test/parallel/test-child-process-stdout-flush.js index 4054d2189..4054d2189 100644 --- a/cli/tests/node_compat/test/parallel/test-child-process-stdout-flush.js +++ b/tests/node_compat/test/parallel/test-child-process-stdout-flush.js diff --git a/cli/tests/node_compat/test/parallel/test-console-async-write-error.js b/tests/node_compat/test/parallel/test-console-async-write-error.js index e7591cb9b..e7591cb9b 100644 --- a/cli/tests/node_compat/test/parallel/test-console-async-write-error.js +++ b/tests/node_compat/test/parallel/test-console-async-write-error.js diff --git a/cli/tests/node_compat/test/parallel/test-console-group.js b/tests/node_compat/test/parallel/test-console-group.js index f07107cec..f07107cec 100644 --- a/cli/tests/node_compat/test/parallel/test-console-group.js +++ b/tests/node_compat/test/parallel/test-console-group.js diff --git a/cli/tests/node_compat/test/parallel/test-console-instance.js b/tests/node_compat/test/parallel/test-console-instance.js index ee561564f..ee561564f 100644 --- a/cli/tests/node_compat/test/parallel/test-console-instance.js +++ b/tests/node_compat/test/parallel/test-console-instance.js diff --git a/cli/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js b/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js index 832e1a510..832e1a510 100644 --- a/cli/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js +++ b/tests/node_compat/test/parallel/test-console-log-stdio-broken-dest.js diff --git a/cli/tests/node_compat/test/parallel/test-console-log-throw-primitive.js b/tests/node_compat/test/parallel/test-console-log-throw-primitive.js index 760c96399..760c96399 100644 --- a/cli/tests/node_compat/test/parallel/test-console-log-throw-primitive.js +++ b/tests/node_compat/test/parallel/test-console-log-throw-primitive.js diff --git a/cli/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js b/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js index 98621b3ce..98621b3ce 100644 --- a/cli/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js +++ b/tests/node_compat/test/parallel/test-console-no-swallow-stack-overflow.js diff --git a/cli/tests/node_compat/test/parallel/test-console-sync-write-error.js b/tests/node_compat/test/parallel/test-console-sync-write-error.js index 1018a3b54..1018a3b54 100644 --- a/cli/tests/node_compat/test/parallel/test-console-sync-write-error.js +++ b/tests/node_compat/test/parallel/test-console-sync-write-error.js diff --git a/cli/tests/node_compat/test/parallel/test-console-table.js b/tests/node_compat/test/parallel/test-console-table.js index a7fddac1e..a7fddac1e 100644 --- a/cli/tests/node_compat/test/parallel/test-console-table.js +++ b/tests/node_compat/test/parallel/test-console-table.js diff --git a/cli/tests/node_compat/test/parallel/test-console-tty-colors.js b/tests/node_compat/test/parallel/test-console-tty-colors.js index 6b6886d1f..6b6886d1f 100644 --- a/cli/tests/node_compat/test/parallel/test-console-tty-colors.js +++ b/tests/node_compat/test/parallel/test-console-tty-colors.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-dh-shared.js b/tests/node_compat/test/parallel/test-crypto-dh-shared.js index 7266b00b9..7266b00b9 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-dh-shared.js +++ b/tests/node_compat/test/parallel/test-crypto-dh-shared.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-dh.js b/tests/node_compat/test/parallel/test-crypto-dh.js index bcf0c6764..bcf0c6764 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-dh.js +++ b/tests/node_compat/test/parallel/test-crypto-dh.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-hkdf.js b/tests/node_compat/test/parallel/test-crypto-hkdf.js index b5b35e3ce..b5b35e3ce 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-hkdf.js +++ b/tests/node_compat/test/parallel/test-crypto-hkdf.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-hmac.js b/tests/node_compat/test/parallel/test-crypto-hmac.js index 174457a63..174457a63 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-hmac.js +++ b/tests/node_compat/test/parallel/test-crypto-hmac.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-prime.js b/tests/node_compat/test/parallel/test-crypto-prime.js index fc2218c2a..fc2218c2a 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-prime.js +++ b/tests/node_compat/test/parallel/test-crypto-prime.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-secret-keygen.js b/tests/node_compat/test/parallel/test-crypto-secret-keygen.js index b108269d3..b108269d3 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-secret-keygen.js +++ b/tests/node_compat/test/parallel/test-crypto-secret-keygen.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-stream.js b/tests/node_compat/test/parallel/test-crypto-stream.js index 07d3c5c6d..07d3c5c6d 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-stream.js +++ b/tests/node_compat/test/parallel/test-crypto-stream.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-update-encoding.js b/tests/node_compat/test/parallel/test-crypto-update-encoding.js index deb3c17c3..deb3c17c3 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-update-encoding.js +++ b/tests/node_compat/test/parallel/test-crypto-update-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-crypto-x509.js b/tests/node_compat/test/parallel/test-crypto-x509.js index eeee2f7d7..eeee2f7d7 100644 --- a/cli/tests/node_compat/test/parallel/test-crypto-x509.js +++ b/tests/node_compat/test/parallel/test-crypto-x509.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-close-during-bind.js b/tests/node_compat/test/parallel/test-dgram-close-during-bind.js index fd1fe523e..fd1fe523e 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-close-during-bind.js +++ b/tests/node_compat/test/parallel/test-dgram-close-during-bind.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-close-signal.js b/tests/node_compat/test/parallel/test-dgram-close-signal.js index ef6ac3a32..ef6ac3a32 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-close-signal.js +++ b/tests/node_compat/test/parallel/test-dgram-close-signal.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-custom-lookup.js b/tests/node_compat/test/parallel/test-dgram-custom-lookup.js index ca3bd3df3..ca3bd3df3 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-custom-lookup.js +++ b/tests/node_compat/test/parallel/test-dgram-custom-lookup.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-ipv6only.js b/tests/node_compat/test/parallel/test-dgram-ipv6only.js index 31f4e1fd9..31f4e1fd9 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-ipv6only.js +++ b/tests/node_compat/test/parallel/test-dgram-ipv6only.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-send-cb-quelches-error.js b/tests/node_compat/test/parallel/test-dgram-send-cb-quelches-error.js index d2fd5af50..d2fd5af50 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-send-cb-quelches-error.js +++ b/tests/node_compat/test/parallel/test-dgram-send-cb-quelches-error.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js b/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js index b2fc33262..b2fc33262 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js +++ b/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js diff --git a/cli/tests/node_compat/test/parallel/test-dgram-udp6-link-local-address.js b/tests/node_compat/test/parallel/test-dgram-udp6-link-local-address.js index c828413a2..c828413a2 100644 --- a/cli/tests/node_compat/test/parallel/test-dgram-udp6-link-local-address.js +++ b/tests/node_compat/test/parallel/test-dgram-udp6-link-local-address.js diff --git a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js b/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js index 66a548c37..66a548c37 100644 --- a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js +++ b/tests/node_compat/test/parallel/test-diagnostics-channel-has-subscribers.js diff --git a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js b/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js index 00b786582..00b786582 100644 --- a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js +++ b/tests/node_compat/test/parallel/test-diagnostics-channel-object-channel-pub-sub.js diff --git a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js b/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js index 378cf051e..378cf051e 100644 --- a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js +++ b/tests/node_compat/test/parallel/test-diagnostics-channel-pub-sub.js diff --git a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js b/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js index 3067c78e9..3067c78e9 100644 --- a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js +++ b/tests/node_compat/test/parallel/test-diagnostics-channel-symbol-named.js diff --git a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js b/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js index ddf757a12..ddf757a12 100644 --- a/cli/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js +++ b/tests/node_compat/test/parallel/test-diagnostics-channel-udp.js diff --git a/cli/tests/node_compat/test/parallel/test-dns-lookup.js b/tests/node_compat/test/parallel/test-dns-lookup.js index d137586d2..d137586d2 100644 --- a/cli/tests/node_compat/test/parallel/test-dns-lookup.js +++ b/tests/node_compat/test/parallel/test-dns-lookup.js diff --git a/cli/tests/node_compat/test/parallel/test-dns-memory-error.js b/tests/node_compat/test/parallel/test-dns-memory-error.js index 6ef6968be..6ef6968be 100644 --- a/cli/tests/node_compat/test/parallel/test-dns-memory-error.js +++ b/tests/node_compat/test/parallel/test-dns-memory-error.js diff --git a/cli/tests/node_compat/test/parallel/test-dns-promises-exists.js b/tests/node_compat/test/parallel/test-dns-promises-exists.js index 10f9f81df..10f9f81df 100644 --- a/cli/tests/node_compat/test/parallel/test-dns-promises-exists.js +++ b/tests/node_compat/test/parallel/test-dns-promises-exists.js diff --git a/cli/tests/node_compat/test/parallel/test-dns-resolveany.js b/tests/node_compat/test/parallel/test-dns-resolveany.js index 56d533ad9..56d533ad9 100644 --- a/cli/tests/node_compat/test/parallel/test-dns-resolveany.js +++ b/tests/node_compat/test/parallel/test-dns-resolveany.js diff --git a/cli/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js b/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js index f4b0770fd..f4b0770fd 100644 --- a/cli/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js +++ b/tests/node_compat/test/parallel/test-dns-resolvens-typeerror.js diff --git a/cli/tests/node_compat/test/parallel/test-dns-setservers-type-check.js b/tests/node_compat/test/parallel/test-dns-setservers-type-check.js index e4e65b35a..e4e65b35a 100644 --- a/cli/tests/node_compat/test/parallel/test-dns-setservers-type-check.js +++ b/tests/node_compat/test/parallel/test-dns-setservers-type-check.js diff --git a/cli/tests/node_compat/test/parallel/test-dns.js b/tests/node_compat/test/parallel/test-dns.js index e56f7ca40..e56f7ca40 100644 --- a/cli/tests/node_compat/test/parallel/test-dns.js +++ b/tests/node_compat/test/parallel/test-dns.js diff --git a/cli/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js b/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js index b521b17ba..b521b17ba 100644 --- a/cli/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js +++ b/tests/node_compat/test/parallel/test-eval-strict-referenceerror.js diff --git a/cli/tests/node_compat/test/parallel/test-eval.js b/tests/node_compat/test/parallel/test-eval.js index 78254a377..78254a377 100644 --- a/cli/tests/node_compat/test/parallel/test-eval.js +++ b/tests/node_compat/test/parallel/test-eval.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js index 8ad798021..8ad798021 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js +++ b/tests/node_compat/test/parallel/test-event-emitter-add-listeners.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-emit-context.js b/tests/node_compat/test/parallel/test-event-emitter-emit-context.js index d3673827f..d3673827f 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-emit-context.js +++ b/tests/node_compat/test/parallel/test-event-emitter-emit-context.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js b/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js index 714a47e59..714a47e59 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js +++ b/tests/node_compat/test/parallel/test-event-emitter-error-monitor.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-errors.js b/tests/node_compat/test/parallel/test-event-emitter-errors.js index 39a896b05..39a896b05 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-errors.js +++ b/tests/node_compat/test/parallel/test-event-emitter-errors.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js index 9eeb5ecf9..9eeb5ecf9 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js +++ b/tests/node_compat/test/parallel/test-event-emitter-get-max-listeners.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js b/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js index 604110a5e..604110a5e 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js +++ b/tests/node_compat/test/parallel/test-event-emitter-invalid-listener.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-listener-count.js b/tests/node_compat/test/parallel/test-event-emitter-listener-count.js index e86a9512f..e86a9512f 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-listener-count.js +++ b/tests/node_compat/test/parallel/test-event-emitter-listener-count.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js b/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js index 3daa73b21..3daa73b21 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js +++ b/tests/node_compat/test/parallel/test-event-emitter-listeners-side-effects.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-listeners.js index ddb52da1a..ddb52da1a 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-listeners.js +++ b/tests/node_compat/test/parallel/test-event-emitter-listeners.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-max-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-max-listeners.js index 1245c6b92..1245c6b92 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-max-listeners.js +++ b/tests/node_compat/test/parallel/test-event-emitter-max-listeners.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-method-names.js b/tests/node_compat/test/parallel/test-event-emitter-method-names.js index 7b7822fe1..7b7822fe1 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-method-names.js +++ b/tests/node_compat/test/parallel/test-event-emitter-method-names.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js b/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js index 4953241ba..4953241ba 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js +++ b/tests/node_compat/test/parallel/test-event-emitter-modify-in-emit.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-no-error-provided-to-error-event.js b/tests/node_compat/test/parallel/test-event-emitter-no-error-provided-to-error-event.js index 8ab7aec44..8ab7aec44 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-no-error-provided-to-error-event.js +++ b/tests/node_compat/test/parallel/test-event-emitter-no-error-provided-to-error-event.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-num-args.js b/tests/node_compat/test/parallel/test-event-emitter-num-args.js index 05ed54cb6..05ed54cb6 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-num-args.js +++ b/tests/node_compat/test/parallel/test-event-emitter-num-args.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-once.js b/tests/node_compat/test/parallel/test-event-emitter-once.js index 1d02a639e..1d02a639e 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-once.js +++ b/tests/node_compat/test/parallel/test-event-emitter-once.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-prepend.js b/tests/node_compat/test/parallel/test-event-emitter-prepend.js index b06722742..b06722742 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-prepend.js +++ b/tests/node_compat/test/parallel/test-event-emitter-prepend.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js index 576c02aa0..576c02aa0 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js +++ b/tests/node_compat/test/parallel/test-event-emitter-remove-all-listeners.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js b/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js index 8ee09c30a..8ee09c30a 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js +++ b/tests/node_compat/test/parallel/test-event-emitter-remove-listeners.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js b/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js index 431876fbd..431876fbd 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js +++ b/tests/node_compat/test/parallel/test-event-emitter-set-max-listeners-side-effects.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js b/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js index 067b557f1..067b557f1 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js +++ b/tests/node_compat/test/parallel/test-event-emitter-special-event-names.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-subclass.js b/tests/node_compat/test/parallel/test-event-emitter-subclass.js index 02442c489..02442c489 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-subclass.js +++ b/tests/node_compat/test/parallel/test-event-emitter-subclass.js diff --git a/cli/tests/node_compat/test/parallel/test-event-emitter-symbols.js b/tests/node_compat/test/parallel/test-event-emitter-symbols.js index 8f95d52bd..8f95d52bd 100644 --- a/cli/tests/node_compat/test/parallel/test-event-emitter-symbols.js +++ b/tests/node_compat/test/parallel/test-event-emitter-symbols.js diff --git a/cli/tests/node_compat/test/parallel/test-events-list.js b/tests/node_compat/test/parallel/test-events-list.js index c66da1602..c66da1602 100644 --- a/cli/tests/node_compat/test/parallel/test-events-list.js +++ b/tests/node_compat/test/parallel/test-events-list.js diff --git a/cli/tests/node_compat/test/parallel/test-events-on-async-iterator.js b/tests/node_compat/test/parallel/test-events-on-async-iterator.js index 87efeb842..87efeb842 100644 --- a/cli/tests/node_compat/test/parallel/test-events-on-async-iterator.js +++ b/tests/node_compat/test/parallel/test-events-on-async-iterator.js diff --git a/cli/tests/node_compat/test/parallel/test-events-once.js b/tests/node_compat/test/parallel/test-events-once.js index 7236f9830..7236f9830 100644 --- a/cli/tests/node_compat/test/parallel/test-events-once.js +++ b/tests/node_compat/test/parallel/test-events-once.js diff --git a/cli/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js b/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js index d5b39c203..d5b39c203 100644 --- a/cli/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js +++ b/tests/node_compat/test/parallel/test-events-uncaught-exception-stack.js diff --git a/cli/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js b/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js index db5cd53f6..db5cd53f6 100644 --- a/cli/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js +++ b/tests/node_compat/test/parallel/test-eventtarget-brandcheck.js diff --git a/cli/tests/node_compat/test/parallel/test-exception-handler.js b/tests/node_compat/test/parallel/test-exception-handler.js index 6c76d2463..6c76d2463 100644 --- a/cli/tests/node_compat/test/parallel/test-exception-handler.js +++ b/tests/node_compat/test/parallel/test-exception-handler.js diff --git a/cli/tests/node_compat/test/parallel/test-exception-handler2.js b/tests/node_compat/test/parallel/test-exception-handler2.js index 6cb214593..6cb214593 100644 --- a/cli/tests/node_compat/test/parallel/test-exception-handler2.js +++ b/tests/node_compat/test/parallel/test-exception-handler2.js diff --git a/cli/tests/node_compat/test/parallel/test-file-read-noexist.js b/tests/node_compat/test/parallel/test-file-read-noexist.js index 2e2d4320d..2e2d4320d 100644 --- a/cli/tests/node_compat/test/parallel/test-file-read-noexist.js +++ b/tests/node_compat/test/parallel/test-file-read-noexist.js diff --git a/cli/tests/node_compat/test/parallel/test-file-write-stream.js b/tests/node_compat/test/parallel/test-file-write-stream.js index 199cdd80e..199cdd80e 100644 --- a/cli/tests/node_compat/test/parallel/test-file-write-stream.js +++ b/tests/node_compat/test/parallel/test-file-write-stream.js diff --git a/cli/tests/node_compat/test/parallel/test-file-write-stream2.js b/tests/node_compat/test/parallel/test-file-write-stream2.js index 3aa712a2f..3aa712a2f 100644 --- a/cli/tests/node_compat/test/parallel/test-file-write-stream2.js +++ b/tests/node_compat/test/parallel/test-file-write-stream2.js diff --git a/cli/tests/node_compat/test/parallel/test-file-write-stream3.js b/tests/node_compat/test/parallel/test-file-write-stream3.js index d15a0b571..d15a0b571 100644 --- a/cli/tests/node_compat/test/parallel/test-file-write-stream3.js +++ b/tests/node_compat/test/parallel/test-file-write-stream3.js diff --git a/cli/tests/node_compat/test/parallel/test-file-write-stream4.js b/tests/node_compat/test/parallel/test-file-write-stream4.js index 392a8ef23..392a8ef23 100644 --- a/cli/tests/node_compat/test/parallel/test-file-write-stream4.js +++ b/tests/node_compat/test/parallel/test-file-write-stream4.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-access.js b/tests/node_compat/test/parallel/test-fs-access.js index 2351d4171..2351d4171 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-access.js +++ b/tests/node_compat/test/parallel/test-fs-access.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-append-file-sync.js b/tests/node_compat/test/parallel/test-fs-append-file-sync.js index d5adc427d..d5adc427d 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-append-file-sync.js +++ b/tests/node_compat/test/parallel/test-fs-append-file-sync.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-append-file.js b/tests/node_compat/test/parallel/test-fs-append-file.js index 41c6be684..41c6be684 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-append-file.js +++ b/tests/node_compat/test/parallel/test-fs-append-file.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-chmod-mask.js b/tests/node_compat/test/parallel/test-fs-chmod-mask.js index f11567c7e..f11567c7e 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-chmod-mask.js +++ b/tests/node_compat/test/parallel/test-fs-chmod-mask.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-chmod.js b/tests/node_compat/test/parallel/test-fs-chmod.js index b5f524f64..b5f524f64 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-chmod.js +++ b/tests/node_compat/test/parallel/test-fs-chmod.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-chown-type-check.js b/tests/node_compat/test/parallel/test-fs-chown-type-check.js index 147edf837..147edf837 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-chown-type-check.js +++ b/tests/node_compat/test/parallel/test-fs-chown-type-check.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-copyfile.js b/tests/node_compat/test/parallel/test-fs-copyfile.js index 085fc19bf..085fc19bf 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-copyfile.js +++ b/tests/node_compat/test/parallel/test-fs-copyfile.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-empty-readStream.js b/tests/node_compat/test/parallel/test-fs-empty-readStream.js index 4f70fda27..4f70fda27 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-empty-readStream.js +++ b/tests/node_compat/test/parallel/test-fs-empty-readStream.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-mkdir.js b/tests/node_compat/test/parallel/test-fs-mkdir.js index 5a3897e91..5a3897e91 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-mkdir.js +++ b/tests/node_compat/test/parallel/test-fs-mkdir.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-open-flags.js b/tests/node_compat/test/parallel/test-fs-open-flags.js index 532194e06..532194e06 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-open-flags.js +++ b/tests/node_compat/test/parallel/test-fs-open-flags.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-open-mode-mask.js b/tests/node_compat/test/parallel/test-fs-open-mode-mask.js index 4b56b3b38..4b56b3b38 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-open-mode-mask.js +++ b/tests/node_compat/test/parallel/test-fs-open-mode-mask.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-open-no-close.js b/tests/node_compat/test/parallel/test-fs-open-no-close.js index abde2ad07..abde2ad07 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-open-no-close.js +++ b/tests/node_compat/test/parallel/test-fs-open-no-close.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js b/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js index 3e8efde82..3e8efde82 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js +++ b/tests/node_compat/test/parallel/test-fs-open-numeric-flags.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-open.js b/tests/node_compat/test/parallel/test-fs-open.js index 631e96a2e..631e96a2e 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-open.js +++ b/tests/node_compat/test/parallel/test-fs-open.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-opendir.js b/tests/node_compat/test/parallel/test-fs-opendir.js index 75c4aa074..75c4aa074 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-opendir.js +++ b/tests/node_compat/test/parallel/test-fs-opendir.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js b/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js index aaa8b42e8..aaa8b42e8 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-autoClose.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js b/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js index ac52d66a8..ac52d66a8 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-concurrent-reads.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js b/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js index 1706dd515..1706dd515 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-double-close.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js b/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js index c3adee739..c3adee739 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-fd.js b/tests/node_compat/test/parallel/test-fs-read-stream-fd.js index 467c48b8d..467c48b8d 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-fd.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-fd.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js b/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js index 2de42ffb5..2de42ffb5 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-inherit.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js b/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js index 2f9788894..2f9788894 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-patch-open.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-resume.js b/tests/node_compat/test/parallel/test-fs-read-stream-resume.js index 50ec85603..50ec85603 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-resume.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-resume.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js b/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js index 4dda1150f..4dda1150f 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream-throw-type-error.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-stream.js b/tests/node_compat/test/parallel/test-fs-read-stream.js index e42347264..e42347264 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-stream.js +++ b/tests/node_compat/test/parallel/test-fs-read-stream.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-type.js b/tests/node_compat/test/parallel/test-fs-read-type.js index 99321ce3e..99321ce3e 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-type.js +++ b/tests/node_compat/test/parallel/test-fs-read-type.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read-zero-length.js b/tests/node_compat/test/parallel/test-fs-read-zero-length.js index 3a7501073..3a7501073 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read-zero-length.js +++ b/tests/node_compat/test/parallel/test-fs-read-zero-length.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-read.js b/tests/node_compat/test/parallel/test-fs-read.js index 2a7a286d9..2a7a286d9 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-read.js +++ b/tests/node_compat/test/parallel/test-fs-read.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js b/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js index 1a60f9a71..1a60f9a71 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js +++ b/tests/node_compat/test/parallel/test-fs-readdir-stack-overflow.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-readdir.js b/tests/node_compat/test/parallel/test-fs-readdir.js index 768162fe2..768162fe2 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-readdir.js +++ b/tests/node_compat/test/parallel/test-fs-readdir.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-readfile-empty.js b/tests/node_compat/test/parallel/test-fs-readfile-empty.js index 15f08ef8c..15f08ef8c 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-readfile-empty.js +++ b/tests/node_compat/test/parallel/test-fs-readfile-empty.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-realpath-native.js b/tests/node_compat/test/parallel/test-fs-realpath-native.js index 13e5b48cb..13e5b48cb 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-realpath-native.js +++ b/tests/node_compat/test/parallel/test-fs-realpath-native.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js index 92ca59255..92ca59255 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-not-found.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js index 95703b99f..95703b99f 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-sync-warns-on-file.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js index 9a6d584d9..9a6d584d9 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-not-found.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js index 4dc27ab8f..4dc27ab8f 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-throws-on-file.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js index 3e9564ec1..3e9564ec1 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-not-found.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js index 99644e639..99644e639 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive-warns-on-file.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive.js b/tests/node_compat/test/parallel/test-fs-rmdir-recursive.js index 31bde4487..31bde4487 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-recursive.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-recursive.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js b/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js index 0ebfdacaf..0ebfdacaf 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js +++ b/tests/node_compat/test/parallel/test-fs-rmdir-type-check.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-watchfile.js b/tests/node_compat/test/parallel/test-fs-watchfile.js index 3a77fb56d..3a77fb56d 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-watchfile.js +++ b/tests/node_compat/test/parallel/test-fs-watchfile.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-buffer.js b/tests/node_compat/test/parallel/test-fs-write-buffer.js index 16577a8f2..16577a8f2 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-buffer.js +++ b/tests/node_compat/test/parallel/test-fs-write-buffer.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-file-buffer.js b/tests/node_compat/test/parallel/test-fs-write-file-buffer.js index 9283cc8b4..9283cc8b4 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-file-buffer.js +++ b/tests/node_compat/test/parallel/test-fs-write-file-buffer.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js b/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js index d56aa9a13..d56aa9a13 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js +++ b/tests/node_compat/test/parallel/test-fs-write-file-invalid-path.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-file-sync.js b/tests/node_compat/test/parallel/test-fs-write-file-sync.js index 027ba6377..027ba6377 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-file-sync.js +++ b/tests/node_compat/test/parallel/test-fs-write-file-sync.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-file.js b/tests/node_compat/test/parallel/test-fs-write-file.js index a5c93cd23..a5c93cd23 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-file.js +++ b/tests/node_compat/test/parallel/test-fs-write-file.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-no-fd.js b/tests/node_compat/test/parallel/test-fs-write-no-fd.js index 58ab0fa44..58ab0fa44 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-no-fd.js +++ b/tests/node_compat/test/parallel/test-fs-write-no-fd.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js b/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js index 00958457f..00958457f 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream-autoclose-option.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js b/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js index 61c3120d7..61c3120d7 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream-close-without-callback.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js b/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js index 1f38a3b7d..1f38a3b7d 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream-double-close.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream-end.js b/tests/node_compat/test/parallel/test-fs-write-stream-end.js index f11cf86af..f11cf86af 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream-end.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream-end.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream-fs.js b/tests/node_compat/test/parallel/test-fs-write-stream-fs.js index 533a60d4d..533a60d4d 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream-fs.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream-fs.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js b/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js index 5540725f7..5540725f7 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream-throw-type-error.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-stream.js b/tests/node_compat/test/parallel/test-fs-write-stream.js index 4d03d44a8..4d03d44a8 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-stream.js +++ b/tests/node_compat/test/parallel/test-fs-write-stream.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write-sync.js b/tests/node_compat/test/parallel/test-fs-write-sync.js index 8d9ee9efe..8d9ee9efe 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write-sync.js +++ b/tests/node_compat/test/parallel/test-fs-write-sync.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-write.js b/tests/node_compat/test/parallel/test-fs-write.js index 33fcb84cf..33fcb84cf 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-write.js +++ b/tests/node_compat/test/parallel/test-fs-write.js diff --git a/cli/tests/node_compat/test/parallel/test-fs-writev-sync.js b/tests/node_compat/test/parallel/test-fs-writev-sync.js index 53fa48af1..53fa48af1 100644 --- a/cli/tests/node_compat/test/parallel/test-fs-writev-sync.js +++ b/tests/node_compat/test/parallel/test-fs-writev-sync.js diff --git a/cli/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js b/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js index d143dd439..d143dd439 100644 --- a/cli/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js +++ b/tests/node_compat/test/parallel/test-handle-wrap-close-abort.js diff --git a/cli/tests/node_compat/test/parallel/test-http-agent-getname.js b/tests/node_compat/test/parallel/test-http-agent-getname.js index 3404252a8..3404252a8 100644 --- a/cli/tests/node_compat/test/parallel/test-http-agent-getname.js +++ b/tests/node_compat/test/parallel/test-http-agent-getname.js diff --git a/cli/tests/node_compat/test/parallel/test-http-client-get-url.js b/tests/node_compat/test/parallel/test-http-client-get-url.js index a38d3ff7b..a38d3ff7b 100644 --- a/cli/tests/node_compat/test/parallel/test-http-client-get-url.js +++ b/tests/node_compat/test/parallel/test-http-client-get-url.js diff --git a/cli/tests/node_compat/test/parallel/test-http-client-read-in-error.js b/tests/node_compat/test/parallel/test-http-client-read-in-error.js index 3c86ad8f5..3c86ad8f5 100644 --- a/cli/tests/node_compat/test/parallel/test-http-client-read-in-error.js +++ b/tests/node_compat/test/parallel/test-http-client-read-in-error.js diff --git a/cli/tests/node_compat/test/parallel/test-http-localaddress.js b/tests/node_compat/test/parallel/test-http-localaddress.js index ab3eff808..ab3eff808 100644 --- a/cli/tests/node_compat/test/parallel/test-http-localaddress.js +++ b/tests/node_compat/test/parallel/test-http-localaddress.js diff --git a/cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js index e9b324892..e9b324892 100644 --- a/cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js +++ b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-getter.js diff --git a/cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js index 9531e5611..9531e5611 100644 --- a/cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js +++ b/tests/node_compat/test/parallel/test-http-outgoing-internal-headernames-setter.js diff --git a/cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js b/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js index 0e4783a6d..0e4783a6d 100644 --- a/cli/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js +++ b/tests/node_compat/test/parallel/test-http-outgoing-internal-headers.js diff --git a/cli/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js b/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js index 194a9345a..194a9345a 100644 --- a/cli/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js +++ b/tests/node_compat/test/parallel/test-http-outgoing-renderHeaders.js diff --git a/cli/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js b/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js index 592e576b4..592e576b4 100644 --- a/cli/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js +++ b/tests/node_compat/test/parallel/test-http-outgoing-settimeout.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-auth-with-header-in-request.js b/tests/node_compat/test/parallel/test-http-url.parse-auth-with-header-in-request.js index 24cc2f33d..24cc2f33d 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-auth-with-header-in-request.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-auth-with-header-in-request.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-auth.js b/tests/node_compat/test/parallel/test-http-url.parse-auth.js index c9b691aa2..c9b691aa2 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-auth.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-auth.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-basic.js b/tests/node_compat/test/parallel/test-http-url.parse-basic.js index e41bf41a1..e41bf41a1 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-basic.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-basic.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-https.request.js b/tests/node_compat/test/parallel/test-http-url.parse-https.request.js index 89c7ca2b4..89c7ca2b4 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-https.request.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-https.request.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js b/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js index 4f50f8a54..4f50f8a54 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-only-support-http-https-protocol.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-path.js b/tests/node_compat/test/parallel/test-http-url.parse-path.js index 7077fcae1..7077fcae1 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-path.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-path.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-post.js b/tests/node_compat/test/parallel/test-http-url.parse-post.js index da316d2db..da316d2db 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-post.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-post.js diff --git a/cli/tests/node_compat/test/parallel/test-http-url.parse-search.js b/tests/node_compat/test/parallel/test-http-url.parse-search.js index 52651869d..52651869d 100644 --- a/cli/tests/node_compat/test/parallel/test-http-url.parse-search.js +++ b/tests/node_compat/test/parallel/test-http-url.parse-search.js diff --git a/cli/tests/node_compat/test/parallel/test-net-access-byteswritten.js b/tests/node_compat/test/parallel/test-net-access-byteswritten.js index a20a1a7a7..a20a1a7a7 100644 --- a/cli/tests/node_compat/test/parallel/test-net-access-byteswritten.js +++ b/tests/node_compat/test/parallel/test-net-access-byteswritten.js diff --git a/cli/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js b/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js index edafbcdc4..edafbcdc4 100644 --- a/cli/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js +++ b/tests/node_compat/test/parallel/test-net-better-error-messages-listen-path.js diff --git a/cli/tests/node_compat/test/parallel/test-net-better-error-messages-path.js b/tests/node_compat/test/parallel/test-net-better-error-messages-path.js index d1bada362..d1bada362 100644 --- a/cli/tests/node_compat/test/parallel/test-net-better-error-messages-path.js +++ b/tests/node_compat/test/parallel/test-net-better-error-messages-path.js diff --git a/cli/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js b/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js index 6db63fef3..6db63fef3 100644 --- a/cli/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js +++ b/tests/node_compat/test/parallel/test-net-better-error-messages-port-hostname.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-after-destroy.js b/tests/node_compat/test/parallel/test-net-connect-after-destroy.js index e08d7c036..e08d7c036 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-after-destroy.js +++ b/tests/node_compat/test/parallel/test-net-connect-after-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-buffer.js b/tests/node_compat/test/parallel/test-net-connect-buffer.js index 04e71247e..04e71247e 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-buffer.js +++ b/tests/node_compat/test/parallel/test-net-connect-buffer.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-buffer2.js b/tests/node_compat/test/parallel/test-net-connect-buffer2.js index 499f3849f..499f3849f 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-buffer2.js +++ b/tests/node_compat/test/parallel/test-net-connect-buffer2.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-destroy.js b/tests/node_compat/test/parallel/test-net-connect-destroy.js index 2dcea39b2..2dcea39b2 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-destroy.js +++ b/tests/node_compat/test/parallel/test-net-connect-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js b/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js index 08d65f75e..08d65f75e 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js +++ b/tests/node_compat/test/parallel/test-net-connect-immediate-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js b/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js index 4df92e9c1..4df92e9c1 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js +++ b/tests/node_compat/test/parallel/test-net-connect-immediate-finish.js diff --git a/cli/tests/node_compat/test/parallel/test-net-connect-no-arg.js b/tests/node_compat/test/parallel/test-net-connect-no-arg.js index 3e3e3eec4..3e3e3eec4 100644 --- a/cli/tests/node_compat/test/parallel/test-net-connect-no-arg.js +++ b/tests/node_compat/test/parallel/test-net-connect-no-arg.js diff --git a/cli/tests/node_compat/test/parallel/test-net-dns-error.js b/tests/node_compat/test/parallel/test-net-dns-error.js index ce326dd6f..ce326dd6f 100644 --- a/cli/tests/node_compat/test/parallel/test-net-dns-error.js +++ b/tests/node_compat/test/parallel/test-net-dns-error.js diff --git a/cli/tests/node_compat/test/parallel/test-net-during-close.js b/tests/node_compat/test/parallel/test-net-during-close.js index f13c9fb18..f13c9fb18 100644 --- a/cli/tests/node_compat/test/parallel/test-net-during-close.js +++ b/tests/node_compat/test/parallel/test-net-during-close.js diff --git a/cli/tests/node_compat/test/parallel/test-net-end-close.js b/tests/node_compat/test/parallel/test-net-end-close.js index a818dd097..a818dd097 100644 --- a/cli/tests/node_compat/test/parallel/test-net-end-close.js +++ b/tests/node_compat/test/parallel/test-net-end-close.js diff --git a/cli/tests/node_compat/test/parallel/test-net-end-without-connect.js b/tests/node_compat/test/parallel/test-net-end-without-connect.js index f14d81770..f14d81770 100644 --- a/cli/tests/node_compat/test/parallel/test-net-end-without-connect.js +++ b/tests/node_compat/test/parallel/test-net-end-without-connect.js diff --git a/cli/tests/node_compat/test/parallel/test-net-isip.js b/tests/node_compat/test/parallel/test-net-isip.js index 016277483..016277483 100644 --- a/cli/tests/node_compat/test/parallel/test-net-isip.js +++ b/tests/node_compat/test/parallel/test-net-isip.js diff --git a/cli/tests/node_compat/test/parallel/test-net-isipv4.js b/tests/node_compat/test/parallel/test-net-isipv4.js index a9733c342..a9733c342 100644 --- a/cli/tests/node_compat/test/parallel/test-net-isipv4.js +++ b/tests/node_compat/test/parallel/test-net-isipv4.js diff --git a/cli/tests/node_compat/test/parallel/test-net-isipv6.js b/tests/node_compat/test/parallel/test-net-isipv6.js index cc74fe657..cc74fe657 100644 --- a/cli/tests/node_compat/test/parallel/test-net-isipv6.js +++ b/tests/node_compat/test/parallel/test-net-isipv6.js diff --git a/cli/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js b/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js index 69b72b9c2..69b72b9c2 100644 --- a/cli/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js +++ b/tests/node_compat/test/parallel/test-net-listen-close-server-callback-is-not-function.js diff --git a/cli/tests/node_compat/test/parallel/test-net-listen-close-server.js b/tests/node_compat/test/parallel/test-net-listen-close-server.js index 441cf4511..441cf4511 100644 --- a/cli/tests/node_compat/test/parallel/test-net-listen-close-server.js +++ b/tests/node_compat/test/parallel/test-net-listen-close-server.js diff --git a/cli/tests/node_compat/test/parallel/test-net-listen-invalid-port.js b/tests/node_compat/test/parallel/test-net-listen-invalid-port.js index 10685f1d0..10685f1d0 100644 --- a/cli/tests/node_compat/test/parallel/test-net-listen-invalid-port.js +++ b/tests/node_compat/test/parallel/test-net-listen-invalid-port.js diff --git a/cli/tests/node_compat/test/parallel/test-net-listening.js b/tests/node_compat/test/parallel/test-net-listening.js index 275dd06eb..275dd06eb 100644 --- a/cli/tests/node_compat/test/parallel/test-net-listening.js +++ b/tests/node_compat/test/parallel/test-net-listening.js diff --git a/cli/tests/node_compat/test/parallel/test-net-localerror.js b/tests/node_compat/test/parallel/test-net-localerror.js index 9e2080ed4..9e2080ed4 100644 --- a/cli/tests/node_compat/test/parallel/test-net-localerror.js +++ b/tests/node_compat/test/parallel/test-net-localerror.js diff --git a/cli/tests/node_compat/test/parallel/test-net-options-lookup.js b/tests/node_compat/test/parallel/test-net-options-lookup.js index d3ca0451c..d3ca0451c 100644 --- a/cli/tests/node_compat/test/parallel/test-net-options-lookup.js +++ b/tests/node_compat/test/parallel/test-net-options-lookup.js diff --git a/cli/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js b/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js index 451c9eb92..451c9eb92 100644 --- a/cli/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js +++ b/tests/node_compat/test/parallel/test-net-pipe-connect-errors.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-call-listen-multiple-times.js b/tests/node_compat/test/parallel/test-net-server-call-listen-multiple-times.js index 30b443b18..30b443b18 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-call-listen-multiple-times.js +++ b/tests/node_compat/test/parallel/test-net-server-call-listen-multiple-times.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js b/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js index b8547f516..b8547f516 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js +++ b/tests/node_compat/test/parallel/test-net-server-listen-options-signal.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-listen-options.js b/tests/node_compat/test/parallel/test-net-server-listen-options.js index 4d76a7ca7..4d76a7ca7 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-listen-options.js +++ b/tests/node_compat/test/parallel/test-net-server-listen-options.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-listen-path.js b/tests/node_compat/test/parallel/test-net-server-listen-path.js index 559e9c7eb..559e9c7eb 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-listen-path.js +++ b/tests/node_compat/test/parallel/test-net-server-listen-path.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js b/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js index 15808a7a1..15808a7a1 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js +++ b/tests/node_compat/test/parallel/test-net-server-listen-remove-callback.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-options.js b/tests/node_compat/test/parallel/test-net-server-options.js index 92086d149..92086d149 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-options.js +++ b/tests/node_compat/test/parallel/test-net-server-options.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-try-ports.js b/tests/node_compat/test/parallel/test-net-server-try-ports.js index 69dbc78b8..69dbc78b8 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-try-ports.js +++ b/tests/node_compat/test/parallel/test-net-server-try-ports.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-unref-persistent.js b/tests/node_compat/test/parallel/test-net-server-unref-persistent.js index 04b79686e..04b79686e 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-unref-persistent.js +++ b/tests/node_compat/test/parallel/test-net-server-unref-persistent.js diff --git a/cli/tests/node_compat/test/parallel/test-net-server-unref.js b/tests/node_compat/test/parallel/test-net-server-unref.js index 68fd6edb1..68fd6edb1 100644 --- a/cli/tests/node_compat/test/parallel/test-net-server-unref.js +++ b/tests/node_compat/test/parallel/test-net-server-unref.js diff --git a/cli/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js b/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js index 8cff55d70..8cff55d70 100644 --- a/cli/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js +++ b/tests/node_compat/test/parallel/test-net-socket-destroy-twice.js diff --git a/cli/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js b/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js index c50b0061a..c50b0061a 100644 --- a/cli/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js +++ b/tests/node_compat/test/parallel/test-net-socket-no-halfopen-enforcer.js diff --git a/cli/tests/node_compat/test/parallel/test-net-socket-timeout.js b/tests/node_compat/test/parallel/test-net-socket-timeout.js index b69e40530..b69e40530 100644 --- a/cli/tests/node_compat/test/parallel/test-net-socket-timeout.js +++ b/tests/node_compat/test/parallel/test-net-socket-timeout.js diff --git a/cli/tests/node_compat/test/parallel/test-net-timeout-no-handle.js b/tests/node_compat/test/parallel/test-net-timeout-no-handle.js index 1948dc9ad..1948dc9ad 100644 --- a/cli/tests/node_compat/test/parallel/test-net-timeout-no-handle.js +++ b/tests/node_compat/test/parallel/test-net-timeout-no-handle.js diff --git a/cli/tests/node_compat/test/parallel/test-net-write-arguments.js b/tests/node_compat/test/parallel/test-net-write-arguments.js index d6beb72ee..d6beb72ee 100644 --- a/cli/tests/node_compat/test/parallel/test-net-write-arguments.js +++ b/tests/node_compat/test/parallel/test-net-write-arguments.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js b/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js index 6d0d6a7e0..6d0d6a7e0 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js +++ b/tests/node_compat/test/parallel/test-next-tick-doesnt-hang.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js b/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js index fff40f754..fff40f754 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js +++ b/tests/node_compat/test/parallel/test-next-tick-fixed-queue-regression.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js b/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js index b2c00b43a..b2c00b43a 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js +++ b/tests/node_compat/test/parallel/test-next-tick-intentional-starvation.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick-ordering.js b/tests/node_compat/test/parallel/test-next-tick-ordering.js index a2839a49e..a2839a49e 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick-ordering.js +++ b/tests/node_compat/test/parallel/test-next-tick-ordering.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick-ordering2.js b/tests/node_compat/test/parallel/test-next-tick-ordering2.js index 29c76d32e..29c76d32e 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick-ordering2.js +++ b/tests/node_compat/test/parallel/test-next-tick-ordering2.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick-when-exiting.js b/tests/node_compat/test/parallel/test-next-tick-when-exiting.js index 5f20b5247..5f20b5247 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick-when-exiting.js +++ b/tests/node_compat/test/parallel/test-next-tick-when-exiting.js diff --git a/cli/tests/node_compat/test/parallel/test-next-tick.js b/tests/node_compat/test/parallel/test-next-tick.js index aee5c06a1..aee5c06a1 100644 --- a/cli/tests/node_compat/test/parallel/test-next-tick.js +++ b/tests/node_compat/test/parallel/test-next-tick.js diff --git a/cli/tests/node_compat/test/parallel/test-nodeeventtarget.js b/tests/node_compat/test/parallel/test-nodeeventtarget.js index b5c6e788f..b5c6e788f 100644 --- a/cli/tests/node_compat/test/parallel/test-nodeeventtarget.js +++ b/tests/node_compat/test/parallel/test-nodeeventtarget.js diff --git a/cli/tests/node_compat/test/parallel/test-os.js b/tests/node_compat/test/parallel/test-os.js index 9de4f516f..9de4f516f 100644 --- a/cli/tests/node_compat/test/parallel/test-os.js +++ b/tests/node_compat/test/parallel/test-os.js diff --git a/cli/tests/node_compat/test/parallel/test-outgoing-message-destroy.js b/tests/node_compat/test/parallel/test-outgoing-message-destroy.js index d9a13796f..d9a13796f 100644 --- a/cli/tests/node_compat/test/parallel/test-outgoing-message-destroy.js +++ b/tests/node_compat/test/parallel/test-outgoing-message-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-outgoing-message-pipe.js b/tests/node_compat/test/parallel/test-outgoing-message-pipe.js index ab9063c93..ab9063c93 100644 --- a/cli/tests/node_compat/test/parallel/test-outgoing-message-pipe.js +++ b/tests/node_compat/test/parallel/test-outgoing-message-pipe.js diff --git a/cli/tests/node_compat/test/parallel/test-parse-args.mjs b/tests/node_compat/test/parallel/test-parse-args.mjs index ae8332fa7..ae8332fa7 100644 --- a/cli/tests/node_compat/test/parallel/test-parse-args.mjs +++ b/tests/node_compat/test/parallel/test-parse-args.mjs diff --git a/cli/tests/node_compat/test/parallel/test-path-basename.js b/tests/node_compat/test/parallel/test-path-basename.js index 9e8e9ecf8..9e8e9ecf8 100644 --- a/cli/tests/node_compat/test/parallel/test-path-basename.js +++ b/tests/node_compat/test/parallel/test-path-basename.js diff --git a/cli/tests/node_compat/test/parallel/test-path-dirname.js b/tests/node_compat/test/parallel/test-path-dirname.js index 0b123fcdf..0b123fcdf 100644 --- a/cli/tests/node_compat/test/parallel/test-path-dirname.js +++ b/tests/node_compat/test/parallel/test-path-dirname.js diff --git a/cli/tests/node_compat/test/parallel/test-path-extname.js b/tests/node_compat/test/parallel/test-path-extname.js index d1ed0342b..d1ed0342b 100644 --- a/cli/tests/node_compat/test/parallel/test-path-extname.js +++ b/tests/node_compat/test/parallel/test-path-extname.js diff --git a/cli/tests/node_compat/test/parallel/test-path-isabsolute.js b/tests/node_compat/test/parallel/test-path-isabsolute.js index ff64fc7ff..ff64fc7ff 100644 --- a/cli/tests/node_compat/test/parallel/test-path-isabsolute.js +++ b/tests/node_compat/test/parallel/test-path-isabsolute.js diff --git a/cli/tests/node_compat/test/parallel/test-path-join.js b/tests/node_compat/test/parallel/test-path-join.js index 2b958b720..2b958b720 100644 --- a/cli/tests/node_compat/test/parallel/test-path-join.js +++ b/tests/node_compat/test/parallel/test-path-join.js diff --git a/cli/tests/node_compat/test/parallel/test-path-makelong.js b/tests/node_compat/test/parallel/test-path-makelong.js index 694240109..694240109 100644 --- a/cli/tests/node_compat/test/parallel/test-path-makelong.js +++ b/tests/node_compat/test/parallel/test-path-makelong.js diff --git a/cli/tests/node_compat/test/parallel/test-path-normalize.js b/tests/node_compat/test/parallel/test-path-normalize.js index 543be42e6..543be42e6 100644 --- a/cli/tests/node_compat/test/parallel/test-path-normalize.js +++ b/tests/node_compat/test/parallel/test-path-normalize.js diff --git a/cli/tests/node_compat/test/parallel/test-path-parse-format.js b/tests/node_compat/test/parallel/test-path-parse-format.js index 657503d3c..657503d3c 100644 --- a/cli/tests/node_compat/test/parallel/test-path-parse-format.js +++ b/tests/node_compat/test/parallel/test-path-parse-format.js diff --git a/cli/tests/node_compat/test/parallel/test-path-posix-exists.js b/tests/node_compat/test/parallel/test-path-posix-exists.js index 97f2c4ae6..97f2c4ae6 100644 --- a/cli/tests/node_compat/test/parallel/test-path-posix-exists.js +++ b/tests/node_compat/test/parallel/test-path-posix-exists.js diff --git a/cli/tests/node_compat/test/parallel/test-path-relative.js b/tests/node_compat/test/parallel/test-path-relative.js index 7b89cc2cd..7b89cc2cd 100644 --- a/cli/tests/node_compat/test/parallel/test-path-relative.js +++ b/tests/node_compat/test/parallel/test-path-relative.js diff --git a/cli/tests/node_compat/test/parallel/test-path-resolve.js b/tests/node_compat/test/parallel/test-path-resolve.js index be010ed83..be010ed83 100644 --- a/cli/tests/node_compat/test/parallel/test-path-resolve.js +++ b/tests/node_compat/test/parallel/test-path-resolve.js diff --git a/cli/tests/node_compat/test/parallel/test-path-win32-exists.js b/tests/node_compat/test/parallel/test-path-win32-exists.js index 8bb1850dc..8bb1850dc 100644 --- a/cli/tests/node_compat/test/parallel/test-path-win32-exists.js +++ b/tests/node_compat/test/parallel/test-path-win32-exists.js diff --git a/cli/tests/node_compat/test/parallel/test-path-zero-length-strings.js b/tests/node_compat/test/parallel/test-path-zero-length-strings.js index 5fa1eafbf..5fa1eafbf 100644 --- a/cli/tests/node_compat/test/parallel/test-path-zero-length-strings.js +++ b/tests/node_compat/test/parallel/test-path-zero-length-strings.js diff --git a/cli/tests/node_compat/test/parallel/test-path.js b/tests/node_compat/test/parallel/test-path.js index b68f0c2d4..b68f0c2d4 100644 --- a/cli/tests/node_compat/test/parallel/test-path.js +++ b/tests/node_compat/test/parallel/test-path.js diff --git a/cli/tests/node_compat/test/parallel/test-process-beforeexit.js b/tests/node_compat/test/parallel/test-process-beforeexit.js index 7ac789c69..7ac789c69 100644 --- a/cli/tests/node_compat/test/parallel/test-process-beforeexit.js +++ b/tests/node_compat/test/parallel/test-process-beforeexit.js diff --git a/cli/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js b/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js index 28a9a31e9..28a9a31e9 100644 --- a/cli/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js +++ b/tests/node_compat/test/parallel/test-process-binding-internalbinding-allowlist.js diff --git a/cli/tests/node_compat/test/parallel/test-process-env-allowed-flags.js b/tests/node_compat/test/parallel/test-process-env-allowed-flags.js index 1b2c96e68..1b2c96e68 100644 --- a/cli/tests/node_compat/test/parallel/test-process-env-allowed-flags.js +++ b/tests/node_compat/test/parallel/test-process-env-allowed-flags.js diff --git a/cli/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js b/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js index a1472e538..a1472e538 100644 --- a/cli/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js +++ b/tests/node_compat/test/parallel/test-process-exit-from-before-exit.js diff --git a/cli/tests/node_compat/test/parallel/test-process-exit-handler.js b/tests/node_compat/test/parallel/test-process-exit-handler.js index 7069c73e9..7069c73e9 100644 --- a/cli/tests/node_compat/test/parallel/test-process-exit-handler.js +++ b/tests/node_compat/test/parallel/test-process-exit-handler.js diff --git a/cli/tests/node_compat/test/parallel/test-process-exit-recursive.js b/tests/node_compat/test/parallel/test-process-exit-recursive.js index 054b23271..054b23271 100644 --- a/cli/tests/node_compat/test/parallel/test-process-exit-recursive.js +++ b/tests/node_compat/test/parallel/test-process-exit-recursive.js diff --git a/cli/tests/node_compat/test/parallel/test-process-exit.js b/tests/node_compat/test/parallel/test-process-exit.js index 50a3bd3b1..50a3bd3b1 100644 --- a/cli/tests/node_compat/test/parallel/test-process-exit.js +++ b/tests/node_compat/test/parallel/test-process-exit.js diff --git a/cli/tests/node_compat/test/parallel/test-process-kill-pid.js b/tests/node_compat/test/parallel/test-process-kill-pid.js index f6e612f2b..f6e612f2b 100644 --- a/cli/tests/node_compat/test/parallel/test-process-kill-pid.js +++ b/tests/node_compat/test/parallel/test-process-kill-pid.js diff --git a/cli/tests/node_compat/test/parallel/test-process-uptime.js b/tests/node_compat/test/parallel/test-process-uptime.js index 74d2c13bd..74d2c13bd 100644 --- a/cli/tests/node_compat/test/parallel/test-process-uptime.js +++ b/tests/node_compat/test/parallel/test-process-uptime.js diff --git a/cli/tests/node_compat/test/parallel/test-promise-unhandled-silent.js b/tests/node_compat/test/parallel/test-promise-unhandled-silent.js index 3b2dcde15..3b2dcde15 100644 --- a/cli/tests/node_compat/test/parallel/test-promise-unhandled-silent.js +++ b/tests/node_compat/test/parallel/test-promise-unhandled-silent.js diff --git a/cli/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js b/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js index a911f096a..a911f096a 100644 --- a/cli/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js +++ b/tests/node_compat/test/parallel/test-promise-unhandled-throw-handler.js diff --git a/cli/tests/node_compat/test/parallel/test-querystring-escape.js b/tests/node_compat/test/parallel/test-querystring-escape.js index f4f635af1..f4f635af1 100644 --- a/cli/tests/node_compat/test/parallel/test-querystring-escape.js +++ b/tests/node_compat/test/parallel/test-querystring-escape.js diff --git a/cli/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js b/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js index 4a8c7ab0d..4a8c7ab0d 100644 --- a/cli/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js +++ b/tests/node_compat/test/parallel/test-querystring-maxKeys-non-finite.js diff --git a/cli/tests/node_compat/test/parallel/test-querystring-multichar-separator.js b/tests/node_compat/test/parallel/test-querystring-multichar-separator.js index 3234dcd60..3234dcd60 100644 --- a/cli/tests/node_compat/test/parallel/test-querystring-multichar-separator.js +++ b/tests/node_compat/test/parallel/test-querystring-multichar-separator.js diff --git a/cli/tests/node_compat/test/parallel/test-querystring.js b/tests/node_compat/test/parallel/test-querystring.js index fb8176da5..fb8176da5 100644 --- a/cli/tests/node_compat/test/parallel/test-querystring.js +++ b/tests/node_compat/test/parallel/test-querystring.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js b/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js index 542616424..542616424 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js +++ b/tests/node_compat/test/parallel/test-readline-emit-keypress-events.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js b/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js index 584dc1110..584dc1110 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js +++ b/tests/node_compat/test/parallel/test-readline-interface-escapecodetimeout.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-interface.js b/tests/node_compat/test/parallel/test-readline-interface.js index e8e48dd1e..e8e48dd1e 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-interface.js +++ b/tests/node_compat/test/parallel/test-readline-interface.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-keys.js b/tests/node_compat/test/parallel/test-readline-keys.js index aeeb5fffc..aeeb5fffc 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-keys.js +++ b/tests/node_compat/test/parallel/test-readline-keys.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-position.js b/tests/node_compat/test/parallel/test-readline-position.js index 5ee445c8e..5ee445c8e 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-position.js +++ b/tests/node_compat/test/parallel/test-readline-position.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-reopen.js b/tests/node_compat/test/parallel/test-readline-reopen.js index 6d3207220..6d3207220 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-reopen.js +++ b/tests/node_compat/test/parallel/test-readline-reopen.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-set-raw-mode.js b/tests/node_compat/test/parallel/test-readline-set-raw-mode.js index a1f4f743d..a1f4f743d 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-set-raw-mode.js +++ b/tests/node_compat/test/parallel/test-readline-set-raw-mode.js diff --git a/cli/tests/node_compat/test/parallel/test-readline-undefined-columns.js b/tests/node_compat/test/parallel/test-readline-undefined-columns.js index e41798ae3..e41798ae3 100644 --- a/cli/tests/node_compat/test/parallel/test-readline-undefined-columns.js +++ b/tests/node_compat/test/parallel/test-readline-undefined-columns.js diff --git a/cli/tests/node_compat/test/parallel/test-readline.js b/tests/node_compat/test/parallel/test-readline.js index 15f1b4f0c..15f1b4f0c 100644 --- a/cli/tests/node_compat/test/parallel/test-readline.js +++ b/tests/node_compat/test/parallel/test-readline.js diff --git a/cli/tests/node_compat/test/parallel/test-stdin-from-file-spawn.js b/tests/node_compat/test/parallel/test-stdin-from-file-spawn.js index 2f6b41898..2f6b41898 100644 --- a/cli/tests/node_compat/test/parallel/test-stdin-from-file-spawn.js +++ b/tests/node_compat/test/parallel/test-stdin-from-file-spawn.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-add-abort-signal.js b/tests/node_compat/test/parallel/test-stream-add-abort-signal.js index cf598b547..cf598b547 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-add-abort-signal.js +++ b/tests/node_compat/test/parallel/test-stream-add-abort-signal.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-aliases-legacy.js b/tests/node_compat/test/parallel/test-stream-aliases-legacy.js index e0af8bb47..e0af8bb47 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-aliases-legacy.js +++ b/tests/node_compat/test/parallel/test-stream-aliases-legacy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-auto-destroy.js b/tests/node_compat/test/parallel/test-stream-auto-destroy.js index a0947ba39..a0947ba39 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-auto-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-auto-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js b/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js index 84095dbf1..84095dbf1 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js +++ b/tests/node_compat/test/parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-backpressure.js b/tests/node_compat/test/parallel/test-stream-backpressure.js index f1e14bb5d..f1e14bb5d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-backpressure.js +++ b/tests/node_compat/test/parallel/test-stream-backpressure.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-big-packet.js b/tests/node_compat/test/parallel/test-stream-big-packet.js index 4e816cc2d..4e816cc2d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-big-packet.js +++ b/tests/node_compat/test/parallel/test-stream-big-packet.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-big-push.js b/tests/node_compat/test/parallel/test-stream-big-push.js index 2e6d01fe2..2e6d01fe2 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-big-push.js +++ b/tests/node_compat/test/parallel/test-stream-big-push.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-buffer-list.js b/tests/node_compat/test/parallel/test-stream-buffer-list.js index 7b16f5d83..7b16f5d83 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-buffer-list.js +++ b/tests/node_compat/test/parallel/test-stream-buffer-list.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-construct.js b/tests/node_compat/test/parallel/test-stream-construct.js index 0cd93c9e9..0cd93c9e9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-construct.js +++ b/tests/node_compat/test/parallel/test-stream-construct.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-destroy-event-order.js b/tests/node_compat/test/parallel/test-stream-destroy-event-order.js index 09802b2a3..09802b2a3 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-destroy-event-order.js +++ b/tests/node_compat/test/parallel/test-stream-destroy-event-order.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-destroy.js b/tests/node_compat/test/parallel/test-stream-duplex-destroy.js index 73cf75fe3..73cf75fe3 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-duplex-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-end.js b/tests/node_compat/test/parallel/test-stream-duplex-end.js index b6d95a448..b6d95a448 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-end.js +++ b/tests/node_compat/test/parallel/test-stream-duplex-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js b/tests/node_compat/test/parallel/test-stream-duplex-from.js index c91a040c5..c91a040c5 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-from.js +++ b/tests/node_compat/test/parallel/test-stream-duplex-from.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-props.js b/tests/node_compat/test/parallel/test-stream-duplex-props.js index 1eedc9404..1eedc9404 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-props.js +++ b/tests/node_compat/test/parallel/test-stream-duplex-props.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js b/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js index 87327814c..87327814c 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js +++ b/tests/node_compat/test/parallel/test-stream-duplex-readable-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js b/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js index c556d14ef..c556d14ef 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js +++ b/tests/node_compat/test/parallel/test-stream-duplex-writable-finished.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-duplex.js b/tests/node_compat/test/parallel/test-stream-duplex.js index d7210e49e..d7210e49e 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-duplex.js +++ b/tests/node_compat/test/parallel/test-stream-duplex.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-end-paused.js b/tests/node_compat/test/parallel/test-stream-end-paused.js index 12c05243d..12c05243d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-end-paused.js +++ b/tests/node_compat/test/parallel/test-stream-end-paused.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-error-once.js b/tests/node_compat/test/parallel/test-stream-error-once.js index 592788d4f..592788d4f 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-error-once.js +++ b/tests/node_compat/test/parallel/test-stream-error-once.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-events-prepend.js b/tests/node_compat/test/parallel/test-stream-events-prepend.js index 7245977f1..7245977f1 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-events-prepend.js +++ b/tests/node_compat/test/parallel/test-stream-events-prepend.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-inheritance.js b/tests/node_compat/test/parallel/test-stream-inheritance.js index 296e12996..296e12996 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-inheritance.js +++ b/tests/node_compat/test/parallel/test-stream-inheritance.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-ispaused.js b/tests/node_compat/test/parallel/test-stream-ispaused.js index 8f4897047..8f4897047 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-ispaused.js +++ b/tests/node_compat/test/parallel/test-stream-ispaused.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js b/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js index 0478b0ee7..0478b0ee7 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js +++ b/tests/node_compat/test/parallel/test-stream-objectmode-undefined.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js b/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js index f273b9602..f273b9602 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js +++ b/tests/node_compat/test/parallel/test-stream-once-readable-pipe.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-after-end.js b/tests/node_compat/test/parallel/test-stream-pipe-after-end.js index a7af22b94..a7af22b94 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-after-end.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-after-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js index e49c99033..e49c99033 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-manual-resume.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js index 54fbe9e89..54fbe9e89 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-await-drain-push-while-write.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js b/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js index 49062fe0b..49062fe0b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-await-drain.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js b/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js index 279ce10d5..279ce10d5 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js b/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js index 8106ab4f1..8106ab4f1 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-cleanup.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js b/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js index 356bb1cd9..356bb1cd9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-error-handling.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-event.js b/tests/node_compat/test/parallel/test-stream-pipe-event.js index a2721c053..a2721c053 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-event.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-event.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js b/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js index c0b144c18..c0b144c18 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-flow-after-unpipe.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-flow.js b/tests/node_compat/test/parallel/test-stream-pipe-flow.js index 8e877312f..8e877312f 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-flow.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-flow.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js b/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js index 0666e44d6..0666e44d6 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-manual-resume.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js b/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js index cd24dd4ca..cd24dd4ca 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-multiple-pipes.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js b/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js index f8b724de9..f8b724de9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-needDrain.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js b/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js index 7e1215733..7e1215733 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-same-destination-twice.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js b/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js index a51dcfbad..a51dcfbad 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-unpipe-streams.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js b/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js index 7a1719be3..7a1719be3 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js +++ b/tests/node_compat/test/parallel/test-stream-pipe-without-listenerCount.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js b/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js index 3d3ce96cc..3d3ce96cc 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js +++ b/tests/node_compat/test/parallel/test-stream-pipeline-async-iterator.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js b/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js index e785a0008..e785a0008 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-pipeline-queued-end-in-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js b/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js index a03fe17dd..a03fe17dd 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js +++ b/tests/node_compat/test/parallel/test-stream-pipeline-with-empty-string.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-push-strings.js b/tests/node_compat/test/parallel/test-stream-push-strings.js index 4d88e082b..4d88e082b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-push-strings.js +++ b/tests/node_compat/test/parallel/test-stream-push-strings.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-aborted.js b/tests/node_compat/test/parallel/test-stream-readable-aborted.js index 3e6550e7e..3e6550e7e 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-aborted.js +++ b/tests/node_compat/test/parallel/test-stream-readable-aborted.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js b/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js index 50939ac81..50939ac81 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js +++ b/tests/node_compat/test/parallel/test-stream-readable-add-chunk-during-data.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js b/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js index b11ae8fca..b11ae8fca 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js +++ b/tests/node_compat/test/parallel/test-stream-readable-constructor-set-methods.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-data.js b/tests/node_compat/test/parallel/test-stream-readable-data.js index d33f9f248..d33f9f248 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-data.js +++ b/tests/node_compat/test/parallel/test-stream-readable-data.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-destroy.js b/tests/node_compat/test/parallel/test-stream-readable-destroy.js index 0a780c98e..0a780c98e 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-readable-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-didRead.js b/tests/node_compat/test/parallel/test-stream-readable-didRead.js index 2d9cfa40f..2d9cfa40f 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-didRead.js +++ b/tests/node_compat/test/parallel/test-stream-readable-didRead.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js b/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js index fac562092..fac562092 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js +++ b/tests/node_compat/test/parallel/test-stream-readable-emit-readable-short-stream.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js b/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js index a05130737..a05130737 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js +++ b/tests/node_compat/test/parallel/test-stream-readable-emittedReadable.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js b/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js index 7c542f330..7c542f330 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js +++ b/tests/node_compat/test/parallel/test-stream-readable-end-destroyed.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-ended.js b/tests/node_compat/test/parallel/test-stream-readable-ended.js index b8f59e2df..b8f59e2df 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-ended.js +++ b/tests/node_compat/test/parallel/test-stream-readable-ended.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-error-end.js b/tests/node_compat/test/parallel/test-stream-readable-error-end.js index 821a5f458..821a5f458 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-error-end.js +++ b/tests/node_compat/test/parallel/test-stream-readable-error-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-event.js b/tests/node_compat/test/parallel/test-stream-readable-event.js index 87a4e0feb..87a4e0feb 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-event.js +++ b/tests/node_compat/test/parallel/test-stream-readable-event.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js b/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js index 1ac657197..1ac657197 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js +++ b/tests/node_compat/test/parallel/test-stream-readable-flow-recursion.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js index c797129ee..c797129ee 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js +++ b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-async.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js index 3d9c0507a..3d9c0507a 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js +++ b/tests/node_compat/test/parallel/test-stream-readable-hwm-0-no-flow-data.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js b/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js index cfbfac8ab..cfbfac8ab 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js +++ b/tests/node_compat/test/parallel/test-stream-readable-hwm-0.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js b/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js index e3819cad9..e3819cad9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js +++ b/tests/node_compat/test/parallel/test-stream-readable-infinite-read.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js b/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js index a40526389..a40526389 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js +++ b/tests/node_compat/test/parallel/test-stream-readable-invalid-chunk.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-needReadable.js b/tests/node_compat/test/parallel/test-stream-readable-needReadable.js index 675e5e872..675e5e872 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-needReadable.js +++ b/tests/node_compat/test/parallel/test-stream-readable-needReadable.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js b/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js index 06f06f41d..06f06f41d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js +++ b/tests/node_compat/test/parallel/test-stream-readable-next-no-null.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js b/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js index 9a96db87d..9a96db87d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js +++ b/tests/node_compat/test/parallel/test-stream-readable-no-unneeded-readable.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js b/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js index 4ab7f3adb..4ab7f3adb 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js +++ b/tests/node_compat/test/parallel/test-stream-readable-object-multi-push-async.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js b/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js index 923349ef4..923349ef4 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js +++ b/tests/node_compat/test/parallel/test-stream-readable-pause-and-resume.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js b/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js index 3df0bcaaf..3df0bcaaf 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js +++ b/tests/node_compat/test/parallel/test-stream-readable-readable-then-resume.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-readable.js b/tests/node_compat/test/parallel/test-stream-readable-readable.js index 6353ad8d4..6353ad8d4 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-readable.js +++ b/tests/node_compat/test/parallel/test-stream-readable-readable.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js b/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js index 26663b88b..26663b88b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js +++ b/tests/node_compat/test/parallel/test-stream-readable-reading-readingMore.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js b/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js index 0e490529c..0e490529c 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js +++ b/tests/node_compat/test/parallel/test-stream-readable-resume-hwm.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js b/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js index 474670264..474670264 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js +++ b/tests/node_compat/test/parallel/test-stream-readable-resumeScheduled.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js index c99a39819..c99a39819 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js +++ b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-existing-buffers.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js index e6823f7cd..e6823f7cd 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js +++ b/tests/node_compat/test/parallel/test-stream-readable-setEncoding-null.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-unshift.js b/tests/node_compat/test/parallel/test-stream-readable-unshift.js index 1303befa9..1303befa9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-unshift.js +++ b/tests/node_compat/test/parallel/test-stream-readable-unshift.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js b/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js index a2fe2ac01..a2fe2ac01 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js +++ b/tests/node_compat/test/parallel/test-stream-readable-with-unimplemented-_read.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-readableListening-state.js b/tests/node_compat/test/parallel/test-stream-readableListening-state.js index 69085ac86..69085ac86 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-readableListening-state.js +++ b/tests/node_compat/test/parallel/test-stream-readableListening-state.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js b/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js index 3ca0a4c68..3ca0a4c68 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js +++ b/tests/node_compat/test/parallel/test-stream-transform-callback-twice.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js b/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js index 4daf199b0..4daf199b0 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js +++ b/tests/node_compat/test/parallel/test-stream-transform-constructor-set-methods.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-destroy.js b/tests/node_compat/test/parallel/test-stream-transform-destroy.js index e721f848f..e721f848f 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-transform-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-final-sync.js b/tests/node_compat/test/parallel/test-stream-transform-final-sync.js index 5d108097d..5d108097d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-final-sync.js +++ b/tests/node_compat/test/parallel/test-stream-transform-final-sync.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-final.js b/tests/node_compat/test/parallel/test-stream-transform-final.js index 1d14adf6b..1d14adf6b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-final.js +++ b/tests/node_compat/test/parallel/test-stream-transform-final.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-flush-data.js b/tests/node_compat/test/parallel/test-stream-transform-flush-data.js index 6b8ba1adc..6b8ba1adc 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-flush-data.js +++ b/tests/node_compat/test/parallel/test-stream-transform-flush-data.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js b/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js index 12390fe36..12390fe36 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js +++ b/tests/node_compat/test/parallel/test-stream-transform-objectmode-falsey-value.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-split-highwatermark.js b/tests/node_compat/test/parallel/test-stream-transform-split-highwatermark.js index 783ddfc91..783ddfc91 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-split-highwatermark.js +++ b/tests/node_compat/test/parallel/test-stream-transform-split-highwatermark.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-transform-split-objectmode.js b/tests/node_compat/test/parallel/test-stream-transform-split-objectmode.js index 22e2586df..22e2586df 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-transform-split-objectmode.js +++ b/tests/node_compat/test/parallel/test-stream-transform-split-objectmode.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-uint8array.js b/tests/node_compat/test/parallel/test-stream-uint8array.js index c8de2dfe6..c8de2dfe6 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-uint8array.js +++ b/tests/node_compat/test/parallel/test-stream-uint8array.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-unpipe-event.js b/tests/node_compat/test/parallel/test-stream-unpipe-event.js index d0b60f435..d0b60f435 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-unpipe-event.js +++ b/tests/node_compat/test/parallel/test-stream-unpipe-event.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js b/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js index f6c057fd6..f6c057fd6 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js +++ b/tests/node_compat/test/parallel/test-stream-unshift-empty-chunk.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-unshift-read-race.js b/tests/node_compat/test/parallel/test-stream-unshift-read-race.js index d88850519..d88850519 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-unshift-read-race.js +++ b/tests/node_compat/test/parallel/test-stream-unshift-read-race.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js b/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js index 547309d70..547309d70 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js +++ b/tests/node_compat/test/parallel/test-stream-writable-change-default-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js b/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js index ee24da756..ee24da756 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js +++ b/tests/node_compat/test/parallel/test-stream-writable-clear-buffer.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js b/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js index 58e687edd..58e687edd 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js +++ b/tests/node_compat/test/parallel/test-stream-writable-constructor-set-methods.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js b/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js index 9bf47bb1a..9bf47bb1a 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js +++ b/tests/node_compat/test/parallel/test-stream-writable-decoded-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-destroy.js b/tests/node_compat/test/parallel/test-stream-writable-destroy.js index bfe145854..bfe145854 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-writable-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js b/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js index 730146db3..730146db3 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js +++ b/tests/node_compat/test/parallel/test-stream-writable-end-cb-error.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js b/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js index ea1759303..ea1759303 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js +++ b/tests/node_compat/test/parallel/test-stream-writable-end-multiple.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-ended-state.js b/tests/node_compat/test/parallel/test-stream-writable-ended-state.js index f6f6971a2..f6f6971a2 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-ended-state.js +++ b/tests/node_compat/test/parallel/test-stream-writable-ended-state.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js b/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js index 9d8775dec..9d8775dec 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js +++ b/tests/node_compat/test/parallel/test-stream-writable-finish-destroyed.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-finished-state.js b/tests/node_compat/test/parallel/test-stream-writable-finished-state.js index 0b7333bf2..0b7333bf2 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-finished-state.js +++ b/tests/node_compat/test/parallel/test-stream-writable-finished-state.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-finished.js b/tests/node_compat/test/parallel/test-stream-writable-finished.js index 30ae737f9..30ae737f9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-finished.js +++ b/tests/node_compat/test/parallel/test-stream-writable-finished.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js b/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js index 82912adb8..82912adb8 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js +++ b/tests/node_compat/test/parallel/test-stream-writable-invalid-chunk.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js b/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js index fe8c28921..fe8c28921 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js +++ b/tests/node_compat/test/parallel/test-stream-writable-needdrain-state.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-null.js b/tests/node_compat/test/parallel/test-stream-writable-null.js index e2ddd7d0a..e2ddd7d0a 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-null.js +++ b/tests/node_compat/test/parallel/test-stream-writable-null.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-properties.js b/tests/node_compat/test/parallel/test-stream-writable-properties.js index ef19b3a01..ef19b3a01 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-properties.js +++ b/tests/node_compat/test/parallel/test-stream-writable-properties.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-writable.js b/tests/node_compat/test/parallel/test-stream-writable-writable.js index 63be4b3ca..63be4b3ca 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-writable.js +++ b/tests/node_compat/test/parallel/test-stream-writable-writable.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js b/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js index c4df3233a..c4df3233a 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js +++ b/tests/node_compat/test/parallel/test-stream-writable-write-cb-error.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js b/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js index ab2408fd9..ab2408fd9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js +++ b/tests/node_compat/test/parallel/test-stream-writable-write-cb-twice.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-write-error.js b/tests/node_compat/test/parallel/test-stream-writable-write-error.js index 2bb91f821..2bb91f821 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-write-error.js +++ b/tests/node_compat/test/parallel/test-stream-writable-write-error.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js b/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js index ff34a83c1..ff34a83c1 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js +++ b/tests/node_compat/test/parallel/test-stream-writable-write-writev-finish.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writableState-ending.js b/tests/node_compat/test/parallel/test-stream-writableState-ending.js index a477e63b6..a477e63b6 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writableState-ending.js +++ b/tests/node_compat/test/parallel/test-stream-writableState-ending.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js b/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js index 0320d1a5d..0320d1a5d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js +++ b/tests/node_compat/test/parallel/test-stream-writableState-uncorked-bufferedRequestCount.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-write-destroy.js b/tests/node_compat/test/parallel/test-stream-write-destroy.js index a4f103547..a4f103547 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-write-destroy.js +++ b/tests/node_compat/test/parallel/test-stream-write-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-write-drain.js b/tests/node_compat/test/parallel/test-stream-write-drain.js index 008b2b34b..008b2b34b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-write-drain.js +++ b/tests/node_compat/test/parallel/test-stream-write-drain.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-write-final.js b/tests/node_compat/test/parallel/test-stream-write-final.js index 527f515eb..527f515eb 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-write-final.js +++ b/tests/node_compat/test/parallel/test-stream-write-final.js diff --git a/cli/tests/node_compat/test/parallel/test-stream-writev.js b/tests/node_compat/test/parallel/test-stream-writev.js index 050546646..050546646 100644 --- a/cli/tests/node_compat/test/parallel/test-stream-writev.js +++ b/tests/node_compat/test/parallel/test-stream-writev.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js b/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js index 34a1f7240..34a1f7240 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js +++ b/tests/node_compat/test/parallel/test-stream2-base64-single-char-read-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-basic.js b/tests/node_compat/test/parallel/test-stream2-basic.js index b820d5287..b820d5287 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-basic.js +++ b/tests/node_compat/test/parallel/test-stream2-basic.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-compatibility.js b/tests/node_compat/test/parallel/test-stream2-compatibility.js index c228366c3..c228366c3 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-compatibility.js +++ b/tests/node_compat/test/parallel/test-stream2-compatibility.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-decode-partial.js b/tests/node_compat/test/parallel/test-stream2-decode-partial.js index f3a9ec15d..f3a9ec15d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-decode-partial.js +++ b/tests/node_compat/test/parallel/test-stream2-decode-partial.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-finish-pipe.js b/tests/node_compat/test/parallel/test-stream2-finish-pipe.js index c98812ff8..c98812ff8 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-finish-pipe.js +++ b/tests/node_compat/test/parallel/test-stream2-finish-pipe.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-large-read-stall.js b/tests/node_compat/test/parallel/test-stream2-large-read-stall.js index e13b53711..e13b53711 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-large-read-stall.js +++ b/tests/node_compat/test/parallel/test-stream2-large-read-stall.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-objects.js b/tests/node_compat/test/parallel/test-stream2-objects.js index c5b2c981e..c5b2c981e 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-objects.js +++ b/tests/node_compat/test/parallel/test-stream2-objects.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js b/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js index ee8b0d656..ee8b0d656 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js +++ b/tests/node_compat/test/parallel/test-stream2-pipe-error-handling.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js b/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js index 990dfc67d..990dfc67d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js +++ b/tests/node_compat/test/parallel/test-stream2-pipe-error-once-listener.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-push.js b/tests/node_compat/test/parallel/test-stream2-push.js index e1dcdec95..e1dcdec95 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-push.js +++ b/tests/node_compat/test/parallel/test-stream2-push.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js b/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js index 0d291ac08..0d291ac08 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js +++ b/tests/node_compat/test/parallel/test-stream2-read-sync-stack.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js b/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js index fca3b11f2..fca3b11f2 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-empty-buffer-no-eof.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-from-list.js b/tests/node_compat/test/parallel/test-stream2-readable-from-list.js index 90f93d040..90f93d040 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-from-list.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-from-list.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js b/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js index bf65fda0a..bf65fda0a 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-legacy-drain.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js b/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js index c1e3a2f46..c1e3a2f46 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-non-empty-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js index 8971536e7..8971536e7 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap-destroy.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js index 5716d0bf9..5716d0bf9 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap-empty.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js index 77cb757c4..77cb757c4 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap-error.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap.js b/tests/node_compat/test/parallel/test-stream2-readable-wrap.js index 2bf8e99b0..2bf8e99b0 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-readable-wrap.js +++ b/tests/node_compat/test/parallel/test-stream2-readable-wrap.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-set-encoding.js b/tests/node_compat/test/parallel/test-stream2-set-encoding.js index ed7023b29..ed7023b29 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-set-encoding.js +++ b/tests/node_compat/test/parallel/test-stream2-set-encoding.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-transform.js b/tests/node_compat/test/parallel/test-stream2-transform.js index 2bd376b1f..2bd376b1f 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-transform.js +++ b/tests/node_compat/test/parallel/test-stream2-transform.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js b/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js index 9c1a6844d..9c1a6844d 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js +++ b/tests/node_compat/test/parallel/test-stream2-unpipe-drain.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js b/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js index 8958bc06b..8958bc06b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js +++ b/tests/node_compat/test/parallel/test-stream2-unpipe-leak.js diff --git a/cli/tests/node_compat/test/parallel/test-stream2-writable.js b/tests/node_compat/test/parallel/test-stream2-writable.js index 8b7197b9b..8b7197b9b 100644 --- a/cli/tests/node_compat/test/parallel/test-stream2-writable.js +++ b/tests/node_compat/test/parallel/test-stream2-writable.js diff --git a/cli/tests/node_compat/test/parallel/test-stream3-cork-end.js b/tests/node_compat/test/parallel/test-stream3-cork-end.js index 52f881121..52f881121 100644 --- a/cli/tests/node_compat/test/parallel/test-stream3-cork-end.js +++ b/tests/node_compat/test/parallel/test-stream3-cork-end.js diff --git a/cli/tests/node_compat/test/parallel/test-stream3-cork-uncork.js b/tests/node_compat/test/parallel/test-stream3-cork-uncork.js index 1fb993003..1fb993003 100644 --- a/cli/tests/node_compat/test/parallel/test-stream3-cork-uncork.js +++ b/tests/node_compat/test/parallel/test-stream3-cork-uncork.js diff --git a/cli/tests/node_compat/test/parallel/test-stream3-pause-then-read.js b/tests/node_compat/test/parallel/test-stream3-pause-then-read.js index f840672ce..f840672ce 100644 --- a/cli/tests/node_compat/test/parallel/test-stream3-pause-then-read.js +++ b/tests/node_compat/test/parallel/test-stream3-pause-then-read.js diff --git a/cli/tests/node_compat/test/parallel/test-streams-highwatermark.js b/tests/node_compat/test/parallel/test-streams-highwatermark.js index 9245f7db0..9245f7db0 100644 --- a/cli/tests/node_compat/test/parallel/test-streams-highwatermark.js +++ b/tests/node_compat/test/parallel/test-streams-highwatermark.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-api-refs.js b/tests/node_compat/test/parallel/test-timers-api-refs.js index 62ce55fad..62ce55fad 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-api-refs.js +++ b/tests/node_compat/test/parallel/test-timers-api-refs.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-args.js b/tests/node_compat/test/parallel/test-timers-args.js index b771bf591..b771bf591 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-args.js +++ b/tests/node_compat/test/parallel/test-timers-args.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js b/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js index 7b7b59b27..7b7b59b27 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js +++ b/tests/node_compat/test/parallel/test-timers-clear-null-does-not-throw-error.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js b/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js index 524389c6b..524389c6b 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js +++ b/tests/node_compat/test/parallel/test-timers-clear-object-does-not-throw-error.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js b/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js index b6af3f943..b6af3f943 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js +++ b/tests/node_compat/test/parallel/test-timers-clear-timeout-interval-equivalent.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-clearImmediate.js b/tests/node_compat/test/parallel/test-timers-clearImmediate.js index 129e301f2..129e301f2 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-clearImmediate.js +++ b/tests/node_compat/test/parallel/test-timers-clearImmediate.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-interval-throw.js b/tests/node_compat/test/parallel/test-timers-interval-throw.js index d408fc866..d408fc866 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-interval-throw.js +++ b/tests/node_compat/test/parallel/test-timers-interval-throw.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-non-integer-delay.js b/tests/node_compat/test/parallel/test-timers-non-integer-delay.js index 1d3ca55c2..1d3ca55c2 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-non-integer-delay.js +++ b/tests/node_compat/test/parallel/test-timers-non-integer-delay.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-refresh.js b/tests/node_compat/test/parallel/test-timers-refresh.js index 942cf5604..942cf5604 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-refresh.js +++ b/tests/node_compat/test/parallel/test-timers-refresh.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js b/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js index fa6348d75..fa6348d75 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js +++ b/tests/node_compat/test/parallel/test-timers-same-timeout-wrong-list-deleted.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js b/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js index d93ef57fe..d93ef57fe 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js +++ b/tests/node_compat/test/parallel/test-timers-timeout-with-non-integer.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-uncaught-exception.js b/tests/node_compat/test/parallel/test-timers-uncaught-exception.js index e76c11afc..e76c11afc 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-uncaught-exception.js +++ b/tests/node_compat/test/parallel/test-timers-uncaught-exception.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js b/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js index 03a0861e2..03a0861e2 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js +++ b/tests/node_compat/test/parallel/test-timers-unref-throw-then-ref.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-user-call.js b/tests/node_compat/test/parallel/test-timers-user-call.js index 969051f80..969051f80 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-user-call.js +++ b/tests/node_compat/test/parallel/test-timers-user-call.js diff --git a/cli/tests/node_compat/test/parallel/test-timers-zero-timeout.js b/tests/node_compat/test/parallel/test-timers-zero-timeout.js index ef32f7381..ef32f7381 100644 --- a/cli/tests/node_compat/test/parallel/test-timers-zero-timeout.js +++ b/tests/node_compat/test/parallel/test-timers-zero-timeout.js diff --git a/cli/tests/node_compat/test/parallel/test-tty-stdin-end.js b/tests/node_compat/test/parallel/test-tty-stdin-end.js index ee38cbd2c..ee38cbd2c 100644 --- a/cli/tests/node_compat/test/parallel/test-tty-stdin-end.js +++ b/tests/node_compat/test/parallel/test-tty-stdin-end.js diff --git a/cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js b/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js index 95b9bffe6..95b9bffe6 100644 --- a/cli/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js +++ b/tests/node_compat/test/parallel/test-ttywrap-invalid-fd.js diff --git a/cli/tests/node_compat/test/parallel/test-url-domain-ascii-unicode.js b/tests/node_compat/test/parallel/test-url-domain-ascii-unicode.js index 9aeb23a54..9aeb23a54 100644 --- a/cli/tests/node_compat/test/parallel/test-url-domain-ascii-unicode.js +++ b/tests/node_compat/test/parallel/test-url-domain-ascii-unicode.js diff --git a/cli/tests/node_compat/test/parallel/test-url-fileurltopath.js b/tests/node_compat/test/parallel/test-url-fileurltopath.js index 72ba73166..72ba73166 100644 --- a/cli/tests/node_compat/test/parallel/test-url-fileurltopath.js +++ b/tests/node_compat/test/parallel/test-url-fileurltopath.js diff --git a/cli/tests/node_compat/test/parallel/test-url-format-invalid-input.js b/tests/node_compat/test/parallel/test-url-format-invalid-input.js index d411b8d32..d411b8d32 100644 --- a/cli/tests/node_compat/test/parallel/test-url-format-invalid-input.js +++ b/tests/node_compat/test/parallel/test-url-format-invalid-input.js diff --git a/cli/tests/node_compat/test/parallel/test-url-format-whatwg.js b/tests/node_compat/test/parallel/test-url-format-whatwg.js index 1e9b36dcb..1e9b36dcb 100644 --- a/cli/tests/node_compat/test/parallel/test-url-format-whatwg.js +++ b/tests/node_compat/test/parallel/test-url-format-whatwg.js diff --git a/cli/tests/node_compat/test/parallel/test-url-format.js b/tests/node_compat/test/parallel/test-url-format.js index 1208509c7..1208509c7 100644 --- a/cli/tests/node_compat/test/parallel/test-url-format.js +++ b/tests/node_compat/test/parallel/test-url-format.js diff --git a/cli/tests/node_compat/test/parallel/test-url-parse-invalid-input.js b/tests/node_compat/test/parallel/test-url-parse-invalid-input.js index 345e8d338..345e8d338 100644 --- a/cli/tests/node_compat/test/parallel/test-url-parse-invalid-input.js +++ b/tests/node_compat/test/parallel/test-url-parse-invalid-input.js diff --git a/cli/tests/node_compat/test/parallel/test-url-parse-query.js b/tests/node_compat/test/parallel/test-url-parse-query.js index f6ccb1f46..f6ccb1f46 100644 --- a/cli/tests/node_compat/test/parallel/test-url-parse-query.js +++ b/tests/node_compat/test/parallel/test-url-parse-query.js diff --git a/cli/tests/node_compat/test/parallel/test-url-pathtofileurl.js b/tests/node_compat/test/parallel/test-url-pathtofileurl.js index bafd870aa..bafd870aa 100644 --- a/cli/tests/node_compat/test/parallel/test-url-pathtofileurl.js +++ b/tests/node_compat/test/parallel/test-url-pathtofileurl.js diff --git a/cli/tests/node_compat/test/parallel/test-url-relative.js b/tests/node_compat/test/parallel/test-url-relative.js index 2bcddd96f..2bcddd96f 100644 --- a/cli/tests/node_compat/test/parallel/test-url-relative.js +++ b/tests/node_compat/test/parallel/test-url-relative.js diff --git a/cli/tests/node_compat/test/parallel/test-url-urltooptions.js b/tests/node_compat/test/parallel/test-url-urltooptions.js index 05813f0ae..05813f0ae 100644 --- a/cli/tests/node_compat/test/parallel/test-url-urltooptions.js +++ b/tests/node_compat/test/parallel/test-url-urltooptions.js diff --git a/cli/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js b/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js index 19093a3ae..19093a3ae 100644 --- a/cli/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js +++ b/tests/node_compat/test/parallel/test-util-deprecate-invalid-code.js diff --git a/cli/tests/node_compat/test/parallel/test-util-deprecate.js b/tests/node_compat/test/parallel/test-util-deprecate.js index 2394caa22..2394caa22 100644 --- a/cli/tests/node_compat/test/parallel/test-util-deprecate.js +++ b/tests/node_compat/test/parallel/test-util-deprecate.js diff --git a/cli/tests/node_compat/test/parallel/test-util-format.js b/tests/node_compat/test/parallel/test-util-format.js index 9d474c481..9d474c481 100644 --- a/cli/tests/node_compat/test/parallel/test-util-format.js +++ b/tests/node_compat/test/parallel/test-util-format.js diff --git a/cli/tests/node_compat/test/parallel/test-util-inherits.js b/tests/node_compat/test/parallel/test-util-inherits.js index ac1ab596b..ac1ab596b 100644 --- a/cli/tests/node_compat/test/parallel/test-util-inherits.js +++ b/tests/node_compat/test/parallel/test-util-inherits.js diff --git a/cli/tests/node_compat/test/parallel/test-util-inspect-long-running.js b/tests/node_compat/test/parallel/test-util-inspect-long-running.js index 67dc03ba4..67dc03ba4 100644 --- a/cli/tests/node_compat/test/parallel/test-util-inspect-long-running.js +++ b/tests/node_compat/test/parallel/test-util-inspect-long-running.js diff --git a/cli/tests/node_compat/test/parallel/test-util-inspect-namespace.js b/tests/node_compat/test/parallel/test-util-inspect-namespace.js index 786f05671..786f05671 100644 --- a/cli/tests/node_compat/test/parallel/test-util-inspect-namespace.js +++ b/tests/node_compat/test/parallel/test-util-inspect-namespace.js diff --git a/cli/tests/node_compat/test/parallel/test-util-inspect-proxy.js b/tests/node_compat/test/parallel/test-util-inspect-proxy.js index ef78ab07a..ef78ab07a 100644 --- a/cli/tests/node_compat/test/parallel/test-util-inspect-proxy.js +++ b/tests/node_compat/test/parallel/test-util-inspect-proxy.js diff --git a/cli/tests/node_compat/test/parallel/test-util-inspect.js b/tests/node_compat/test/parallel/test-util-inspect.js index 17fafed2e..17fafed2e 100644 --- a/cli/tests/node_compat/test/parallel/test-util-inspect.js +++ b/tests/node_compat/test/parallel/test-util-inspect.js diff --git a/cli/tests/node_compat/test/parallel/test-util-isDeepStrictEqual.js b/tests/node_compat/test/parallel/test-util-isDeepStrictEqual.js index 25caac1f7..25caac1f7 100644 --- a/cli/tests/node_compat/test/parallel/test-util-isDeepStrictEqual.js +++ b/tests/node_compat/test/parallel/test-util-isDeepStrictEqual.js diff --git a/cli/tests/node_compat/test/parallel/test-util-promisify.js b/tests/node_compat/test/parallel/test-util-promisify.js index 8046f6fb8..8046f6fb8 100644 --- a/cli/tests/node_compat/test/parallel/test-util-promisify.js +++ b/tests/node_compat/test/parallel/test-util-promisify.js diff --git a/cli/tests/node_compat/test/parallel/test-util-types-exists.js b/tests/node_compat/test/parallel/test-util-types-exists.js index 0c04a38b0..0c04a38b0 100644 --- a/cli/tests/node_compat/test/parallel/test-util-types-exists.js +++ b/tests/node_compat/test/parallel/test-util-types-exists.js diff --git a/cli/tests/node_compat/test/parallel/test-util-types.js b/tests/node_compat/test/parallel/test-util-types.js index d401a282c..d401a282c 100644 --- a/cli/tests/node_compat/test/parallel/test-util-types.js +++ b/tests/node_compat/test/parallel/test-util-types.js diff --git a/cli/tests/node_compat/test/parallel/test-util.js b/tests/node_compat/test/parallel/test-util.js index eaffc7f6d..eaffc7f6d 100644 --- a/cli/tests/node_compat/test/parallel/test-util.js +++ b/tests/node_compat/test/parallel/test-util.js diff --git a/cli/tests/node_compat/test/parallel/test-vm-new-script-this-context.js b/tests/node_compat/test/parallel/test-vm-new-script-this-context.js index 9a9d8fb13..9a9d8fb13 100644 --- a/cli/tests/node_compat/test/parallel/test-vm-new-script-this-context.js +++ b/tests/node_compat/test/parallel/test-vm-new-script-this-context.js diff --git a/cli/tests/node_compat/test/parallel/test-vm-static-this.js b/tests/node_compat/test/parallel/test-vm-static-this.js index c6804cfc0..c6804cfc0 100644 --- a/cli/tests/node_compat/test/parallel/test-vm-static-this.js +++ b/tests/node_compat/test/parallel/test-vm-static-this.js diff --git a/cli/tests/node_compat/test/parallel/test-webcrypto-sign-verify.js b/tests/node_compat/test/parallel/test-webcrypto-sign-verify.js index 23df883ee..23df883ee 100644 --- a/cli/tests/node_compat/test/parallel/test-webcrypto-sign-verify.js +++ b/tests/node_compat/test/parallel/test-webcrypto-sign-verify.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js index e423c25d0..e423c25d0 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js +++ b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-api-basics.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js index 58488d25d..58488d25d 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js +++ b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js index ef9cecc0f..ef9cecc0f 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js +++ b/tests/node_compat/test/parallel/test-whatwg-encoding-custom-textdecoder-streaming.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js index e2bc96139..e2bc96139 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js +++ b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-passive.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js index 80d09c4b7..80d09c4b7 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js +++ b/tests/node_compat/test/parallel/test-whatwg-events-add-event-listener-options-signal.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-events-customevent.js b/tests/node_compat/test/parallel/test-whatwg-events-customevent.js index 749c838de..749c838de 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-events-customevent.js +++ b/tests/node_compat/test/parallel/test-whatwg-events-customevent.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js index e33590530..e33590530 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js +++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-deepequal.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js index b7880d8c2..b7880d8c2 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js +++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-global.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js index de175e357..de175e357 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js +++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-href-side-effect.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js b/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js index add70bc34..add70bc34 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js +++ b/tests/node_compat/test/parallel/test-whatwg-url-custom-tostringtag.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js b/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js index 1fcdefdf7..1fcdefdf7 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js +++ b/tests/node_compat/test/parallel/test-whatwg-url-override-hostname.js diff --git a/cli/tests/node_compat/test/parallel/test-whatwg-url-properties.js b/tests/node_compat/test/parallel/test-whatwg-url-properties.js index 8a4f4e57b..8a4f4e57b 100644 --- a/cli/tests/node_compat/test/parallel/test-whatwg-url-properties.js +++ b/tests/node_compat/test/parallel/test-whatwg-url-properties.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-close-after-error.js b/tests/node_compat/test/parallel/test-zlib-close-after-error.js index 55f1d6b02..55f1d6b02 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-close-after-error.js +++ b/tests/node_compat/test/parallel/test-zlib-close-after-error.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-close-after-write.js b/tests/node_compat/test/parallel/test-zlib-close-after-write.js index 94fa4eb20..94fa4eb20 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-close-after-write.js +++ b/tests/node_compat/test/parallel/test-zlib-close-after-write.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-convenience-methods.js b/tests/node_compat/test/parallel/test-zlib-convenience-methods.js index cf6694b1f..cf6694b1f 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-convenience-methods.js +++ b/tests/node_compat/test/parallel/test-zlib-convenience-methods.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js b/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js index 58c069c74..58c069c74 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js +++ b/tests/node_compat/test/parallel/test-zlib-deflate-raw-inherits.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js b/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js index 274068f9f..274068f9f 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js +++ b/tests/node_compat/test/parallel/test-zlib-destroy-pipe.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-empty-buffer.js b/tests/node_compat/test/parallel/test-zlib-empty-buffer.js index 2281ba88e..2281ba88e 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-empty-buffer.js +++ b/tests/node_compat/test/parallel/test-zlib-empty-buffer.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-from-string.js b/tests/node_compat/test/parallel/test-zlib-from-string.js index dc238220b..dc238220b 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-from-string.js +++ b/tests/node_compat/test/parallel/test-zlib-from-string.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-invalid-input.js b/tests/node_compat/test/parallel/test-zlib-invalid-input.js index d8ecae521..d8ecae521 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-invalid-input.js +++ b/tests/node_compat/test/parallel/test-zlib-invalid-input.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-no-stream.js b/tests/node_compat/test/parallel/test-zlib-no-stream.js index 27b352406..27b352406 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-no-stream.js +++ b/tests/node_compat/test/parallel/test-zlib-no-stream.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js b/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js index 56409d411..56409d411 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js +++ b/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-sync-no-event.js b/tests/node_compat/test/parallel/test-zlib-sync-no-event.js index 62019677c..62019677c 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-sync-no-event.js +++ b/tests/node_compat/test/parallel/test-zlib-sync-no-event.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-truncated.js b/tests/node_compat/test/parallel/test-zlib-truncated.js index 60e730171..60e730171 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-truncated.js +++ b/tests/node_compat/test/parallel/test-zlib-truncated.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-unzip-one-byte-chunks.js b/tests/node_compat/test/parallel/test-zlib-unzip-one-byte-chunks.js index 62b2050d3..62b2050d3 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-unzip-one-byte-chunks.js +++ b/tests/node_compat/test/parallel/test-zlib-unzip-one-byte-chunks.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-write-after-end.js b/tests/node_compat/test/parallel/test-zlib-write-after-end.js index 7c7e3ea35..7c7e3ea35 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-write-after-end.js +++ b/tests/node_compat/test/parallel/test-zlib-write-after-end.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-write-after-flush.js b/tests/node_compat/test/parallel/test-zlib-write-after-flush.js index 6f33668c7..6f33668c7 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-write-after-flush.js +++ b/tests/node_compat/test/parallel/test-zlib-write-after-flush.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-zero-byte.js b/tests/node_compat/test/parallel/test-zlib-zero-byte.js index fb12b2280..fb12b2280 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-zero-byte.js +++ b/tests/node_compat/test/parallel/test-zlib-zero-byte.js diff --git a/cli/tests/node_compat/test/parallel/test-zlib-zero-windowBits.js b/tests/node_compat/test/parallel/test-zlib-zero-windowBits.js index fe74fe6d8..fe74fe6d8 100644 --- a/cli/tests/node_compat/test/parallel/test-zlib-zero-windowBits.js +++ b/tests/node_compat/test/parallel/test-zlib-zero-windowBits.js diff --git a/cli/tests/node_compat/test/pseudo-tty/console-dumb-tty.js b/tests/node_compat/test/pseudo-tty/console-dumb-tty.js index 9b4bd1520..9b4bd1520 100644 --- a/cli/tests/node_compat/test/pseudo-tty/console-dumb-tty.js +++ b/tests/node_compat/test/pseudo-tty/console-dumb-tty.js diff --git a/cli/tests/node_compat/test/pseudo-tty/console_colors.js b/tests/node_compat/test/pseudo-tty/console_colors.js index 2be464457..2be464457 100644 --- a/cli/tests/node_compat/test/pseudo-tty/console_colors.js +++ b/tests/node_compat/test/pseudo-tty/console_colors.js diff --git a/cli/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js b/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js index d2bbb92c5..d2bbb92c5 100644 --- a/cli/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js +++ b/tests/node_compat/test/pseudo-tty/no_dropped_stdio.js diff --git a/cli/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js b/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js index 895124420..895124420 100644 --- a/cli/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js +++ b/tests/node_compat/test/pseudo-tty/no_interleaved_stdio.js diff --git a/cli/tests/node_compat/test/pseudo-tty/package.json b/tests/node_compat/test/pseudo-tty/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/pseudo-tty/package.json +++ b/tests/node_compat/test/pseudo-tty/package.json diff --git a/cli/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js index 6a969ac9e..6a969ac9e 100644 --- a/cli/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js +++ b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning-2.js diff --git a/cli/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js index a9338105c..a9338105c 100644 --- a/cli/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js +++ b/tests/node_compat/test/pseudo-tty/test-tty-color-support-warning.js diff --git a/cli/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js b/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js index ee38cbd2c..ee38cbd2c 100644 --- a/cli/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js +++ b/tests/node_compat/test/pseudo-tty/test-tty-stdin-end.js diff --git a/cli/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js b/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js index bd30a9a2e..bd30a9a2e 100644 --- a/cli/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js +++ b/tests/node_compat/test/pseudo-tty/test-tty-stdout-end.js diff --git a/cli/tests/node_compat/test/pummel/package.json b/tests/node_compat/test/pummel/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/pummel/package.json +++ b/tests/node_compat/test/pummel/package.json diff --git a/cli/tests/node_compat/test/sequential/package.json b/tests/node_compat/test/sequential/package.json index 0967ef424..0967ef424 100644 --- a/cli/tests/node_compat/test/sequential/package.json +++ b/tests/node_compat/test/sequential/package.json diff --git a/cli/tests/node_compat/test/sequential/test-child-process-exit.js b/tests/node_compat/test/sequential/test-child-process-exit.js index c8930b059..c8930b059 100644 --- a/cli/tests/node_compat/test/sequential/test-child-process-exit.js +++ b/tests/node_compat/test/sequential/test-child-process-exit.js diff --git a/cli/tests/testdata/allow_run_allowlist_resolution.ts b/tests/testdata/allow_run_allowlist_resolution.ts index c7369d928..c7369d928 100644 --- a/cli/tests/testdata/allow_run_allowlist_resolution.ts +++ b/tests/testdata/allow_run_allowlist_resolution.ts diff --git a/cli/tests/testdata/allow_run_allowlist_resolution.ts.out b/tests/testdata/allow_run_allowlist_resolution.ts.out index 16ba6754a..16ba6754a 100644 --- a/cli/tests/testdata/allow_run_allowlist_resolution.ts.out +++ b/tests/testdata/allow_run_allowlist_resolution.ts.out diff --git a/cli/tests/testdata/assets/DenoWinRunner.cs b/tests/testdata/assets/DenoWinRunner.cs index 2f9e9f89f..2f9e9f89f 100644 --- a/cli/tests/testdata/assets/DenoWinRunner.cs +++ b/tests/testdata/assets/DenoWinRunner.cs diff --git a/cli/tests/testdata/assets/DenoWinRunner.ps1 b/tests/testdata/assets/DenoWinRunner.ps1 index 203b5d36c..203b5d36c 100644 --- a/cli/tests/testdata/assets/DenoWinRunner.ps1 +++ b/tests/testdata/assets/DenoWinRunner.ps1 diff --git a/cli/tests/testdata/assets/deno_dom_0.1.3-alpha2.wasm b/tests/testdata/assets/deno_dom_0.1.3-alpha2.wasm Binary files differindex 6dd9d0e91..6dd9d0e91 100644 --- a/cli/tests/testdata/assets/deno_dom_0.1.3-alpha2.wasm +++ b/tests/testdata/assets/deno_dom_0.1.3-alpha2.wasm diff --git a/cli/tests/testdata/assets/fixture.json b/tests/testdata/assets/fixture.json index 56e056b6a..56e056b6a 100644 --- a/cli/tests/testdata/assets/fixture.json +++ b/tests/testdata/assets/fixture.json diff --git a/cli/tests/testdata/assets/hello.txt b/tests/testdata/assets/hello.txt index 6769dd60b..6769dd60b 100644 --- a/cli/tests/testdata/assets/hello.txt +++ b/tests/testdata/assets/hello.txt diff --git a/cli/tests/testdata/assets/lock_target.txt b/tests/testdata/assets/lock_target.txt index 5a29d1c26..5a29d1c26 100644 --- a/cli/tests/testdata/assets/lock_target.txt +++ b/tests/testdata/assets/lock_target.txt diff --git a/cli/tests/testdata/assets/unreachable.wasm b/tests/testdata/assets/unreachable.wasm Binary files differindex a4110ee39..a4110ee39 100644 --- a/cli/tests/testdata/assets/unreachable.wasm +++ b/tests/testdata/assets/unreachable.wasm diff --git a/cli/tests/testdata/bench/allow_all.out b/tests/testdata/bench/allow_all.out index b118856e9..b118856e9 100644 --- a/cli/tests/testdata/bench/allow_all.out +++ b/tests/testdata/bench/allow_all.out diff --git a/tests/testdata/bench/allow_all.ts b/tests/testdata/bench/allow_all.ts new file mode 100644 index 000000000..43e005b58 --- /dev/null +++ b/tests/testdata/bench/allow_all.ts @@ -0,0 +1,43 @@ +import { assertEquals } from "../../../test_util/std/assert/mod.ts"; + +const permissions: Deno.PermissionName[] = [ + "read", + "write", + "net", + "env", + "run", + "ffi", + "hrtime", +]; + +for (const name of permissions) { + Deno.bench({ + name: `${name} false`, + permissions: { + [name]: false, + }, + async fn() { + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + assertEquals(status.state, "prompt"); + } + }, + }); + + Deno.bench({ + name: `${name} true`, + permissions: { + [name]: true, + }, + async fn() { + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + if (n === name) { + assertEquals(status.state, "granted"); + } else { + assertEquals(status.state, "prompt"); + } + } + }, + }); +} diff --git a/cli/tests/testdata/bench/allow_none.out b/tests/testdata/bench/allow_none.out index 7c443075b..7c443075b 100644 --- a/cli/tests/testdata/bench/allow_none.out +++ b/tests/testdata/bench/allow_none.out diff --git a/tests/testdata/bench/allow_none.ts b/tests/testdata/bench/allow_none.ts new file mode 100644 index 000000000..62eb9c4c6 --- /dev/null +++ b/tests/testdata/bench/allow_none.ts @@ -0,0 +1,23 @@ +import { unreachable } from "../../../test_util/std/assert/mod.ts"; + +const permissions: Deno.PermissionName[] = [ + "read", + "write", + "net", + "env", + "run", + "ffi", + "hrtime", +]; + +for (const name of permissions) { + Deno.bench({ + name, + permissions: { + [name]: true, + }, + fn() { + unreachable(); + }, + }); +} diff --git a/cli/tests/testdata/bench/before_unload_prevent_default.out b/tests/testdata/bench/before_unload_prevent_default.out index dcb6d8194..dcb6d8194 100644 --- a/cli/tests/testdata/bench/before_unload_prevent_default.out +++ b/tests/testdata/bench/before_unload_prevent_default.out diff --git a/cli/tests/testdata/bench/before_unload_prevent_default.ts b/tests/testdata/bench/before_unload_prevent_default.ts index 2759d4659..2759d4659 100644 --- a/cli/tests/testdata/bench/before_unload_prevent_default.ts +++ b/tests/testdata/bench/before_unload_prevent_default.ts diff --git a/cli/tests/testdata/bench/bench_formatting.out b/tests/testdata/bench/bench_formatting.out index 5e3eed1cd..5e3eed1cd 100644 --- a/cli/tests/testdata/bench/bench_formatting.out +++ b/tests/testdata/bench/bench_formatting.out diff --git a/cli/tests/testdata/bench/bench_formatting.ts b/tests/testdata/bench/bench_formatting.ts index fdee15abb..fdee15abb 100644 --- a/cli/tests/testdata/bench/bench_formatting.ts +++ b/tests/testdata/bench/bench_formatting.ts diff --git a/cli/tests/testdata/bench/check_local_by_default.out b/tests/testdata/bench/check_local_by_default.out index bf07bcc44..bf07bcc44 100644 --- a/cli/tests/testdata/bench/check_local_by_default.out +++ b/tests/testdata/bench/check_local_by_default.out diff --git a/cli/tests/testdata/bench/check_local_by_default.ts b/tests/testdata/bench/check_local_by_default.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/bench/check_local_by_default.ts +++ b/tests/testdata/bench/check_local_by_default.ts diff --git a/cli/tests/testdata/bench/check_local_by_default2.out b/tests/testdata/bench/check_local_by_default2.out index 01aeda636..01aeda636 100644 --- a/cli/tests/testdata/bench/check_local_by_default2.out +++ b/tests/testdata/bench/check_local_by_default2.out diff --git a/cli/tests/testdata/bench/check_local_by_default2.ts b/tests/testdata/bench/check_local_by_default2.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/bench/check_local_by_default2.ts +++ b/tests/testdata/bench/check_local_by_default2.ts diff --git a/cli/tests/testdata/bench/clear_timeout.out b/tests/testdata/bench/clear_timeout.out index fe17b4ae3..fe17b4ae3 100644 --- a/cli/tests/testdata/bench/clear_timeout.out +++ b/tests/testdata/bench/clear_timeout.out diff --git a/cli/tests/testdata/bench/clear_timeout.ts b/tests/testdata/bench/clear_timeout.ts index 4148263ac..4148263ac 100644 --- a/cli/tests/testdata/bench/clear_timeout.ts +++ b/tests/testdata/bench/clear_timeout.ts diff --git a/cli/tests/testdata/bench/collect.out b/tests/testdata/bench/collect.out index 03c75922b..03c75922b 100644 --- a/cli/tests/testdata/bench/collect.out +++ b/tests/testdata/bench/collect.out diff --git a/cli/tests/testdata/bench/collect/bench.ts b/tests/testdata/bench/collect/bench.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/bench/collect/bench.ts +++ b/tests/testdata/bench/collect/bench.ts diff --git a/cli/tests/testdata/bench/collect/deno.jsonc b/tests/testdata/bench/collect/deno.jsonc index 7f8f190d3..7f8f190d3 100644 --- a/cli/tests/testdata/bench/collect/deno.jsonc +++ b/tests/testdata/bench/collect/deno.jsonc diff --git a/cli/tests/testdata/bench/collect/deno.malformed.jsonc b/tests/testdata/bench/collect/deno.malformed.jsonc index 8e558fbcf..8e558fbcf 100644 --- a/cli/tests/testdata/bench/collect/deno.malformed.jsonc +++ b/tests/testdata/bench/collect/deno.malformed.jsonc diff --git a/cli/tests/testdata/bench/collect/deno2.jsonc b/tests/testdata/bench/collect/deno2.jsonc index 653ab1e31..653ab1e31 100644 --- a/cli/tests/testdata/bench/collect/deno2.jsonc +++ b/tests/testdata/bench/collect/deno2.jsonc diff --git a/cli/tests/testdata/bench/collect/ignore/bench.ts b/tests/testdata/bench/collect/ignore/bench.ts index 16fb63ba7..16fb63ba7 100644 --- a/cli/tests/testdata/bench/collect/ignore/bench.ts +++ b/tests/testdata/bench/collect/ignore/bench.ts diff --git a/cli/tests/testdata/bench/collect/include/2_bench.ts b/tests/testdata/bench/collect/include/2_bench.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/bench/collect/include/2_bench.ts +++ b/tests/testdata/bench/collect/include/2_bench.ts diff --git a/cli/tests/testdata/bench/collect/include/bench.ts b/tests/testdata/bench/collect/include/bench.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/bench/collect/include/bench.ts +++ b/tests/testdata/bench/collect/include/bench.ts diff --git a/cli/tests/testdata/bench/collect2.out b/tests/testdata/bench/collect2.out index 00b8bfc0d..00b8bfc0d 100644 --- a/cli/tests/testdata/bench/collect2.out +++ b/tests/testdata/bench/collect2.out diff --git a/cli/tests/testdata/bench/collect_with_malformed_config.out b/tests/testdata/bench/collect_with_malformed_config.out index 92e5e29d2..92e5e29d2 100644 --- a/cli/tests/testdata/bench/collect_with_malformed_config.out +++ b/tests/testdata/bench/collect_with_malformed_config.out diff --git a/cli/tests/testdata/bench/exit_sanitizer.out b/tests/testdata/bench/exit_sanitizer.out index 9f15d3f26..9f15d3f26 100644 --- a/cli/tests/testdata/bench/exit_sanitizer.out +++ b/tests/testdata/bench/exit_sanitizer.out diff --git a/cli/tests/testdata/bench/exit_sanitizer.ts b/tests/testdata/bench/exit_sanitizer.ts index 8e596b310..8e596b310 100644 --- a/cli/tests/testdata/bench/exit_sanitizer.ts +++ b/tests/testdata/bench/exit_sanitizer.ts diff --git a/cli/tests/testdata/bench/explicit_start_and_end.out b/tests/testdata/bench/explicit_start_and_end.out index fa118540c..fa118540c 100644 --- a/cli/tests/testdata/bench/explicit_start_and_end.out +++ b/tests/testdata/bench/explicit_start_and_end.out diff --git a/cli/tests/testdata/bench/explicit_start_and_end.ts b/tests/testdata/bench/explicit_start_and_end.ts index 60a3d10d7..60a3d10d7 100644 --- a/cli/tests/testdata/bench/explicit_start_and_end.ts +++ b/tests/testdata/bench/explicit_start_and_end.ts diff --git a/cli/tests/testdata/bench/explicit_start_and_end_low_precision.out b/tests/testdata/bench/explicit_start_and_end_low_precision.out index 6dc66cfcc..6dc66cfcc 100644 --- a/cli/tests/testdata/bench/explicit_start_and_end_low_precision.out +++ b/tests/testdata/bench/explicit_start_and_end_low_precision.out diff --git a/cli/tests/testdata/bench/explicit_start_and_end_low_precision.ts b/tests/testdata/bench/explicit_start_and_end_low_precision.ts index 23bdf19fe..23bdf19fe 100644 --- a/cli/tests/testdata/bench/explicit_start_and_end_low_precision.ts +++ b/tests/testdata/bench/explicit_start_and_end_low_precision.ts diff --git a/cli/tests/testdata/bench/fail.out b/tests/testdata/bench/fail.out index ff3c29b92..ff3c29b92 100644 --- a/cli/tests/testdata/bench/fail.out +++ b/tests/testdata/bench/fail.out diff --git a/cli/tests/testdata/bench/fail.ts b/tests/testdata/bench/fail.ts index 33d70ce55..33d70ce55 100644 --- a/cli/tests/testdata/bench/fail.ts +++ b/tests/testdata/bench/fail.ts diff --git a/cli/tests/testdata/bench/file_protocol.out b/tests/testdata/bench/file_protocol.out index 7086c861c..7086c861c 100644 --- a/cli/tests/testdata/bench/file_protocol.out +++ b/tests/testdata/bench/file_protocol.out diff --git a/cli/tests/testdata/bench/file_protocol.ts b/tests/testdata/bench/file_protocol.ts index 06a07bb38..06a07bb38 100644 --- a/cli/tests/testdata/bench/file_protocol.ts +++ b/tests/testdata/bench/file_protocol.ts diff --git a/cli/tests/testdata/bench/filter.out b/tests/testdata/bench/filter.out index 970171e0b..970171e0b 100644 --- a/cli/tests/testdata/bench/filter.out +++ b/tests/testdata/bench/filter.out diff --git a/cli/tests/testdata/bench/filter/a_bench.ts b/tests/testdata/bench/filter/a_bench.ts index fc4ef859c..fc4ef859c 100644 --- a/cli/tests/testdata/bench/filter/a_bench.ts +++ b/tests/testdata/bench/filter/a_bench.ts diff --git a/cli/tests/testdata/bench/filter/b_bench.ts b/tests/testdata/bench/filter/b_bench.ts index fc4ef859c..fc4ef859c 100644 --- a/cli/tests/testdata/bench/filter/b_bench.ts +++ b/tests/testdata/bench/filter/b_bench.ts diff --git a/cli/tests/testdata/bench/filter/c_bench.ts b/tests/testdata/bench/filter/c_bench.ts index fc4ef859c..fc4ef859c 100644 --- a/cli/tests/testdata/bench/filter/c_bench.ts +++ b/tests/testdata/bench/filter/c_bench.ts diff --git a/cli/tests/testdata/bench/finally_timeout.out b/tests/testdata/bench/finally_timeout.out index 96bec017d..96bec017d 100644 --- a/cli/tests/testdata/bench/finally_timeout.out +++ b/tests/testdata/bench/finally_timeout.out diff --git a/cli/tests/testdata/bench/finally_timeout.ts b/tests/testdata/bench/finally_timeout.ts index c49eb8da2..c49eb8da2 100644 --- a/cli/tests/testdata/bench/finally_timeout.ts +++ b/tests/testdata/bench/finally_timeout.ts diff --git a/cli/tests/testdata/bench/group_baseline.out b/tests/testdata/bench/group_baseline.out index 5de0ac1fe..5de0ac1fe 100644 --- a/cli/tests/testdata/bench/group_baseline.out +++ b/tests/testdata/bench/group_baseline.out diff --git a/cli/tests/testdata/bench/group_baseline.ts b/tests/testdata/bench/group_baseline.ts index a86f6455c..a86f6455c 100644 --- a/cli/tests/testdata/bench/group_baseline.ts +++ b/tests/testdata/bench/group_baseline.ts diff --git a/cli/tests/testdata/bench/ignore.out b/tests/testdata/bench/ignore.out index 0693a7fc8..0693a7fc8 100644 --- a/cli/tests/testdata/bench/ignore.out +++ b/tests/testdata/bench/ignore.out diff --git a/cli/tests/testdata/bench/ignore.ts b/tests/testdata/bench/ignore.ts index 0226fe76f..0226fe76f 100644 --- a/cli/tests/testdata/bench/ignore.ts +++ b/tests/testdata/bench/ignore.ts diff --git a/cli/tests/testdata/bench/ignore_permissions.out b/tests/testdata/bench/ignore_permissions.out index 1c8e93535..1c8e93535 100644 --- a/cli/tests/testdata/bench/ignore_permissions.out +++ b/tests/testdata/bench/ignore_permissions.out diff --git a/cli/tests/testdata/bench/ignore_permissions.ts b/tests/testdata/bench/ignore_permissions.ts index 0dcd9299f..0dcd9299f 100644 --- a/cli/tests/testdata/bench/ignore_permissions.ts +++ b/tests/testdata/bench/ignore_permissions.ts diff --git a/cli/tests/testdata/bench/interval.out b/tests/testdata/bench/interval.out index 389b89162..389b89162 100644 --- a/cli/tests/testdata/bench/interval.out +++ b/tests/testdata/bench/interval.out diff --git a/cli/tests/testdata/bench/interval.ts b/tests/testdata/bench/interval.ts index 7eb588c59..7eb588c59 100644 --- a/cli/tests/testdata/bench/interval.ts +++ b/tests/testdata/bench/interval.ts diff --git a/cli/tests/testdata/bench/load_unload.out b/tests/testdata/bench/load_unload.out index e5bc6b29e..e5bc6b29e 100644 --- a/cli/tests/testdata/bench/load_unload.out +++ b/tests/testdata/bench/load_unload.out diff --git a/cli/tests/testdata/bench/load_unload.ts b/tests/testdata/bench/load_unload.ts index 3653c135d..3653c135d 100644 --- a/cli/tests/testdata/bench/load_unload.ts +++ b/tests/testdata/bench/load_unload.ts diff --git a/cli/tests/testdata/bench/meta.out b/tests/testdata/bench/meta.out index 8c9aa9123..8c9aa9123 100644 --- a/cli/tests/testdata/bench/meta.out +++ b/tests/testdata/bench/meta.out diff --git a/cli/tests/testdata/bench/meta.ts b/tests/testdata/bench/meta.ts index e32fdeea6..e32fdeea6 100644 --- a/cli/tests/testdata/bench/meta.ts +++ b/tests/testdata/bench/meta.ts diff --git a/cli/tests/testdata/bench/multifile_summary.out b/tests/testdata/bench/multifile_summary.out index 37aebe187..37aebe187 100644 --- a/cli/tests/testdata/bench/multifile_summary.out +++ b/tests/testdata/bench/multifile_summary.out diff --git a/cli/tests/testdata/bench/multiple_group.ts b/tests/testdata/bench/multiple_group.ts index 69e73a7f2..69e73a7f2 100644 --- a/cli/tests/testdata/bench/multiple_group.ts +++ b/tests/testdata/bench/multiple_group.ts diff --git a/cli/tests/testdata/bench/no_check.out b/tests/testdata/bench/no_check.out index 6dc016458..6dc016458 100644 --- a/cli/tests/testdata/bench/no_check.out +++ b/tests/testdata/bench/no_check.out diff --git a/cli/tests/testdata/bench/no_check.ts b/tests/testdata/bench/no_check.ts index b159cabd6..b159cabd6 100644 --- a/cli/tests/testdata/bench/no_check.ts +++ b/tests/testdata/bench/no_check.ts diff --git a/cli/tests/testdata/bench/no_color.ts b/tests/testdata/bench/no_color.ts index d15bf3572..d15bf3572 100644 --- a/cli/tests/testdata/bench/no_color.ts +++ b/tests/testdata/bench/no_color.ts diff --git a/cli/tests/testdata/bench/no_prompt_by_default.out b/tests/testdata/bench/no_prompt_by_default.out index 4c7e7f146..4c7e7f146 100644 --- a/cli/tests/testdata/bench/no_prompt_by_default.out +++ b/tests/testdata/bench/no_prompt_by_default.out diff --git a/cli/tests/testdata/bench/no_prompt_by_default.ts b/tests/testdata/bench/no_prompt_by_default.ts index 59359eebd..59359eebd 100644 --- a/cli/tests/testdata/bench/no_prompt_by_default.ts +++ b/tests/testdata/bench/no_prompt_by_default.ts diff --git a/cli/tests/testdata/bench/no_prompt_with_denied_perms.out b/tests/testdata/bench/no_prompt_with_denied_perms.out index 74400dafe..74400dafe 100644 --- a/cli/tests/testdata/bench/no_prompt_with_denied_perms.out +++ b/tests/testdata/bench/no_prompt_with_denied_perms.out diff --git a/cli/tests/testdata/bench/no_prompt_with_denied_perms.ts b/tests/testdata/bench/no_prompt_with_denied_perms.ts index 2f0d63bbe..2f0d63bbe 100644 --- a/cli/tests/testdata/bench/no_prompt_with_denied_perms.ts +++ b/tests/testdata/bench/no_prompt_with_denied_perms.ts diff --git a/cli/tests/testdata/bench/no_run.out b/tests/testdata/bench/no_run.out index 5d40f1d3b..5d40f1d3b 100644 --- a/cli/tests/testdata/bench/no_run.out +++ b/tests/testdata/bench/no_run.out diff --git a/cli/tests/testdata/bench/no_run.ts b/tests/testdata/bench/no_run.ts index c7a5dc1e8..c7a5dc1e8 100644 --- a/cli/tests/testdata/bench/no_run.ts +++ b/tests/testdata/bench/no_run.ts diff --git a/cli/tests/testdata/bench/only.out b/tests/testdata/bench/only.out index 00338af8e..00338af8e 100644 --- a/cli/tests/testdata/bench/only.out +++ b/tests/testdata/bench/only.out diff --git a/cli/tests/testdata/bench/only.ts b/tests/testdata/bench/only.ts index 0129c024c..0129c024c 100644 --- a/cli/tests/testdata/bench/only.ts +++ b/tests/testdata/bench/only.ts diff --git a/cli/tests/testdata/bench/overloads.out b/tests/testdata/bench/overloads.out index 289c8dde6..289c8dde6 100644 --- a/cli/tests/testdata/bench/overloads.out +++ b/tests/testdata/bench/overloads.out diff --git a/cli/tests/testdata/bench/overloads.ts b/tests/testdata/bench/overloads.ts index 4f5887f79..4f5887f79 100644 --- a/cli/tests/testdata/bench/overloads.ts +++ b/tests/testdata/bench/overloads.ts diff --git a/cli/tests/testdata/bench/pass.json.out b/tests/testdata/bench/pass.json.out index 73daa7202..73daa7202 100644 --- a/cli/tests/testdata/bench/pass.json.out +++ b/tests/testdata/bench/pass.json.out diff --git a/cli/tests/testdata/bench/pass.out b/tests/testdata/bench/pass.out index 19ea6fd13..19ea6fd13 100644 --- a/cli/tests/testdata/bench/pass.out +++ b/tests/testdata/bench/pass.out diff --git a/cli/tests/testdata/bench/pass.ts b/tests/testdata/bench/pass.ts index 48348d447..48348d447 100644 --- a/cli/tests/testdata/bench/pass.ts +++ b/tests/testdata/bench/pass.ts diff --git a/cli/tests/testdata/bench/quiet.out b/tests/testdata/bench/quiet.out index ed9e06c84..ed9e06c84 100644 --- a/cli/tests/testdata/bench/quiet.out +++ b/tests/testdata/bench/quiet.out diff --git a/cli/tests/testdata/bench/quiet.ts b/tests/testdata/bench/quiet.ts index efeb366ff..efeb366ff 100644 --- a/cli/tests/testdata/bench/quiet.ts +++ b/tests/testdata/bench/quiet.ts diff --git a/cli/tests/testdata/bench/recursive_permissions_pledge.js b/tests/testdata/bench/recursive_permissions_pledge.js index 9bf320c37..9bf320c37 100644 --- a/cli/tests/testdata/bench/recursive_permissions_pledge.js +++ b/tests/testdata/bench/recursive_permissions_pledge.js diff --git a/cli/tests/testdata/bench/unhandled_rejection.out b/tests/testdata/bench/unhandled_rejection.out index dba6d9ed4..dba6d9ed4 100644 --- a/cli/tests/testdata/bench/unhandled_rejection.out +++ b/tests/testdata/bench/unhandled_rejection.out diff --git a/cli/tests/testdata/bench/unhandled_rejection.ts b/tests/testdata/bench/unhandled_rejection.ts index 32f3111ea..32f3111ea 100644 --- a/cli/tests/testdata/bench/unhandled_rejection.ts +++ b/tests/testdata/bench/unhandled_rejection.ts diff --git a/cli/tests/testdata/bench/unresolved_promise.out b/tests/testdata/bench/unresolved_promise.out index e5c53836a..e5c53836a 100644 --- a/cli/tests/testdata/bench/unresolved_promise.out +++ b/tests/testdata/bench/unresolved_promise.out diff --git a/cli/tests/testdata/bench/unresolved_promise.ts b/tests/testdata/bench/unresolved_promise.ts index 25fe70762..25fe70762 100644 --- a/cli/tests/testdata/bench/unresolved_promise.ts +++ b/tests/testdata/bench/unresolved_promise.ts diff --git a/cli/tests/testdata/benches/response_string_perf.js b/tests/testdata/benches/response_string_perf.js index f55376c77..f55376c77 100644 --- a/cli/tests/testdata/benches/response_string_perf.js +++ b/tests/testdata/benches/response_string_perf.js diff --git a/cli/tests/testdata/benches/text_decoder_perf.js b/tests/testdata/benches/text_decoder_perf.js index 2e52b1f8b..2e52b1f8b 100644 --- a/cli/tests/testdata/benches/text_decoder_perf.js +++ b/tests/testdata/benches/text_decoder_perf.js diff --git a/cli/tests/testdata/benches/text_encoder_into_perf.js b/tests/testdata/benches/text_encoder_into_perf.js index 8d60e9f00..8d60e9f00 100644 --- a/cli/tests/testdata/benches/text_encoder_into_perf.js +++ b/tests/testdata/benches/text_encoder_into_perf.js diff --git a/cli/tests/testdata/benches/text_encoder_perf.js b/tests/testdata/benches/text_encoder_perf.js index 6f61f019e..6f61f019e 100644 --- a/cli/tests/testdata/benches/text_encoder_perf.js +++ b/tests/testdata/benches/text_encoder_perf.js diff --git a/cli/tests/testdata/bundle/bare_imports/error_with_bare_import.ts b/tests/testdata/bundle/bare_imports/error_with_bare_import.ts index c0748305d..c0748305d 100644 --- a/cli/tests/testdata/bundle/bare_imports/error_with_bare_import.ts +++ b/tests/testdata/bundle/bare_imports/error_with_bare_import.ts diff --git a/cli/tests/testdata/bundle/bare_imports/error_with_bare_import.ts.out b/tests/testdata/bundle/bare_imports/error_with_bare_import.ts.out index 44d063a5e..44d063a5e 100644 --- a/cli/tests/testdata/bundle/bare_imports/error_with_bare_import.ts.out +++ b/tests/testdata/bundle/bare_imports/error_with_bare_import.ts.out diff --git a/cli/tests/testdata/bundle/bundle.test.out b/tests/testdata/bundle/bundle.test.out index 6b1c109d3..6b1c109d3 100644 --- a/cli/tests/testdata/bundle/bundle.test.out +++ b/tests/testdata/bundle/bundle.test.out diff --git a/cli/tests/testdata/bundle/check_local_by_default/no_errors.out b/tests/testdata/bundle/check_local_by_default/no_errors.out index c4559d1fa..c4559d1fa 100644 --- a/cli/tests/testdata/bundle/check_local_by_default/no_errors.out +++ b/tests/testdata/bundle/check_local_by_default/no_errors.out diff --git a/cli/tests/testdata/bundle/check_local_by_default/no_errors.ts b/tests/testdata/bundle/check_local_by_default/no_errors.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/bundle/check_local_by_default/no_errors.ts +++ b/tests/testdata/bundle/check_local_by_default/no_errors.ts diff --git a/cli/tests/testdata/bundle/check_local_by_default/type_error.out b/tests/testdata/bundle/check_local_by_default/type_error.out index 6d53e9498..6d53e9498 100644 --- a/cli/tests/testdata/bundle/check_local_by_default/type_error.out +++ b/tests/testdata/bundle/check_local_by_default/type_error.out diff --git a/cli/tests/testdata/bundle/check_local_by_default/type_error.ts b/tests/testdata/bundle/check_local_by_default/type_error.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/bundle/check_local_by_default/type_error.ts +++ b/tests/testdata/bundle/check_local_by_default/type_error.ts diff --git a/cli/tests/testdata/bundle/decorators/ts_decorators.out b/tests/testdata/bundle/decorators/ts_decorators.out index e988aadd3..e988aadd3 100644 --- a/cli/tests/testdata/bundle/decorators/ts_decorators.out +++ b/tests/testdata/bundle/decorators/ts_decorators.out diff --git a/cli/tests/testdata/bundle/decorators/ts_decorators.ts b/tests/testdata/bundle/decorators/ts_decorators.ts index 61299bccf..61299bccf 100644 --- a/cli/tests/testdata/bundle/decorators/ts_decorators.ts +++ b/tests/testdata/bundle/decorators/ts_decorators.ts diff --git a/cli/tests/testdata/bundle/dynamic_import.ts b/tests/testdata/bundle/dynamic_import.ts index d8c7d08ec..d8c7d08ec 100644 --- a/cli/tests/testdata/bundle/dynamic_import.ts +++ b/tests/testdata/bundle/dynamic_import.ts diff --git a/cli/tests/testdata/bundle/file_extensions/js_without_extension.out b/tests/testdata/bundle/file_extensions/js_without_extension.out index 0273e6207..0273e6207 100644 --- a/cli/tests/testdata/bundle/file_extensions/js_without_extension.out +++ b/tests/testdata/bundle/file_extensions/js_without_extension.out diff --git a/cli/tests/testdata/bundle/file_extensions/ts_without_extension.out b/tests/testdata/bundle/file_extensions/ts_without_extension.out index 39e355d14..39e355d14 100644 --- a/cli/tests/testdata/bundle/file_extensions/ts_without_extension.out +++ b/tests/testdata/bundle/file_extensions/ts_without_extension.out diff --git a/cli/tests/testdata/bundle/file_tests-fixture01.ts b/tests/testdata/bundle/file_tests-fixture01.ts index 3598d0298..3598d0298 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture01.ts +++ b/tests/testdata/bundle/file_tests-fixture01.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture02.ts b/tests/testdata/bundle/file_tests-fixture02.ts index 0cd291329..0cd291329 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture02.ts +++ b/tests/testdata/bundle/file_tests-fixture02.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture03.ts b/tests/testdata/bundle/file_tests-fixture03.ts index 78365ce13..78365ce13 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture03.ts +++ b/tests/testdata/bundle/file_tests-fixture03.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture04.ts b/tests/testdata/bundle/file_tests-fixture04.ts index 590f4fef9..590f4fef9 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture04.ts +++ b/tests/testdata/bundle/file_tests-fixture04.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture05.ts b/tests/testdata/bundle/file_tests-fixture05.ts index 19541ce59..19541ce59 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture05.ts +++ b/tests/testdata/bundle/file_tests-fixture05.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture06.ts b/tests/testdata/bundle/file_tests-fixture06.ts index 3d94332df..3d94332df 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture06.ts +++ b/tests/testdata/bundle/file_tests-fixture06.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture07.ts b/tests/testdata/bundle/file_tests-fixture07.ts index 0475a6c53..0475a6c53 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture07.ts +++ b/tests/testdata/bundle/file_tests-fixture07.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture08.ts b/tests/testdata/bundle/file_tests-fixture08.ts index 6af5d172e..6af5d172e 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture08.ts +++ b/tests/testdata/bundle/file_tests-fixture08.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture09.ts b/tests/testdata/bundle/file_tests-fixture09.ts index 30ba983ee..30ba983ee 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture09.ts +++ b/tests/testdata/bundle/file_tests-fixture09.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture10.ts b/tests/testdata/bundle/file_tests-fixture10.ts index bec555da8..bec555da8 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture10.ts +++ b/tests/testdata/bundle/file_tests-fixture10.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture11.ts b/tests/testdata/bundle/file_tests-fixture11.ts index 1c361438f..1c361438f 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture11.ts +++ b/tests/testdata/bundle/file_tests-fixture11.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture12.ts b/tests/testdata/bundle/file_tests-fixture12.ts index 32b9566bd..32b9566bd 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture12.ts +++ b/tests/testdata/bundle/file_tests-fixture12.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture13.ts b/tests/testdata/bundle/file_tests-fixture13.ts index 7dc13534c..7dc13534c 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture13.ts +++ b/tests/testdata/bundle/file_tests-fixture13.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture14.ts b/tests/testdata/bundle/file_tests-fixture14.ts index aa8eef1b8..aa8eef1b8 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture14.ts +++ b/tests/testdata/bundle/file_tests-fixture14.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture15.ts b/tests/testdata/bundle/file_tests-fixture15.ts index c1dd3bc89..c1dd3bc89 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture15.ts +++ b/tests/testdata/bundle/file_tests-fixture15.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture16.ts b/tests/testdata/bundle/file_tests-fixture16.ts index 5d0b05e92..5d0b05e92 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture16.ts +++ b/tests/testdata/bundle/file_tests-fixture16.ts diff --git a/cli/tests/testdata/bundle/file_tests-fixture16_2.ts b/tests/testdata/bundle/file_tests-fixture16_2.ts index 7115949c9..7115949c9 100644 --- a/cli/tests/testdata/bundle/file_tests-fixture16_2.ts +++ b/tests/testdata/bundle/file_tests-fixture16_2.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-a.ts b/tests/testdata/bundle/file_tests-subdir-a.ts index 9233cce2f..9233cce2f 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-a.ts +++ b/tests/testdata/bundle/file_tests-subdir-a.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-b.ts b/tests/testdata/bundle/file_tests-subdir-b.ts index 1cf751c22..1cf751c22 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-b.ts +++ b/tests/testdata/bundle/file_tests-subdir-b.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-c.ts b/tests/testdata/bundle/file_tests-subdir-c.ts index 7cc01f993..7cc01f993 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-c.ts +++ b/tests/testdata/bundle/file_tests-subdir-c.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-d.ts b/tests/testdata/bundle/file_tests-subdir-d.ts index 9f1ba7f67..9f1ba7f67 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-d.ts +++ b/tests/testdata/bundle/file_tests-subdir-d.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-e.ts b/tests/testdata/bundle/file_tests-subdir-e.ts index 55e8e0e18..55e8e0e18 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-e.ts +++ b/tests/testdata/bundle/file_tests-subdir-e.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-f.ts b/tests/testdata/bundle/file_tests-subdir-f.ts index 8bc8d9bf4..8bc8d9bf4 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-f.ts +++ b/tests/testdata/bundle/file_tests-subdir-f.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-g.ts b/tests/testdata/bundle/file_tests-subdir-g.ts index 3eb4cd3cc..3eb4cd3cc 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-g.ts +++ b/tests/testdata/bundle/file_tests-subdir-g.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-h.ts b/tests/testdata/bundle/file_tests-subdir-h.ts index 9c86dd5c5..9c86dd5c5 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-h.ts +++ b/tests/testdata/bundle/file_tests-subdir-h.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-i.ts b/tests/testdata/bundle/file_tests-subdir-i.ts index 4ad9ce449..4ad9ce449 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-i.ts +++ b/tests/testdata/bundle/file_tests-subdir-i.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-j.ts b/tests/testdata/bundle/file_tests-subdir-j.ts index ac7bce0ea..ac7bce0ea 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-j.ts +++ b/tests/testdata/bundle/file_tests-subdir-j.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-k.ts b/tests/testdata/bundle/file_tests-subdir-k.ts index 1b8a533f1..1b8a533f1 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-k.ts +++ b/tests/testdata/bundle/file_tests-subdir-k.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-l.ts b/tests/testdata/bundle/file_tests-subdir-l.ts index d767e6ad0..d767e6ad0 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-l.ts +++ b/tests/testdata/bundle/file_tests-subdir-l.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-m.ts b/tests/testdata/bundle/file_tests-subdir-m.ts index 21e86d07c..21e86d07c 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-m.ts +++ b/tests/testdata/bundle/file_tests-subdir-m.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-n.ts b/tests/testdata/bundle/file_tests-subdir-n.ts index ac3c37005..ac3c37005 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-n.ts +++ b/tests/testdata/bundle/file_tests-subdir-n.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-o.ts b/tests/testdata/bundle/file_tests-subdir-o.ts index ab9753fea..ab9753fea 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-o.ts +++ b/tests/testdata/bundle/file_tests-subdir-o.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-p.ts b/tests/testdata/bundle/file_tests-subdir-p.ts index 19b486f71..19b486f71 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-p.ts +++ b/tests/testdata/bundle/file_tests-subdir-p.ts diff --git a/cli/tests/testdata/bundle/file_tests-subdir-q.ts b/tests/testdata/bundle/file_tests-subdir-q.ts index eebe0a38b..eebe0a38b 100644 --- a/cli/tests/testdata/bundle/file_tests-subdir-q.ts +++ b/tests/testdata/bundle/file_tests-subdir-q.ts diff --git a/cli/tests/testdata/bundle/fixture01.out b/tests/testdata/bundle/fixture01.out index a825140b7..a825140b7 100644 --- a/cli/tests/testdata/bundle/fixture01.out +++ b/tests/testdata/bundle/fixture01.out diff --git a/cli/tests/testdata/bundle/fixture02.out b/tests/testdata/bundle/fixture02.out index 5c502e2f0..5c502e2f0 100644 --- a/cli/tests/testdata/bundle/fixture02.out +++ b/tests/testdata/bundle/fixture02.out diff --git a/cli/tests/testdata/bundle/fixture03.out b/tests/testdata/bundle/fixture03.out index 524e77abb..524e77abb 100644 --- a/cli/tests/testdata/bundle/fixture03.out +++ b/tests/testdata/bundle/fixture03.out diff --git a/cli/tests/testdata/bundle/fixture04.out b/tests/testdata/bundle/fixture04.out index 37869205b..37869205b 100644 --- a/cli/tests/testdata/bundle/fixture04.out +++ b/tests/testdata/bundle/fixture04.out diff --git a/cli/tests/testdata/bundle/fixture05.out b/tests/testdata/bundle/fixture05.out index 1289cca5f..1289cca5f 100644 --- a/cli/tests/testdata/bundle/fixture05.out +++ b/tests/testdata/bundle/fixture05.out diff --git a/cli/tests/testdata/bundle/fixture06.out b/tests/testdata/bundle/fixture06.out index 47288d5e4..47288d5e4 100644 --- a/cli/tests/testdata/bundle/fixture06.out +++ b/tests/testdata/bundle/fixture06.out diff --git a/cli/tests/testdata/bundle/fixture07.out b/tests/testdata/bundle/fixture07.out index 39e6a11e8..39e6a11e8 100644 --- a/cli/tests/testdata/bundle/fixture07.out +++ b/tests/testdata/bundle/fixture07.out diff --git a/cli/tests/testdata/bundle/fixture08.out b/tests/testdata/bundle/fixture08.out index bfe40aa37..bfe40aa37 100644 --- a/cli/tests/testdata/bundle/fixture08.out +++ b/tests/testdata/bundle/fixture08.out diff --git a/cli/tests/testdata/bundle/fixture09.out b/tests/testdata/bundle/fixture09.out index e06cc92de..e06cc92de 100644 --- a/cli/tests/testdata/bundle/fixture09.out +++ b/tests/testdata/bundle/fixture09.out diff --git a/cli/tests/testdata/bundle/fixture10.out b/tests/testdata/bundle/fixture10.out index 5491e5e7f..5491e5e7f 100644 --- a/cli/tests/testdata/bundle/fixture10.out +++ b/tests/testdata/bundle/fixture10.out diff --git a/cli/tests/testdata/bundle/fixture11.out b/tests/testdata/bundle/fixture11.out index 4f333a513..4f333a513 100644 --- a/cli/tests/testdata/bundle/fixture11.out +++ b/tests/testdata/bundle/fixture11.out diff --git a/cli/tests/testdata/bundle/fixture12.out b/tests/testdata/bundle/fixture12.out index 64e2d6cdb..64e2d6cdb 100644 --- a/cli/tests/testdata/bundle/fixture12.out +++ b/tests/testdata/bundle/fixture12.out diff --git a/cli/tests/testdata/bundle/fixture13.out b/tests/testdata/bundle/fixture13.out index 1c7a8c991..1c7a8c991 100644 --- a/cli/tests/testdata/bundle/fixture13.out +++ b/tests/testdata/bundle/fixture13.out diff --git a/cli/tests/testdata/bundle/fixture14.out b/tests/testdata/bundle/fixture14.out index 392bb6478..392bb6478 100644 --- a/cli/tests/testdata/bundle/fixture14.out +++ b/tests/testdata/bundle/fixture14.out diff --git a/cli/tests/testdata/bundle/fixture15.out b/tests/testdata/bundle/fixture15.out index dc72fdeff..dc72fdeff 100644 --- a/cli/tests/testdata/bundle/fixture15.out +++ b/tests/testdata/bundle/fixture15.out diff --git a/cli/tests/testdata/bundle/fixture16.out b/tests/testdata/bundle/fixture16.out index 5e21c2a71..5e21c2a71 100644 --- a/cli/tests/testdata/bundle/fixture16.out +++ b/tests/testdata/bundle/fixture16.out diff --git a/cli/tests/testdata/bundle/https_deno.land-x-lib-a.ts b/tests/testdata/bundle/https_deno.land-x-lib-a.ts index a0a6f8e94..a0a6f8e94 100644 --- a/cli/tests/testdata/bundle/https_deno.land-x-lib-a.ts +++ b/tests/testdata/bundle/https_deno.land-x-lib-a.ts diff --git a/cli/tests/testdata/bundle/https_deno.land-x-lib-b.js b/tests/testdata/bundle/https_deno.land-x-lib-b.js index 13cacdd8b..13cacdd8b 100644 --- a/cli/tests/testdata/bundle/https_deno.land-x-lib-b.js +++ b/tests/testdata/bundle/https_deno.land-x-lib-b.js diff --git a/cli/tests/testdata/bundle/https_deno.land-x-lib-c.d.ts b/tests/testdata/bundle/https_deno.land-x-lib-c.d.ts index fac988e49..fac988e49 100644 --- a/cli/tests/testdata/bundle/https_deno.land-x-lib-c.d.ts +++ b/tests/testdata/bundle/https_deno.land-x-lib-c.d.ts diff --git a/cli/tests/testdata/bundle/https_deno.land-x-lib-c.js b/tests/testdata/bundle/https_deno.land-x-lib-c.js index 620ca0b66..620ca0b66 100644 --- a/cli/tests/testdata/bundle/https_deno.land-x-lib-c.js +++ b/tests/testdata/bundle/https_deno.land-x-lib-c.js diff --git a/cli/tests/testdata/bundle/https_deno.land-x-lib-mod.d.ts b/tests/testdata/bundle/https_deno.land-x-lib-mod.d.ts index 76ed81df0..76ed81df0 100644 --- a/cli/tests/testdata/bundle/https_deno.land-x-lib-mod.d.ts +++ b/tests/testdata/bundle/https_deno.land-x-lib-mod.d.ts diff --git a/cli/tests/testdata/bundle/https_deno.land-x-lib-mod.js b/tests/testdata/bundle/https_deno.land-x-lib-mod.js index 505162094..505162094 100644 --- a/cli/tests/testdata/bundle/https_deno.land-x-lib-mod.js +++ b/tests/testdata/bundle/https_deno.land-x-lib-mod.js diff --git a/cli/tests/testdata/bundle/ignore_directives.test.out b/tests/testdata/bundle/ignore_directives.test.out index b69c2632c..b69c2632c 100644 --- a/cli/tests/testdata/bundle/ignore_directives.test.out +++ b/tests/testdata/bundle/ignore_directives.test.out diff --git a/cli/tests/testdata/bundle/import_map/import_map.json b/tests/testdata/bundle/import_map/import_map.json index c02f72718..c02f72718 100644 --- a/cli/tests/testdata/bundle/import_map/import_map.json +++ b/tests/testdata/bundle/import_map/import_map.json diff --git a/cli/tests/testdata/bundle/import_map/main.ts b/tests/testdata/bundle/import_map/main.ts index 74834de20..74834de20 100644 --- a/cli/tests/testdata/bundle/import_map/main.ts +++ b/tests/testdata/bundle/import_map/main.ts diff --git a/cli/tests/testdata/bundle/jsx.out b/tests/testdata/bundle/jsx.out index da83cde82..da83cde82 100644 --- a/cli/tests/testdata/bundle/jsx.out +++ b/tests/testdata/bundle/jsx.out diff --git a/cli/tests/testdata/bundle/lockfile/check_error.json b/tests/testdata/bundle/lockfile/check_error.json index a218d7000..a218d7000 100644 --- a/cli/tests/testdata/bundle/lockfile/check_error.json +++ b/tests/testdata/bundle/lockfile/check_error.json diff --git a/cli/tests/testdata/bundle/lockfile/check_error.out b/tests/testdata/bundle/lockfile/check_error.out index 9299bc27e..9299bc27e 100644 --- a/cli/tests/testdata/bundle/lockfile/check_error.out +++ b/tests/testdata/bundle/lockfile/check_error.out diff --git a/cli/tests/testdata/bundle/shebang_file.bundle.out b/tests/testdata/bundle/shebang_file.bundle.out index d3369bc9c..d3369bc9c 100644 --- a/cli/tests/testdata/bundle/shebang_file.bundle.out +++ b/tests/testdata/bundle/shebang_file.bundle.out diff --git a/cli/tests/testdata/cache/036_import_map_fetch.out b/tests/testdata/cache/036_import_map_fetch.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/cache/036_import_map_fetch.out +++ b/tests/testdata/cache/036_import_map_fetch.out diff --git a/cli/tests/testdata/cache/037_fetch_multiple.out b/tests/testdata/cache/037_fetch_multiple.out index f4c0c314b..f4c0c314b 100644 --- a/cli/tests/testdata/cache/037_fetch_multiple.out +++ b/tests/testdata/cache/037_fetch_multiple.out diff --git a/cli/tests/testdata/cache/095_cache_with_bare_import.ts b/tests/testdata/cache/095_cache_with_bare_import.ts index c0748305d..c0748305d 100644 --- a/cli/tests/testdata/cache/095_cache_with_bare_import.ts +++ b/tests/testdata/cache/095_cache_with_bare_import.ts diff --git a/cli/tests/testdata/cache/095_cache_with_bare_import.ts.out b/tests/testdata/cache/095_cache_with_bare_import.ts.out index 2668a6e08..2668a6e08 100644 --- a/cli/tests/testdata/cache/095_cache_with_bare_import.ts.out +++ b/tests/testdata/cache/095_cache_with_bare_import.ts.out diff --git a/cli/tests/testdata/cache/cache_extensionless.out b/tests/testdata/cache/cache_extensionless.out index 3694c67cb..3694c67cb 100644 --- a/cli/tests/testdata/cache/cache_extensionless.out +++ b/tests/testdata/cache/cache_extensionless.out diff --git a/cli/tests/testdata/cache/cache_random_extension.out b/tests/testdata/cache/cache_random_extension.out index 745a2e0e3..745a2e0e3 100644 --- a/cli/tests/testdata/cache/cache_random_extension.out +++ b/tests/testdata/cache/cache_random_extension.out diff --git a/cli/tests/testdata/cache/check_local_by_default.out b/tests/testdata/cache/check_local_by_default.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/cache/check_local_by_default.out +++ b/tests/testdata/cache/check_local_by_default.out diff --git a/cli/tests/testdata/cache/check_local_by_default.ts b/tests/testdata/cache/check_local_by_default.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/cache/check_local_by_default.ts +++ b/tests/testdata/cache/check_local_by_default.ts diff --git a/cli/tests/testdata/cache/check_local_by_default2.out b/tests/testdata/cache/check_local_by_default2.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/cache/check_local_by_default2.out +++ b/tests/testdata/cache/check_local_by_default2.out diff --git a/cli/tests/testdata/cache/check_local_by_default2.ts b/tests/testdata/cache/check_local_by_default2.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/cache/check_local_by_default2.ts +++ b/tests/testdata/cache/check_local_by_default2.ts diff --git a/cli/tests/testdata/cache/ignore_require.js b/tests/testdata/cache/ignore_require.js index a8ef15021..a8ef15021 100644 --- a/cli/tests/testdata/cache/ignore_require.js +++ b/tests/testdata/cache/ignore_require.js diff --git a/cli/tests/testdata/cache/json_import/main.ts b/tests/testdata/cache/json_import/main.ts index 78273558f..78273558f 100644 --- a/cli/tests/testdata/cache/json_import/main.ts +++ b/tests/testdata/cache/json_import/main.ts diff --git a/cli/tests/testdata/cache/json_import/test.json b/tests/testdata/cache/json_import/test.json index 258849a68..258849a68 100644 --- a/cli/tests/testdata/cache/json_import/test.json +++ b/tests/testdata/cache/json_import/test.json diff --git a/cli/tests/testdata/cache/performance_stats.out b/tests/testdata/cache/performance_stats.out index 141829ee6..141829ee6 100644 --- a/cli/tests/testdata/cache/performance_stats.out +++ b/tests/testdata/cache/performance_stats.out diff --git a/cli/tests/testdata/cache/redirect_cache.out b/tests/testdata/cache/redirect_cache.out index 8905c4529..8905c4529 100644 --- a/cli/tests/testdata/cache/redirect_cache.out +++ b/tests/testdata/cache/redirect_cache.out diff --git a/tests/testdata/cat.ts b/tests/testdata/cat.ts new file mode 100644 index 000000000..f0205451e --- /dev/null +++ b/tests/testdata/cat.ts @@ -0,0 +1,10 @@ +import { copy } from "../../test_util/std/streams/copy.ts"; +async function main() { + for (let i = 1; i < Deno.args.length; i++) { + const filename = Deno.args[i]; + const file = await Deno.open(filename); + await copy(file, Deno.stdout); + } +} + +main(); diff --git a/cli/tests/testdata/cert/cafile_info.ts b/tests/testdata/cert/cafile_info.ts index b41873f73..b41873f73 100644 --- a/cli/tests/testdata/cert/cafile_info.ts +++ b/tests/testdata/cert/cafile_info.ts diff --git a/cli/tests/testdata/cert/cafile_info.ts.out b/tests/testdata/cert/cafile_info.ts.out index 279453f88..279453f88 100644 --- a/cli/tests/testdata/cert/cafile_info.ts.out +++ b/tests/testdata/cert/cafile_info.ts.out diff --git a/cli/tests/testdata/cert/cafile_ts_fetch.ts b/tests/testdata/cert/cafile_ts_fetch.ts index 12fcda007..12fcda007 100644 --- a/cli/tests/testdata/cert/cafile_ts_fetch.ts +++ b/tests/testdata/cert/cafile_ts_fetch.ts diff --git a/cli/tests/testdata/cert/cafile_ts_fetch.ts.out b/tests/testdata/cert/cafile_ts_fetch.ts.out index 699b756ed..699b756ed 100644 --- a/cli/tests/testdata/cert/cafile_ts_fetch.ts.out +++ b/tests/testdata/cert/cafile_ts_fetch.ts.out diff --git a/cli/tests/testdata/cert/cafile_ts_fetch_unsafe_ssl.ts.out b/tests/testdata/cert/cafile_ts_fetch_unsafe_ssl.ts.out index a0934e584..a0934e584 100644 --- a/cli/tests/testdata/cert/cafile_ts_fetch_unsafe_ssl.ts.out +++ b/tests/testdata/cert/cafile_ts_fetch_unsafe_ssl.ts.out diff --git a/cli/tests/testdata/cert/cafile_url_imports.ts b/tests/testdata/cert/cafile_url_imports.ts index 2355a8628..2355a8628 100644 --- a/cli/tests/testdata/cert/cafile_url_imports.ts +++ b/tests/testdata/cert/cafile_url_imports.ts diff --git a/cli/tests/testdata/cert/cafile_url_imports.ts.out b/tests/testdata/cert/cafile_url_imports.ts.out index 989ce33e9..989ce33e9 100644 --- a/cli/tests/testdata/cert/cafile_url_imports.ts.out +++ b/tests/testdata/cert/cafile_url_imports.ts.out diff --git a/cli/tests/testdata/cert/cafile_url_imports_unsafe_ssl.ts.out b/tests/testdata/cert/cafile_url_imports_unsafe_ssl.ts.out index daebcd766..daebcd766 100644 --- a/cli/tests/testdata/cert/cafile_url_imports_unsafe_ssl.ts.out +++ b/tests/testdata/cert/cafile_url_imports_unsafe_ssl.ts.out diff --git a/cli/tests/testdata/cert/deno_land_unsafe_ssl.ts b/tests/testdata/cert/deno_land_unsafe_ssl.ts index f5e8dcc80..f5e8dcc80 100644 --- a/cli/tests/testdata/cert/deno_land_unsafe_ssl.ts +++ b/tests/testdata/cert/deno_land_unsafe_ssl.ts diff --git a/cli/tests/testdata/cert/deno_land_unsafe_ssl.ts.out b/tests/testdata/cert/deno_land_unsafe_ssl.ts.out index cbf52b076..cbf52b076 100644 --- a/cli/tests/testdata/cert/deno_land_unsafe_ssl.ts.out +++ b/tests/testdata/cert/deno_land_unsafe_ssl.ts.out diff --git a/cli/tests/testdata/cert/ip_address_unsafe_ssl.ts b/tests/testdata/cert/ip_address_unsafe_ssl.ts index a3268888f..a3268888f 100644 --- a/cli/tests/testdata/cert/ip_address_unsafe_ssl.ts +++ b/tests/testdata/cert/ip_address_unsafe_ssl.ts diff --git a/cli/tests/testdata/cert/ip_address_unsafe_ssl.ts.out b/tests/testdata/cert/ip_address_unsafe_ssl.ts.out index d4ebb2617..d4ebb2617 100644 --- a/cli/tests/testdata/cert/ip_address_unsafe_ssl.ts.out +++ b/tests/testdata/cert/ip_address_unsafe_ssl.ts.out diff --git a/cli/tests/testdata/cert/listen_tls_alpn.ts b/tests/testdata/cert/listen_tls_alpn.ts index 6b92364ba..6b92364ba 100644 --- a/cli/tests/testdata/cert/listen_tls_alpn.ts +++ b/tests/testdata/cert/listen_tls_alpn.ts diff --git a/tests/testdata/cert/listen_tls_alpn_fail.ts b/tests/testdata/cert/listen_tls_alpn_fail.ts new file mode 100644 index 000000000..f52316cbc --- /dev/null +++ b/tests/testdata/cert/listen_tls_alpn_fail.ts @@ -0,0 +1,20 @@ +import { assertRejects } from "../../../test_util/std/assert/mod.ts"; + +const listener = Deno.listenTls({ + port: Number(Deno.args[0]), + cert: Deno.readTextFileSync("./tls/localhost.crt"), + key: Deno.readTextFileSync("./tls/localhost.key"), + alpnProtocols: ["h2", "http/1.1", "foobar"], +}); + +console.log("READY"); + +const conn = await listener.accept() as Deno.TlsConn; +await assertRejects( + () => conn.handshake(), + Deno.errors.InvalidData, + "peer doesn't support any known protocol", +); +conn.close(); + +listener.close(); diff --git a/cli/tests/testdata/cert/localhost_unsafe_ssl.ts.out b/tests/testdata/cert/localhost_unsafe_ssl.ts.out index 81e490c1c..81e490c1c 100644 --- a/cli/tests/testdata/cert/localhost_unsafe_ssl.ts.out +++ b/tests/testdata/cert/localhost_unsafe_ssl.ts.out diff --git a/cli/tests/testdata/check/all/check_all.out b/tests/testdata/check/all/check_all.out index 344264634..344264634 100644 --- a/cli/tests/testdata/check/all/check_all.out +++ b/tests/testdata/check/all/check_all.out diff --git a/cli/tests/testdata/check/all/check_all.ts b/tests/testdata/check/all/check_all.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/check/all/check_all.ts +++ b/tests/testdata/check/all/check_all.ts diff --git a/cli/tests/testdata/check/broadcast_channel.ts b/tests/testdata/check/broadcast_channel.ts index 6c75b4a8e..6c75b4a8e 100644 --- a/cli/tests/testdata/check/broadcast_channel.ts +++ b/tests/testdata/check/broadcast_channel.ts diff --git a/cli/tests/testdata/check/cache_config_on_off/deno.json b/tests/testdata/check/cache_config_on_off/deno.json index 8ad9c9801..8ad9c9801 100644 --- a/cli/tests/testdata/check/cache_config_on_off/deno.json +++ b/tests/testdata/check/cache_config_on_off/deno.json diff --git a/cli/tests/testdata/check/cache_config_on_off/main.ts b/tests/testdata/check/cache_config_on_off/main.ts index 0f3785f91..0f3785f91 100644 --- a/cli/tests/testdata/check/cache_config_on_off/main.ts +++ b/tests/testdata/check/cache_config_on_off/main.ts diff --git a/cli/tests/testdata/check/declaration_header_file_with_no_exports.ts b/tests/testdata/check/declaration_header_file_with_no_exports.ts index ef5da7a38..ef5da7a38 100644 --- a/cli/tests/testdata/check/declaration_header_file_with_no_exports.ts +++ b/tests/testdata/check/declaration_header_file_with_no_exports.ts diff --git a/cli/tests/testdata/check/declaration_header_file_with_no_exports_js.d.ts b/tests/testdata/check/declaration_header_file_with_no_exports_js.d.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/check/declaration_header_file_with_no_exports_js.d.ts +++ b/tests/testdata/check/declaration_header_file_with_no_exports_js.d.ts diff --git a/cli/tests/testdata/check/declaration_header_file_with_no_exports_js.js b/tests/testdata/check/declaration_header_file_with_no_exports_js.js index b8ae2bcef..b8ae2bcef 100644 --- a/cli/tests/testdata/check/declaration_header_file_with_no_exports_js.js +++ b/tests/testdata/check/declaration_header_file_with_no_exports_js.js diff --git a/cli/tests/testdata/check/deno_not_found/main.out b/tests/testdata/check/deno_not_found/main.out index dc4a682c7..dc4a682c7 100644 --- a/cli/tests/testdata/check/deno_not_found/main.out +++ b/tests/testdata/check/deno_not_found/main.out diff --git a/cli/tests/testdata/check/deno_not_found/main.ts b/tests/testdata/check/deno_not_found/main.ts index 3269f047a..3269f047a 100644 --- a/cli/tests/testdata/check/deno_not_found/main.ts +++ b/tests/testdata/check/deno_not_found/main.ts diff --git a/cli/tests/testdata/check/dts/check_dts.d.ts b/tests/testdata/check/dts/check_dts.d.ts index 9cf60f063..9cf60f063 100644 --- a/cli/tests/testdata/check/dts/check_dts.d.ts +++ b/tests/testdata/check/dts/check_dts.d.ts diff --git a/cli/tests/testdata/check/dts/check_dts.out b/tests/testdata/check/dts/check_dts.out index e7ff9a009..e7ff9a009 100644 --- a/cli/tests/testdata/check/dts/check_dts.out +++ b/tests/testdata/check/dts/check_dts.out diff --git a/cli/tests/testdata/check/exclude_option/deno.exclude_dir.json b/tests/testdata/check/exclude_option/deno.exclude_dir.json index 2019f8953..2019f8953 100644 --- a/cli/tests/testdata/check/exclude_option/deno.exclude_dir.json +++ b/tests/testdata/check/exclude_option/deno.exclude_dir.json diff --git a/cli/tests/testdata/check/exclude_option/deno.exclude_glob.json b/tests/testdata/check/exclude_option/deno.exclude_glob.json index 1d203ba08..1d203ba08 100644 --- a/cli/tests/testdata/check/exclude_option/deno.exclude_glob.json +++ b/tests/testdata/check/exclude_option/deno.exclude_glob.json diff --git a/cli/tests/testdata/check/exclude_option/deno.json b/tests/testdata/check/exclude_option/deno.json index a9eca74ca..a9eca74ca 100644 --- a/cli/tests/testdata/check/exclude_option/deno.json +++ b/tests/testdata/check/exclude_option/deno.json diff --git a/cli/tests/testdata/check/exclude_option/exclude_option.ts.error.out b/tests/testdata/check/exclude_option/exclude_option.ts.error.out index abd1c1258..abd1c1258 100644 --- a/cli/tests/testdata/check/exclude_option/exclude_option.ts.error.out +++ b/tests/testdata/check/exclude_option/exclude_option.ts.error.out diff --git a/cli/tests/testdata/check/exclude_option/ignored/index.ts b/tests/testdata/check/exclude_option/ignored/index.ts index 0419cf073..0419cf073 100644 --- a/cli/tests/testdata/check/exclude_option/ignored/index.ts +++ b/tests/testdata/check/exclude_option/ignored/index.ts diff --git a/cli/tests/testdata/check/exclude_option/index.ts b/tests/testdata/check/exclude_option/index.ts index 8335ca3a2..8335ca3a2 100644 --- a/cli/tests/testdata/check/exclude_option/index.ts +++ b/tests/testdata/check/exclude_option/index.ts diff --git a/cli/tests/testdata/check/excluded_file_specified/check.out b/tests/testdata/check/excluded_file_specified/check.out index 2bc26aaaf..2bc26aaaf 100644 --- a/cli/tests/testdata/check/excluded_file_specified/check.out +++ b/tests/testdata/check/excluded_file_specified/check.out diff --git a/cli/tests/testdata/check/excluded_file_specified/deno.json b/tests/testdata/check/excluded_file_specified/deno.json index 039be18df..039be18df 100644 --- a/cli/tests/testdata/check/excluded_file_specified/deno.json +++ b/tests/testdata/check/excluded_file_specified/deno.json diff --git a/cli/tests/testdata/check/excluded_file_specified/lib/types.d.ts b/tests/testdata/check/excluded_file_specified/lib/types.d.ts index a02ad0cbe..a02ad0cbe 100644 --- a/cli/tests/testdata/check/excluded_file_specified/lib/types.d.ts +++ b/tests/testdata/check/excluded_file_specified/lib/types.d.ts diff --git a/cli/tests/testdata/check/export_equals_declaration_file/main.ts b/tests/testdata/check/export_equals_declaration_file/main.ts index e20a735d5..e20a735d5 100644 --- a/cli/tests/testdata/check/export_equals_declaration_file/main.ts +++ b/tests/testdata/check/export_equals_declaration_file/main.ts diff --git a/cli/tests/testdata/check/export_equals_declaration_file/other.d.ts b/tests/testdata/check/export_equals_declaration_file/other.d.ts index 5e1274fa5..5e1274fa5 100644 --- a/cli/tests/testdata/check/export_equals_declaration_file/other.d.ts +++ b/tests/testdata/check/export_equals_declaration_file/other.d.ts diff --git a/cli/tests/testdata/check/export_equals_declaration_file/other.js b/tests/testdata/check/export_equals_declaration_file/other.js index f66c03162..f66c03162 100644 --- a/cli/tests/testdata/check/export_equals_declaration_file/other.js +++ b/tests/testdata/check/export_equals_declaration_file/other.js diff --git a/cli/tests/testdata/check/jsx_not_checked/main.jsx b/tests/testdata/check/jsx_not_checked/main.jsx index 8de05f9f7..8de05f9f7 100644 --- a/cli/tests/testdata/check/jsx_not_checked/main.jsx +++ b/tests/testdata/check/jsx_not_checked/main.jsx diff --git a/cli/tests/testdata/check/jsx_not_checked/main.out b/tests/testdata/check/jsx_not_checked/main.out index 82c1c2358..82c1c2358 100644 --- a/cli/tests/testdata/check/jsx_not_checked/main.out +++ b/tests/testdata/check/jsx_not_checked/main.out diff --git a/cli/tests/testdata/check/jsx_not_checked/other.ts b/tests/testdata/check/jsx_not_checked/other.ts index 47995cb0f..47995cb0f 100644 --- a/cli/tests/testdata/check/jsx_not_checked/other.ts +++ b/tests/testdata/check/jsx_not_checked/other.ts diff --git a/cli/tests/testdata/check/jsximportsource_importmap_config/deno.json b/tests/testdata/check/jsximportsource_importmap_config/deno.json index 6d837af7c..6d837af7c 100644 --- a/cli/tests/testdata/check/jsximportsource_importmap_config/deno.json +++ b/tests/testdata/check/jsximportsource_importmap_config/deno.json diff --git a/cli/tests/testdata/check/jsximportsource_importmap_config/import_map.json b/tests/testdata/check/jsximportsource_importmap_config/import_map.json index e926207af..e926207af 100644 --- a/cli/tests/testdata/check/jsximportsource_importmap_config/import_map.json +++ b/tests/testdata/check/jsximportsource_importmap_config/import_map.json diff --git a/cli/tests/testdata/check/jsximportsource_importmap_config/jsx_runtime.ts b/tests/testdata/check/jsximportsource_importmap_config/jsx_runtime.ts index 33a07ca73..33a07ca73 100644 --- a/cli/tests/testdata/check/jsximportsource_importmap_config/jsx_runtime.ts +++ b/tests/testdata/check/jsximportsource_importmap_config/jsx_runtime.ts diff --git a/cli/tests/testdata/check/jsximportsource_importmap_config/main.bundle.js b/tests/testdata/check/jsximportsource_importmap_config/main.bundle.js index 6f39c876e..6f39c876e 100644 --- a/cli/tests/testdata/check/jsximportsource_importmap_config/main.bundle.js +++ b/tests/testdata/check/jsximportsource_importmap_config/main.bundle.js diff --git a/cli/tests/testdata/check/jsximportsource_importmap_config/main.tsx b/tests/testdata/check/jsximportsource_importmap_config/main.tsx index a1eb24f0b..a1eb24f0b 100644 --- a/cli/tests/testdata/check/jsximportsource_importmap_config/main.tsx +++ b/tests/testdata/check/jsximportsource_importmap_config/main.tsx diff --git a/cli/tests/testdata/check/module_detection_force.ts b/tests/testdata/check/module_detection_force.ts index 185ceb816..185ceb816 100644 --- a/cli/tests/testdata/check/module_detection_force.ts +++ b/tests/testdata/check/module_detection_force.ts diff --git a/cli/tests/testdata/check/module_detection_force/import.ts b/tests/testdata/check/module_detection_force/import.ts index 66b229870..66b229870 100644 --- a/cli/tests/testdata/check/module_detection_force/import.ts +++ b/tests/testdata/check/module_detection_force/import.ts diff --git a/cli/tests/testdata/check/module_detection_force/main.ts b/tests/testdata/check/module_detection_force/main.ts index a55c9962b..a55c9962b 100644 --- a/cli/tests/testdata/check/module_detection_force/main.ts +++ b/tests/testdata/check/module_detection_force/main.ts diff --git a/cli/tests/testdata/check/no_error_truncation/deno.json b/tests/testdata/check/no_error_truncation/deno.json index 643707ccc..643707ccc 100644 --- a/cli/tests/testdata/check/no_error_truncation/deno.json +++ b/tests/testdata/check/no_error_truncation/deno.json diff --git a/cli/tests/testdata/check/no_error_truncation/main.out b/tests/testdata/check/no_error_truncation/main.out index 13fd5aae4..13fd5aae4 100644 --- a/cli/tests/testdata/check/no_error_truncation/main.out +++ b/tests/testdata/check/no_error_truncation/main.out diff --git a/cli/tests/testdata/check/no_error_truncation/main.ts b/tests/testdata/check/no_error_truncation/main.ts index bb1856602..bb1856602 100644 --- a/cli/tests/testdata/check/no_error_truncation/main.ts +++ b/tests/testdata/check/no_error_truncation/main.ts diff --git a/cli/tests/testdata/check/node_builtin_modules/mod.js b/tests/testdata/check/node_builtin_modules/mod.js index 196fb9be9..196fb9be9 100644 --- a/cli/tests/testdata/check/node_builtin_modules/mod.js +++ b/tests/testdata/check/node_builtin_modules/mod.js diff --git a/cli/tests/testdata/check/node_builtin_modules/mod.js.out b/tests/testdata/check/node_builtin_modules/mod.js.out index 97786ebae..97786ebae 100644 --- a/cli/tests/testdata/check/node_builtin_modules/mod.js.out +++ b/tests/testdata/check/node_builtin_modules/mod.js.out diff --git a/cli/tests/testdata/check/node_builtin_modules/mod.ts b/tests/testdata/check/node_builtin_modules/mod.ts index 0e62353fe..0e62353fe 100644 --- a/cli/tests/testdata/check/node_builtin_modules/mod.ts +++ b/tests/testdata/check/node_builtin_modules/mod.ts diff --git a/cli/tests/testdata/check/node_builtin_modules/mod.ts.out b/tests/testdata/check/node_builtin_modules/mod.ts.out index 49b762cff..49b762cff 100644 --- a/cli/tests/testdata/check/node_builtin_modules/mod.ts.out +++ b/tests/testdata/check/node_builtin_modules/mod.ts.out diff --git a/cli/tests/testdata/check/npm_install_diagnostics/main.out b/tests/testdata/check/npm_install_diagnostics/main.out index fe46f0e42..fe46f0e42 100644 --- a/cli/tests/testdata/check/npm_install_diagnostics/main.out +++ b/tests/testdata/check/npm_install_diagnostics/main.out diff --git a/cli/tests/testdata/check/npm_install_diagnostics/main.ts b/tests/testdata/check/npm_install_diagnostics/main.ts index 62c0c5619..62c0c5619 100644 --- a/cli/tests/testdata/check/npm_install_diagnostics/main.ts +++ b/tests/testdata/check/npm_install_diagnostics/main.ts diff --git a/cli/tests/testdata/check/response_json.ts b/tests/testdata/check/response_json.ts index e936f7bff..e936f7bff 100644 --- a/cli/tests/testdata/check/response_json.ts +++ b/tests/testdata/check/response_json.ts diff --git a/cli/tests/testdata/check/types_dts/deno.json b/tests/testdata/check/types_dts/deno.json index 85f1549e0..85f1549e0 100644 --- a/cli/tests/testdata/check/types_dts/deno.json +++ b/tests/testdata/check/types_dts/deno.json diff --git a/cli/tests/testdata/check/types_dts/main.out b/tests/testdata/check/types_dts/main.out index c769989e3..c769989e3 100644 --- a/cli/tests/testdata/check/types_dts/main.out +++ b/tests/testdata/check/types_dts/main.out diff --git a/cli/tests/testdata/check/types_dts/main.ts b/tests/testdata/check/types_dts/main.ts index ca375a094..ca375a094 100644 --- a/cli/tests/testdata/check/types_dts/main.ts +++ b/tests/testdata/check/types_dts/main.ts diff --git a/cli/tests/testdata/check/types_dts/types.d.ts b/tests/testdata/check/types_dts/types.d.ts index 141c2a3d3..141c2a3d3 100644 --- a/cli/tests/testdata/check/types_dts/types.d.ts +++ b/tests/testdata/check/types_dts/types.d.ts diff --git a/cli/tests/testdata/commonjs/data.json b/tests/testdata/commonjs/data.json index f2a886f39..f2a886f39 100644 --- a/cli/tests/testdata/commonjs/data.json +++ b/tests/testdata/commonjs/data.json diff --git a/cli/tests/testdata/commonjs/example.js b/tests/testdata/commonjs/example.js index d2f89d3f0..d2f89d3f0 100644 --- a/cli/tests/testdata/commonjs/example.js +++ b/tests/testdata/commonjs/example.js diff --git a/cli/tests/testdata/commonjs/node_modules/colorette/index.cjs b/tests/testdata/commonjs/node_modules/colorette/index.cjs index 0590d668d..0590d668d 100644 --- a/cli/tests/testdata/commonjs/node_modules/colorette/index.cjs +++ b/tests/testdata/commonjs/node_modules/colorette/index.cjs diff --git a/cli/tests/testdata/commonjs/node_modules/colorette/index.js b/tests/testdata/commonjs/node_modules/colorette/index.js index 6e83866f3..6e83866f3 100644 --- a/cli/tests/testdata/commonjs/node_modules/colorette/index.js +++ b/tests/testdata/commonjs/node_modules/colorette/index.js diff --git a/cli/tests/testdata/commonjs/node_modules/colorette/package.json b/tests/testdata/commonjs/node_modules/colorette/package.json index fdca1aa24..fdca1aa24 100644 --- a/cli/tests/testdata/commonjs/node_modules/colorette/package.json +++ b/tests/testdata/commonjs/node_modules/colorette/package.json diff --git a/cli/tests/testdata/commonjs/node_modules/imports_exports/import_export.js b/tests/testdata/commonjs/node_modules/imports_exports/import_export.js index 3ebd222ea..3ebd222ea 100644 --- a/cli/tests/testdata/commonjs/node_modules/imports_exports/import_export.js +++ b/tests/testdata/commonjs/node_modules/imports_exports/import_export.js diff --git a/cli/tests/testdata/commonjs/node_modules/imports_exports/import_polyfill.js b/tests/testdata/commonjs/node_modules/imports_exports/import_polyfill.js index 76716a3ef..76716a3ef 100644 --- a/cli/tests/testdata/commonjs/node_modules/imports_exports/import_polyfill.js +++ b/tests/testdata/commonjs/node_modules/imports_exports/import_polyfill.js diff --git a/cli/tests/testdata/commonjs/node_modules/imports_exports/package.json b/tests/testdata/commonjs/node_modules/imports_exports/package.json index 5d26359db..5d26359db 100644 --- a/cli/tests/testdata/commonjs/node_modules/imports_exports/package.json +++ b/tests/testdata/commonjs/node_modules/imports_exports/package.json diff --git a/cli/tests/testdata/commonjs/node_modules/imports_exports/require_export.cjs b/tests/testdata/commonjs/node_modules/imports_exports/require_export.cjs index 48923b8d8..48923b8d8 100644 --- a/cli/tests/testdata/commonjs/node_modules/imports_exports/require_export.cjs +++ b/tests/testdata/commonjs/node_modules/imports_exports/require_export.cjs diff --git a/cli/tests/testdata/commonjs/node_modules/imports_exports/require_polyfill.js b/tests/testdata/commonjs/node_modules/imports_exports/require_polyfill.js index 1023fd65c..1023fd65c 100644 --- a/cli/tests/testdata/commonjs/node_modules/imports_exports/require_polyfill.js +++ b/tests/testdata/commonjs/node_modules/imports_exports/require_polyfill.js diff --git a/cli/tests/testdata/commonjs/node_modules/left-pad/README.md b/tests/testdata/commonjs/node_modules/left-pad/README.md index 0e70d461e..0e70d461e 100644 --- a/cli/tests/testdata/commonjs/node_modules/left-pad/README.md +++ b/tests/testdata/commonjs/node_modules/left-pad/README.md diff --git a/cli/tests/testdata/commonjs/node_modules/left-pad/index.js b/tests/testdata/commonjs/node_modules/left-pad/index.js index a439e91de..a439e91de 100644 --- a/cli/tests/testdata/commonjs/node_modules/left-pad/index.js +++ b/tests/testdata/commonjs/node_modules/left-pad/index.js diff --git a/cli/tests/testdata/commonjs/node_modules/left-pad/package.json b/tests/testdata/commonjs/node_modules/left-pad/package.json index 57be04271..57be04271 100644 --- a/cli/tests/testdata/commonjs/node_modules/left-pad/package.json +++ b/tests/testdata/commonjs/node_modules/left-pad/package.json diff --git a/cli/tests/testdata/commonjs/package.json b/tests/testdata/commonjs/package.json index 9ce08a900..9ce08a900 100644 --- a/cli/tests/testdata/commonjs/package.json +++ b/tests/testdata/commonjs/package.json diff --git a/cli/tests/testdata/compile/args.ts b/tests/testdata/compile/args.ts index ec41d52f9..ec41d52f9 100644 --- a/cli/tests/testdata/compile/args.ts +++ b/tests/testdata/compile/args.ts diff --git a/cli/tests/testdata/compile/check_local_by_default.ts b/tests/testdata/compile/check_local_by_default.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/compile/check_local_by_default.ts +++ b/tests/testdata/compile/check_local_by_default.ts diff --git a/cli/tests/testdata/compile/check_local_by_default2.ts b/tests/testdata/compile/check_local_by_default2.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/compile/check_local_by_default2.ts +++ b/tests/testdata/compile/check_local_by_default2.ts diff --git a/cli/tests/testdata/compile/dynamic_imports/import1.ts b/tests/testdata/compile/dynamic_imports/import1.ts index 2d9dde2a4..2d9dde2a4 100644 --- a/cli/tests/testdata/compile/dynamic_imports/import1.ts +++ b/tests/testdata/compile/dynamic_imports/import1.ts diff --git a/cli/tests/testdata/compile/dynamic_imports/import2.ts b/tests/testdata/compile/dynamic_imports/import2.ts index 22321a5a7..22321a5a7 100644 --- a/cli/tests/testdata/compile/dynamic_imports/import2.ts +++ b/tests/testdata/compile/dynamic_imports/import2.ts diff --git a/cli/tests/testdata/compile/dynamic_imports/import_path b/tests/testdata/compile/dynamic_imports/import_path index 98222a208..98222a208 100644 --- a/cli/tests/testdata/compile/dynamic_imports/import_path +++ b/tests/testdata/compile/dynamic_imports/import_path diff --git a/cli/tests/testdata/compile/dynamic_imports/main.out b/tests/testdata/compile/dynamic_imports/main.out index 4304fb06f..4304fb06f 100644 --- a/cli/tests/testdata/compile/dynamic_imports/main.out +++ b/tests/testdata/compile/dynamic_imports/main.out diff --git a/cli/tests/testdata/compile/dynamic_imports/main.ts b/tests/testdata/compile/dynamic_imports/main.ts index b889e2203..b889e2203 100644 --- a/cli/tests/testdata/compile/dynamic_imports/main.ts +++ b/tests/testdata/compile/dynamic_imports/main.ts diff --git a/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts b/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts new file mode 100644 index 000000000..7880fa4a6 --- /dev/null +++ b/tests/testdata/compile/dynamic_imports/main_unanalyzable.ts @@ -0,0 +1,18 @@ +import { join } from "../../../../test_util/std/path/mod.ts"; + +console.log("Starting the main module"); + +// We load the dynamic import path from the file system, to make sure any +// improvements in static analysis can't defeat the purpose of this test, which +// is to make sure the `--include` flag works to add non-analyzed imports to the +// module graph. +const IMPORT_PATH_FILE_PATH = join( + Deno.cwd(), + "tests/testdata/compile/dynamic_imports/import_path", +); + +setTimeout(async () => { + console.log("Dynamic importing"); + const importPath = (await Deno.readTextFile(IMPORT_PATH_FILE_PATH)).trim(); + import(importPath).then(() => console.log("Dynamic import done.")); +}, 0); diff --git a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/main.info.out b/tests/testdata/compile/dynamic_imports_tmp_lit/main.info.out index 57d730a64..57d730a64 100644 --- a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/main.info.out +++ b/tests/testdata/compile/dynamic_imports_tmp_lit/main.info.out diff --git a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/main.js b/tests/testdata/compile/dynamic_imports_tmp_lit/main.js index 3bda59772..3bda59772 100644 --- a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/main.js +++ b/tests/testdata/compile/dynamic_imports_tmp_lit/main.js diff --git a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/other/data.json b/tests/testdata/compile/dynamic_imports_tmp_lit/other/data.json index 0131e01e4..0131e01e4 100644 --- a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/other/data.json +++ b/tests/testdata/compile/dynamic_imports_tmp_lit/other/data.json diff --git a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/other/sub/data2.json b/tests/testdata/compile/dynamic_imports_tmp_lit/other/sub/data2.json index 858a13cdd..858a13cdd 100644 --- a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/other/sub/data2.json +++ b/tests/testdata/compile/dynamic_imports_tmp_lit/other/sub/data2.json diff --git a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/sub/a.js b/tests/testdata/compile/dynamic_imports_tmp_lit/sub/a.js index 7b2a34601..7b2a34601 100644 --- a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/sub/a.js +++ b/tests/testdata/compile/dynamic_imports_tmp_lit/sub/a.js diff --git a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/sub/b.ts b/tests/testdata/compile/dynamic_imports_tmp_lit/sub/b.ts index 6d012e7f1..6d012e7f1 100644 --- a/cli/tests/testdata/compile/dynamic_imports_tmp_lit/sub/b.ts +++ b/tests/testdata/compile/dynamic_imports_tmp_lit/sub/b.ts diff --git a/cli/tests/testdata/compile/node_modules_symlink_outside/main.out b/tests/testdata/compile/node_modules_symlink_outside/main.out index 61c83cba4..61c83cba4 100644 --- a/cli/tests/testdata/compile/node_modules_symlink_outside/main.out +++ b/tests/testdata/compile/node_modules_symlink_outside/main.out diff --git a/cli/tests/testdata/compile/node_modules_symlink_outside/main.ts b/tests/testdata/compile/node_modules_symlink_outside/main.ts index 45f681f7c..45f681f7c 100644 --- a/cli/tests/testdata/compile/node_modules_symlink_outside/main.ts +++ b/tests/testdata/compile/node_modules_symlink_outside/main.ts diff --git a/cli/tests/testdata/compile/node_modules_symlink_outside/main_compile_file.out b/tests/testdata/compile/node_modules_symlink_outside/main_compile_file.out index 1154c3256..1154c3256 100644 --- a/cli/tests/testdata/compile/node_modules_symlink_outside/main_compile_file.out +++ b/tests/testdata/compile/node_modules_symlink_outside/main_compile_file.out diff --git a/cli/tests/testdata/compile/node_modules_symlink_outside/main_compile_folder.out b/tests/testdata/compile/node_modules_symlink_outside/main_compile_folder.out index e88b95834..e88b95834 100644 --- a/cli/tests/testdata/compile/node_modules_symlink_outside/main_compile_folder.out +++ b/tests/testdata/compile/node_modules_symlink_outside/main_compile_folder.out diff --git a/cli/tests/testdata/compile/npm_fs/main.out b/tests/testdata/compile/npm_fs/main.out index 2e9ba477f..2e9ba477f 100644 --- a/cli/tests/testdata/compile/npm_fs/main.out +++ b/tests/testdata/compile/npm_fs/main.out diff --git a/cli/tests/testdata/compile/npm_fs/main.ts b/tests/testdata/compile/npm_fs/main.ts index 6361610a9..6361610a9 100644 --- a/cli/tests/testdata/compile/npm_fs/main.ts +++ b/tests/testdata/compile/npm_fs/main.ts diff --git a/cli/tests/testdata/compile/standalone_error.ts b/tests/testdata/compile/standalone_error.ts index 279398113..279398113 100644 --- a/cli/tests/testdata/compile/standalone_error.ts +++ b/tests/testdata/compile/standalone_error.ts diff --git a/cli/tests/testdata/compile/standalone_error_module_with_imports_1.ts b/tests/testdata/compile/standalone_error_module_with_imports_1.ts index bf38f7263..bf38f7263 100644 --- a/cli/tests/testdata/compile/standalone_error_module_with_imports_1.ts +++ b/tests/testdata/compile/standalone_error_module_with_imports_1.ts diff --git a/cli/tests/testdata/compile/standalone_error_module_with_imports_2.ts b/tests/testdata/compile/standalone_error_module_with_imports_2.ts index ef052b512..ef052b512 100644 --- a/cli/tests/testdata/compile/standalone_error_module_with_imports_2.ts +++ b/tests/testdata/compile/standalone_error_module_with_imports_2.ts diff --git a/cli/tests/testdata/compile/standalone_follow_redirects.ts b/tests/testdata/compile/standalone_follow_redirects.ts index f0957bc3d..f0957bc3d 100644 --- a/cli/tests/testdata/compile/standalone_follow_redirects.ts +++ b/tests/testdata/compile/standalone_follow_redirects.ts diff --git a/tests/testdata/compile/standalone_follow_redirects_2.js b/tests/testdata/compile/standalone_follow_redirects_2.js new file mode 100644 index 000000000..765dda153 --- /dev/null +++ b/tests/testdata/compile/standalone_follow_redirects_2.js @@ -0,0 +1,5 @@ +// unversioned import redirects with dependencies. +import { + assertNotEquals as _a, + assertStrictEquals as _b, +} from "../../../test_util/std/assert/mod.ts"; diff --git a/cli/tests/testdata/compile/standalone_import_datauri.ts b/tests/testdata/compile/standalone_import_datauri.ts index 68f348828..68f348828 100644 --- a/cli/tests/testdata/compile/standalone_import_datauri.ts +++ b/tests/testdata/compile/standalone_import_datauri.ts diff --git a/cli/tests/testdata/compile/standalone_import_map.json b/tests/testdata/compile/standalone_import_map.json index 9e5b90bd7..9e5b90bd7 100644 --- a/cli/tests/testdata/compile/standalone_import_map.json +++ b/tests/testdata/compile/standalone_import_map.json diff --git a/cli/tests/testdata/compile/standalone_import_map.ts b/tests/testdata/compile/standalone_import_map.ts index 097b96356..097b96356 100644 --- a/cli/tests/testdata/compile/standalone_import_map.ts +++ b/tests/testdata/compile/standalone_import_map.ts diff --git a/cli/tests/testdata/compile/standalone_import_map_config.json b/tests/testdata/compile/standalone_import_map_config.json index 4959827f4..4959827f4 100644 --- a/cli/tests/testdata/compile/standalone_import_map_config.json +++ b/tests/testdata/compile/standalone_import_map_config.json diff --git a/cli/tests/testdata/compile/standalone_runtime_flags.ts b/tests/testdata/compile/standalone_runtime_flags.ts index 0154c7f4e..0154c7f4e 100644 --- a/cli/tests/testdata/compile/standalone_runtime_flags.ts +++ b/tests/testdata/compile/standalone_runtime_flags.ts diff --git a/cli/tests/testdata/compile/unstable_features.ts b/tests/testdata/compile/unstable_features.ts index 819a3d187..819a3d187 100644 --- a/cli/tests/testdata/compile/unstable_features.ts +++ b/tests/testdata/compile/unstable_features.ts diff --git a/cli/tests/testdata/compile/vfs_implicit_read_permission/main.out b/tests/testdata/compile/vfs_implicit_read_permission/main.out index 17d05159c..17d05159c 100644 --- a/cli/tests/testdata/compile/vfs_implicit_read_permission/main.out +++ b/tests/testdata/compile/vfs_implicit_read_permission/main.out diff --git a/cli/tests/testdata/compile/vfs_implicit_read_permission/main.ts b/tests/testdata/compile/vfs_implicit_read_permission/main.ts index 56ad1e095..56ad1e095 100644 --- a/cli/tests/testdata/compile/vfs_implicit_read_permission/main.ts +++ b/tests/testdata/compile/vfs_implicit_read_permission/main.ts diff --git a/cli/tests/testdata/compile/workers/basic.out b/tests/testdata/compile/workers/basic.out index 9cf9aa18f..9cf9aa18f 100644 --- a/cli/tests/testdata/compile/workers/basic.out +++ b/tests/testdata/compile/workers/basic.out diff --git a/cli/tests/testdata/compile/workers/basic.ts b/tests/testdata/compile/workers/basic.ts index 8edf58de9..8edf58de9 100644 --- a/cli/tests/testdata/compile/workers/basic.ts +++ b/tests/testdata/compile/workers/basic.ts diff --git a/cli/tests/testdata/compile/workers/not_in_module_map.ts b/tests/testdata/compile/workers/not_in_module_map.ts index b43f8cb1f..b43f8cb1f 100644 --- a/cli/tests/testdata/compile/workers/not_in_module_map.ts +++ b/tests/testdata/compile/workers/not_in_module_map.ts diff --git a/cli/tests/testdata/compile/workers/worker.ts b/tests/testdata/compile/workers/worker.ts index a1c357ab1..a1c357ab1 100644 --- a/cli/tests/testdata/compile/workers/worker.ts +++ b/tests/testdata/compile/workers/worker.ts diff --git a/cli/tests/testdata/coverage/branch.ts b/tests/testdata/coverage/branch.ts index 352167109..352167109 100644 --- a/cli/tests/testdata/coverage/branch.ts +++ b/tests/testdata/coverage/branch.ts diff --git a/cli/tests/testdata/coverage/branch_expected.lcov b/tests/testdata/coverage/branch_expected.lcov index fb3454210..fb3454210 100644 --- a/cli/tests/testdata/coverage/branch_expected.lcov +++ b/tests/testdata/coverage/branch_expected.lcov diff --git a/cli/tests/testdata/coverage/branch_expected.out b/tests/testdata/coverage/branch_expected.out index 630ea93b2..630ea93b2 100644 --- a/cli/tests/testdata/coverage/branch_expected.out +++ b/tests/testdata/coverage/branch_expected.out diff --git a/cli/tests/testdata/coverage/branch_test.ts b/tests/testdata/coverage/branch_test.ts index 2a44c8071..2a44c8071 100644 --- a/cli/tests/testdata/coverage/branch_test.ts +++ b/tests/testdata/coverage/branch_test.ts diff --git a/cli/tests/testdata/coverage/complex.ts b/tests/testdata/coverage/complex.ts index d128b5437..d128b5437 100644 --- a/cli/tests/testdata/coverage/complex.ts +++ b/tests/testdata/coverage/complex.ts diff --git a/cli/tests/testdata/coverage/complex_expected.lcov b/tests/testdata/coverage/complex_expected.lcov index 94b86465a..94b86465a 100644 --- a/cli/tests/testdata/coverage/complex_expected.lcov +++ b/tests/testdata/coverage/complex_expected.lcov diff --git a/cli/tests/testdata/coverage/complex_expected.out b/tests/testdata/coverage/complex_expected.out index 3d5f6a0ab..3d5f6a0ab 100644 --- a/cli/tests/testdata/coverage/complex_expected.out +++ b/tests/testdata/coverage/complex_expected.out diff --git a/cli/tests/testdata/coverage/complex_test.ts b/tests/testdata/coverage/complex_test.ts index d6e9c2691..d6e9c2691 100644 --- a/cli/tests/testdata/coverage/complex_test.ts +++ b/tests/testdata/coverage/complex_test.ts diff --git a/cli/tests/testdata/coverage/doesnt_exist.out b/tests/testdata/coverage/doesnt_exist.out index 0b679bcb4..0b679bcb4 100644 --- a/cli/tests/testdata/coverage/doesnt_exist.out +++ b/tests/testdata/coverage/doesnt_exist.out diff --git a/cli/tests/testdata/coverage/final_blankline.js b/tests/testdata/coverage/final_blankline.js index bb5ab0378..bb5ab0378 100644 --- a/cli/tests/testdata/coverage/final_blankline.js +++ b/tests/testdata/coverage/final_blankline.js diff --git a/cli/tests/testdata/coverage/final_blankline_expected.lcov b/tests/testdata/coverage/final_blankline_expected.lcov index 48af66180..48af66180 100644 --- a/cli/tests/testdata/coverage/final_blankline_expected.lcov +++ b/tests/testdata/coverage/final_blankline_expected.lcov diff --git a/cli/tests/testdata/coverage/final_blankline_expected.out b/tests/testdata/coverage/final_blankline_expected.out index 8dc5ce30d..8dc5ce30d 100644 --- a/cli/tests/testdata/coverage/final_blankline_expected.out +++ b/tests/testdata/coverage/final_blankline_expected.out diff --git a/cli/tests/testdata/coverage/final_blankline_test.js b/tests/testdata/coverage/final_blankline_test.js index e7331c537..e7331c537 100644 --- a/cli/tests/testdata/coverage/final_blankline_test.js +++ b/tests/testdata/coverage/final_blankline_test.js diff --git a/cli/tests/testdata/coverage/invalid_cache/mod.test.ts b/tests/testdata/coverage/invalid_cache/mod.test.ts index 5815d07a3..5815d07a3 100644 --- a/cli/tests/testdata/coverage/invalid_cache/mod.test.ts +++ b/tests/testdata/coverage/invalid_cache/mod.test.ts diff --git a/cli/tests/testdata/coverage/invalid_cache/mod_after.ts b/tests/testdata/coverage/invalid_cache/mod_after.ts index 294dc0843..294dc0843 100644 --- a/cli/tests/testdata/coverage/invalid_cache/mod_after.ts +++ b/tests/testdata/coverage/invalid_cache/mod_after.ts diff --git a/cli/tests/testdata/coverage/invalid_cache/mod_before.ts b/tests/testdata/coverage/invalid_cache/mod_before.ts index ea52ccbce..ea52ccbce 100644 --- a/cli/tests/testdata/coverage/invalid_cache/mod_before.ts +++ b/tests/testdata/coverage/invalid_cache/mod_before.ts diff --git a/cli/tests/testdata/coverage/multifile/a_test.js b/tests/testdata/coverage/multifile/a_test.js index d5d9c3533..d5d9c3533 100644 --- a/cli/tests/testdata/coverage/multifile/a_test.js +++ b/tests/testdata/coverage/multifile/a_test.js diff --git a/cli/tests/testdata/coverage/multifile/b_test.js b/tests/testdata/coverage/multifile/b_test.js index d93b15a17..d93b15a17 100644 --- a/cli/tests/testdata/coverage/multifile/b_test.js +++ b/tests/testdata/coverage/multifile/b_test.js diff --git a/cli/tests/testdata/coverage/multifile/expected.lcov b/tests/testdata/coverage/multifile/expected.lcov index 03ad5e7bd..03ad5e7bd 100644 --- a/cli/tests/testdata/coverage/multifile/expected.lcov +++ b/tests/testdata/coverage/multifile/expected.lcov diff --git a/cli/tests/testdata/coverage/multifile/expected.out b/tests/testdata/coverage/multifile/expected.out index fde26e165..fde26e165 100644 --- a/cli/tests/testdata/coverage/multifile/expected.out +++ b/tests/testdata/coverage/multifile/expected.out diff --git a/cli/tests/testdata/coverage/multifile/mod.js b/tests/testdata/coverage/multifile/mod.js index b9f8d627a..b9f8d627a 100644 --- a/cli/tests/testdata/coverage/multifile/mod.js +++ b/tests/testdata/coverage/multifile/mod.js diff --git a/cli/tests/testdata/coverage/multisource/bar.ts b/tests/testdata/coverage/multisource/bar.ts index 123937b0b..123937b0b 100644 --- a/cli/tests/testdata/coverage/multisource/bar.ts +++ b/tests/testdata/coverage/multisource/bar.ts diff --git a/cli/tests/testdata/coverage/multisource/baz/quux.ts b/tests/testdata/coverage/multisource/baz/quux.ts index 6032f6f3c..6032f6f3c 100644 --- a/cli/tests/testdata/coverage/multisource/baz/quux.ts +++ b/tests/testdata/coverage/multisource/baz/quux.ts diff --git a/cli/tests/testdata/coverage/multisource/baz/qux.ts b/tests/testdata/coverage/multisource/baz/qux.ts index 973f48c61..973f48c61 100644 --- a/cli/tests/testdata/coverage/multisource/baz/qux.ts +++ b/tests/testdata/coverage/multisource/baz/qux.ts diff --git a/cli/tests/testdata/coverage/multisource/foo.ts b/tests/testdata/coverage/multisource/foo.ts index 0559cadd8..0559cadd8 100644 --- a/cli/tests/testdata/coverage/multisource/foo.ts +++ b/tests/testdata/coverage/multisource/foo.ts diff --git a/cli/tests/testdata/coverage/multisource/test.ts b/tests/testdata/coverage/multisource/test.ts index 350421177..350421177 100644 --- a/cli/tests/testdata/coverage/multisource/test.ts +++ b/tests/testdata/coverage/multisource/test.ts diff --git a/cli/tests/testdata/coverage/no_internal_code_test.ts b/tests/testdata/coverage/no_internal_code_test.ts index 0cf46d252..0cf46d252 100644 --- a/cli/tests/testdata/coverage/no_internal_code_test.ts +++ b/tests/testdata/coverage/no_internal_code_test.ts diff --git a/cli/tests/testdata/coverage/no_internal_node_code_test.ts b/tests/testdata/coverage/no_internal_node_code_test.ts index dc53e0c52..dc53e0c52 100644 --- a/cli/tests/testdata/coverage/no_internal_node_code_test.ts +++ b/tests/testdata/coverage/no_internal_node_code_test.ts diff --git a/cli/tests/testdata/coverage/no_npm_coverage/expected.out b/tests/testdata/coverage/no_npm_coverage/expected.out index ca4511277..ca4511277 100644 --- a/cli/tests/testdata/coverage/no_npm_coverage/expected.out +++ b/tests/testdata/coverage/no_npm_coverage/expected.out diff --git a/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts b/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts index 4233b2e5d..4233b2e5d 100644 --- a/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts +++ b/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts diff --git a/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts b/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts index 8305f9597..8305f9597 100644 --- a/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts +++ b/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts diff --git a/cli/tests/testdata/coverage/no_snaps_included/__snapshots__/no_snaps_included_test.ts.snap b/tests/testdata/coverage/no_snaps_included/__snapshots__/no_snaps_included_test.ts.snap index b7bfe6b8b..b7bfe6b8b 100644 --- a/cli/tests/testdata/coverage/no_snaps_included/__snapshots__/no_snaps_included_test.ts.snap +++ b/tests/testdata/coverage/no_snaps_included/__snapshots__/no_snaps_included_test.ts.snap diff --git a/cli/tests/testdata/coverage/no_snaps_included/expected.out b/tests/testdata/coverage/no_snaps_included/expected.out index 83979a752..83979a752 100644 --- a/cli/tests/testdata/coverage/no_snaps_included/expected.out +++ b/tests/testdata/coverage/no_snaps_included/expected.out diff --git a/cli/tests/testdata/coverage/no_snaps_included/no_snaps_included.ts b/tests/testdata/coverage/no_snaps_included/no_snaps_included.ts index 2d844150b..2d844150b 100644 --- a/cli/tests/testdata/coverage/no_snaps_included/no_snaps_included.ts +++ b/tests/testdata/coverage/no_snaps_included/no_snaps_included.ts diff --git a/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts b/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts new file mode 100644 index 000000000..6fb44fcc6 --- /dev/null +++ b/tests/testdata/coverage/no_snaps_included/no_snaps_included_test.ts @@ -0,0 +1,11 @@ +import { assertSnapshot } from "../../../../test_util/std/testing/snapshot.ts"; +import { truth } from "./no_snaps_included.ts"; + +Deno.test("the truth", () => { + truth(); +}); + +// Create snapshot in .snap file, but it shouldn't be in the coverage output +Deno.test("snapshot excluded from coverage", async (context) => { + await assertSnapshot(context, {}); +}); diff --git a/cli/tests/testdata/coverage/no_tests_included/expected.out b/tests/testdata/coverage/no_tests_included/expected.out index 3b2469f2d..3b2469f2d 100644 --- a/cli/tests/testdata/coverage/no_tests_included/expected.out +++ b/tests/testdata/coverage/no_tests_included/expected.out diff --git a/tests/testdata/coverage/no_tests_included/foo.test.js b/tests/testdata/coverage/no_tests_included/foo.test.js new file mode 100644 index 000000000..46dd037be --- /dev/null +++ b/tests/testdata/coverage/no_tests_included/foo.test.js @@ -0,0 +1,6 @@ +import { addNumbers } from "./foo.ts"; +import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; + +Deno.test("addNumbers works", () => { + assertEquals(addNumbers(1, 2), 3); +}); diff --git a/tests/testdata/coverage/no_tests_included/foo.test.mts b/tests/testdata/coverage/no_tests_included/foo.test.mts new file mode 100644 index 000000000..46dd037be --- /dev/null +++ b/tests/testdata/coverage/no_tests_included/foo.test.mts @@ -0,0 +1,6 @@ +import { addNumbers } from "./foo.ts"; +import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; + +Deno.test("addNumbers works", () => { + assertEquals(addNumbers(1, 2), 3); +}); diff --git a/tests/testdata/coverage/no_tests_included/foo.test.ts b/tests/testdata/coverage/no_tests_included/foo.test.ts new file mode 100644 index 000000000..46dd037be --- /dev/null +++ b/tests/testdata/coverage/no_tests_included/foo.test.ts @@ -0,0 +1,6 @@ +import { addNumbers } from "./foo.ts"; +import { assertEquals } from "../../../../test_util/std/assert/mod.ts"; + +Deno.test("addNumbers works", () => { + assertEquals(addNumbers(1, 2), 3); +}); diff --git a/cli/tests/testdata/coverage/no_tests_included/foo.ts b/tests/testdata/coverage/no_tests_included/foo.ts index fc2860ef0..fc2860ef0 100644 --- a/cli/tests/testdata/coverage/no_tests_included/foo.ts +++ b/tests/testdata/coverage/no_tests_included/foo.ts diff --git a/cli/tests/testdata/coverage/no_transpiled_lines/expected.lcov b/tests/testdata/coverage/no_transpiled_lines/expected.lcov index 480945d14..480945d14 100644 --- a/cli/tests/testdata/coverage/no_transpiled_lines/expected.lcov +++ b/tests/testdata/coverage/no_transpiled_lines/expected.lcov diff --git a/cli/tests/testdata/coverage/no_transpiled_lines/expected.out b/tests/testdata/coverage/no_transpiled_lines/expected.out index 3438a045c..3438a045c 100644 --- a/cli/tests/testdata/coverage/no_transpiled_lines/expected.out +++ b/tests/testdata/coverage/no_transpiled_lines/expected.out diff --git a/tests/testdata/coverage/no_transpiled_lines/index.ts b/tests/testdata/coverage/no_transpiled_lines/index.ts new file mode 100644 index 000000000..8b87e7680 --- /dev/null +++ b/tests/testdata/coverage/no_transpiled_lines/index.ts @@ -0,0 +1,3 @@ +export { assertStrictEquals } from "../../../../test_util/std/assert/mod.ts"; + +export * from "./interface.ts"; diff --git a/cli/tests/testdata/coverage/no_transpiled_lines/interface.ts b/tests/testdata/coverage/no_transpiled_lines/interface.ts index 6e58a7b2f..6e58a7b2f 100644 --- a/cli/tests/testdata/coverage/no_transpiled_lines/interface.ts +++ b/tests/testdata/coverage/no_transpiled_lines/interface.ts diff --git a/cli/tests/testdata/coverage/no_transpiled_lines/repro_test.ts b/tests/testdata/coverage/no_transpiled_lines/repro_test.ts index ca4a0d17f..ca4a0d17f 100644 --- a/cli/tests/testdata/coverage/no_transpiled_lines/repro_test.ts +++ b/tests/testdata/coverage/no_transpiled_lines/repro_test.ts diff --git a/cli/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts b/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts index 854c1b464..854c1b464 100644 --- a/cli/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts +++ b/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts diff --git a/cli/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts.out b/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts.out index 28d1cb921..28d1cb921 100644 --- a/cli/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts.out +++ b/tests/testdata/doc/060_deno_doc_displays_all_overloads_in_details_view.ts.out diff --git a/cli/tests/testdata/doc/deno_doc.ts b/tests/testdata/doc/deno_doc.ts index fb3c50957..fb3c50957 100644 --- a/cli/tests/testdata/doc/deno_doc.ts +++ b/tests/testdata/doc/deno_doc.ts diff --git a/cli/tests/testdata/doc/deno_doc2.ts b/tests/testdata/doc/deno_doc2.ts index ee6fc22dc..ee6fc22dc 100644 --- a/cli/tests/testdata/doc/deno_doc2.ts +++ b/tests/testdata/doc/deno_doc2.ts diff --git a/cli/tests/testdata/doc/deno_doc_builtin.out b/tests/testdata/doc/deno_doc_builtin.out index b4a90d6bc..b4a90d6bc 100644 --- a/cli/tests/testdata/doc/deno_doc_builtin.out +++ b/tests/testdata/doc/deno_doc_builtin.out diff --git a/cli/tests/testdata/doc/import_map.json b/tests/testdata/doc/import_map.json index 244a30296..244a30296 100644 --- a/cli/tests/testdata/doc/import_map.json +++ b/tests/testdata/doc/import_map.json diff --git a/cli/tests/testdata/doc/invalid_url.out b/tests/testdata/doc/invalid_url.out index 038c53177..038c53177 100644 --- a/cli/tests/testdata/doc/invalid_url.out +++ b/tests/testdata/doc/invalid_url.out diff --git a/cli/tests/testdata/doc/lint_success.out b/tests/testdata/doc/lint_success.out index c05ac45a1..c05ac45a1 100644 --- a/cli/tests/testdata/doc/lint_success.out +++ b/tests/testdata/doc/lint_success.out diff --git a/cli/tests/testdata/doc/lint_success.ts b/tests/testdata/doc/lint_success.ts index 42c44b2d7..42c44b2d7 100644 --- a/cli/tests/testdata/doc/lint_success.ts +++ b/tests/testdata/doc/lint_success.ts diff --git a/cli/tests/testdata/doc/lint_success_html.out b/tests/testdata/doc/lint_success_html.out index 9503a335f..9503a335f 100644 --- a/cli/tests/testdata/doc/lint_success_html.out +++ b/tests/testdata/doc/lint_success_html.out diff --git a/cli/tests/testdata/doc/lint_success_json.out b/tests/testdata/doc/lint_success_json.out index 050b2540c..050b2540c 100644 --- a/cli/tests/testdata/doc/lint_success_json.out +++ b/tests/testdata/doc/lint_success_json.out diff --git a/cli/tests/testdata/doc/module/fun.js b/tests/testdata/doc/module/fun.js index 28901d945..28901d945 100644 --- a/cli/tests/testdata/doc/module/fun.js +++ b/tests/testdata/doc/module/fun.js diff --git a/cli/tests/testdata/doc/referenced_private_types.out b/tests/testdata/doc/referenced_private_types.out index 3c91dbe15..3c91dbe15 100644 --- a/cli/tests/testdata/doc/referenced_private_types.out +++ b/tests/testdata/doc/referenced_private_types.out diff --git a/cli/tests/testdata/doc/referenced_private_types.ts b/tests/testdata/doc/referenced_private_types.ts index 9570d4625..9570d4625 100644 --- a/cli/tests/testdata/doc/referenced_private_types.ts +++ b/tests/testdata/doc/referenced_private_types.ts diff --git a/cli/tests/testdata/doc/referenced_private_types_fixed.out b/tests/testdata/doc/referenced_private_types_fixed.out index c05ac45a1..c05ac45a1 100644 --- a/cli/tests/testdata/doc/referenced_private_types_fixed.out +++ b/tests/testdata/doc/referenced_private_types_fixed.out diff --git a/cli/tests/testdata/doc/referenced_private_types_fixed.ts b/tests/testdata/doc/referenced_private_types_fixed.ts index cd99bc76e..cd99bc76e 100644 --- a/cli/tests/testdata/doc/referenced_private_types_fixed.ts +++ b/tests/testdata/doc/referenced_private_types_fixed.ts diff --git a/cli/tests/testdata/doc/referenced_private_types_lint.out b/tests/testdata/doc/referenced_private_types_lint.out index 328435cd7..328435cd7 100644 --- a/cli/tests/testdata/doc/referenced_private_types_lint.out +++ b/tests/testdata/doc/referenced_private_types_lint.out diff --git a/cli/tests/testdata/doc/types_header.out b/tests/testdata/doc/types_header.out index a97b35dd7..a97b35dd7 100644 --- a/cli/tests/testdata/doc/types_header.out +++ b/tests/testdata/doc/types_header.out diff --git a/cli/tests/testdata/doc/types_header.ts b/tests/testdata/doc/types_header.ts index b64c8d000..b64c8d000 100644 --- a/cli/tests/testdata/doc/types_header.ts +++ b/tests/testdata/doc/types_header.ts diff --git a/cli/tests/testdata/doc/types_hint.out b/tests/testdata/doc/types_hint.out index bfd5191a1..bfd5191a1 100644 --- a/cli/tests/testdata/doc/types_hint.out +++ b/tests/testdata/doc/types_hint.out diff --git a/cli/tests/testdata/doc/types_hint.ts b/tests/testdata/doc/types_hint.ts index bacea46db..bacea46db 100644 --- a/cli/tests/testdata/doc/types_hint.ts +++ b/tests/testdata/doc/types_hint.ts diff --git a/cli/tests/testdata/doc/types_ref.js b/tests/testdata/doc/types_ref.js index 03d8b5570..03d8b5570 100644 --- a/cli/tests/testdata/doc/types_ref.js +++ b/tests/testdata/doc/types_ref.js diff --git a/cli/tests/testdata/doc/types_ref.out b/tests/testdata/doc/types_ref.out index bfd5191a1..bfd5191a1 100644 --- a/cli/tests/testdata/doc/types_ref.out +++ b/tests/testdata/doc/types_ref.out diff --git a/cli/tests/testdata/doc/use_import_map.js b/tests/testdata/doc/use_import_map.js index 672a7a7bd..672a7a7bd 100644 --- a/cli/tests/testdata/doc/use_import_map.js +++ b/tests/testdata/doc/use_import_map.js diff --git a/cli/tests/testdata/doc/use_import_map.out b/tests/testdata/doc/use_import_map.out index 9509d5bfe..9509d5bfe 100644 --- a/cli/tests/testdata/doc/use_import_map.out +++ b/tests/testdata/doc/use_import_map.out diff --git a/cli/tests/testdata/dynamic_import/b.js b/tests/testdata/dynamic_import/b.js index 6ea50d360..6ea50d360 100644 --- a/cli/tests/testdata/dynamic_import/b.js +++ b/tests/testdata/dynamic_import/b.js diff --git a/cli/tests/testdata/dynamic_import/c.js b/tests/testdata/dynamic_import/c.js index 20546455e..20546455e 100644 --- a/cli/tests/testdata/dynamic_import/c.js +++ b/tests/testdata/dynamic_import/c.js diff --git a/cli/tests/testdata/dynamic_import/empty_1.ts b/tests/testdata/dynamic_import/empty_1.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/dynamic_import/empty_1.ts +++ b/tests/testdata/dynamic_import/empty_1.ts diff --git a/cli/tests/testdata/dynamic_import/empty_2.ts b/tests/testdata/dynamic_import/empty_2.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/dynamic_import/empty_2.ts +++ b/tests/testdata/dynamic_import/empty_2.ts diff --git a/cli/tests/testdata/dynamic_import/permissions_blob_local.ts b/tests/testdata/dynamic_import/permissions_blob_local.ts index 9ef4158ce..9ef4158ce 100644 --- a/cli/tests/testdata/dynamic_import/permissions_blob_local.ts +++ b/tests/testdata/dynamic_import/permissions_blob_local.ts diff --git a/cli/tests/testdata/dynamic_import/permissions_blob_local.ts.out b/tests/testdata/dynamic_import/permissions_blob_local.ts.out index b7b246ba2..b7b246ba2 100644 --- a/cli/tests/testdata/dynamic_import/permissions_blob_local.ts.out +++ b/tests/testdata/dynamic_import/permissions_blob_local.ts.out diff --git a/cli/tests/testdata/dynamic_import/permissions_blob_remote.ts b/tests/testdata/dynamic_import/permissions_blob_remote.ts index 1e2c8c21a..1e2c8c21a 100644 --- a/cli/tests/testdata/dynamic_import/permissions_blob_remote.ts +++ b/tests/testdata/dynamic_import/permissions_blob_remote.ts diff --git a/cli/tests/testdata/dynamic_import/permissions_blob_remote.ts.out b/tests/testdata/dynamic_import/permissions_blob_remote.ts.out index a00c02d72..a00c02d72 100644 --- a/cli/tests/testdata/dynamic_import/permissions_blob_remote.ts.out +++ b/tests/testdata/dynamic_import/permissions_blob_remote.ts.out diff --git a/cli/tests/testdata/dynamic_import/permissions_data_local.ts b/tests/testdata/dynamic_import/permissions_data_local.ts index be4fc1c34..be4fc1c34 100644 --- a/cli/tests/testdata/dynamic_import/permissions_data_local.ts +++ b/tests/testdata/dynamic_import/permissions_data_local.ts diff --git a/cli/tests/testdata/dynamic_import/permissions_data_local.ts.out b/tests/testdata/dynamic_import/permissions_data_local.ts.out index 98c8a7310..98c8a7310 100644 --- a/cli/tests/testdata/dynamic_import/permissions_data_local.ts.out +++ b/tests/testdata/dynamic_import/permissions_data_local.ts.out diff --git a/cli/tests/testdata/dynamic_import/permissions_data_remote.ts b/tests/testdata/dynamic_import/permissions_data_remote.ts index b0a9540c3..b0a9540c3 100644 --- a/cli/tests/testdata/dynamic_import/permissions_data_remote.ts +++ b/tests/testdata/dynamic_import/permissions_data_remote.ts diff --git a/cli/tests/testdata/dynamic_import/permissions_data_remote.ts.out b/tests/testdata/dynamic_import/permissions_data_remote.ts.out index cb2a7ccf7..cb2a7ccf7 100644 --- a/cli/tests/testdata/dynamic_import/permissions_data_remote.ts.out +++ b/tests/testdata/dynamic_import/permissions_data_remote.ts.out diff --git a/cli/tests/testdata/dynamic_import/permissions_remote_remote.ts b/tests/testdata/dynamic_import/permissions_remote_remote.ts index 65a254191..65a254191 100644 --- a/cli/tests/testdata/dynamic_import/permissions_remote_remote.ts +++ b/tests/testdata/dynamic_import/permissions_remote_remote.ts diff --git a/cli/tests/testdata/dynamic_import/permissions_remote_remote.ts.out b/tests/testdata/dynamic_import/permissions_remote_remote.ts.out index bd88dd4d9..bd88dd4d9 100644 --- a/cli/tests/testdata/dynamic_import/permissions_remote_remote.ts.out +++ b/tests/testdata/dynamic_import/permissions_remote_remote.ts.out diff --git a/cli/tests/testdata/dynamic_import/static_analysis_no_permissions.ts b/tests/testdata/dynamic_import/static_analysis_no_permissions.ts index de75ba87b..de75ba87b 100644 --- a/cli/tests/testdata/dynamic_import/static_analysis_no_permissions.ts +++ b/tests/testdata/dynamic_import/static_analysis_no_permissions.ts diff --git a/cli/tests/testdata/dynamic_import/static_analysis_no_permissions.ts.out b/tests/testdata/dynamic_import/static_analysis_no_permissions.ts.out index ba9249ab0..ba9249ab0 100644 --- a/cli/tests/testdata/dynamic_import/static_analysis_no_permissions.ts.out +++ b/tests/testdata/dynamic_import/static_analysis_no_permissions.ts.out diff --git a/cli/tests/testdata/dynamic_import/static_remote.ts b/tests/testdata/dynamic_import/static_remote.ts index 2d6e820fd..2d6e820fd 100644 --- a/cli/tests/testdata/dynamic_import/static_remote.ts +++ b/tests/testdata/dynamic_import/static_remote.ts diff --git a/cli/tests/testdata/echo.ts b/tests/testdata/echo.ts index 84a645433..84a645433 100644 --- a/cli/tests/testdata/echo.ts +++ b/tests/testdata/echo.ts diff --git a/tests/testdata/echo_server.ts b/tests/testdata/echo_server.ts new file mode 100644 index 000000000..e7622c7aa --- /dev/null +++ b/tests/testdata/echo_server.ts @@ -0,0 +1,12 @@ +import { copy } from "../../test_util/std/streams/copy.ts"; +const addr = Deno.args[0] || "0.0.0.0:4544"; +const [hostname, port] = addr.split(":"); +const listener = Deno.listen({ hostname, port: Number(port) }); +console.log("listening on", addr); +listener.accept().then( + async (conn) => { + console.log("received bytes:", await copy(conn, conn)); + conn.close(); + listener.close(); + }, +); diff --git a/cli/tests/testdata/encoding/utf-16be.ts b/tests/testdata/encoding/utf-16be.ts Binary files differindex 3d0144d7c..3d0144d7c 100644 --- a/cli/tests/testdata/encoding/utf-16be.ts +++ b/tests/testdata/encoding/utf-16be.ts diff --git a/cli/tests/testdata/encoding/utf-16le.ts b/tests/testdata/encoding/utf-16le.ts Binary files differindex 6f0e415f2..6f0e415f2 100644 --- a/cli/tests/testdata/encoding/utf-16le.ts +++ b/tests/testdata/encoding/utf-16le.ts diff --git a/cli/tests/testdata/encoding/utf-8.ts b/tests/testdata/encoding/utf-8.ts index bf889aeb7..bf889aeb7 100644 --- a/cli/tests/testdata/encoding/utf-8.ts +++ b/tests/testdata/encoding/utf-8.ts diff --git a/cli/tests/testdata/encoding/windows-1255 b/tests/testdata/encoding/windows-1255 index ec5cad7fd..ec5cad7fd 100644 --- a/cli/tests/testdata/encoding/windows-1255 +++ b/tests/testdata/encoding/windows-1255 diff --git a/cli/tests/testdata/env b/tests/testdata/env index c41732d30..c41732d30 100644 --- a/cli/tests/testdata/env +++ b/tests/testdata/env diff --git a/cli/tests/testdata/error_cause_recursive_aggregate.ts b/tests/testdata/error_cause_recursive_aggregate.ts index 4bb2ae064..4bb2ae064 100644 --- a/cli/tests/testdata/error_cause_recursive_aggregate.ts +++ b/tests/testdata/error_cause_recursive_aggregate.ts diff --git a/cli/tests/testdata/error_cause_recursive_aggregate.ts.out b/tests/testdata/error_cause_recursive_aggregate.ts.out index 4ae20055a..4ae20055a 100644 --- a/cli/tests/testdata/error_cause_recursive_aggregate.ts.out +++ b/tests/testdata/error_cause_recursive_aggregate.ts.out diff --git a/cli/tests/testdata/error_cause_recursive_tail.ts b/tests/testdata/error_cause_recursive_tail.ts index 51e7fa6d9..51e7fa6d9 100644 --- a/cli/tests/testdata/error_cause_recursive_tail.ts +++ b/tests/testdata/error_cause_recursive_tail.ts diff --git a/cli/tests/testdata/error_cause_recursive_tail.ts.out b/tests/testdata/error_cause_recursive_tail.ts.out index 04b15e91a..04b15e91a 100644 --- a/cli/tests/testdata/error_cause_recursive_tail.ts.out +++ b/tests/testdata/error_cause_recursive_tail.ts.out diff --git a/cli/tests/testdata/eval/check_local_by_default.out b/tests/testdata/eval/check_local_by_default.out index 52d98849f..52d98849f 100644 --- a/cli/tests/testdata/eval/check_local_by_default.out +++ b/tests/testdata/eval/check_local_by_default.out diff --git a/cli/tests/testdata/eval/check_local_by_default2.out b/tests/testdata/eval/check_local_by_default2.out index 26a1fe6f8..26a1fe6f8 100644 --- a/cli/tests/testdata/eval/check_local_by_default2.out +++ b/tests/testdata/eval/check_local_by_default2.out diff --git a/cli/tests/testdata/eval/check_local_by_default2.ts b/tests/testdata/eval/check_local_by_default2.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/eval/check_local_by_default2.ts +++ b/tests/testdata/eval/check_local_by_default2.ts diff --git a/cli/tests/testdata/eval/dyn_import_eval.out b/tests/testdata/eval/dyn_import_eval.out index 89e16b478..89e16b478 100644 --- a/cli/tests/testdata/eval/dyn_import_eval.out +++ b/tests/testdata/eval/dyn_import_eval.out diff --git a/cli/tests/testdata/eval/env_file_missing.out b/tests/testdata/eval/env_file_missing.out index 221acab93..221acab93 100644 --- a/cli/tests/testdata/eval/env_file_missing.out +++ b/tests/testdata/eval/env_file_missing.out diff --git a/cli/tests/testdata/file_extensions/js_without_extension b/tests/testdata/file_extensions/js_without_extension index 4774be326..4774be326 100644 --- a/cli/tests/testdata/file_extensions/js_without_extension +++ b/tests/testdata/file_extensions/js_without_extension diff --git a/cli/tests/testdata/file_extensions/js_without_extension.out b/tests/testdata/file_extensions/js_without_extension.out index 1236c1e53..1236c1e53 100644 --- a/cli/tests/testdata/file_extensions/js_without_extension.out +++ b/tests/testdata/file_extensions/js_without_extension.out diff --git a/cli/tests/testdata/file_extensions/ts_with_extension.out b/tests/testdata/file_extensions/ts_with_extension.out index 181959ee2..181959ee2 100644 --- a/cli/tests/testdata/file_extensions/ts_with_extension.out +++ b/tests/testdata/file_extensions/ts_with_extension.out diff --git a/cli/tests/testdata/file_extensions/ts_with_extension.ts b/tests/testdata/file_extensions/ts_with_extension.ts index 3c49f7484..3c49f7484 100644 --- a/cli/tests/testdata/file_extensions/ts_with_extension.ts +++ b/tests/testdata/file_extensions/ts_with_extension.ts diff --git a/cli/tests/testdata/file_extensions/ts_with_js_extension.js b/tests/testdata/file_extensions/ts_with_js_extension.js index 3c49f7484..3c49f7484 100644 --- a/cli/tests/testdata/file_extensions/ts_with_js_extension.js +++ b/tests/testdata/file_extensions/ts_with_js_extension.js diff --git a/cli/tests/testdata/file_extensions/ts_with_js_extension.out b/tests/testdata/file_extensions/ts_with_js_extension.out index 1c3739bb9..1c3739bb9 100644 --- a/cli/tests/testdata/file_extensions/ts_with_js_extension.out +++ b/tests/testdata/file_extensions/ts_with_js_extension.out diff --git a/cli/tests/testdata/file_extensions/ts_without_extension b/tests/testdata/file_extensions/ts_without_extension index f10891d7a..f10891d7a 100644 --- a/cli/tests/testdata/file_extensions/ts_without_extension +++ b/tests/testdata/file_extensions/ts_without_extension diff --git a/cli/tests/testdata/file_extensions/ts_without_extension.out b/tests/testdata/file_extensions/ts_without_extension.out index e1f019f9e..e1f019f9e 100644 --- a/cli/tests/testdata/file_extensions/ts_without_extension.out +++ b/tests/testdata/file_extensions/ts_without_extension.out diff --git a/cli/tests/testdata/fmt/badly_formatted.ipynb b/tests/testdata/fmt/badly_formatted.ipynb index c8600564f..c8600564f 100644 --- a/cli/tests/testdata/fmt/badly_formatted.ipynb +++ b/tests/testdata/fmt/badly_formatted.ipynb diff --git a/cli/tests/testdata/fmt/badly_formatted.json b/tests/testdata/fmt/badly_formatted.json index f2bacf73d..f2bacf73d 100644 --- a/cli/tests/testdata/fmt/badly_formatted.json +++ b/tests/testdata/fmt/badly_formatted.json diff --git a/cli/tests/testdata/fmt/badly_formatted.md b/tests/testdata/fmt/badly_formatted.md index 26afe483b..26afe483b 100644 --- a/cli/tests/testdata/fmt/badly_formatted.md +++ b/tests/testdata/fmt/badly_formatted.md diff --git a/cli/tests/testdata/fmt/badly_formatted.mjs b/tests/testdata/fmt/badly_formatted.mjs index bc515a330..bc515a330 100644 --- a/cli/tests/testdata/fmt/badly_formatted.mjs +++ b/tests/testdata/fmt/badly_formatted.mjs diff --git a/cli/tests/testdata/fmt/badly_formatted_fixed.ipynb b/tests/testdata/fmt/badly_formatted_fixed.ipynb index a26a95e24..a26a95e24 100644 --- a/cli/tests/testdata/fmt/badly_formatted_fixed.ipynb +++ b/tests/testdata/fmt/badly_formatted_fixed.ipynb diff --git a/cli/tests/testdata/fmt/badly_formatted_fixed.js b/tests/testdata/fmt/badly_formatted_fixed.js index e9062ba85..e9062ba85 100644 --- a/cli/tests/testdata/fmt/badly_formatted_fixed.js +++ b/tests/testdata/fmt/badly_formatted_fixed.js diff --git a/cli/tests/testdata/fmt/badly_formatted_fixed.json b/tests/testdata/fmt/badly_formatted_fixed.json index 0d697a2c6..0d697a2c6 100644 --- a/cli/tests/testdata/fmt/badly_formatted_fixed.json +++ b/tests/testdata/fmt/badly_formatted_fixed.json diff --git a/cli/tests/testdata/fmt/badly_formatted_fixed.md b/tests/testdata/fmt/badly_formatted_fixed.md index 8ba74cac3..8ba74cac3 100644 --- a/cli/tests/testdata/fmt/badly_formatted_fixed.md +++ b/tests/testdata/fmt/badly_formatted_fixed.md diff --git a/cli/tests/testdata/fmt/deno.glob.json b/tests/testdata/fmt/deno.glob.json index ff74e9d2b..ff74e9d2b 100644 --- a/cli/tests/testdata/fmt/deno.glob.json +++ b/tests/testdata/fmt/deno.glob.json diff --git a/cli/tests/testdata/fmt/deno.malformed.jsonc b/tests/testdata/fmt/deno.malformed.jsonc index e326edb1f..e326edb1f 100644 --- a/cli/tests/testdata/fmt/deno.malformed.jsonc +++ b/tests/testdata/fmt/deno.malformed.jsonc diff --git a/cli/tests/testdata/fmt/deno.malformed2.jsonc b/tests/testdata/fmt/deno.malformed2.jsonc index e326edb1f..e326edb1f 100644 --- a/cli/tests/testdata/fmt/deno.malformed2.jsonc +++ b/tests/testdata/fmt/deno.malformed2.jsonc diff --git a/cli/tests/testdata/fmt/expected_fmt_check_formatted_files.out b/tests/testdata/fmt/expected_fmt_check_formatted_files.out index 5a4833dd4..5a4833dd4 100644 --- a/cli/tests/testdata/fmt/expected_fmt_check_formatted_files.out +++ b/tests/testdata/fmt/expected_fmt_check_formatted_files.out diff --git a/cli/tests/testdata/fmt/expected_fmt_check_ignore.out b/tests/testdata/fmt/expected_fmt_check_ignore.out index 7c1e471b9..7c1e471b9 100644 --- a/cli/tests/testdata/fmt/expected_fmt_check_ignore.out +++ b/tests/testdata/fmt/expected_fmt_check_ignore.out diff --git a/cli/tests/testdata/fmt/expected_fmt_check_verbose_formatted_files.out b/tests/testdata/fmt/expected_fmt_check_verbose_formatted_files.out index 158c556c2..158c556c2 100644 --- a/cli/tests/testdata/fmt/expected_fmt_check_verbose_formatted_files.out +++ b/tests/testdata/fmt/expected_fmt_check_verbose_formatted_files.out diff --git a/cli/tests/testdata/fmt/fmt_check_parse_error.out b/tests/testdata/fmt/fmt_check_parse_error.out index 9854b6c97..9854b6c97 100644 --- a/cli/tests/testdata/fmt/fmt_check_parse_error.out +++ b/tests/testdata/fmt/fmt_check_parse_error.out diff --git a/cli/tests/testdata/fmt/fmt_with_config.out b/tests/testdata/fmt/fmt_with_config.out index 158c556c2..158c556c2 100644 --- a/cli/tests/testdata/fmt/fmt_with_config.out +++ b/tests/testdata/fmt/fmt_with_config.out diff --git a/cli/tests/testdata/fmt/fmt_with_config_and_flags.out b/tests/testdata/fmt/fmt_with_config_and_flags.out index c05ac45a1..c05ac45a1 100644 --- a/cli/tests/testdata/fmt/fmt_with_config_and_flags.out +++ b/tests/testdata/fmt/fmt_with_config_and_flags.out diff --git a/cli/tests/testdata/fmt/fmt_with_config_default.out b/tests/testdata/fmt/fmt_with_config_default.out index faad9352b..faad9352b 100644 --- a/cli/tests/testdata/fmt/fmt_with_config_default.out +++ b/tests/testdata/fmt/fmt_with_config_default.out diff --git a/cli/tests/testdata/fmt/fmt_with_deprecated_config.out b/tests/testdata/fmt/fmt_with_deprecated_config.out index 793fac1bc..793fac1bc 100644 --- a/cli/tests/testdata/fmt/fmt_with_deprecated_config.out +++ b/tests/testdata/fmt/fmt_with_deprecated_config.out diff --git a/cli/tests/testdata/fmt/fmt_with_malformed_config.out b/tests/testdata/fmt/fmt_with_malformed_config.out index c269053a6..c269053a6 100644 --- a/cli/tests/testdata/fmt/fmt_with_malformed_config.out +++ b/tests/testdata/fmt/fmt_with_malformed_config.out diff --git a/cli/tests/testdata/fmt/fmt_with_malformed_config2.out b/tests/testdata/fmt/fmt_with_malformed_config2.out index c269053a6..c269053a6 100644 --- a/cli/tests/testdata/fmt/fmt_with_malformed_config2.out +++ b/tests/testdata/fmt/fmt_with_malformed_config2.out diff --git a/cli/tests/testdata/fmt/glob/data/tes.ts b/tests/testdata/fmt/glob/data/tes.ts index 0127c4af3..0127c4af3 100644 --- a/cli/tests/testdata/fmt/glob/data/tes.ts +++ b/tests/testdata/fmt/glob/data/tes.ts diff --git a/cli/tests/testdata/fmt/glob/data/test1.js b/tests/testdata/fmt/glob/data/test1.js index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/data/test1.js +++ b/tests/testdata/fmt/glob/data/test1.js diff --git a/cli/tests/testdata/fmt/glob/data/test1.ts b/tests/testdata/fmt/glob/data/test1.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/data/test1.ts +++ b/tests/testdata/fmt/glob/data/test1.ts diff --git a/cli/tests/testdata/fmt/glob/data/test12.ts b/tests/testdata/fmt/glob/data/test12.ts index 0127c4af3..0127c4af3 100644 --- a/cli/tests/testdata/fmt/glob/data/test12.ts +++ b/tests/testdata/fmt/glob/data/test12.ts diff --git a/cli/tests/testdata/fmt/glob/nested/fizz/bar.ts b/tests/testdata/fmt/glob/nested/fizz/bar.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/nested/fizz/bar.ts +++ b/tests/testdata/fmt/glob/nested/fizz/bar.ts diff --git a/cli/tests/testdata/fmt/glob/nested/fizz/bazz.ts b/tests/testdata/fmt/glob/nested/fizz/bazz.ts index 0127c4af3..0127c4af3 100644 --- a/cli/tests/testdata/fmt/glob/nested/fizz/bazz.ts +++ b/tests/testdata/fmt/glob/nested/fizz/bazz.ts diff --git a/cli/tests/testdata/fmt/glob/nested/fizz/fizz.ts b/tests/testdata/fmt/glob/nested/fizz/fizz.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/nested/fizz/fizz.ts +++ b/tests/testdata/fmt/glob/nested/fizz/fizz.ts diff --git a/cli/tests/testdata/fmt/glob/nested/fizz/foo.ts b/tests/testdata/fmt/glob/nested/fizz/foo.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/nested/fizz/foo.ts +++ b/tests/testdata/fmt/glob/nested/fizz/foo.ts diff --git a/cli/tests/testdata/fmt/glob/nested/foo/bar.ts b/tests/testdata/fmt/glob/nested/foo/bar.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/nested/foo/bar.ts +++ b/tests/testdata/fmt/glob/nested/foo/bar.ts diff --git a/cli/tests/testdata/fmt/glob/nested/foo/bazz.ts b/tests/testdata/fmt/glob/nested/foo/bazz.ts index 0127c4af3..0127c4af3 100644 --- a/cli/tests/testdata/fmt/glob/nested/foo/bazz.ts +++ b/tests/testdata/fmt/glob/nested/foo/bazz.ts diff --git a/cli/tests/testdata/fmt/glob/nested/foo/fizz.ts b/tests/testdata/fmt/glob/nested/foo/fizz.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/nested/foo/fizz.ts +++ b/tests/testdata/fmt/glob/nested/foo/fizz.ts diff --git a/cli/tests/testdata/fmt/glob/nested/foo/foo.ts b/tests/testdata/fmt/glob/nested/foo/foo.ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/nested/foo/foo.ts +++ b/tests/testdata/fmt/glob/nested/foo/foo.ts diff --git a/cli/tests/testdata/fmt/glob/pages/[id].ts b/tests/testdata/fmt/glob/pages/[id].ts index e939e4595..e939e4595 100644 --- a/cli/tests/testdata/fmt/glob/pages/[id].ts +++ b/tests/testdata/fmt/glob/pages/[id].ts diff --git a/cli/tests/testdata/fmt/invalid_data.json b/tests/testdata/fmt/invalid_data.json Binary files differindex fb9bec94f..fb9bec94f 100644 --- a/cli/tests/testdata/fmt/invalid_data.json +++ b/tests/testdata/fmt/invalid_data.json diff --git a/cli/tests/testdata/fmt/invalid_data.out b/tests/testdata/fmt/invalid_data.out index dee00fcc5..dee00fcc5 100644 --- a/cli/tests/testdata/fmt/invalid_data.out +++ b/tests/testdata/fmt/invalid_data.out diff --git a/cli/tests/testdata/fmt/parse_error/parse_error.ts b/tests/testdata/fmt/parse_error/parse_error.ts index 136d16508..136d16508 100644 --- a/cli/tests/testdata/fmt/parse_error/parse_error.ts +++ b/tests/testdata/fmt/parse_error/parse_error.ts diff --git a/cli/tests/testdata/fmt/regular/formatted1.js b/tests/testdata/fmt/regular/formatted1.js index 587aa5b96..587aa5b96 100644 --- a/cli/tests/testdata/fmt/regular/formatted1.js +++ b/tests/testdata/fmt/regular/formatted1.js diff --git a/cli/tests/testdata/fmt/regular/formatted2.ts b/tests/testdata/fmt/regular/formatted2.ts index 4a8036806..4a8036806 100644 --- a/cli/tests/testdata/fmt/regular/formatted2.ts +++ b/tests/testdata/fmt/regular/formatted2.ts diff --git a/cli/tests/testdata/fmt/regular/formatted3.markdown b/tests/testdata/fmt/regular/formatted3.markdown index e6e616584..e6e616584 100644 --- a/cli/tests/testdata/fmt/regular/formatted3.markdown +++ b/tests/testdata/fmt/regular/formatted3.markdown diff --git a/cli/tests/testdata/fmt/regular/formatted4.jsonc b/tests/testdata/fmt/regular/formatted4.jsonc index f0f72a6ed..f0f72a6ed 100644 --- a/cli/tests/testdata/fmt/regular/formatted4.jsonc +++ b/tests/testdata/fmt/regular/formatted4.jsonc diff --git a/cli/tests/testdata/fmt/with_config/deno.deprecated.jsonc b/tests/testdata/fmt/with_config/deno.deprecated.jsonc index e053233fd..e053233fd 100644 --- a/cli/tests/testdata/fmt/with_config/deno.deprecated.jsonc +++ b/tests/testdata/fmt/with_config/deno.deprecated.jsonc diff --git a/cli/tests/testdata/fmt/with_config/deno.jsonc b/tests/testdata/fmt/with_config/deno.jsonc index ffd265dcd..ffd265dcd 100644 --- a/cli/tests/testdata/fmt/with_config/deno.jsonc +++ b/tests/testdata/fmt/with_config/deno.jsonc diff --git a/cli/tests/testdata/fmt/with_config/subdir/a.ts b/tests/testdata/fmt/with_config/subdir/a.ts index 5474b3aa3..5474b3aa3 100644 --- a/cli/tests/testdata/fmt/with_config/subdir/a.ts +++ b/tests/testdata/fmt/with_config/subdir/a.ts diff --git a/cli/tests/testdata/fmt/with_config/subdir/b.ts b/tests/testdata/fmt/with_config/subdir/b.ts index d7eb08b09..d7eb08b09 100644 --- a/cli/tests/testdata/fmt/with_config/subdir/b.ts +++ b/tests/testdata/fmt/with_config/subdir/b.ts diff --git a/cli/tests/testdata/fmt/with_config/subdir/c.md b/tests/testdata/fmt/with_config/subdir/c.md index 012f7e3d4..012f7e3d4 100644 --- a/cli/tests/testdata/fmt/with_config/subdir/c.md +++ b/tests/testdata/fmt/with_config/subdir/c.md diff --git a/cli/tests/testdata/import_attributes/data.json b/tests/testdata/import_attributes/data.json index 37b3ee1e0..37b3ee1e0 100644 --- a/cli/tests/testdata/import_attributes/data.json +++ b/tests/testdata/import_attributes/data.json diff --git a/cli/tests/testdata/import_attributes/dynamic_error.out b/tests/testdata/import_attributes/dynamic_error.out index 24f29de72..24f29de72 100644 --- a/cli/tests/testdata/import_attributes/dynamic_error.out +++ b/tests/testdata/import_attributes/dynamic_error.out diff --git a/cli/tests/testdata/import_attributes/dynamic_error.ts b/tests/testdata/import_attributes/dynamic_error.ts index 2d9c6757f..2d9c6757f 100644 --- a/cli/tests/testdata/import_attributes/dynamic_error.ts +++ b/tests/testdata/import_attributes/dynamic_error.ts diff --git a/cli/tests/testdata/import_attributes/dynamic_import.out b/tests/testdata/import_attributes/dynamic_import.out index 01bc76c8a..01bc76c8a 100644 --- a/cli/tests/testdata/import_attributes/dynamic_import.out +++ b/tests/testdata/import_attributes/dynamic_import.out diff --git a/cli/tests/testdata/import_attributes/dynamic_import.ts b/tests/testdata/import_attributes/dynamic_import.ts index 73f348697..73f348697 100644 --- a/cli/tests/testdata/import_attributes/dynamic_import.ts +++ b/tests/testdata/import_attributes/dynamic_import.ts diff --git a/cli/tests/testdata/import_attributes/json_with_shebang.json b/tests/testdata/import_attributes/json_with_shebang.json index b695e4457..b695e4457 100644 --- a/cli/tests/testdata/import_attributes/json_with_shebang.json +++ b/tests/testdata/import_attributes/json_with_shebang.json diff --git a/cli/tests/testdata/import_attributes/json_with_shebang.ts b/tests/testdata/import_attributes/json_with_shebang.ts index 523bf8772..523bf8772 100644 --- a/cli/tests/testdata/import_attributes/json_with_shebang.ts +++ b/tests/testdata/import_attributes/json_with_shebang.ts diff --git a/cli/tests/testdata/import_attributes/json_with_shebang.ts.out b/tests/testdata/import_attributes/json_with_shebang.ts.out index 23eb03720..23eb03720 100644 --- a/cli/tests/testdata/import_attributes/json_with_shebang.ts.out +++ b/tests/testdata/import_attributes/json_with_shebang.ts.out diff --git a/cli/tests/testdata/import_attributes/static_error.out b/tests/testdata/import_attributes/static_error.out index 29b24b965..29b24b965 100644 --- a/cli/tests/testdata/import_attributes/static_error.out +++ b/tests/testdata/import_attributes/static_error.out diff --git a/cli/tests/testdata/import_attributes/static_error.ts b/tests/testdata/import_attributes/static_error.ts index 0bc3a93f8..0bc3a93f8 100644 --- a/cli/tests/testdata/import_attributes/static_error.ts +++ b/tests/testdata/import_attributes/static_error.ts diff --git a/cli/tests/testdata/import_attributes/static_export.out b/tests/testdata/import_attributes/static_export.out index 41af79d7c..41af79d7c 100644 --- a/cli/tests/testdata/import_attributes/static_export.out +++ b/tests/testdata/import_attributes/static_export.out diff --git a/cli/tests/testdata/import_attributes/static_export.ts b/tests/testdata/import_attributes/static_export.ts index ac3ee694f..ac3ee694f 100644 --- a/cli/tests/testdata/import_attributes/static_export.ts +++ b/tests/testdata/import_attributes/static_export.ts diff --git a/cli/tests/testdata/import_attributes/static_import.out b/tests/testdata/import_attributes/static_import.out index e57dffa99..e57dffa99 100644 --- a/cli/tests/testdata/import_attributes/static_import.out +++ b/tests/testdata/import_attributes/static_import.out diff --git a/cli/tests/testdata/import_attributes/static_import.ts b/tests/testdata/import_attributes/static_import.ts index d46d93b4a..d46d93b4a 100644 --- a/cli/tests/testdata/import_attributes/static_import.ts +++ b/tests/testdata/import_attributes/static_import.ts diff --git a/cli/tests/testdata/import_attributes/static_reexport.ts b/tests/testdata/import_attributes/static_reexport.ts index 81af428be..81af428be 100644 --- a/cli/tests/testdata/import_attributes/static_reexport.ts +++ b/tests/testdata/import_attributes/static_reexport.ts diff --git a/cli/tests/testdata/import_attributes/type_check.out b/tests/testdata/import_attributes/type_check.out index 5ecdec82d..5ecdec82d 100644 --- a/cli/tests/testdata/import_attributes/type_check.out +++ b/tests/testdata/import_attributes/type_check.out diff --git a/cli/tests/testdata/import_attributes/type_check.ts b/tests/testdata/import_attributes/type_check.ts index ddf28e67a..ddf28e67a 100644 --- a/cli/tests/testdata/import_attributes/type_check.ts +++ b/tests/testdata/import_attributes/type_check.ts diff --git a/cli/tests/testdata/import_maps/config.json b/tests/testdata/import_maps/config.json index b296a63c7..b296a63c7 100644 --- a/cli/tests/testdata/import_maps/config.json +++ b/tests/testdata/import_maps/config.json diff --git a/cli/tests/testdata/import_maps/import_map.json b/tests/testdata/import_maps/import_map.json index 40d1d4ec2..40d1d4ec2 100644 --- a/cli/tests/testdata/import_maps/import_map.json +++ b/tests/testdata/import_maps/import_map.json diff --git a/cli/tests/testdata/import_maps/import_map_invalid.json b/tests/testdata/import_maps/import_map_invalid.json index a09d280c5..a09d280c5 100644 --- a/cli/tests/testdata/import_maps/import_map_invalid.json +++ b/tests/testdata/import_maps/import_map_invalid.json diff --git a/cli/tests/testdata/import_maps/import_map_remote.json b/tests/testdata/import_maps/import_map_remote.json index 51f90f69c..51f90f69c 100644 --- a/cli/tests/testdata/import_maps/import_map_remote.json +++ b/tests/testdata/import_maps/import_map_remote.json diff --git a/cli/tests/testdata/import_maps/lodash/lodash.ts b/tests/testdata/import_maps/lodash/lodash.ts index 2ec04ed3c..2ec04ed3c 100644 --- a/cli/tests/testdata/import_maps/lodash/lodash.ts +++ b/tests/testdata/import_maps/lodash/lodash.ts diff --git a/cli/tests/testdata/import_maps/lodash/other_file.ts b/tests/testdata/import_maps/lodash/other_file.ts index 714adae3f..714adae3f 100644 --- a/cli/tests/testdata/import_maps/lodash/other_file.ts +++ b/tests/testdata/import_maps/lodash/other_file.ts diff --git a/cli/tests/testdata/import_maps/moment/moment.ts b/tests/testdata/import_maps/moment/moment.ts index 2b54a431e..2b54a431e 100644 --- a/cli/tests/testdata/import_maps/moment/moment.ts +++ b/tests/testdata/import_maps/moment/moment.ts diff --git a/cli/tests/testdata/import_maps/moment/other_file.ts b/tests/testdata/import_maps/moment/other_file.ts index 24f3a0226..24f3a0226 100644 --- a/cli/tests/testdata/import_maps/moment/other_file.ts +++ b/tests/testdata/import_maps/moment/other_file.ts diff --git a/cli/tests/testdata/import_maps/print_hello.ts b/tests/testdata/import_maps/print_hello.ts index 794257390..794257390 100644 --- a/cli/tests/testdata/import_maps/print_hello.ts +++ b/tests/testdata/import_maps/print_hello.ts diff --git a/cli/tests/testdata/import_maps/scope/scoped.ts b/tests/testdata/import_maps/scope/scoped.ts index 9a0b5d8e3..9a0b5d8e3 100644 --- a/cli/tests/testdata/import_maps/scope/scoped.ts +++ b/tests/testdata/import_maps/scope/scoped.ts diff --git a/cli/tests/testdata/import_maps/scoped_moment.ts b/tests/testdata/import_maps/scoped_moment.ts index 9f67f88d4..9f67f88d4 100644 --- a/cli/tests/testdata/import_maps/scoped_moment.ts +++ b/tests/testdata/import_maps/scoped_moment.ts diff --git a/cli/tests/testdata/import_maps/test.ts b/tests/testdata/import_maps/test.ts index 9b09e9953..9b09e9953 100644 --- a/cli/tests/testdata/import_maps/test.ts +++ b/tests/testdata/import_maps/test.ts diff --git a/cli/tests/testdata/import_maps/test_remote.ts b/tests/testdata/import_maps/test_remote.ts index 206bdbd5f..206bdbd5f 100644 --- a/cli/tests/testdata/import_maps/test_remote.ts +++ b/tests/testdata/import_maps/test_remote.ts diff --git a/cli/tests/testdata/import_maps/vue.ts b/tests/testdata/import_maps/vue.ts index 76dbe1917..76dbe1917 100644 --- a/cli/tests/testdata/import_maps/vue.ts +++ b/tests/testdata/import_maps/vue.ts diff --git a/cli/tests/testdata/info/031_info_ts_error.out b/tests/testdata/info/031_info_ts_error.out index 81edd0032..81edd0032 100644 --- a/cli/tests/testdata/info/031_info_ts_error.out +++ b/tests/testdata/info/031_info_ts_error.out diff --git a/cli/tests/testdata/info/031_info_ts_error.ts b/tests/testdata/info/031_info_ts_error.ts index 9b7492dbe..9b7492dbe 100644 --- a/cli/tests/testdata/info/031_info_ts_error.ts +++ b/tests/testdata/info/031_info_ts_error.ts diff --git a/cli/tests/testdata/info/041_info_flag.out b/tests/testdata/info/041_info_flag.out index 3506a29e4..3506a29e4 100644 --- a/cli/tests/testdata/info/041_info_flag.out +++ b/tests/testdata/info/041_info_flag.out diff --git a/cli/tests/testdata/info/041_info_flag_location.out b/tests/testdata/info/041_info_flag_location.out index b9e72f659..b9e72f659 100644 --- a/cli/tests/testdata/info/041_info_flag_location.out +++ b/tests/testdata/info/041_info_flag_location.out diff --git a/cli/tests/testdata/info/049_info_flag_script_jsx.out b/tests/testdata/info/049_info_flag_script_jsx.out index f49fc2356..f49fc2356 100644 --- a/cli/tests/testdata/info/049_info_flag_script_jsx.out +++ b/tests/testdata/info/049_info_flag_script_jsx.out diff --git a/cli/tests/testdata/info/054_info_local_imports.out b/tests/testdata/info/054_info_local_imports.out index ee1773b76..ee1773b76 100644 --- a/cli/tests/testdata/info/054_info_local_imports.out +++ b/tests/testdata/info/054_info_local_imports.out diff --git a/cli/tests/testdata/info/065_import_map_info.out b/tests/testdata/info/065_import_map_info.out index 68d98f14a..68d98f14a 100644 --- a/cli/tests/testdata/info/065_import_map_info.out +++ b/tests/testdata/info/065_import_map_info.out diff --git a/cli/tests/testdata/info/076_info_json_deps_order.out b/tests/testdata/info/076_info_json_deps_order.out index a1b15e00c..a1b15e00c 100644 --- a/cli/tests/testdata/info/076_info_json_deps_order.out +++ b/tests/testdata/info/076_info_json_deps_order.out diff --git a/cli/tests/testdata/info/076_info_json_deps_order.ts b/tests/testdata/info/076_info_json_deps_order.ts index b1ae75e68..b1ae75e68 100644 --- a/cli/tests/testdata/info/076_info_json_deps_order.ts +++ b/tests/testdata/info/076_info_json_deps_order.ts diff --git a/cli/tests/testdata/info/data_null_error/data_null_error.out b/tests/testdata/info/data_null_error/data_null_error.out index 065396f18..065396f18 100644 --- a/cli/tests/testdata/info/data_null_error/data_null_error.out +++ b/tests/testdata/info/data_null_error/data_null_error.out diff --git a/cli/tests/testdata/info/data_null_error/mod.ts b/tests/testdata/info/data_null_error/mod.ts index 6e3e99bd4..6e3e99bd4 100644 --- a/cli/tests/testdata/info/data_null_error/mod.ts +++ b/tests/testdata/info/data_null_error/mod.ts diff --git a/cli/tests/testdata/info/data_null_error/types.d.ts b/tests/testdata/info/data_null_error/types.d.ts index 6ecc85676..6ecc85676 100644 --- a/cli/tests/testdata/info/data_null_error/types.d.ts +++ b/tests/testdata/info/data_null_error/types.d.ts diff --git a/cli/tests/testdata/info/error_009_missing_js_module.js b/tests/testdata/info/error_009_missing_js_module.js index e6ca88934..e6ca88934 100644 --- a/cli/tests/testdata/info/error_009_missing_js_module.js +++ b/tests/testdata/info/error_009_missing_js_module.js diff --git a/cli/tests/testdata/info/error_009_missing_js_module.js.out b/tests/testdata/info/error_009_missing_js_module.js.out index edb08da1c..edb08da1c 100644 --- a/cli/tests/testdata/info/error_009_missing_js_module.js.out +++ b/tests/testdata/info/error_009_missing_js_module.js.out diff --git a/cli/tests/testdata/info/info_json.out b/tests/testdata/info/info_json.out index 3215af742..3215af742 100644 --- a/cli/tests/testdata/info/info_json.out +++ b/tests/testdata/info/info_json.out diff --git a/cli/tests/testdata/info/info_json_location.out b/tests/testdata/info/info_json_location.out index 510fa7749..510fa7749 100644 --- a/cli/tests/testdata/info/info_json_location.out +++ b/tests/testdata/info/info_json_location.out diff --git a/cli/tests/testdata/info/info_missing_module.out b/tests/testdata/info/info_missing_module.out index c62d690c1..c62d690c1 100644 --- a/cli/tests/testdata/info/info_missing_module.out +++ b/tests/testdata/info/info_missing_module.out diff --git a/cli/tests/testdata/info/info_recursive_imports_test.out b/tests/testdata/info/info_recursive_imports_test.out index 3340f3859..3340f3859 100644 --- a/cli/tests/testdata/info/info_recursive_imports_test.out +++ b/tests/testdata/info/info_recursive_imports_test.out diff --git a/cli/tests/testdata/info/info_recursive_imports_test.ts b/tests/testdata/info/info_recursive_imports_test.ts index c9ba44755..c9ba44755 100644 --- a/cli/tests/testdata/info/info_recursive_imports_test.ts +++ b/tests/testdata/info/info_recursive_imports_test.ts diff --git a/cli/tests/testdata/info/info_type_import.out b/tests/testdata/info/info_type_import.out index 0423efe82..0423efe82 100644 --- a/cli/tests/testdata/info/info_type_import.out +++ b/tests/testdata/info/info_type_import.out diff --git a/cli/tests/testdata/info/info_type_import.ts b/tests/testdata/info/info_type_import.ts index 4db9f3387..4db9f3387 100644 --- a/cli/tests/testdata/info/info_type_import.ts +++ b/tests/testdata/info/info_type_import.ts diff --git a/cli/tests/testdata/info/json_output/main.out b/tests/testdata/info/json_output/main.out index 5a89d5cab..5a89d5cab 100644 --- a/cli/tests/testdata/info/json_output/main.out +++ b/tests/testdata/info/json_output/main.out diff --git a/cli/tests/testdata/info/json_output/main.ts b/tests/testdata/info/json_output/main.ts index 927bc55ed..927bc55ed 100644 --- a/cli/tests/testdata/info/json_output/main.ts +++ b/tests/testdata/info/json_output/main.ts diff --git a/cli/tests/testdata/info/multiple_imports.out b/tests/testdata/info/multiple_imports.out index cb13318ca..cb13318ca 100644 --- a/cli/tests/testdata/info/multiple_imports.out +++ b/tests/testdata/info/multiple_imports.out diff --git a/cli/tests/testdata/info/recursive_imports/A.ts b/tests/testdata/info/recursive_imports/A.ts index 43ecdbe5e..43ecdbe5e 100644 --- a/cli/tests/testdata/info/recursive_imports/A.ts +++ b/tests/testdata/info/recursive_imports/A.ts diff --git a/cli/tests/testdata/info/recursive_imports/B.ts b/tests/testdata/info/recursive_imports/B.ts index 9fff0fdc9..9fff0fdc9 100644 --- a/cli/tests/testdata/info/recursive_imports/B.ts +++ b/tests/testdata/info/recursive_imports/B.ts diff --git a/cli/tests/testdata/info/recursive_imports/C.ts b/tests/testdata/info/recursive_imports/C.ts index e47e77b41..e47e77b41 100644 --- a/cli/tests/testdata/info/recursive_imports/C.ts +++ b/tests/testdata/info/recursive_imports/C.ts diff --git a/cli/tests/testdata/info/recursive_imports/common.ts b/tests/testdata/info/recursive_imports/common.ts index 2b16a7bf1..2b16a7bf1 100644 --- a/cli/tests/testdata/info/recursive_imports/common.ts +++ b/tests/testdata/info/recursive_imports/common.ts diff --git a/cli/tests/testdata/info/types_header.out b/tests/testdata/info/types_header.out index 722e02f77..722e02f77 100644 --- a/cli/tests/testdata/info/types_header.out +++ b/tests/testdata/info/types_header.out diff --git a/cli/tests/testdata/info/with_config/deno-override.json b/tests/testdata/info/with_config/deno-override.json index ee44ba947..ee44ba947 100644 --- a/cli/tests/testdata/info/with_config/deno-override.json +++ b/tests/testdata/info/with_config/deno-override.json diff --git a/cli/tests/testdata/info/with_config/deno.json b/tests/testdata/info/with_config/deno.json index 0967ef424..0967ef424 100644 --- a/cli/tests/testdata/info/with_config/deno.json +++ b/tests/testdata/info/with_config/deno.json diff --git a/cli/tests/testdata/info/with_config/import_map.json b/tests/testdata/info/with_config/import_map.json index 0967ef424..0967ef424 100644 --- a/cli/tests/testdata/info/with_config/import_map.json +++ b/tests/testdata/info/with_config/import_map.json diff --git a/cli/tests/testdata/info/with_config/test.ts b/tests/testdata/info/with_config/test.ts index 85ce559e8..85ce559e8 100644 --- a/cli/tests/testdata/info/with_config/test.ts +++ b/tests/testdata/info/with_config/test.ts diff --git a/cli/tests/testdata/info/with_config/with_config.out b/tests/testdata/info/with_config/with_config.out index 95a1f30bc..95a1f30bc 100644 --- a/cli/tests/testdata/info/with_config/with_config.out +++ b/tests/testdata/info/with_config/with_config.out diff --git a/cli/tests/testdata/info/with_import_map/deno.json b/tests/testdata/info/with_import_map/deno.json index aaf7260c6..aaf7260c6 100644 --- a/cli/tests/testdata/info/with_import_map/deno.json +++ b/tests/testdata/info/with_import_map/deno.json diff --git a/cli/tests/testdata/info/with_import_map/deno.lock b/tests/testdata/info/with_import_map/deno.lock index 78080ede2..78080ede2 100644 --- a/cli/tests/testdata/info/with_import_map/deno.lock +++ b/tests/testdata/info/with_import_map/deno.lock diff --git a/cli/tests/testdata/info/with_import_map/main.tsx b/tests/testdata/info/with_import_map/main.tsx index e38f14a58..e38f14a58 100644 --- a/cli/tests/testdata/info/with_import_map/main.tsx +++ b/tests/testdata/info/with_import_map/main.tsx diff --git a/cli/tests/testdata/info/with_import_map/with_import_map.out b/tests/testdata/info/with_import_map/with_import_map.out index 29dc17737..29dc17737 100644 --- a/cli/tests/testdata/info/with_import_map/with_import_map.out +++ b/tests/testdata/info/with_import_map/with_import_map.out diff --git a/cli/tests/testdata/inspector/bar.js b/tests/testdata/inspector/bar.js index 278fc9030..278fc9030 100644 --- a/cli/tests/testdata/inspector/bar.js +++ b/tests/testdata/inspector/bar.js diff --git a/cli/tests/testdata/inspector/error_with_npm_import.js b/tests/testdata/inspector/error_with_npm_import.js index 9244f2cf2..9244f2cf2 100644 --- a/cli/tests/testdata/inspector/error_with_npm_import.js +++ b/tests/testdata/inspector/error_with_npm_import.js diff --git a/cli/tests/testdata/inspector/foo.ts b/tests/testdata/inspector/foo.ts index c0735926f..c0735926f 100644 --- a/cli/tests/testdata/inspector/foo.ts +++ b/tests/testdata/inspector/foo.ts diff --git a/cli/tests/testdata/inspector/inspect_wait.js b/tests/testdata/inspector/inspect_wait.js index e2b10199c..e2b10199c 100644 --- a/cli/tests/testdata/inspector/inspect_wait.js +++ b/tests/testdata/inspector/inspect_wait.js diff --git a/cli/tests/testdata/inspector/inspector1.js b/tests/testdata/inspector/inspector1.js index 5cb059def..5cb059def 100644 --- a/cli/tests/testdata/inspector/inspector1.js +++ b/tests/testdata/inspector/inspector1.js diff --git a/cli/tests/testdata/inspector/inspector2.js b/tests/testdata/inspector/inspector2.js index 57f80ef94..57f80ef94 100644 --- a/cli/tests/testdata/inspector/inspector2.js +++ b/tests/testdata/inspector/inspector2.js diff --git a/cli/tests/testdata/inspector/inspector3.js b/tests/testdata/inspector/inspector3.js index 8d605a286..8d605a286 100644 --- a/cli/tests/testdata/inspector/inspector3.js +++ b/tests/testdata/inspector/inspector3.js diff --git a/cli/tests/testdata/inspector/inspector4.js b/tests/testdata/inspector/inspector4.js index 1bf419650..1bf419650 100644 --- a/cli/tests/testdata/inspector/inspector4.js +++ b/tests/testdata/inspector/inspector4.js diff --git a/cli/tests/testdata/inspector/inspector_test.js b/tests/testdata/inspector/inspector_test.js index 86cd48854..86cd48854 100644 --- a/cli/tests/testdata/inspector/inspector_test.js +++ b/tests/testdata/inspector/inspector_test.js diff --git a/cli/tests/testdata/inspector/memory.js b/tests/testdata/inspector/memory.js index 082d6367c..082d6367c 100644 --- a/cli/tests/testdata/inspector/memory.js +++ b/tests/testdata/inspector/memory.js diff --git a/cli/tests/testdata/inspector/test.ts b/tests/testdata/inspector/test.ts index 2b33f22e5..2b33f22e5 100644 --- a/cli/tests/testdata/inspector/test.ts +++ b/tests/testdata/inspector/test.ts diff --git a/cli/tests/testdata/install/check_local_by_default.ts b/tests/testdata/install/check_local_by_default.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/install/check_local_by_default.ts +++ b/tests/testdata/install/check_local_by_default.ts diff --git a/cli/tests/testdata/install/check_local_by_default2.ts b/tests/testdata/install/check_local_by_default2.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/install/check_local_by_default2.ts +++ b/tests/testdata/install/check_local_by_default2.ts diff --git a/cli/tests/testdata/jsr/deps/main.out b/tests/testdata/jsr/deps/main.out index 621703c4b..621703c4b 100644 --- a/cli/tests/testdata/jsr/deps/main.out +++ b/tests/testdata/jsr/deps/main.out diff --git a/cli/tests/testdata/jsr/deps/main.ts b/tests/testdata/jsr/deps/main.ts index f48255299..f48255299 100644 --- a/cli/tests/testdata/jsr/deps/main.ts +++ b/tests/testdata/jsr/deps/main.ts diff --git a/cli/tests/testdata/jsr/deps/main_info.out b/tests/testdata/jsr/deps/main_info.out index c4d412707..c4d412707 100644 --- a/cli/tests/testdata/jsr/deps/main_info.out +++ b/tests/testdata/jsr/deps/main_info.out diff --git a/cli/tests/testdata/jsr/module_graph/main.out b/tests/testdata/jsr/module_graph/main.out index 1cd0115b9..1cd0115b9 100644 --- a/cli/tests/testdata/jsr/module_graph/main.out +++ b/tests/testdata/jsr/module_graph/main.out diff --git a/cli/tests/testdata/jsr/module_graph/main.ts b/tests/testdata/jsr/module_graph/main.ts index c92823cc2..c92823cc2 100644 --- a/cli/tests/testdata/jsr/module_graph/main.ts +++ b/tests/testdata/jsr/module_graph/main.ts diff --git a/cli/tests/testdata/jsr/module_graph/main_info.out b/tests/testdata/jsr/module_graph/main_info.out index c35cca5b4..c35cca5b4 100644 --- a/cli/tests/testdata/jsr/module_graph/main_info.out +++ b/tests/testdata/jsr/module_graph/main_info.out diff --git a/cli/tests/testdata/jsr/no_module_graph/main.out b/tests/testdata/jsr/no_module_graph/main.out index da9b67e11..da9b67e11 100644 --- a/cli/tests/testdata/jsr/no_module_graph/main.out +++ b/tests/testdata/jsr/no_module_graph/main.out diff --git a/cli/tests/testdata/jsr/no_module_graph/main.ts b/tests/testdata/jsr/no_module_graph/main.ts index 6ea030c59..6ea030c59 100644 --- a/cli/tests/testdata/jsr/no_module_graph/main.ts +++ b/tests/testdata/jsr/no_module_graph/main.ts diff --git a/cli/tests/testdata/jsr/no_module_graph/main_info.out b/tests/testdata/jsr/no_module_graph/main_info.out index 0293e4120..0293e4120 100644 --- a/cli/tests/testdata/jsr/no_module_graph/main_info.out +++ b/tests/testdata/jsr/no_module_graph/main_info.out diff --git a/cli/tests/testdata/jsr/no_module_graph/multiple.out b/tests/testdata/jsr/no_module_graph/multiple.out index 8146276d0..8146276d0 100644 --- a/cli/tests/testdata/jsr/no_module_graph/multiple.out +++ b/tests/testdata/jsr/no_module_graph/multiple.out diff --git a/cli/tests/testdata/jsr/no_module_graph/multiple.ts b/tests/testdata/jsr/no_module_graph/multiple.ts index 660ed8be6..660ed8be6 100644 --- a/cli/tests/testdata/jsr/no_module_graph/multiple.ts +++ b/tests/testdata/jsr/no_module_graph/multiple.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/add/1.0.0/mod.ts b/tests/testdata/jsr/registry/@denotest/add/1.0.0/mod.ts index 8d9b8a22a..8d9b8a22a 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/add/1.0.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/add/1.0.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/add/1.0.0_meta.json b/tests/testdata/jsr/registry/@denotest/add/1.0.0_meta.json index 6eebe2198..6eebe2198 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/add/1.0.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/add/1.0.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/add/meta.json b/tests/testdata/jsr/registry/@denotest/add/meta.json index 02601e4d0..02601e4d0 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/add/meta.json +++ b/tests/testdata/jsr/registry/@denotest/add/meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/deps/1.0.0/mod.ts b/tests/testdata/jsr/registry/@denotest/deps/1.0.0/mod.ts index 4ba0d8aaf..4ba0d8aaf 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/deps/1.0.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/deps/1.0.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/deps/1.0.0_meta.json b/tests/testdata/jsr/registry/@denotest/deps/1.0.0_meta.json index 914e4bd73..914e4bd73 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/deps/1.0.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/deps/1.0.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/deps/meta.json b/tests/testdata/jsr/registry/@denotest/deps/meta.json index 02601e4d0..02601e4d0 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/deps/meta.json +++ b/tests/testdata/jsr/registry/@denotest/deps/meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/mod.ts b/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/mod.ts index cb3c4a5e0..cb3c4a5e0 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/other.ts b/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/other.ts index 57e436cf8..57e436cf8 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/other.ts +++ b/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0/other.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0_meta.json b/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0_meta.json index ff105b58a..ff105b58a 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/module_graph/1.4.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/module_graph/meta.json b/tests/testdata/jsr/registry/@denotest/module_graph/meta.json index 9a450c08b..9a450c08b 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/module_graph/meta.json +++ b/tests/testdata/jsr/registry/@denotest/module_graph/meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/TestClass.ts b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/TestClass.ts index 88ac04c12..88ac04c12 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/TestClass.ts +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/TestClass.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/mod.ts b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/mod.ts index 57600eb4b..57600eb4b 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0_meta.json b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0_meta.json index 631a18d0e..631a18d0e 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/TestClass.ts b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/TestClass.ts index 88ac04c12..88ac04c12 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/TestClass.ts +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/TestClass.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/mod.ts b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/mod.ts index 5e1fd9435..5e1fd9435 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1_meta.json b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1_meta.json index 631a18d0e..631a18d0e 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1_meta.json +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.1.1_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/TestClass.ts b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/TestClass.ts index 88ac04c12..88ac04c12 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/TestClass.ts +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/TestClass.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/mod.ts b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/mod.ts index edf9622fb..edf9622fb 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0_meta.json b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0_meta.json index 631a18d0e..631a18d0e 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/0.2.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/meta.json b/tests/testdata/jsr/registry/@denotest/no_module_graph/meta.json index 0268b6c8a..0268b6c8a 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/no_module_graph/meta.json +++ b/tests/testdata/jsr/registry/@denotest/no_module_graph/meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0/mod.ts b/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0/mod.ts index e81b2309a..e81b2309a 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0_meta.json b/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0_meta.json index 631a18d0e..631a18d0e 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/subset_type_graph/0.1.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/meta.json b/tests/testdata/jsr/registry/@denotest/subset_type_graph/meta.json index d10aa5c3a..d10aa5c3a 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph/meta.json +++ b/tests/testdata/jsr/registry/@denotest/subset_type_graph/meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0/mod.ts b/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0/mod.ts index 6a5036bf5..6a5036bf5 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0/mod.ts +++ b/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0/mod.ts diff --git a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0_meta.json b/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0_meta.json index 631a18d0e..631a18d0e 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0_meta.json +++ b/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/0.1.0_meta.json diff --git a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/meta.json b/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/meta.json index d10aa5c3a..d10aa5c3a 100644 --- a/cli/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/meta.json +++ b/tests/testdata/jsr/registry/@denotest/subset_type_graph_invalid/meta.json diff --git a/cli/tests/testdata/jsr/subset_type_graph/main.check.out b/tests/testdata/jsr/subset_type_graph/main.check.out index 278884579..278884579 100644 --- a/cli/tests/testdata/jsr/subset_type_graph/main.check.out +++ b/tests/testdata/jsr/subset_type_graph/main.check.out diff --git a/cli/tests/testdata/jsr/subset_type_graph/main.ts b/tests/testdata/jsr/subset_type_graph/main.ts index 2e1614be9..2e1614be9 100644 --- a/cli/tests/testdata/jsr/subset_type_graph/main.ts +++ b/tests/testdata/jsr/subset_type_graph/main.ts diff --git a/cli/tests/testdata/jsr/version_not_found/main.out b/tests/testdata/jsr/version_not_found/main.out index 6a32b5d81..6a32b5d81 100644 --- a/cli/tests/testdata/jsr/version_not_found/main.out +++ b/tests/testdata/jsr/version_not_found/main.out diff --git a/cli/tests/testdata/jsr/version_not_found/main.ts b/tests/testdata/jsr/version_not_found/main.ts index a7673b744..a7673b744 100644 --- a/cli/tests/testdata/jsr/version_not_found/main.ts +++ b/tests/testdata/jsr/version_not_found/main.ts diff --git a/cli/tests/testdata/jsx/deno-jsx-error.jsonc b/tests/testdata/jsx/deno-jsx-error.jsonc index 37cb4dd91..37cb4dd91 100644 --- a/cli/tests/testdata/jsx/deno-jsx-error.jsonc +++ b/tests/testdata/jsx/deno-jsx-error.jsonc diff --git a/cli/tests/testdata/jsx/deno-jsx-import-map.jsonc b/tests/testdata/jsx/deno-jsx-import-map.jsonc index 5adbfa8b5..5adbfa8b5 100644 --- a/cli/tests/testdata/jsx/deno-jsx-import-map.jsonc +++ b/tests/testdata/jsx/deno-jsx-import-map.jsonc diff --git a/cli/tests/testdata/jsx/deno-jsx-precompile.jsonc b/tests/testdata/jsx/deno-jsx-precompile.jsonc index 95ae1b9f3..95ae1b9f3 100644 --- a/cli/tests/testdata/jsx/deno-jsx-precompile.jsonc +++ b/tests/testdata/jsx/deno-jsx-precompile.jsonc diff --git a/cli/tests/testdata/jsx/deno-jsx.json b/tests/testdata/jsx/deno-jsx.json index 311409ea3..311409ea3 100644 --- a/cli/tests/testdata/jsx/deno-jsx.json +++ b/tests/testdata/jsx/deno-jsx.json diff --git a/cli/tests/testdata/jsx/deno-jsx.jsonc b/tests/testdata/jsx/deno-jsx.jsonc index 311409ea3..311409ea3 100644 --- a/cli/tests/testdata/jsx/deno-jsx.jsonc +++ b/tests/testdata/jsx/deno-jsx.jsonc diff --git a/cli/tests/testdata/jsx/deno-jsxdev-import-map.jsonc b/tests/testdata/jsx/deno-jsxdev-import-map.jsonc index 7481d5a2d..7481d5a2d 100644 --- a/cli/tests/testdata/jsx/deno-jsxdev-import-map.jsonc +++ b/tests/testdata/jsx/deno-jsxdev-import-map.jsonc diff --git a/cli/tests/testdata/jsx/deno-jsxdev.jsonc b/tests/testdata/jsx/deno-jsxdev.jsonc index ae5bdf9f1..ae5bdf9f1 100644 --- a/cli/tests/testdata/jsx/deno-jsxdev.jsonc +++ b/tests/testdata/jsx/deno-jsxdev.jsonc diff --git a/cli/tests/testdata/jsx/deno.lock b/tests/testdata/jsx/deno.lock index 011e8fe10..011e8fe10 100644 --- a/cli/tests/testdata/jsx/deno.lock +++ b/tests/testdata/jsx/deno.lock diff --git a/cli/tests/testdata/jsx/import-map-scoped.json b/tests/testdata/jsx/import-map-scoped.json index 9b2005128..9b2005128 100644 --- a/cli/tests/testdata/jsx/import-map-scoped.json +++ b/tests/testdata/jsx/import-map-scoped.json diff --git a/cli/tests/testdata/jsx/import-map.json b/tests/testdata/jsx/import-map.json index 1bfa04e2f..1bfa04e2f 100644 --- a/cli/tests/testdata/jsx/import-map.json +++ b/tests/testdata/jsx/import-map.json diff --git a/cli/tests/testdata/jsx/jsx-dev-runtime/index.ts b/tests/testdata/jsx/jsx-dev-runtime/index.ts index 15e2029c8..15e2029c8 100644 --- a/cli/tests/testdata/jsx/jsx-dev-runtime/index.ts +++ b/tests/testdata/jsx/jsx-dev-runtime/index.ts diff --git a/cli/tests/testdata/jsx/jsx-precompile/index.ts b/tests/testdata/jsx/jsx-precompile/index.ts index 0d56095e0..0d56095e0 100644 --- a/cli/tests/testdata/jsx/jsx-precompile/index.ts +++ b/tests/testdata/jsx/jsx-precompile/index.ts diff --git a/cli/tests/testdata/jsx/jsx-runtime/index.ts b/tests/testdata/jsx/jsx-runtime/index.ts index 15e2029c8..15e2029c8 100644 --- a/cli/tests/testdata/jsx/jsx-runtime/index.ts +++ b/tests/testdata/jsx/jsx-runtime/index.ts diff --git a/cli/tests/testdata/jupyter/install_command_not_exists.out b/tests/testdata/jupyter/install_command_not_exists.out index 1bb176e20..1bb176e20 100644 --- a/cli/tests/testdata/jupyter/install_command_not_exists.out +++ b/tests/testdata/jupyter/install_command_not_exists.out diff --git a/cli/tests/testdata/jupyter/integration_test.ipynb b/tests/testdata/jupyter/integration_test.ipynb index 19667938c..19667938c 100644 --- a/cli/tests/testdata/jupyter/integration_test.ipynb +++ b/tests/testdata/jupyter/integration_test.ipynb diff --git a/cli/tests/testdata/lint/Deno.compact.format.jsonc b/tests/testdata/lint/Deno.compact.format.jsonc index f3487501a..f3487501a 100644 --- a/cli/tests/testdata/lint/Deno.compact.format.jsonc +++ b/tests/testdata/lint/Deno.compact.format.jsonc diff --git a/cli/tests/testdata/lint/Deno.jsonc b/tests/testdata/lint/Deno.jsonc index e9c03cca4..e9c03cca4 100644 --- a/cli/tests/testdata/lint/Deno.jsonc +++ b/tests/testdata/lint/Deno.jsonc diff --git a/cli/tests/testdata/lint/Deno.malformed.jsonc b/tests/testdata/lint/Deno.malformed.jsonc index fa71cd851..fa71cd851 100644 --- a/cli/tests/testdata/lint/Deno.malformed.jsonc +++ b/tests/testdata/lint/Deno.malformed.jsonc diff --git a/cli/tests/testdata/lint/Deno.malformed2.jsonc b/tests/testdata/lint/Deno.malformed2.jsonc index fa71cd851..fa71cd851 100644 --- a/cli/tests/testdata/lint/Deno.malformed2.jsonc +++ b/tests/testdata/lint/Deno.malformed2.jsonc diff --git a/cli/tests/testdata/lint/Deno.no_tags.jsonc b/tests/testdata/lint/Deno.no_tags.jsonc index b63600a90..b63600a90 100644 --- a/cli/tests/testdata/lint/Deno.no_tags.jsonc +++ b/tests/testdata/lint/Deno.no_tags.jsonc diff --git a/cli/tests/testdata/lint/deno.glob.json b/tests/testdata/lint/deno.glob.json index f6781b0d8..f6781b0d8 100644 --- a/cli/tests/testdata/lint/deno.glob.json +++ b/tests/testdata/lint/deno.glob.json diff --git a/cli/tests/testdata/lint/expected.out b/tests/testdata/lint/expected.out index eb8a2651a..eb8a2651a 100644 --- a/cli/tests/testdata/lint/expected.out +++ b/tests/testdata/lint/expected.out diff --git a/cli/tests/testdata/lint/expected_compact.out b/tests/testdata/lint/expected_compact.out index d1b2b922b..d1b2b922b 100644 --- a/cli/tests/testdata/lint/expected_compact.out +++ b/tests/testdata/lint/expected_compact.out diff --git a/cli/tests/testdata/lint/expected_from_stdin.out b/tests/testdata/lint/expected_from_stdin.out index 59f32166f..59f32166f 100644 --- a/cli/tests/testdata/lint/expected_from_stdin.out +++ b/tests/testdata/lint/expected_from_stdin.out diff --git a/cli/tests/testdata/lint/expected_from_stdin_json.out b/tests/testdata/lint/expected_from_stdin_json.out index 9e1188bcd..9e1188bcd 100644 --- a/cli/tests/testdata/lint/expected_from_stdin_json.out +++ b/tests/testdata/lint/expected_from_stdin_json.out diff --git a/cli/tests/testdata/lint/expected_glob.out b/tests/testdata/lint/expected_glob.out index eb8a2651a..eb8a2651a 100644 --- a/cli/tests/testdata/lint/expected_glob.out +++ b/tests/testdata/lint/expected_glob.out diff --git a/cli/tests/testdata/lint/expected_ignore.out b/tests/testdata/lint/expected_ignore.out index b5f78ee04..b5f78ee04 100644 --- a/cli/tests/testdata/lint/expected_ignore.out +++ b/tests/testdata/lint/expected_ignore.out diff --git a/cli/tests/testdata/lint/expected_json.out b/tests/testdata/lint/expected_json.out index 95c3d30ba..95c3d30ba 100644 --- a/cli/tests/testdata/lint/expected_json.out +++ b/tests/testdata/lint/expected_json.out diff --git a/cli/tests/testdata/lint/expected_quiet.out b/tests/testdata/lint/expected_quiet.out index e46a94a2d..e46a94a2d 100644 --- a/cli/tests/testdata/lint/expected_quiet.out +++ b/tests/testdata/lint/expected_quiet.out diff --git a/cli/tests/testdata/lint/expected_rules.out b/tests/testdata/lint/expected_rules.out index 4afab7b9b..4afab7b9b 100644 --- a/cli/tests/testdata/lint/expected_rules.out +++ b/tests/testdata/lint/expected_rules.out diff --git a/cli/tests/testdata/lint/expected_verbose.out b/tests/testdata/lint/expected_verbose.out index eb8a2651a..eb8a2651a 100644 --- a/cli/tests/testdata/lint/expected_verbose.out +++ b/tests/testdata/lint/expected_verbose.out diff --git a/cli/tests/testdata/lint/glob/data/tes.ts b/tests/testdata/lint/glob/data/tes.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/data/tes.ts +++ b/tests/testdata/lint/glob/data/tes.ts diff --git a/cli/tests/testdata/lint/glob/data/test1.js b/tests/testdata/lint/glob/data/test1.js index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/data/test1.js +++ b/tests/testdata/lint/glob/data/test1.js diff --git a/cli/tests/testdata/lint/glob/data/test1.ts b/tests/testdata/lint/glob/data/test1.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/data/test1.ts +++ b/tests/testdata/lint/glob/data/test1.ts diff --git a/cli/tests/testdata/lint/glob/data/test12.ts b/tests/testdata/lint/glob/data/test12.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/data/test12.ts +++ b/tests/testdata/lint/glob/data/test12.ts diff --git a/cli/tests/testdata/lint/glob/nested/fizz/bar.ts b/tests/testdata/lint/glob/nested/fizz/bar.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/fizz/bar.ts +++ b/tests/testdata/lint/glob/nested/fizz/bar.ts diff --git a/cli/tests/testdata/lint/glob/nested/fizz/bazz.ts b/tests/testdata/lint/glob/nested/fizz/bazz.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/fizz/bazz.ts +++ b/tests/testdata/lint/glob/nested/fizz/bazz.ts diff --git a/cli/tests/testdata/lint/glob/nested/fizz/fizz.ts b/tests/testdata/lint/glob/nested/fizz/fizz.ts index 6940729e9..6940729e9 100644 --- a/cli/tests/testdata/lint/glob/nested/fizz/fizz.ts +++ b/tests/testdata/lint/glob/nested/fizz/fizz.ts diff --git a/cli/tests/testdata/lint/glob/nested/fizz/foo.ts b/tests/testdata/lint/glob/nested/fizz/foo.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/fizz/foo.ts +++ b/tests/testdata/lint/glob/nested/fizz/foo.ts diff --git a/cli/tests/testdata/lint/glob/nested/foo/bar.ts b/tests/testdata/lint/glob/nested/foo/bar.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/foo/bar.ts +++ b/tests/testdata/lint/glob/nested/foo/bar.ts diff --git a/cli/tests/testdata/lint/glob/nested/foo/bazz.ts b/tests/testdata/lint/glob/nested/foo/bazz.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/foo/bazz.ts +++ b/tests/testdata/lint/glob/nested/foo/bazz.ts diff --git a/cli/tests/testdata/lint/glob/nested/foo/fizz.ts b/tests/testdata/lint/glob/nested/foo/fizz.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/foo/fizz.ts +++ b/tests/testdata/lint/glob/nested/foo/fizz.ts diff --git a/cli/tests/testdata/lint/glob/nested/foo/foo.ts b/tests/testdata/lint/glob/nested/foo/foo.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/nested/foo/foo.ts +++ b/tests/testdata/lint/glob/nested/foo/foo.ts diff --git a/cli/tests/testdata/lint/glob/pages/[id].ts b/tests/testdata/lint/glob/pages/[id].ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/lint/glob/pages/[id].ts +++ b/tests/testdata/lint/glob/pages/[id].ts diff --git a/cli/tests/testdata/lint/watch/badly_linted.js b/tests/testdata/lint/watch/badly_linted.js index 8d1c1fe79..8d1c1fe79 100644 --- a/cli/tests/testdata/lint/watch/badly_linted.js +++ b/tests/testdata/lint/watch/badly_linted.js diff --git a/cli/tests/testdata/lint/watch/badly_linted.js.out b/tests/testdata/lint/watch/badly_linted.js.out index 07ae031c3..07ae031c3 100644 --- a/cli/tests/testdata/lint/watch/badly_linted.js.out +++ b/tests/testdata/lint/watch/badly_linted.js.out diff --git a/cli/tests/testdata/lint/watch/badly_linted_fixed1.js b/tests/testdata/lint/watch/badly_linted_fixed1.js index bfccee47d..bfccee47d 100644 --- a/cli/tests/testdata/lint/watch/badly_linted_fixed1.js +++ b/tests/testdata/lint/watch/badly_linted_fixed1.js diff --git a/cli/tests/testdata/lint/watch/badly_linted_fixed1.js.out b/tests/testdata/lint/watch/badly_linted_fixed1.js.out index 67e3c9dd8..67e3c9dd8 100644 --- a/cli/tests/testdata/lint/watch/badly_linted_fixed1.js.out +++ b/tests/testdata/lint/watch/badly_linted_fixed1.js.out diff --git a/cli/tests/testdata/lint/watch/badly_linted_fixed2.js b/tests/testdata/lint/watch/badly_linted_fixed2.js index 94fe8701b..94fe8701b 100644 --- a/cli/tests/testdata/lint/watch/badly_linted_fixed2.js +++ b/tests/testdata/lint/watch/badly_linted_fixed2.js diff --git a/cli/tests/testdata/lint/watch/badly_linted_fixed2.js.out b/tests/testdata/lint/watch/badly_linted_fixed2.js.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/lint/watch/badly_linted_fixed2.js.out +++ b/tests/testdata/lint/watch/badly_linted_fixed2.js.out diff --git a/cli/tests/testdata/lint/with_config.out b/tests/testdata/lint/with_config.out index cffd6b9c7..cffd6b9c7 100644 --- a/cli/tests/testdata/lint/with_config.out +++ b/tests/testdata/lint/with_config.out diff --git a/cli/tests/testdata/lint/with_config/a.ts b/tests/testdata/lint/with_config/a.ts index c378218a3..c378218a3 100644 --- a/cli/tests/testdata/lint/with_config/a.ts +++ b/tests/testdata/lint/with_config/a.ts diff --git a/cli/tests/testdata/lint/with_config/b.ts b/tests/testdata/lint/with_config/b.ts index d5647067e..d5647067e 100644 --- a/cli/tests/testdata/lint/with_config/b.ts +++ b/tests/testdata/lint/with_config/b.ts diff --git a/cli/tests/testdata/lint/with_config_and_flags.out b/tests/testdata/lint/with_config_and_flags.out index f3ad3cafb..f3ad3cafb 100644 --- a/cli/tests/testdata/lint/with_config_and_flags.out +++ b/tests/testdata/lint/with_config_and_flags.out diff --git a/cli/tests/testdata/lint/with_config_without_tags.out b/tests/testdata/lint/with_config_without_tags.out index cffd6b9c7..cffd6b9c7 100644 --- a/cli/tests/testdata/lint/with_config_without_tags.out +++ b/tests/testdata/lint/with_config_without_tags.out diff --git a/cli/tests/testdata/lint/with_malformed_config.out b/tests/testdata/lint/with_malformed_config.out index 1c0f0fff6..1c0f0fff6 100644 --- a/cli/tests/testdata/lint/with_malformed_config.out +++ b/tests/testdata/lint/with_malformed_config.out diff --git a/cli/tests/testdata/lint/with_malformed_config2.out b/tests/testdata/lint/with_malformed_config2.out index 1c0f0fff6..1c0f0fff6 100644 --- a/cli/tests/testdata/lint/with_malformed_config2.out +++ b/tests/testdata/lint/with_malformed_config2.out diff --git a/cli/tests/testdata/lint/with_report_config_compact.out b/tests/testdata/lint/with_report_config_compact.out index fe1241264..fe1241264 100644 --- a/cli/tests/testdata/lint/with_report_config_compact.out +++ b/tests/testdata/lint/with_report_config_compact.out diff --git a/cli/tests/testdata/lint/with_report_config_override.out b/tests/testdata/lint/with_report_config_override.out index 7ca748158..7ca748158 100644 --- a/cli/tests/testdata/lint/with_report_config_override.out +++ b/tests/testdata/lint/with_report_config_override.out diff --git a/cli/tests/testdata/lint/without_config/file1.js b/tests/testdata/lint/without_config/file1.js index 737f26818..737f26818 100644 --- a/cli/tests/testdata/lint/without_config/file1.js +++ b/tests/testdata/lint/without_config/file1.js diff --git a/cli/tests/testdata/lint/without_config/file2.ts b/tests/testdata/lint/without_config/file2.ts index 73c612c35..73c612c35 100644 --- a/cli/tests/testdata/lint/without_config/file2.ts +++ b/tests/testdata/lint/without_config/file2.ts diff --git a/cli/tests/testdata/lint/without_config/ignored_file.ts b/tests/testdata/lint/without_config/ignored_file.ts index 97befafa3..97befafa3 100644 --- a/cli/tests/testdata/lint/without_config/ignored_file.ts +++ b/tests/testdata/lint/without_config/ignored_file.ts diff --git a/cli/tests/testdata/lint/without_config/malformed.js b/tests/testdata/lint/without_config/malformed.js index 9b64da898..9b64da898 100644 --- a/cli/tests/testdata/lint/without_config/malformed.js +++ b/tests/testdata/lint/without_config/malformed.js diff --git a/cli/tests/testdata/lockfile/basic/bench.nolock.out b/tests/testdata/lockfile/basic/bench.nolock.out index 83e4de242..83e4de242 100644 --- a/cli/tests/testdata/lockfile/basic/bench.nolock.out +++ b/tests/testdata/lockfile/basic/bench.nolock.out diff --git a/cli/tests/testdata/lockfile/basic/deno.json b/tests/testdata/lockfile/basic/deno.json index d6541b78e..d6541b78e 100644 --- a/cli/tests/testdata/lockfile/basic/deno.json +++ b/tests/testdata/lockfile/basic/deno.json diff --git a/cli/tests/testdata/lockfile/basic/deno.lock b/tests/testdata/lockfile/basic/deno.lock index 42ab94f9b..42ab94f9b 100644 --- a/cli/tests/testdata/lockfile/basic/deno.lock +++ b/tests/testdata/lockfile/basic/deno.lock diff --git a/cli/tests/testdata/lockfile/basic/doc.nolock.out b/tests/testdata/lockfile/basic/doc.nolock.out index e2d66c027..e2d66c027 100644 --- a/cli/tests/testdata/lockfile/basic/doc.nolock.out +++ b/tests/testdata/lockfile/basic/doc.nolock.out diff --git a/cli/tests/testdata/lockfile/basic/fail.out b/tests/testdata/lockfile/basic/fail.out index 6a808c0a5..6a808c0a5 100644 --- a/cli/tests/testdata/lockfile/basic/fail.out +++ b/tests/testdata/lockfile/basic/fail.out diff --git a/cli/tests/testdata/lockfile/basic/info.nolock.out b/tests/testdata/lockfile/basic/info.nolock.out index d1ef82e49..d1ef82e49 100644 --- a/cli/tests/testdata/lockfile/basic/info.nolock.out +++ b/tests/testdata/lockfile/basic/info.nolock.out diff --git a/cli/tests/testdata/lockfile/basic/main.bench.ts b/tests/testdata/lockfile/basic/main.bench.ts index 918adde2f..918adde2f 100644 --- a/cli/tests/testdata/lockfile/basic/main.bench.ts +++ b/tests/testdata/lockfile/basic/main.bench.ts diff --git a/cli/tests/testdata/lockfile/basic/main.test.ts b/tests/testdata/lockfile/basic/main.test.ts index fe45c799d..fe45c799d 100644 --- a/cli/tests/testdata/lockfile/basic/main.test.ts +++ b/tests/testdata/lockfile/basic/main.test.ts diff --git a/cli/tests/testdata/lockfile/basic/main.ts b/tests/testdata/lockfile/basic/main.ts index 8d07c8153..8d07c8153 100644 --- a/cli/tests/testdata/lockfile/basic/main.ts +++ b/tests/testdata/lockfile/basic/main.ts diff --git a/cli/tests/testdata/lockfile/basic/mod.ts b/tests/testdata/lockfile/basic/mod.ts index 358b4b09e..358b4b09e 100644 --- a/cli/tests/testdata/lockfile/basic/mod.ts +++ b/tests/testdata/lockfile/basic/mod.ts diff --git a/cli/tests/testdata/lockfile/basic/test.nolock.out b/tests/testdata/lockfile/basic/test.nolock.out index 1332dfa8f..1332dfa8f 100644 --- a/cli/tests/testdata/lockfile/basic/test.nolock.out +++ b/tests/testdata/lockfile/basic/test.nolock.out diff --git a/cli/tests/testdata/lockfile/no_dts/deno.lock.out b/tests/testdata/lockfile/no_dts/deno.lock.out index 6aa547e28..6aa547e28 100644 --- a/cli/tests/testdata/lockfile/no_dts/deno.lock.out +++ b/tests/testdata/lockfile/no_dts/deno.lock.out diff --git a/cli/tests/testdata/lockfile/no_dts/main.cache.out b/tests/testdata/lockfile/no_dts/main.cache.out index ee8ad33ab..ee8ad33ab 100644 --- a/cli/tests/testdata/lockfile/no_dts/main.cache.out +++ b/tests/testdata/lockfile/no_dts/main.cache.out diff --git a/cli/tests/testdata/lockfile/no_dts/main.ts b/tests/testdata/lockfile/no_dts/main.ts index 7596e1e1a..7596e1e1a 100644 --- a/cli/tests/testdata/lockfile/no_dts/main.ts +++ b/tests/testdata/lockfile/no_dts/main.ts diff --git a/cli/tests/testdata/lockfile/no_dts/mod.d.ts b/tests/testdata/lockfile/no_dts/mod.d.ts index 7d3fae61c..7d3fae61c 100644 --- a/cli/tests/testdata/lockfile/no_dts/mod.d.ts +++ b/tests/testdata/lockfile/no_dts/mod.d.ts diff --git a/cli/tests/testdata/lockfile/no_dts/mod.js b/tests/testdata/lockfile/no_dts/mod.js index 8ac948700..8ac948700 100644 --- a/cli/tests/testdata/lockfile/no_dts/mod.js +++ b/tests/testdata/lockfile/no_dts/mod.js diff --git a/cli/tests/testdata/lsp/deno.import_map.jsonc b/tests/testdata/lsp/deno.import_map.jsonc index 1682ff6b5..1682ff6b5 100644 --- a/cli/tests/testdata/lsp/deno.import_map.jsonc +++ b/tests/testdata/lsp/deno.import_map.jsonc diff --git a/cli/tests/testdata/lsp/deno.lint.exclude.jsonc b/tests/testdata/lsp/deno.lint.exclude.jsonc index 9d4ba52ad..9d4ba52ad 100644 --- a/cli/tests/testdata/lsp/deno.lint.exclude.jsonc +++ b/tests/testdata/lsp/deno.lint.exclude.jsonc diff --git a/cli/tests/testdata/lsp/diagnostics_deno_types.json b/tests/testdata/lsp/diagnostics_deno_types.json index 6ab153093..6ab153093 100644 --- a/cli/tests/testdata/lsp/diagnostics_deno_types.json +++ b/tests/testdata/lsp/diagnostics_deno_types.json diff --git a/cli/tests/testdata/lsp/import-map.json b/tests/testdata/lsp/import-map.json index 75d5d0849..75d5d0849 100644 --- a/cli/tests/testdata/lsp/import-map.json +++ b/tests/testdata/lsp/import-map.json diff --git a/cli/tests/testdata/lsp/large_file.txt b/tests/testdata/lsp/large_file.txt index f1ca0481c..f1ca0481c 100644 --- a/cli/tests/testdata/lsp/large_file.txt +++ b/tests/testdata/lsp/large_file.txt diff --git a/cli/tests/testdata/lsp/registries/a_latest_.json b/tests/testdata/lsp/registries/a_latest_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/a_latest_.json +++ b/tests/testdata/lsp/registries/a_latest_.json diff --git a/cli/tests/testdata/lsp/registries/a_v1.0.0_.json b/tests/testdata/lsp/registries/a_v1.0.0_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/a_v1.0.0_.json +++ b/tests/testdata/lsp/registries/a_v1.0.0_.json diff --git a/cli/tests/testdata/lsp/registries/a_v1.0.0_b.json b/tests/testdata/lsp/registries/a_v1.0.0_b.json index 20ec4ad90..20ec4ad90 100644 --- a/cli/tests/testdata/lsp/registries/a_v1.0.0_b.json +++ b/tests/testdata/lsp/registries/a_v1.0.0_b.json diff --git a/cli/tests/testdata/lsp/registries/a_v1.0.1_.json b/tests/testdata/lsp/registries/a_v1.0.1_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/a_v1.0.1_.json +++ b/tests/testdata/lsp/registries/a_v1.0.1_.json diff --git a/cli/tests/testdata/lsp/registries/a_v2.0.0_.json b/tests/testdata/lsp/registries/a_v2.0.0_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/a_v2.0.0_.json +++ b/tests/testdata/lsp/registries/a_v2.0.0_.json diff --git a/cli/tests/testdata/lsp/registries/a_versions_.json b/tests/testdata/lsp/registries/a_versions_.json index 930e38323..930e38323 100644 --- a/cli/tests/testdata/lsp/registries/a_versions_.json +++ b/tests/testdata/lsp/registries/a_versions_.json diff --git a/cli/tests/testdata/lsp/registries/a_versions_v1..json b/tests/testdata/lsp/registries/a_versions_v1..json index 1d8a865c1..1d8a865c1 100644 --- a/cli/tests/testdata/lsp/registries/a_versions_v1..json +++ b/tests/testdata/lsp/registries/a_versions_v1..json diff --git a/cli/tests/testdata/lsp/registries/b_latest_.json b/tests/testdata/lsp/registries/b_latest_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/b_latest_.json +++ b/tests/testdata/lsp/registries/b_latest_.json diff --git a/cli/tests/testdata/lsp/registries/b_v0.0.1_.json b/tests/testdata/lsp/registries/b_v0.0.1_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/b_v0.0.1_.json +++ b/tests/testdata/lsp/registries/b_v0.0.1_.json diff --git a/cli/tests/testdata/lsp/registries/b_v0.0.2_.json b/tests/testdata/lsp/registries/b_v0.0.2_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/b_v0.0.2_.json +++ b/tests/testdata/lsp/registries/b_v0.0.2_.json diff --git a/cli/tests/testdata/lsp/registries/b_v0.0.3_.json b/tests/testdata/lsp/registries/b_v0.0.3_.json index f9f9d111e..f9f9d111e 100644 --- a/cli/tests/testdata/lsp/registries/b_v0.0.3_.json +++ b/tests/testdata/lsp/registries/b_v0.0.3_.json diff --git a/cli/tests/testdata/lsp/registries/b_versions_.json b/tests/testdata/lsp/registries/b_versions_.json index 9532fbb85..9532fbb85 100644 --- a/cli/tests/testdata/lsp/registries/b_versions_.json +++ b/tests/testdata/lsp/registries/b_versions_.json diff --git a/cli/tests/testdata/lsp/registries/cde_tags.json b/tests/testdata/lsp/registries/cde_tags.json index 24aeba56a..24aeba56a 100644 --- a/cli/tests/testdata/lsp/registries/cde_tags.json +++ b/tests/testdata/lsp/registries/cde_tags.json diff --git a/cli/tests/testdata/lsp/registries/cdef_tags.json b/tests/testdata/lsp/registries/cdef_tags.json index a69cb1c55..a69cb1c55 100644 --- a/cli/tests/testdata/lsp/registries/cdef_tags.json +++ b/tests/testdata/lsp/registries/cdef_tags.json diff --git a/cli/tests/testdata/lsp/registries/complex.json b/tests/testdata/lsp/registries/complex.json index b6e28649a..b6e28649a 100644 --- a/cli/tests/testdata/lsp/registries/complex.json +++ b/tests/testdata/lsp/registries/complex.json diff --git a/cli/tests/testdata/lsp/registries/complex_efg.json b/tests/testdata/lsp/registries/complex_efg.json index cd170d1d8..cd170d1d8 100644 --- a/cli/tests/testdata/lsp/registries/complex_efg.json +++ b/tests/testdata/lsp/registries/complex_efg.json diff --git a/cli/tests/testdata/lsp/registries/complex_efg_0.2.0.json b/tests/testdata/lsp/registries/complex_efg_0.2.0.json index d333b9e28..d333b9e28 100644 --- a/cli/tests/testdata/lsp/registries/complex_efg_0.2.0.json +++ b/tests/testdata/lsp/registries/complex_efg_0.2.0.json diff --git a/cli/tests/testdata/lsp/registries/def_tags.json b/tests/testdata/lsp/registries/def_tags.json index 5a33204f2..5a33204f2 100644 --- a/cli/tests/testdata/lsp/registries/def_tags.json +++ b/tests/testdata/lsp/registries/def_tags.json diff --git a/cli/tests/testdata/lsp/registries/deno-import-intellisense-complex.json b/tests/testdata/lsp/registries/deno-import-intellisense-complex.json index 98e913bdb..98e913bdb 100644 --- a/cli/tests/testdata/lsp/registries/deno-import-intellisense-complex.json +++ b/tests/testdata/lsp/registries/deno-import-intellisense-complex.json diff --git a/cli/tests/testdata/lsp/registries/deno-import-intellisense-key-first.json b/tests/testdata/lsp/registries/deno-import-intellisense-key-first.json index 9aa33ecd3..9aa33ecd3 100644 --- a/cli/tests/testdata/lsp/registries/deno-import-intellisense-key-first.json +++ b/tests/testdata/lsp/registries/deno-import-intellisense-key-first.json diff --git a/cli/tests/testdata/lsp/registries/deno-import-intellisense.json b/tests/testdata/lsp/registries/deno-import-intellisense.json index 5fd87085e..5fd87085e 100644 --- a/cli/tests/testdata/lsp/registries/deno-import-intellisense.json +++ b/tests/testdata/lsp/registries/deno-import-intellisense.json diff --git a/cli/tests/testdata/lsp/registries/doc_a.json b/tests/testdata/lsp/registries/doc_a.json index ecddb9144..ecddb9144 100644 --- a/cli/tests/testdata/lsp/registries/doc_a.json +++ b/tests/testdata/lsp/registries/doc_a.json diff --git a/cli/tests/testdata/lsp/registries/doc_a_latest_mod.ts.json b/tests/testdata/lsp/registries/doc_a_latest_mod.ts.json index 522f5b271..522f5b271 100644 --- a/cli/tests/testdata/lsp/registries/doc_a_latest_mod.ts.json +++ b/tests/testdata/lsp/registries/doc_a_latest_mod.ts.json diff --git a/cli/tests/testdata/lsp/registries/key_first.json b/tests/testdata/lsp/registries/key_first.json index c95261b25..c95261b25 100644 --- a/cli/tests/testdata/lsp/registries/key_first.json +++ b/tests/testdata/lsp/registries/key_first.json diff --git a/cli/tests/testdata/lsp/registries/modules_.json b/tests/testdata/lsp/registries/modules_.json index fae3b40a3..fae3b40a3 100644 --- a/cli/tests/testdata/lsp/registries/modules_.json +++ b/tests/testdata/lsp/registries/modules_.json diff --git a/cli/tests/testdata/lsp/registries/modules_a.json b/tests/testdata/lsp/registries/modules_a.json index 0163f18a4..0163f18a4 100644 --- a/cli/tests/testdata/lsp/registries/modules_a.json +++ b/tests/testdata/lsp/registries/modules_a.json diff --git a/cli/tests/testdata/lsp/types.tsconfig.json b/tests/testdata/lsp/types.tsconfig.json index 50de6939c..50de6939c 100644 --- a/cli/tests/testdata/lsp/types.tsconfig.json +++ b/tests/testdata/lsp/types.tsconfig.json diff --git a/cli/tests/testdata/lsp/x_deno_warning_redirect.js b/tests/testdata/lsp/x_deno_warning_redirect.js index 34b950566..34b950566 100644 --- a/cli/tests/testdata/lsp/x_deno_warning_redirect.js +++ b/tests/testdata/lsp/x_deno_warning_redirect.js diff --git a/cli/tests/testdata/malformed_config/deno.json b/tests/testdata/malformed_config/deno.json index 60df56527..60df56527 100644 --- a/cli/tests/testdata/malformed_config/deno.json +++ b/tests/testdata/malformed_config/deno.json diff --git a/cli/tests/testdata/module_graph/file_tests-a.mjs b/tests/testdata/module_graph/file_tests-a.mjs index 72b3a67bc..72b3a67bc 100644 --- a/cli/tests/testdata/module_graph/file_tests-a.mjs +++ b/tests/testdata/module_graph/file_tests-a.mjs diff --git a/cli/tests/testdata/module_graph/file_tests-b-mod.js b/tests/testdata/module_graph/file_tests-b-mod.js index 59d168993..59d168993 100644 --- a/cli/tests/testdata/module_graph/file_tests-b-mod.js +++ b/tests/testdata/module_graph/file_tests-b-mod.js diff --git a/cli/tests/testdata/module_graph/file_tests-b.ts b/tests/testdata/module_graph/file_tests-b.ts index 59d168993..59d168993 100644 --- a/cli/tests/testdata/module_graph/file_tests-b.ts +++ b/tests/testdata/module_graph/file_tests-b.ts diff --git a/cli/tests/testdata/module_graph/file_tests-c-mod.ts b/tests/testdata/module_graph/file_tests-c-mod.ts index 7f2cfac77..7f2cfac77 100644 --- a/cli/tests/testdata/module_graph/file_tests-c-mod.ts +++ b/tests/testdata/module_graph/file_tests-c-mod.ts diff --git a/cli/tests/testdata/module_graph/file_tests-checkwithconfig.ts b/tests/testdata/module_graph/file_tests-checkwithconfig.ts index e7af5fa19..e7af5fa19 100644 --- a/cli/tests/testdata/module_graph/file_tests-checkwithconfig.ts +++ b/tests/testdata/module_graph/file_tests-checkwithconfig.ts diff --git a/cli/tests/testdata/module_graph/file_tests-diag.ts b/tests/testdata/module_graph/file_tests-diag.ts index ba365234a..ba365234a 100644 --- a/cli/tests/testdata/module_graph/file_tests-diag.ts +++ b/tests/testdata/module_graph/file_tests-diag.ts diff --git a/cli/tests/testdata/module_graph/file_tests-dynamicimport.ts b/tests/testdata/module_graph/file_tests-dynamicimport.ts index b5c9f080f..b5c9f080f 100644 --- a/cli/tests/testdata/module_graph/file_tests-dynamicimport.ts +++ b/tests/testdata/module_graph/file_tests-dynamicimport.ts diff --git a/cli/tests/testdata/module_graph/file_tests-importjson.ts b/tests/testdata/module_graph/file_tests-importjson.ts index c2bc2bca7..c2bc2bca7 100644 --- a/cli/tests/testdata/module_graph/file_tests-importjson.ts +++ b/tests/testdata/module_graph/file_tests-importjson.ts diff --git a/cli/tests/testdata/module_graph/file_tests-importremap.ts b/tests/testdata/module_graph/file_tests-importremap.ts index 17f012673..17f012673 100644 --- a/cli/tests/testdata/module_graph/file_tests-importremap.ts +++ b/tests/testdata/module_graph/file_tests-importremap.ts diff --git a/cli/tests/testdata/module_graph/file_tests-main.ts b/tests/testdata/module_graph/file_tests-main.ts index aa8eef1b8..aa8eef1b8 100644 --- a/cli/tests/testdata/module_graph/file_tests-main.ts +++ b/tests/testdata/module_graph/file_tests-main.ts diff --git a/cli/tests/testdata/module_graph/file_tests-some.json b/tests/testdata/module_graph/file_tests-some.json index 567c4ba21..567c4ba21 100644 --- a/cli/tests/testdata/module_graph/file_tests-some.json +++ b/tests/testdata/module_graph/file_tests-some.json diff --git a/cli/tests/testdata/module_graph/file_typesref.d.ts b/tests/testdata/module_graph/file_typesref.d.ts index 8ae31dde3..8ae31dde3 100644 --- a/cli/tests/testdata/module_graph/file_typesref.d.ts +++ b/tests/testdata/module_graph/file_typesref.d.ts diff --git a/cli/tests/testdata/module_graph/file_typesref.js b/tests/testdata/module_graph/file_typesref.js index 79da24cae..79da24cae 100644 --- a/cli/tests/testdata/module_graph/file_typesref.js +++ b/tests/testdata/module_graph/file_typesref.js diff --git a/cli/tests/testdata/module_graph/https_deno.land-std-http-server.ts b/tests/testdata/module_graph/https_deno.land-std-http-server.ts index 0b3c995ec..0b3c995ec 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-std-http-server.ts +++ b/tests/testdata/module_graph/https_deno.land-std-http-server.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-a-mod.ts b/tests/testdata/module_graph/https_deno.land-x-a-mod.ts index 1e334d399..1e334d399 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-a-mod.ts +++ b/tests/testdata/module_graph/https_deno.land-x-a-mod.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-a.ts b/tests/testdata/module_graph/https_deno.land-x-a.ts index a6e3cea80..a6e3cea80 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-a.ts +++ b/tests/testdata/module_graph/https_deno.land-x-a.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-import_map.ts b/tests/testdata/module_graph/https_deno.land-x-import_map.ts index e285d863a..e285d863a 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-import_map.ts +++ b/tests/testdata/module_graph/https_deno.land-x-import_map.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-jquery.js b/tests/testdata/module_graph/https_deno.land-x-jquery.js index 71896157a..71896157a 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-jquery.js +++ b/tests/testdata/module_graph/https_deno.land-x-jquery.js diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-lib-a.ts b/tests/testdata/module_graph/https_deno.land-x-lib-a.ts index a0a6f8e94..a0a6f8e94 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-lib-a.ts +++ b/tests/testdata/module_graph/https_deno.land-x-lib-a.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-lib-b.js b/tests/testdata/module_graph/https_deno.land-x-lib-b.js index 13cacdd8b..13cacdd8b 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-lib-b.js +++ b/tests/testdata/module_graph/https_deno.land-x-lib-b.js diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-lib-c.d.ts b/tests/testdata/module_graph/https_deno.land-x-lib-c.d.ts index fac988e49..fac988e49 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-lib-c.d.ts +++ b/tests/testdata/module_graph/https_deno.land-x-lib-c.d.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-lib-c.js b/tests/testdata/module_graph/https_deno.land-x-lib-c.js index 620ca0b66..620ca0b66 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-lib-c.js +++ b/tests/testdata/module_graph/https_deno.land-x-lib-c.js diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-lib-mod.d.ts b/tests/testdata/module_graph/https_deno.land-x-lib-mod.d.ts index 76ed81df0..76ed81df0 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-lib-mod.d.ts +++ b/tests/testdata/module_graph/https_deno.land-x-lib-mod.d.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-lib-mod.js b/tests/testdata/module_graph/https_deno.land-x-lib-mod.js index 505162094..505162094 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-lib-mod.js +++ b/tests/testdata/module_graph/https_deno.land-x-lib-mod.js diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-mod.ts b/tests/testdata/module_graph/https_deno.land-x-mod.ts index 35d76ef75..35d76ef75 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-mod.ts +++ b/tests/testdata/module_graph/https_deno.land-x-mod.ts diff --git a/cli/tests/testdata/module_graph/https_deno.land-x-transpile.tsx b/tests/testdata/module_graph/https_deno.land-x-transpile.tsx index 02955bad8..02955bad8 100644 --- a/cli/tests/testdata/module_graph/https_deno.land-x-transpile.tsx +++ b/tests/testdata/module_graph/https_deno.land-x-transpile.tsx diff --git a/cli/tests/testdata/module_graph/https_unpkg.com-lodash-index.js b/tests/testdata/module_graph/https_unpkg.com-lodash-index.js index d16c126a6..d16c126a6 100644 --- a/cli/tests/testdata/module_graph/https_unpkg.com-lodash-index.js +++ b/tests/testdata/module_graph/https_unpkg.com-lodash-index.js diff --git a/cli/tests/testdata/module_graph/lockfile.json b/tests/testdata/module_graph/lockfile.json index 03cfe1185..03cfe1185 100644 --- a/cli/tests/testdata/module_graph/lockfile.json +++ b/tests/testdata/module_graph/lockfile.json diff --git a/cli/tests/testdata/module_graph/lockfile_fail.json b/tests/testdata/module_graph/lockfile_fail.json index c0019fba4..c0019fba4 100644 --- a/cli/tests/testdata/module_graph/lockfile_fail.json +++ b/tests/testdata/module_graph/lockfile_fail.json diff --git a/cli/tests/testdata/module_graph/tsconfig.json b/tests/testdata/module_graph/tsconfig.json index a4c5f4f33..a4c5f4f33 100644 --- a/cli/tests/testdata/module_graph/tsconfig.json +++ b/tests/testdata/module_graph/tsconfig.json diff --git a/cli/tests/testdata/module_graph/tsconfig_01.json b/tests/testdata/module_graph/tsconfig_01.json index f7496d475..f7496d475 100644 --- a/cli/tests/testdata/module_graph/tsconfig_01.json +++ b/tests/testdata/module_graph/tsconfig_01.json diff --git a/cli/tests/testdata/navigator_language.ts b/tests/testdata/navigator_language.ts index 1cdbc2fe6..1cdbc2fe6 100644 --- a/cli/tests/testdata/navigator_language.ts +++ b/tests/testdata/navigator_language.ts diff --git a/cli/tests/testdata/navigator_languages.ts b/tests/testdata/navigator_languages.ts index 41dece950..41dece950 100644 --- a/cli/tests/testdata/navigator_languages.ts +++ b/tests/testdata/navigator_languages.ts diff --git a/cli/tests/testdata/node/rejection_handled_web_process.ts b/tests/testdata/node/rejection_handled_web_process.ts index e331f8998..e331f8998 100644 --- a/cli/tests/testdata/node/rejection_handled_web_process.ts +++ b/tests/testdata/node/rejection_handled_web_process.ts diff --git a/cli/tests/testdata/node/rejection_handled_web_process.ts.out b/tests/testdata/node/rejection_handled_web_process.ts.out index e6fefede2..e6fefede2 100644 --- a/cli/tests/testdata/node/rejection_handled_web_process.ts.out +++ b/tests/testdata/node/rejection_handled_web_process.ts.out diff --git a/cli/tests/testdata/node/require_esm_error/esm.js b/tests/testdata/node/require_esm_error/esm.js index 0613f1911..0613f1911 100644 --- a/cli/tests/testdata/node/require_esm_error/esm.js +++ b/tests/testdata/node/require_esm_error/esm.js diff --git a/cli/tests/testdata/node/require_esm_error/main.out b/tests/testdata/node/require_esm_error/main.out index 3db23ff24..3db23ff24 100644 --- a/cli/tests/testdata/node/require_esm_error/main.out +++ b/tests/testdata/node/require_esm_error/main.out diff --git a/cli/tests/testdata/node/require_esm_error/main.ts b/tests/testdata/node/require_esm_error/main.ts index 612e91714..612e91714 100644 --- a/cli/tests/testdata/node/require_esm_error/main.ts +++ b/tests/testdata/node/require_esm_error/main.ts diff --git a/cli/tests/testdata/node/test.js b/tests/testdata/node/test.js index 0f0f9b6b6..0f0f9b6b6 100644 --- a/cli/tests/testdata/node/test.js +++ b/tests/testdata/node/test.js diff --git a/cli/tests/testdata/node/test.out b/tests/testdata/node/test.out index 2579f605d..2579f605d 100644 --- a/cli/tests/testdata/node/test.out +++ b/tests/testdata/node/test.out diff --git a/cli/tests/testdata/node/unhandled_rejection_web.ts b/tests/testdata/node/unhandled_rejection_web.ts index 396c58c2a..396c58c2a 100644 --- a/cli/tests/testdata/node/unhandled_rejection_web.ts +++ b/tests/testdata/node/unhandled_rejection_web.ts diff --git a/cli/tests/testdata/node/unhandled_rejection_web.ts.out b/tests/testdata/node/unhandled_rejection_web.ts.out index 19db7f90e..19db7f90e 100644 --- a/cli/tests/testdata/node/unhandled_rejection_web.ts.out +++ b/tests/testdata/node/unhandled_rejection_web.ts.out diff --git a/cli/tests/testdata/node/unhandled_rejection_web_process.ts b/tests/testdata/node/unhandled_rejection_web_process.ts index 2aaacfbff..2aaacfbff 100644 --- a/cli/tests/testdata/node/unhandled_rejection_web_process.ts +++ b/tests/testdata/node/unhandled_rejection_web_process.ts diff --git a/cli/tests/testdata/node/unhandled_rejection_web_process.ts.out b/tests/testdata/node/unhandled_rejection_web_process.ts.out index ea307474a..ea307474a 100644 --- a/cli/tests/testdata/node/unhandled_rejection_web_process.ts.out +++ b/tests/testdata/node/unhandled_rejection_web_process.ts.out diff --git a/cli/tests/testdata/npm/README.md b/tests/testdata/npm/README.md index ba3f5f771..ba3f5f771 100644 --- a/cli/tests/testdata/npm/README.md +++ b/tests/testdata/npm/README.md diff --git a/cli/tests/testdata/npm/binary_package/main.js b/tests/testdata/npm/binary_package/main.js index 8823c5a5b..8823c5a5b 100644 --- a/cli/tests/testdata/npm/binary_package/main.js +++ b/tests/testdata/npm/binary_package/main.js diff --git a/cli/tests/testdata/npm/builtin_module_module/main.js b/tests/testdata/npm/builtin_module_module/main.js index 9a036791b..9a036791b 100644 --- a/cli/tests/testdata/npm/builtin_module_module/main.js +++ b/tests/testdata/npm/builtin_module_module/main.js diff --git a/cli/tests/testdata/npm/builtin_module_module/main.out b/tests/testdata/npm/builtin_module_module/main.out index 160ba6503..160ba6503 100644 --- a/cli/tests/testdata/npm/builtin_module_module/main.out +++ b/tests/testdata/npm/builtin_module_module/main.out diff --git a/cli/tests/testdata/npm/cached_only/main.out b/tests/testdata/npm/cached_only/main.out index d03420fee..d03420fee 100644 --- a/cli/tests/testdata/npm/cached_only/main.out +++ b/tests/testdata/npm/cached_only/main.out diff --git a/cli/tests/testdata/npm/cached_only/main.ts b/tests/testdata/npm/cached_only/main.ts index 1ccc441a1..1ccc441a1 100644 --- a/cli/tests/testdata/npm/cached_only/main.ts +++ b/tests/testdata/npm/cached_only/main.ts diff --git a/cli/tests/testdata/npm/cached_only_after_first_run/main1.ts b/tests/testdata/npm/cached_only_after_first_run/main1.ts index 1ccc441a1..1ccc441a1 100644 --- a/cli/tests/testdata/npm/cached_only_after_first_run/main1.ts +++ b/tests/testdata/npm/cached_only_after_first_run/main1.ts diff --git a/cli/tests/testdata/npm/cached_only_after_first_run/main2.ts b/tests/testdata/npm/cached_only_after_first_run/main2.ts index 1aba1bc2c..1aba1bc2c 100644 --- a/cli/tests/testdata/npm/cached_only_after_first_run/main2.ts +++ b/tests/testdata/npm/cached_only_after_first_run/main2.ts diff --git a/cli/tests/testdata/npm/check_errors/main.ts b/tests/testdata/npm/check_errors/main.ts index 4b8684195..4b8684195 100644 --- a/cli/tests/testdata/npm/check_errors/main.ts +++ b/tests/testdata/npm/check_errors/main.ts diff --git a/cli/tests/testdata/npm/check_errors/main_all.out b/tests/testdata/npm/check_errors/main_all.out index 96f16d0b9..96f16d0b9 100644 --- a/cli/tests/testdata/npm/check_errors/main_all.out +++ b/tests/testdata/npm/check_errors/main_all.out diff --git a/cli/tests/testdata/npm/check_errors/main_local.out b/tests/testdata/npm/check_errors/main_local.out index 1624b98bc..1624b98bc 100644 --- a/cli/tests/testdata/npm/check_errors/main_local.out +++ b/tests/testdata/npm/check_errors/main_local.out diff --git a/cli/tests/testdata/npm/child_process_fork_test/main.out b/tests/testdata/npm/child_process_fork_test/main.out index d5bc57741..d5bc57741 100644 --- a/cli/tests/testdata/npm/child_process_fork_test/main.out +++ b/tests/testdata/npm/child_process_fork_test/main.out diff --git a/cli/tests/testdata/npm/child_process_fork_test/main.ts b/tests/testdata/npm/child_process_fork_test/main.ts index e560edb7e..e560edb7e 100644 --- a/cli/tests/testdata/npm/child_process_fork_test/main.ts +++ b/tests/testdata/npm/child_process_fork_test/main.ts diff --git a/cli/tests/testdata/npm/cjs-invalid-name-exports/main.out b/tests/testdata/npm/cjs-invalid-name-exports/main.out index 45ec15d0e..45ec15d0e 100644 --- a/cli/tests/testdata/npm/cjs-invalid-name-exports/main.out +++ b/tests/testdata/npm/cjs-invalid-name-exports/main.out diff --git a/cli/tests/testdata/npm/cjs-invalid-name-exports/main.ts b/tests/testdata/npm/cjs-invalid-name-exports/main.ts index 9bdf0e43b..9bdf0e43b 100644 --- a/cli/tests/testdata/npm/cjs-invalid-name-exports/main.ts +++ b/tests/testdata/npm/cjs-invalid-name-exports/main.ts diff --git a/cli/tests/testdata/npm/cjs_local_global_decls/main.out b/tests/testdata/npm/cjs_local_global_decls/main.out index f9331e2e5..f9331e2e5 100644 --- a/cli/tests/testdata/npm/cjs_local_global_decls/main.out +++ b/tests/testdata/npm/cjs_local_global_decls/main.out diff --git a/cli/tests/testdata/npm/cjs_local_global_decls/main.ts b/tests/testdata/npm/cjs_local_global_decls/main.ts index 04074057b..04074057b 100644 --- a/cli/tests/testdata/npm/cjs_local_global_decls/main.ts +++ b/tests/testdata/npm/cjs_local_global_decls/main.ts diff --git a/cli/tests/testdata/npm/cjs_module_export_assignment/main.out b/tests/testdata/npm/cjs_module_export_assignment/main.out index dea185e38..dea185e38 100644 --- a/cli/tests/testdata/npm/cjs_module_export_assignment/main.out +++ b/tests/testdata/npm/cjs_module_export_assignment/main.out diff --git a/cli/tests/testdata/npm/cjs_module_export_assignment/main.ts b/tests/testdata/npm/cjs_module_export_assignment/main.ts index 93d3db1c3..93d3db1c3 100644 --- a/cli/tests/testdata/npm/cjs_module_export_assignment/main.ts +++ b/tests/testdata/npm/cjs_module_export_assignment/main.ts diff --git a/cli/tests/testdata/npm/cjs_module_export_assignment_number/main.out b/tests/testdata/npm/cjs_module_export_assignment_number/main.out index e559775cf..e559775cf 100644 --- a/cli/tests/testdata/npm/cjs_module_export_assignment_number/main.out +++ b/tests/testdata/npm/cjs_module_export_assignment_number/main.out diff --git a/cli/tests/testdata/npm/cjs_module_export_assignment_number/main.ts b/tests/testdata/npm/cjs_module_export_assignment_number/main.ts index aee24bf19..aee24bf19 100644 --- a/cli/tests/testdata/npm/cjs_module_export_assignment_number/main.ts +++ b/tests/testdata/npm/cjs_module_export_assignment_number/main.ts diff --git a/cli/tests/testdata/npm/cjs_reexport_collision/main.out b/tests/testdata/npm/cjs_reexport_collision/main.out index ed3193f8d..ed3193f8d 100644 --- a/cli/tests/testdata/npm/cjs_reexport_collision/main.out +++ b/tests/testdata/npm/cjs_reexport_collision/main.out diff --git a/cli/tests/testdata/npm/cjs_reexport_collision/main.ts b/tests/testdata/npm/cjs_reexport_collision/main.ts index 4bfcd89b1..4bfcd89b1 100644 --- a/cli/tests/testdata/npm/cjs_reexport_collision/main.ts +++ b/tests/testdata/npm/cjs_reexport_collision/main.ts diff --git a/cli/tests/testdata/npm/cjs_require_esm_error/main.out b/tests/testdata/npm/cjs_require_esm_error/main.out index b6ade6904..b6ade6904 100644 --- a/cli/tests/testdata/npm/cjs_require_esm_error/main.out +++ b/tests/testdata/npm/cjs_require_esm_error/main.out diff --git a/cli/tests/testdata/npm/cjs_require_esm_error/main.ts b/tests/testdata/npm/cjs_require_esm_error/main.ts index 3fbb1215a..3fbb1215a 100644 --- a/cli/tests/testdata/npm/cjs_require_esm_error/main.ts +++ b/tests/testdata/npm/cjs_require_esm_error/main.ts diff --git a/cli/tests/testdata/npm/cjs_require_esm_mjs_error/main.out b/tests/testdata/npm/cjs_require_esm_mjs_error/main.out index e779cfaf8..e779cfaf8 100644 --- a/cli/tests/testdata/npm/cjs_require_esm_mjs_error/main.out +++ b/tests/testdata/npm/cjs_require_esm_mjs_error/main.out diff --git a/cli/tests/testdata/npm/cjs_require_esm_mjs_error/main.ts b/tests/testdata/npm/cjs_require_esm_mjs_error/main.ts index 2121f1dbb..2121f1dbb 100644 --- a/cli/tests/testdata/npm/cjs_require_esm_mjs_error/main.ts +++ b/tests/testdata/npm/cjs_require_esm_mjs_error/main.ts diff --git a/cli/tests/testdata/npm/cjs_sub_path/main.js b/tests/testdata/npm/cjs_sub_path/main.js index b71360959..b71360959 100644 --- a/cli/tests/testdata/npm/cjs_sub_path/main.js +++ b/tests/testdata/npm/cjs_sub_path/main.js diff --git a/cli/tests/testdata/npm/cjs_sub_path/main.out b/tests/testdata/npm/cjs_sub_path/main.out index 34ec9d63f..34ec9d63f 100644 --- a/cli/tests/testdata/npm/cjs_sub_path/main.out +++ b/tests/testdata/npm/cjs_sub_path/main.out diff --git a/cli/tests/testdata/npm/cjs_this_in_exports/main.js b/tests/testdata/npm/cjs_this_in_exports/main.js index 03aaabe05..03aaabe05 100644 --- a/cli/tests/testdata/npm/cjs_this_in_exports/main.js +++ b/tests/testdata/npm/cjs_this_in_exports/main.js diff --git a/cli/tests/testdata/npm/cjs_this_in_exports/main.out b/tests/testdata/npm/cjs_this_in_exports/main.out index ba436bddc..ba436bddc 100644 --- a/cli/tests/testdata/npm/cjs_this_in_exports/main.out +++ b/tests/testdata/npm/cjs_this_in_exports/main.out diff --git a/cli/tests/testdata/npm/cjs_with_deps/main.js b/tests/testdata/npm/cjs_with_deps/main.js index 568726874..568726874 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main.js +++ b/tests/testdata/npm/cjs_with_deps/main.js diff --git a/cli/tests/testdata/npm/cjs_with_deps/main.out b/tests/testdata/npm/cjs_with_deps/main.out index aac21abba..aac21abba 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main.out +++ b/tests/testdata/npm/cjs_with_deps/main.out diff --git a/cli/tests/testdata/npm/cjs_with_deps/main_info.out b/tests/testdata/npm/cjs_with_deps/main_info.out index bcaaf1eec..bcaaf1eec 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main_info.out +++ b/tests/testdata/npm/cjs_with_deps/main_info.out diff --git a/cli/tests/testdata/npm/cjs_with_deps/main_info_json.out b/tests/testdata/npm/cjs_with_deps/main_info_json.out index fd850b8a1..fd850b8a1 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main_info_json.out +++ b/tests/testdata/npm/cjs_with_deps/main_info_json.out diff --git a/cli/tests/testdata/npm/cjs_with_deps/main_node_modules.out b/tests/testdata/npm/cjs_with_deps/main_node_modules.out index 548f567f1..548f567f1 100644 --- a/cli/tests/testdata/npm/cjs_with_deps/main_node_modules.out +++ b/tests/testdata/npm/cjs_with_deps/main_node_modules.out diff --git a/cli/tests/testdata/npm/cjs_yargs/main.js b/tests/testdata/npm/cjs_yargs/main.js index 832fd053c..832fd053c 100644 --- a/cli/tests/testdata/npm/cjs_yargs/main.js +++ b/tests/testdata/npm/cjs_yargs/main.js diff --git a/cli/tests/testdata/npm/cjs_yargs/main.out b/tests/testdata/npm/cjs_yargs/main.out index 422cbb134..422cbb134 100644 --- a/cli/tests/testdata/npm/cjs_yargs/main.out +++ b/tests/testdata/npm/cjs_yargs/main.out diff --git a/cli/tests/testdata/npm/compare_globals/main.out b/tests/testdata/npm/compare_globals/main.out index 0e366fae7..0e366fae7 100644 --- a/cli/tests/testdata/npm/compare_globals/main.out +++ b/tests/testdata/npm/compare_globals/main.out diff --git a/cli/tests/testdata/npm/compare_globals/main.ts b/tests/testdata/npm/compare_globals/main.ts index 6f7b9ef8e..6f7b9ef8e 100644 --- a/cli/tests/testdata/npm/compare_globals/main.ts +++ b/tests/testdata/npm/compare_globals/main.ts diff --git a/cli/tests/testdata/npm/conditional_exports/main.js b/tests/testdata/npm/conditional_exports/main.js index 52b78bc22..52b78bc22 100644 --- a/cli/tests/testdata/npm/conditional_exports/main.js +++ b/tests/testdata/npm/conditional_exports/main.js diff --git a/cli/tests/testdata/npm/conditional_exports/main.out b/tests/testdata/npm/conditional_exports/main.out index dbd1b87fe..dbd1b87fe 100644 --- a/cli/tests/testdata/npm/conditional_exports/main.out +++ b/tests/testdata/npm/conditional_exports/main.out diff --git a/cli/tests/testdata/npm/conditional_exports/main_node_modules.out b/tests/testdata/npm/conditional_exports/main_node_modules.out index 460aec0f1..460aec0f1 100644 --- a/cli/tests/testdata/npm/conditional_exports/main_node_modules.out +++ b/tests/testdata/npm/conditional_exports/main_node_modules.out diff --git a/cli/tests/testdata/npm/create_require/main.out b/tests/testdata/npm/create_require/main.out index 70b0415b3..70b0415b3 100644 --- a/cli/tests/testdata/npm/create_require/main.out +++ b/tests/testdata/npm/create_require/main.out diff --git a/cli/tests/testdata/npm/create_require/main.ts b/tests/testdata/npm/create_require/main.ts index 625c734aa..625c734aa 100644 --- a/cli/tests/testdata/npm/create_require/main.ts +++ b/tests/testdata/npm/create_require/main.ts diff --git a/cli/tests/testdata/npm/d_ext/main.out b/tests/testdata/npm/d_ext/main.out index e96c6e392..e96c6e392 100644 --- a/cli/tests/testdata/npm/d_ext/main.out +++ b/tests/testdata/npm/d_ext/main.out diff --git a/cli/tests/testdata/npm/d_ext/main.ts b/tests/testdata/npm/d_ext/main.ts index c92dbe065..c92dbe065 100644 --- a/cli/tests/testdata/npm/d_ext/main.ts +++ b/tests/testdata/npm/d_ext/main.ts diff --git a/cli/tests/testdata/npm/deno_cache.out b/tests/testdata/npm/deno_cache.out index e2e68b7bb..e2e68b7bb 100644 --- a/cli/tests/testdata/npm/deno_cache.out +++ b/tests/testdata/npm/deno_cache.out diff --git a/cli/tests/testdata/npm/deno_run_cjs.out b/tests/testdata/npm/deno_run_cjs.out index ffe7cbd89..ffe7cbd89 100644 --- a/cli/tests/testdata/npm/deno_run_cjs.out +++ b/tests/testdata/npm/deno_run_cjs.out diff --git a/cli/tests/testdata/npm/deno_run_cowsay.out b/tests/testdata/npm/deno_run_cowsay.out index 46de82730..46de82730 100644 --- a/cli/tests/testdata/npm/deno_run_cowsay.out +++ b/tests/testdata/npm/deno_run_cowsay.out diff --git a/cli/tests/testdata/npm/deno_run_cowsay_no_permissions.out b/tests/testdata/npm/deno_run_cowsay_no_permissions.out index 206ef1484..206ef1484 100644 --- a/cli/tests/testdata/npm/deno_run_cowsay_no_permissions.out +++ b/tests/testdata/npm/deno_run_cowsay_no_permissions.out diff --git a/cli/tests/testdata/npm/deno_run_cowthink.out b/tests/testdata/npm/deno_run_cowthink.out index 8dd990ed6..8dd990ed6 100644 --- a/cli/tests/testdata/npm/deno_run_cowthink.out +++ b/tests/testdata/npm/deno_run_cowthink.out diff --git a/cli/tests/testdata/npm/deno_run_esm.out b/tests/testdata/npm/deno_run_esm.out index ffe7cbd89..ffe7cbd89 100644 --- a/cli/tests/testdata/npm/deno_run_esm.out +++ b/tests/testdata/npm/deno_run_esm.out diff --git a/cli/tests/testdata/npm/deno_run_no_bin_entrypoint.out b/tests/testdata/npm/deno_run_no_bin_entrypoint.out index 73bddfecf..73bddfecf 100644 --- a/cli/tests/testdata/npm/deno_run_no_bin_entrypoint.out +++ b/tests/testdata/npm/deno_run_no_bin_entrypoint.out diff --git a/cli/tests/testdata/npm/deno_run_no_bin_entrypoint_non_existent_subpath.out b/tests/testdata/npm/deno_run_no_bin_entrypoint_non_existent_subpath.out index ea5ee3d35..ea5ee3d35 100644 --- a/cli/tests/testdata/npm/deno_run_no_bin_entrypoint_non_existent_subpath.out +++ b/tests/testdata/npm/deno_run_no_bin_entrypoint_non_existent_subpath.out diff --git a/cli/tests/testdata/npm/deno_run_no_ext.out b/tests/testdata/npm/deno_run_no_ext.out index ffe7cbd89..ffe7cbd89 100644 --- a/cli/tests/testdata/npm/deno_run_no_ext.out +++ b/tests/testdata/npm/deno_run_no_ext.out diff --git a/cli/tests/testdata/npm/deno_run_non_existent.out b/tests/testdata/npm/deno_run_non_existent.out index 47021e00c..47021e00c 100644 --- a/cli/tests/testdata/npm/deno_run_non_existent.out +++ b/tests/testdata/npm/deno_run_non_existent.out diff --git a/cli/tests/testdata/npm/deno_run_special_chars_in_bin_name.out b/tests/testdata/npm/deno_run_special_chars_in_bin_name.out index ffe7cbd89..ffe7cbd89 100644 --- a/cli/tests/testdata/npm/deno_run_special_chars_in_bin_name.out +++ b/tests/testdata/npm/deno_run_special_chars_in_bin_name.out diff --git a/cli/tests/testdata/npm/different_nested_dep/main.js b/tests/testdata/npm/different_nested_dep/main.js index 5677eb094..5677eb094 100644 --- a/cli/tests/testdata/npm/different_nested_dep/main.js +++ b/tests/testdata/npm/different_nested_dep/main.js diff --git a/cli/tests/testdata/npm/different_nested_dep/main.out b/tests/testdata/npm/different_nested_dep/main.out index 1191247b6..1191247b6 100644 --- a/cli/tests/testdata/npm/different_nested_dep/main.out +++ b/tests/testdata/npm/different_nested_dep/main.out diff --git a/cli/tests/testdata/npm/different_nested_dep/package.json b/tests/testdata/npm/different_nested_dep/package.json index c20425851..c20425851 100644 --- a/cli/tests/testdata/npm/different_nested_dep/package.json +++ b/tests/testdata/npm/different_nested_dep/package.json diff --git a/cli/tests/testdata/npm/directory_import/folder_index_js.out b/tests/testdata/npm/directory_import/folder_index_js.out index 72f285fc0..72f285fc0 100644 --- a/cli/tests/testdata/npm/directory_import/folder_index_js.out +++ b/tests/testdata/npm/directory_import/folder_index_js.out diff --git a/cli/tests/testdata/npm/directory_import/folder_index_js.ts b/tests/testdata/npm/directory_import/folder_index_js.ts index b0d51fcd9..b0d51fcd9 100644 --- a/cli/tests/testdata/npm/directory_import/folder_index_js.ts +++ b/tests/testdata/npm/directory_import/folder_index_js.ts diff --git a/cli/tests/testdata/npm/directory_import/folder_no_index.out b/tests/testdata/npm/directory_import/folder_no_index.out index 86ac88207..86ac88207 100644 --- a/cli/tests/testdata/npm/directory_import/folder_no_index.out +++ b/tests/testdata/npm/directory_import/folder_no_index.out diff --git a/cli/tests/testdata/npm/directory_import/folder_no_index.ts b/tests/testdata/npm/directory_import/folder_no_index.ts index 4c5fb7ec0..4c5fb7ec0 100644 --- a/cli/tests/testdata/npm/directory_import/folder_no_index.ts +++ b/tests/testdata/npm/directory_import/folder_no_index.ts diff --git a/cli/tests/testdata/npm/dual_cjs_esm/main.out b/tests/testdata/npm/dual_cjs_esm/main.out index 32e232f11..32e232f11 100644 --- a/cli/tests/testdata/npm/dual_cjs_esm/main.out +++ b/tests/testdata/npm/dual_cjs_esm/main.out diff --git a/cli/tests/testdata/npm/dual_cjs_esm/main.ts b/tests/testdata/npm/dual_cjs_esm/main.ts index 4f3b79667..4f3b79667 100644 --- a/cli/tests/testdata/npm/dual_cjs_esm/main.ts +++ b/tests/testdata/npm/dual_cjs_esm/main.ts diff --git a/cli/tests/testdata/npm/dynamic_import/main.out b/tests/testdata/npm/dynamic_import/main.out index cefb3ad44..cefb3ad44 100644 --- a/cli/tests/testdata/npm/dynamic_import/main.out +++ b/tests/testdata/npm/dynamic_import/main.out diff --git a/cli/tests/testdata/npm/dynamic_import/main.ts b/tests/testdata/npm/dynamic_import/main.ts index 8b850a8ee..8b850a8ee 100644 --- a/cli/tests/testdata/npm/dynamic_import/main.ts +++ b/tests/testdata/npm/dynamic_import/main.ts diff --git a/cli/tests/testdata/npm/dynamic_import/other.ts b/tests/testdata/npm/dynamic_import/other.ts index 008f8833e..008f8833e 100644 --- a/cli/tests/testdata/npm/dynamic_import/other.ts +++ b/tests/testdata/npm/dynamic_import/other.ts diff --git a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/add.ts b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/add.ts index 3b399665d..3b399665d 100644 --- a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/add.ts +++ b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/add.ts diff --git a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.out b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.out index 81d7aba8a..81d7aba8a 100644 --- a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.out +++ b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.out diff --git a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.ts b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.ts index 4d5deec48..4d5deec48 100644 --- a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.ts +++ b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/main.ts diff --git a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/subtract.mts b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/subtract.mts index 4bf634170..4bf634170 100644 --- a/cli/tests/testdata/npm/dynamic_import_deno_ts_from_npm/subtract.mts +++ b/tests/testdata/npm/dynamic_import_deno_ts_from_npm/subtract.mts diff --git a/cli/tests/testdata/npm/dynamic_import_invalid_package_name/main.out b/tests/testdata/npm/dynamic_import_invalid_package_name/main.out index 0e9de5f25..0e9de5f25 100644 --- a/cli/tests/testdata/npm/dynamic_import_invalid_package_name/main.out +++ b/tests/testdata/npm/dynamic_import_invalid_package_name/main.out diff --git a/cli/tests/testdata/npm/dynamic_import_invalid_package_name/main.ts b/tests/testdata/npm/dynamic_import_invalid_package_name/main.ts index 368ccc282..368ccc282 100644 --- a/cli/tests/testdata/npm/dynamic_import_invalid_package_name/main.ts +++ b/tests/testdata/npm/dynamic_import_invalid_package_name/main.ts diff --git a/cli/tests/testdata/npm/dynamic_import_json/main.js b/tests/testdata/npm/dynamic_import_json/main.js index 6d8abfc9e..6d8abfc9e 100644 --- a/cli/tests/testdata/npm/dynamic_import_json/main.js +++ b/tests/testdata/npm/dynamic_import_json/main.js diff --git a/cli/tests/testdata/npm/dynamic_import_json/main.out b/tests/testdata/npm/dynamic_import_json/main.out index 07f48e8a5..07f48e8a5 100644 --- a/cli/tests/testdata/npm/dynamic_import_json/main.out +++ b/tests/testdata/npm/dynamic_import_json/main.out diff --git a/cli/tests/testdata/npm/dynamic_import_reload_same_package/main.out b/tests/testdata/npm/dynamic_import_reload_same_package/main.out index 918e7f5e8..918e7f5e8 100644 --- a/cli/tests/testdata/npm/dynamic_import_reload_same_package/main.out +++ b/tests/testdata/npm/dynamic_import_reload_same_package/main.out diff --git a/cli/tests/testdata/npm/dynamic_import_reload_same_package/main.ts b/tests/testdata/npm/dynamic_import_reload_same_package/main.ts index 7c7ee7d55..7c7ee7d55 100644 --- a/cli/tests/testdata/npm/dynamic_import_reload_same_package/main.ts +++ b/tests/testdata/npm/dynamic_import_reload_same_package/main.ts diff --git a/cli/tests/testdata/npm/dynamic_import_reload_same_package/other.ts b/tests/testdata/npm/dynamic_import_reload_same_package/other.ts index 28e3da14f..28e3da14f 100644 --- a/cli/tests/testdata/npm/dynamic_import_reload_same_package/other.ts +++ b/tests/testdata/npm/dynamic_import_reload_same_package/other.ts diff --git a/cli/tests/testdata/npm/env_var_re_export/main.js b/tests/testdata/npm/env_var_re_export/main.js index ed91487a0..ed91487a0 100644 --- a/cli/tests/testdata/npm/env_var_re_export/main.js +++ b/tests/testdata/npm/env_var_re_export/main.js diff --git a/cli/tests/testdata/npm/error_version_after_subpath/main.js b/tests/testdata/npm/error_version_after_subpath/main.js index 77c7a017c..77c7a017c 100644 --- a/cli/tests/testdata/npm/error_version_after_subpath/main.js +++ b/tests/testdata/npm/error_version_after_subpath/main.js diff --git a/cli/tests/testdata/npm/error_version_after_subpath/main.out b/tests/testdata/npm/error_version_after_subpath/main.out index 0cdd1b6da..0cdd1b6da 100644 --- a/cli/tests/testdata/npm/error_version_after_subpath/main.out +++ b/tests/testdata/npm/error_version_after_subpath/main.out diff --git a/cli/tests/testdata/npm/esm/main.js b/tests/testdata/npm/esm/main.js index 0f1fa2590..0f1fa2590 100644 --- a/cli/tests/testdata/npm/esm/main.js +++ b/tests/testdata/npm/esm/main.js diff --git a/cli/tests/testdata/npm/esm/main.out b/tests/testdata/npm/esm/main.out index 2010a5b73..2010a5b73 100644 --- a/cli/tests/testdata/npm/esm/main.out +++ b/tests/testdata/npm/esm/main.out diff --git a/cli/tests/testdata/npm/esm/test.js b/tests/testdata/npm/esm/test.js index b9c91c715..b9c91c715 100644 --- a/cli/tests/testdata/npm/esm/test.js +++ b/tests/testdata/npm/esm/test.js diff --git a/cli/tests/testdata/npm/esm/test.out b/tests/testdata/npm/esm/test.out index a87924424..a87924424 100644 --- a/cli/tests/testdata/npm/esm/test.out +++ b/tests/testdata/npm/esm/test.out diff --git a/cli/tests/testdata/npm/esm_import_cjs_default/main.out b/tests/testdata/npm/esm_import_cjs_default/main.out index 0f6a61e34..0f6a61e34 100644 --- a/cli/tests/testdata/npm/esm_import_cjs_default/main.out +++ b/tests/testdata/npm/esm_import_cjs_default/main.out diff --git a/cli/tests/testdata/npm/esm_import_cjs_default/main.ts b/tests/testdata/npm/esm_import_cjs_default/main.ts index f9c3280e5..f9c3280e5 100644 --- a/cli/tests/testdata/npm/esm_import_cjs_default/main.ts +++ b/tests/testdata/npm/esm_import_cjs_default/main.ts diff --git a/cli/tests/testdata/npm/file_dts_dmts_dcts/main.out b/tests/testdata/npm/file_dts_dmts_dcts/main.out index c92043f8b..c92043f8b 100644 --- a/cli/tests/testdata/npm/file_dts_dmts_dcts/main.out +++ b/tests/testdata/npm/file_dts_dmts_dcts/main.out diff --git a/cli/tests/testdata/npm/file_dts_dmts_dcts/main.ts b/tests/testdata/npm/file_dts_dmts_dcts/main.ts index 63686e2d3..63686e2d3 100644 --- a/cli/tests/testdata/npm/file_dts_dmts_dcts/main.ts +++ b/tests/testdata/npm/file_dts_dmts_dcts/main.ts diff --git a/cli/tests/testdata/npm/import_json/main.js b/tests/testdata/npm/import_json/main.js index b752bdef8..b752bdef8 100644 --- a/cli/tests/testdata/npm/import_json/main.js +++ b/tests/testdata/npm/import_json/main.js diff --git a/cli/tests/testdata/npm/import_json/main.out b/tests/testdata/npm/import_json/main.out index 7db7ec4ea..7db7ec4ea 100644 --- a/cli/tests/testdata/npm/import_json/main.out +++ b/tests/testdata/npm/import_json/main.out diff --git a/cli/tests/testdata/npm/import_map/import_map.json b/tests/testdata/npm/import_map/import_map.json index 1c3baacd1..1c3baacd1 100644 --- a/cli/tests/testdata/npm/import_map/import_map.json +++ b/tests/testdata/npm/import_map/import_map.json diff --git a/cli/tests/testdata/npm/import_map/main.js b/tests/testdata/npm/import_map/main.js index e354b7e92..e354b7e92 100644 --- a/cli/tests/testdata/npm/import_map/main.js +++ b/tests/testdata/npm/import_map/main.js diff --git a/cli/tests/testdata/npm/import_map/main.out b/tests/testdata/npm/import_map/main.out index a3d1d9f3a..a3d1d9f3a 100644 --- a/cli/tests/testdata/npm/import_map/main.out +++ b/tests/testdata/npm/import_map/main.out diff --git a/cli/tests/testdata/npm/imports_package_json/import_not_defined.js b/tests/testdata/npm/imports_package_json/import_not_defined.js index dc4d2df16..dc4d2df16 100644 --- a/cli/tests/testdata/npm/imports_package_json/import_not_defined.js +++ b/tests/testdata/npm/imports_package_json/import_not_defined.js diff --git a/cli/tests/testdata/npm/imports_package_json/import_not_defined.out b/tests/testdata/npm/imports_package_json/import_not_defined.out index 3580d9007..3580d9007 100644 --- a/cli/tests/testdata/npm/imports_package_json/import_not_defined.out +++ b/tests/testdata/npm/imports_package_json/import_not_defined.out diff --git a/cli/tests/testdata/npm/imports_package_json/main.js b/tests/testdata/npm/imports_package_json/main.js index 53090dd94..53090dd94 100644 --- a/cli/tests/testdata/npm/imports_package_json/main.js +++ b/tests/testdata/npm/imports_package_json/main.js diff --git a/cli/tests/testdata/npm/imports_package_json/main.out b/tests/testdata/npm/imports_package_json/main.out index 9f702b96b..9f702b96b 100644 --- a/cli/tests/testdata/npm/imports_package_json/main.out +++ b/tests/testdata/npm/imports_package_json/main.out diff --git a/cli/tests/testdata/npm/imports_package_json/package.json b/tests/testdata/npm/imports_package_json/package.json index cb6a08d1a..cb6a08d1a 100644 --- a/cli/tests/testdata/npm/imports_package_json/package.json +++ b/tests/testdata/npm/imports_package_json/package.json diff --git a/cli/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.js b/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.js index f1097aa06..f1097aa06 100644 --- a/cli/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.js +++ b/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.js diff --git a/cli/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.out b/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.out index 04a21c99e..04a21c99e 100644 --- a/cli/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.out +++ b/tests/testdata/npm/imports_package_json/sub_path_import_not_defined.out diff --git a/cli/tests/testdata/npm/info/chalk.out b/tests/testdata/npm/info/chalk.out index 63fa20da5..63fa20da5 100644 --- a/cli/tests/testdata/npm/info/chalk.out +++ b/tests/testdata/npm/info/chalk.out diff --git a/cli/tests/testdata/npm/info/chalk_json.out b/tests/testdata/npm/info/chalk_json.out index bffed4ad4..bffed4ad4 100644 --- a/cli/tests/testdata/npm/info/chalk_json.out +++ b/tests/testdata/npm/info/chalk_json.out diff --git a/cli/tests/testdata/npm/invalid_package_name/main.js b/tests/testdata/npm/invalid_package_name/main.js index 1e3783054..1e3783054 100644 --- a/cli/tests/testdata/npm/invalid_package_name/main.js +++ b/tests/testdata/npm/invalid_package_name/main.js diff --git a/cli/tests/testdata/npm/invalid_package_name/main.out b/tests/testdata/npm/invalid_package_name/main.out index b4a421bd7..b4a421bd7 100644 --- a/cli/tests/testdata/npm/invalid_package_name/main.out +++ b/tests/testdata/npm/invalid_package_name/main.out diff --git a/cli/tests/testdata/npm/local_dir_resolves_symlinks/index.js b/tests/testdata/npm/local_dir_resolves_symlinks/index.js index 72d8913f5..72d8913f5 100644 --- a/cli/tests/testdata/npm/local_dir_resolves_symlinks/index.js +++ b/tests/testdata/npm/local_dir_resolves_symlinks/index.js diff --git a/cli/tests/testdata/npm/local_dir_resolves_symlinks/index.out b/tests/testdata/npm/local_dir_resolves_symlinks/index.out index 25d44c6b8..25d44c6b8 100644 --- a/cli/tests/testdata/npm/local_dir_resolves_symlinks/index.out +++ b/tests/testdata/npm/local_dir_resolves_symlinks/index.out diff --git a/cli/tests/testdata/npm/local_dir_resolves_symlinks/package.json b/tests/testdata/npm/local_dir_resolves_symlinks/package.json index 4c974022e..4c974022e 100644 --- a/cli/tests/testdata/npm/local_dir_resolves_symlinks/package.json +++ b/tests/testdata/npm/local_dir_resolves_symlinks/package.json diff --git a/cli/tests/testdata/npm/lock_file/lock.json b/tests/testdata/npm/lock_file/lock.json index 57253314e..57253314e 100644 --- a/cli/tests/testdata/npm/lock_file/lock.json +++ b/tests/testdata/npm/lock_file/lock.json diff --git a/cli/tests/testdata/npm/lock_file/main.js b/tests/testdata/npm/lock_file/main.js index a7b5960ca..a7b5960ca 100644 --- a/cli/tests/testdata/npm/lock_file/main.js +++ b/tests/testdata/npm/lock_file/main.js diff --git a/cli/tests/testdata/npm/lock_file/main.out b/tests/testdata/npm/lock_file/main.out index 65e881be6..65e881be6 100644 --- a/cli/tests/testdata/npm/lock_file/main.out +++ b/tests/testdata/npm/lock_file/main.out diff --git a/cli/tests/testdata/npm/mixed_case_package_name/global.out b/tests/testdata/npm/mixed_case_package_name/global.out index 33d09890b..33d09890b 100644 --- a/cli/tests/testdata/npm/mixed_case_package_name/global.out +++ b/tests/testdata/npm/mixed_case_package_name/global.out diff --git a/cli/tests/testdata/npm/mixed_case_package_name/global.ts b/tests/testdata/npm/mixed_case_package_name/global.ts index a721b3d78..a721b3d78 100644 --- a/cli/tests/testdata/npm/mixed_case_package_name/global.ts +++ b/tests/testdata/npm/mixed_case_package_name/global.ts diff --git a/cli/tests/testdata/npm/mixed_case_package_name/local.out b/tests/testdata/npm/mixed_case_package_name/local.out index 782107eb1..782107eb1 100644 --- a/cli/tests/testdata/npm/mixed_case_package_name/local.out +++ b/tests/testdata/npm/mixed_case_package_name/local.out diff --git a/cli/tests/testdata/npm/mixed_case_package_name/local.ts b/tests/testdata/npm/mixed_case_package_name/local.ts index 6ca6cb581..6ca6cb581 100644 --- a/cli/tests/testdata/npm/mixed_case_package_name/local.ts +++ b/tests/testdata/npm/mixed_case_package_name/local.ts diff --git a/cli/tests/testdata/npm/no_npm_after_first_run/main1.ts b/tests/testdata/npm/no_npm_after_first_run/main1.ts index 1ccc441a1..1ccc441a1 100644 --- a/cli/tests/testdata/npm/no_npm_after_first_run/main1.ts +++ b/tests/testdata/npm/no_npm_after_first_run/main1.ts diff --git a/cli/tests/testdata/npm/no_types_cjs/main.ts b/tests/testdata/npm/no_types_cjs/main.ts index 32458e839..32458e839 100644 --- a/cli/tests/testdata/npm/no_types_cjs/main.ts +++ b/tests/testdata/npm/no_types_cjs/main.ts diff --git a/cli/tests/testdata/npm/no_types_in_conditional_exports/main.out b/tests/testdata/npm/no_types_in_conditional_exports/main.out index 3c856ac09..3c856ac09 100644 --- a/cli/tests/testdata/npm/no_types_in_conditional_exports/main.out +++ b/tests/testdata/npm/no_types_in_conditional_exports/main.out diff --git a/cli/tests/testdata/npm/no_types_in_conditional_exports/main.ts b/tests/testdata/npm/no_types_in_conditional_exports/main.ts index 7ec2f18fd..7ec2f18fd 100644 --- a/cli/tests/testdata/npm/no_types_in_conditional_exports/main.ts +++ b/tests/testdata/npm/no_types_in_conditional_exports/main.ts diff --git a/cli/tests/testdata/npm/node_modules_deno_node_modules/main.out b/tests/testdata/npm/node_modules_deno_node_modules/main.out index 1ebdb2dd5..1ebdb2dd5 100644 --- a/cli/tests/testdata/npm/node_modules_deno_node_modules/main.out +++ b/tests/testdata/npm/node_modules_deno_node_modules/main.out diff --git a/cli/tests/testdata/npm/node_modules_deno_node_modules/main.ts b/tests/testdata/npm/node_modules_deno_node_modules/main.ts index 6e4a32d8e..6e4a32d8e 100644 --- a/cli/tests/testdata/npm/node_modules_deno_node_modules/main.ts +++ b/tests/testdata/npm/node_modules_deno_node_modules/main.ts diff --git a/cli/tests/testdata/npm/node_modules_import/main.out b/tests/testdata/npm/node_modules_import/main.out index 083edaac2..083edaac2 100644 --- a/cli/tests/testdata/npm/node_modules_import/main.out +++ b/tests/testdata/npm/node_modules_import/main.out diff --git a/cli/tests/testdata/npm/node_modules_import/main.ts b/tests/testdata/npm/node_modules_import/main.ts index 848ca0f81..848ca0f81 100644 --- a/cli/tests/testdata/npm/node_modules_import/main.ts +++ b/tests/testdata/npm/node_modules_import/main.ts diff --git a/cli/tests/testdata/npm/node_modules_import/main_check.out b/tests/testdata/npm/node_modules_import/main_check.out index cf7cc110d..cf7cc110d 100644 --- a/cli/tests/testdata/npm/node_modules_import/main_check.out +++ b/tests/testdata/npm/node_modules_import/main_check.out diff --git a/cli/tests/testdata/npm/node_modules_import/package.json b/tests/testdata/npm/node_modules_import/package.json index ed77298e0..ed77298e0 100644 --- a/cli/tests/testdata/npm/node_modules_import/package.json +++ b/tests/testdata/npm/node_modules_import/package.json diff --git a/cli/tests/testdata/npm/nonexistent_file/main.js b/tests/testdata/npm/nonexistent_file/main.js index c480b0548..c480b0548 100644 --- a/cli/tests/testdata/npm/nonexistent_file/main.js +++ b/tests/testdata/npm/nonexistent_file/main.js diff --git a/cli/tests/testdata/npm/nonexistent_file/main.out b/tests/testdata/npm/nonexistent_file/main.out index baa79b1ce..baa79b1ce 100644 --- a/cli/tests/testdata/npm/nonexistent_file/main.out +++ b/tests/testdata/npm/nonexistent_file/main.out diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main.out b/tests/testdata/npm/peer_deps_with_copied_folders/main.out index 32fa3b76f..32fa3b76f 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main.out +++ b/tests/testdata/npm/peer_deps_with_copied_folders/main.out diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main.ts b/tests/testdata/npm/peer_deps_with_copied_folders/main.ts index a8ea8104a..a8ea8104a 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main.ts +++ b/tests/testdata/npm/peer_deps_with_copied_folders/main.ts diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out b/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out index 638f9328d..638f9328d 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out +++ b/tests/testdata/npm/peer_deps_with_copied_folders/main_info.out diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out b/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out index a4306a6d5..a4306a6d5 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out +++ b/tests/testdata/npm/peer_deps_with_copied_folders/main_info_json.out diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules.out b/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules.out index 02b5cbafd..02b5cbafd 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules.out +++ b/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules.out diff --git a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules_reload.out b/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules_reload.out index ed73c6cc2..ed73c6cc2 100644 --- a/cli/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules_reload.out +++ b/tests/testdata/npm/peer_deps_with_copied_folders/main_node_modules_reload.out diff --git a/cli/tests/testdata/npm/permissions_outside_package/foo/config.js b/tests/testdata/npm/permissions_outside_package/foo/config.js index e667790d2..e667790d2 100644 --- a/cli/tests/testdata/npm/permissions_outside_package/foo/config.js +++ b/tests/testdata/npm/permissions_outside_package/foo/config.js diff --git a/cli/tests/testdata/npm/permissions_outside_package/foo/package.json b/tests/testdata/npm/permissions_outside_package/foo/package.json index cc049e6ce..cc049e6ce 100644 --- a/cli/tests/testdata/npm/permissions_outside_package/foo/package.json +++ b/tests/testdata/npm/permissions_outside_package/foo/package.json diff --git a/cli/tests/testdata/npm/permissions_outside_package/main.out b/tests/testdata/npm/permissions_outside_package/main.out index 4edf66ae9..4edf66ae9 100644 --- a/cli/tests/testdata/npm/permissions_outside_package/main.out +++ b/tests/testdata/npm/permissions_outside_package/main.out diff --git a/cli/tests/testdata/npm/permissions_outside_package/main.ts b/tests/testdata/npm/permissions_outside_package/main.ts index b0b82b626..b0b82b626 100644 --- a/cli/tests/testdata/npm/permissions_outside_package/main.ts +++ b/tests/testdata/npm/permissions_outside_package/main.ts diff --git a/cli/tests/testdata/npm/registry/@babel/parser/parser-7.19.0.tgz b/tests/testdata/npm/registry/@babel/parser/parser-7.19.0.tgz Binary files differindex 37a6a69e1..37a6a69e1 100644 --- a/cli/tests/testdata/npm/registry/@babel/parser/parser-7.19.0.tgz +++ b/tests/testdata/npm/registry/@babel/parser/parser-7.19.0.tgz diff --git a/cli/tests/testdata/npm/registry/@babel/parser/registry.json b/tests/testdata/npm/registry/@babel/parser/registry.json index 804d6af3c..804d6af3c 100644 --- a/cli/tests/testdata/npm/registry/@babel/parser/registry.json +++ b/tests/testdata/npm/registry/@babel/parser/registry.json diff --git a/cli/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/index.js index f4e8d9d29..f4e8d9d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/package.json index e897d0023..e897d0023 100644 --- a/cli/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/CAPITALS/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/index.js index fe1cfe547..fe1cfe547 100644 --- a/cli/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/package.json index 2a36cb357..2a36cb357 100644 --- a/cli/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/MixedCase/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/0.5.0/cli.mjs b/tests/testdata/npm/registry/@denotest/bin/0.5.0/cli.mjs index 0ae8e9190..0ae8e9190 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/0.5.0/cli.mjs +++ b/tests/testdata/npm/registry/@denotest/bin/0.5.0/cli.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/0.5.0/package.json b/tests/testdata/npm/registry/@denotest/bin/0.5.0/package.json index 1b077a52e..1b077a52e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/0.5.0/package.json +++ b/tests/testdata/npm/registry/@denotest/bin/0.5.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli-cjs.js b/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli-cjs.js index 7b6ba2724..7b6ba2724 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli-cjs.js +++ b/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli-cjs.js diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli.mjs b/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli.mjs index 0ae8e9190..0ae8e9190 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli.mjs +++ b/tests/testdata/npm/registry/@denotest/bin/0.6.0/cli.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/package.json b/tests/testdata/npm/registry/@denotest/bin/0.6.0/package.json index a9ff2d946..a9ff2d946 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/0.6.0/package.json +++ b/tests/testdata/npm/registry/@denotest/bin/0.6.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-cjs.js b/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-cjs.js index 7b6ba2724..7b6ba2724 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-cjs.js +++ b/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-cjs.js diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-no-ext b/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-no-ext index 7b6ba2724..7b6ba2724 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-no-ext +++ b/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli-no-ext diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli.mjs b/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli.mjs index 0ae8e9190..0ae8e9190 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli.mjs +++ b/tests/testdata/npm/registry/@denotest/bin/1.0.0/cli.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/bin/1.0.0/package.json index 27118c21a..27118c21a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/bin/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/bin/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/index.js index 03ecfc377..03ecfc377 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/package.json index 3b450e0d9..3b450e0d9 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/binary-package-linux/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/index.js index ac8c91f50..ac8c91f50 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/package.json index 02916e65b..02916e65b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/binary-package-mac/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/index.js index 57344ca00..57344ca00 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/package.json index 1c0af637d..1c0af637d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/binary-package-windows/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/index.js index 5870118e7..5870118e7 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/package.json index dc8859bb4..dc8859bb4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/binary-package/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts index 06dfef10d..06dfef10d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js index 1aca4250b..1aca4250b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json index 6eabea3af..6eabea3af 100644 --- a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts index 9a96451a5..9a96451a5 100644 --- a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js index 57626060d..57626060d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json index ecd5970a4..ecd5970a4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/breaking-change-between-versions/2.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/index.js index 140f5ef21..140f5ef21 100644 --- a/cli/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/package.json index 5167f18a3..5167f18a3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/builtin-module-module/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.d.ts index bfb0483c2..bfb0483c2 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.js index 7eb6b784d..7eb6b784d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir.d.ts b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir.d.ts index e7254c16c..e7254c16c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir.d.ts +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir/index.js b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir/index.js index 56259f22d..56259f22d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir/index.js +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/other_dir/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/package.json index 295920a8f..295920a8f 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.d.ts b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.d.ts index f41a696fd..f41a696fd 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.js b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.js index 3dfac4c23..3dfac4c23 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.js +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/lib.d.ts b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/lib.d.ts index e5834b52b..e5834b52b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/lib.d.ts +++ b/tests/testdata/npm/registry/@denotest/check-error/1.0.0/sub_dir/lib.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/forked_path.js b/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/forked_path.js index aaa106315..aaa106315 100644 --- a/cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/forked_path.js +++ b/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/forked_path.js diff --git a/cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/index.js index 0482be404..0482be404 100644 --- a/cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/package.json index 9ab14e3f7..9ab14e3f7 100644 --- a/cli/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/child-process-fork/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.d.ts index 90fdfe5f6..90fdfe5f6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.js index ec4ece6b3..ec4ece6b3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/package.json index 8da28b919..8da28b919 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-default-export/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/index.js index 75c3f2e8a..75c3f2e8a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/package.json index fd715eeae..fd715eeae 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-invalid-name-exports/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/index.js index 5aa546d91..5aa546d91 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/other.js b/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/other.js index 810d852b0..810d852b0 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/other.js +++ b/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/other.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/package.json index 1048fe76d..1048fe76d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-local-global-decls/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.d.ts index 0e1e0337d..0e1e0337d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.js index f4e8d9d29..f4e8d9d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/package.json index 4b2e3a294..4b2e3a294 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment-number/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.d.ts index a7b50005e..a7b50005e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.js index 4c0285825..4c0285825 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/package.json index b8d3bbd2b..b8d3bbd2b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-module-export-assignment/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/index.js index 0c20973d9..0c20973d9 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/other_file.js b/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/other_file.js index 3d8f7e812..3d8f7e812 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/other_file.js +++ b/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/other_file.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/package.json index 7befb31aa..7befb31aa 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-reexport-collision/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/my_es_module.js b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/my_es_module.js index 0613f1911..0613f1911 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/my_es_module.js +++ b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/my_es_module.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/package.json b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/package.json index 3dbc1ca59..3dbc1ca59 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm_mjs.mjs b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm_mjs.mjs index 0613f1911..0613f1911 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm_mjs.mjs +++ b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/esm_mjs.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/index.js index ba630f93b..ba630f93b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/package.json index 08cd025f1..08cd025f1 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/require_mjs.js b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/require_mjs.js index ba58e1a80..ba58e1a80 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/require_mjs.js +++ b/tests/testdata/npm/registry/@denotest/cjs-require-esm-error/1.0.0/require_mjs.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/index.js index 21a9d7d7e..21a9d7d7e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/package.json index 729b8c34e..729b8c34e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-this-in-exports/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/index.js index f7164182a..f7164182a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/other.service.js b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/other.service.js index ba702a9af..ba702a9af 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/other.service.js +++ b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/other.service.js diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/package.json index c72a8ae5a..c72a8ae5a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/tslib.js b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/tslib.js index e5c2d6bc0..e5c2d6bc0 100644 --- a/cli/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/tslib.js +++ b/tests/testdata/npm/registry/@denotest/cjs-with-file-stem/1.0.0/tslib.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/cjs/index.cjs b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/cjs/index.cjs index 16895e48c..16895e48c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/cjs/index.cjs +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/cjs/index.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/bar.js b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/bar.js index 1474f5d29..1474f5d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/bar.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/bar.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/foo.js b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/foo.js index bb5284b15..bb5284b15 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/foo.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/foo.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/index.js b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/index.js index dc1ec197d..dc1ec197d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/index.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/m.js b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/m.js index fec6807ac..fec6807ac 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/m.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/client/m.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/index.js b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/index.js index 38dae7d93..38dae7d93 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/index.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/esm/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/foo.js b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/foo.js index 6060c8a67..6060c8a67 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/foo.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/foo.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/package.json index 3576e48f8..3576e48f8 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/conditional-exports-strict/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/cjs/index.cjs b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/cjs/index.cjs index 16895e48c..16895e48c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/cjs/index.cjs +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/cjs/index.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/bar.js b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/bar.js index 1474f5d29..1474f5d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/bar.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/bar.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/foo.js b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/foo.js index bb5284b15..bb5284b15 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/foo.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/foo.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/index.js b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/index.js index dc1ec197d..dc1ec197d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/index.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js index fec6807ac..fec6807ac 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/index.js b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/index.js index 38dae7d93..38dae7d93 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/index.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js index 6060c8a67..6060c8a67 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json index 5a2536aa0..5a2536aa0 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/create-require/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/create-require/1.0.0/index.js index 2ab564366..2ab564366 100644 --- a/cli/tests/testdata/npm/registry/@denotest/create-require/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/create-require/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/create-require/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/create-require/1.0.0/package.json index 00539643e..00539643e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/create-require/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/create-require/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.d.ts index 47326c0f6..47326c0f6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.js index 62b353f3d..62b353f3d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/package.json index a0702a56b..a0702a56b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/types.d.ts b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/types.d.ts index dedc54b03..dedc54b03 100644 --- a/cli/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/types.d.ts +++ b/tests/testdata/npm/registry/@denotest/d-ext/1.0.0/types.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js index aef22247d..aef22247d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json index ca58520a4..ca58520a4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js index 842e368a0..842e368a0 100644 --- a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json index 9d2e56975..9d2e56975 100644 --- a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/different-nested-dep-child/2.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js index dee5330b7..dee5330b7 100644 --- a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json index 879a4e012..879a4e012 100644 --- a/cli/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/different-nested-dep/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.cjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.cjs index 6d9b2bfc6..6d9b2bfc6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.cjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.d.ts index 4628c2774..4628c2774 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.mjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.mjs index 6d9b2bfc6..6d9b2bfc6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.mjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/index.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/package.json index d17fd887b..d17fd887b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep-missing/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.cjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.cjs index 6d9b2bfc6..6d9b2bfc6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.cjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.d.ts index 4628c2774..4628c2774 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.mjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.mjs index 6d9b2bfc6..6d9b2bfc6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.mjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/index.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/package.json index 80c69f87a..80c69f87a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm-dep/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/main.cjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/main.cjs index 51d32ff89..51d32ff89 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/main.cjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/main.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/package.json b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/package.json index 73847e365..73847e365 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/package.json +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/cjs/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.cjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.cjs index 990605527..990605527 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.cjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.cts b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.cts index f969ba996..f969ba996 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.cts +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.cts diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.mts b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.mts index f969ba996..f969ba996 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.mts +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.d.mts diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.mjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.mjs index b48b9a3a6..b48b9a3a6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.mjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/package.json index 18b72e97a..18b72e97a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.cjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.cjs index 18a22e6f1..18a22e6f1 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.cjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.mjs b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.mjs index 47e8cd516..47e8cd516 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.mjs +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/package.json b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/package.json index 149ce36a3..149ce36a3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/package.json +++ b/tests/testdata/npm/registry/@denotest/dual-cjs-esm/1.0.0/subpath/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/index.js index 4dc3831f9..4dc3831f9 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/package.json index fa970177c..fa970177c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/dynamic-import/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/dev.cjs b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/dev.cjs index cf7b90970..cf7b90970 100644 --- a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/dev.cjs +++ b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/dev.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/index.cjs b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/index.cjs index 6258d7c05..6258d7c05 100644 --- a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/index.cjs +++ b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/index.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/package.json index 84f87be0d..84f87be0d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/prod.cjs b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/prod.cjs index a84c76543..a84c76543 100644 --- a/cli/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/prod.cjs +++ b/tests/testdata/npm/registry/@denotest/env-var-re-export/1.0.0/prod.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.d.mts b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.d.mts index 29da1e6d7..29da1e6d7 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.d.mts +++ b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.d.mts diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.mjs b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.mjs index 0a44f7585..0a44f7585 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.mjs +++ b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/other.mjs b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/other.mjs index 00ed99da4..00ed99da4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/other.mjs +++ b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/other.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/package.json index 757ac2db9..757ac2db9 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/esm-basic/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/index.mjs b/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/index.mjs index 11e545ae5..11e545ae5 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/index.mjs +++ b/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/index.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/local.cjs b/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/local.cjs index 8d2772dc6..8d2772dc6 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/local.cjs +++ b/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/local.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/package.json index f757a08fb..f757a08fb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/esm-import-cjs-default/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.cjs b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.cjs index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.cjs +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.cts b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.cts index 43a5ebe9b..43a5ebe9b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.cts +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.cts diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.mts b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.mts index b762ebd4a..b762ebd4a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.mts +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.mts diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.ts b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.ts index 1d1cd270b..1d1cd270b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.ts +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.js b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.js index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.js +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.js diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.mjs b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.mjs index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.mjs +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/package.json index 1884b65e4..1884b65e4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/file-dts-dmts-dcts/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.d.ts index 1bbb82047..1bbb82047 100644 --- a/cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.js index b946bbd2a..b946bbd2a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/globals/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/globals/1.0.0/package.json index 1ce42ded4..1ce42ded4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/globals/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/globals/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/hi.js b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/hi.js index 407090812..407090812 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/hi.js +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/hi.js diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/import_not_defined.js b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/import_not_defined.js index 07864fd2c..07864fd2c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/import_not_defined.js +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/import_not_defined.js diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/main.js b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/main.js index 9e7c247b7..9e7c247b7 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/main.js +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/main.js diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/package.json index 2c294e680..2c294e680 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/bye.js b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/bye.js index 6fc719e48..6fc719e48 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/bye.js +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/bye.js diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/import_not_defined.js b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/import_not_defined.js index ffaa2b1ad..ffaa2b1ad 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/import_not_defined.js +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/import_not_defined.js diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/main.js b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/main.js index 260ca79ae..260ca79ae 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/main.js +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/main.js diff --git a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/package.json b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/package.json index 3f2c2bbd8..3f2c2bbd8 100644 --- a/cli/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/package.json +++ b/tests/testdata/npm/registry/@denotest/imports-package-json/1.0.0/sub_path/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/main.js b/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/main.js index bb6cbdb02..bb6cbdb02 100644 --- a/cli/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/main.js +++ b/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/main.js diff --git a/cli/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/package.json index 60b8a0285..60b8a0285 100644 --- a/cli/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/no-types-cjs/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo-esm.js b/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo-esm.js index 0ead93520..0ead93520 100644 --- a/cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo-esm.js +++ b/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo-esm.js diff --git a/cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo.js b/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo.js index dca03a472..dca03a472 100644 --- a/cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo.js +++ b/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/lib/foo.js diff --git a/cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/package.json index 524394480..524394480 100644 --- a/cli/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/no-types-in-conditional-exports/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/index.js index f4e8d9d29..f4e8d9d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/package.json index 0533da432..0533da432 100644 --- a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/non-existent-dep-version/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/index.js index f4e8d9d29..f4e8d9d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/package.json index 4d5f8c5a2..4d5f8c5a2 100644 --- a/cli/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/non-existent-dep/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/index.js index 636ec3c35..636ec3c35 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/package.json index 32eb49851..32eb49851 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/index.js b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/index.js index 636ec3c35..636ec3c35 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/package.json b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/package.json index 3c82c01f9..3c82c01f9 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-child/2.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/dist/index.js b/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/dist/index.js index 9a0d9730b..9a0d9730b 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/dist/index.js +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/dist/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/index.js index 7d44863df..7d44863df 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/package.json index 845ef414d..845ef414d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-grandchild/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/index.js index bd816eaba..bd816eaba 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/package.json index cedb3609e..cedb3609e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/index.js b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/index.js index 4bbffde10..4bbffde10 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/package.json b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/package.json index 90c24f875..90c24f875 100644 --- a/cli/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/peer-dep-test-peer/2.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/index.js index ec854713f..ec854713f 100644 --- a/cli/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/package.json index 447a119e4..447a119e4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/permissions-outside-package/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/index.js index 8c8c4a0fa..8c8c4a0fa 100644 --- a/cli/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/package.json index 718f1eb8c..718f1eb8c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/require-added-nm-folder/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs b/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs index 73f00fad4..73f00fad4 100644 --- a/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs +++ b/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/index.cjs diff --git a/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json index 215b561d3..215b561d3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/reserved-word-exports/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/main.mjs b/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/main.mjs index 0ae8e9190..0ae8e9190 100644 --- a/cli/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/main.mjs +++ b/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/package.json index 2dce473b5..2dce473b5 100644 --- a/cli/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/special-chars-in-bin-name/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.d.ts b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.d.ts index c3ec6ac2e..c3ec6ac2e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.js b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.js index 71a2da49a..71a2da49a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.js +++ b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_index_js/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_no_index/random_name.js b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_no_index/random_name.js index f4e8d9d29..f4e8d9d29 100644 --- a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_no_index/random_name.js +++ b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/folder_no_index/random_name.js diff --git a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/main.mjs b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/main.mjs index 358b4b09e..358b4b09e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/main.mjs +++ b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/package.json index 1402e346c..1402e346c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/sub-folders/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.d.ts index fc2199884..fc2199884 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.js b/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.js index 47ff7adb2..47ff7adb2 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.js +++ b/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/index.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/package.json index ef927cbe3..ef927cbe3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types-ambient/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.d.ts b/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.d.ts index 2341a14f0..2341a14f0 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.js b/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.js index d0c5dbc70..d0c5dbc70 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.js +++ b/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/dist/main.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/package.json index 5eb859c4e..5eb859c4e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types-entry-value-not-exists/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.d.ts b/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.d.ts index 2341a14f0..2341a14f0 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.mjs b/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.mjs index 358b4b09e..358b4b09e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.mjs +++ b/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/dist/main.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/package.json index 202a2c784..202a2c784 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types-exports-import-types/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/client.d.ts b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/client.d.ts index 2d156f5bb..2d156f5bb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/client.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/client.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/client.mjs b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/client.mjs index 938238d95..938238d95 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/client.mjs +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/client.mjs diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.d.ts b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.d.ts index f49faf22f..f49faf22f 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.js b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.js index 84f1f2c94..84f1f2c94 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.js +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-a.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.d.ts b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.d.ts index 382d1995e..382d1995e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.js b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.js index 162d4f190..162d4f190 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.js +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/dist/entry-b.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.d.ts b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.d.ts index 253279e6c..253279e6c 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.js b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.js index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.js +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-import.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-js-only.js b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-js-only.js index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-js-only.js +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-js-only.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-types.d.ts b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-types.d.ts index bd1ff702f..bd1ff702f 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-types.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/entry-types.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/package.json index cc43cf2ed..cc43cf2ed 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types-exports-subpaths/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.d.ts b/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.d.ts index 8942f08dd..8942f08dd 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.d.ts +++ b/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.js b/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.js index 63c7ef0ce..63c7ef0ce 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.js +++ b/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/dist/main.js diff --git a/cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/package.json index 6abccec98..6abccec98 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types-no-types-entry/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts index afe876c4d..afe876c4d 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/types/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json index ef927cbe3..ef927cbe3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts b/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts index 559cdb2ec..559cdb2ec 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts +++ b/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/index.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json index ef927cbe3..ef927cbe3 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts b/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts index 883cf037a..883cf037a 100644 --- a/cli/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts +++ b/tests/testdata/npm/registry/@denotest/types_imported/1.0.0/subpath.d.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/index.ts b/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/index.ts index 44b441a1e..44b441a1e 100644 --- a/cli/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/index.ts +++ b/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/index.ts diff --git a/cli/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/package.json b/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/package.json index e899f4100..e899f4100 100644 --- a/cli/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/package.json +++ b/tests/testdata/npm/registry/@denotest/typescript-file/1.0.0/package.json diff --git a/cli/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/has-package-exports-patterns-0.0.2.tgz b/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/has-package-exports-patterns-0.0.2.tgz Binary files differindex 7daff8ff1..7daff8ff1 100644 --- a/cli/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/has-package-exports-patterns-0.0.2.tgz +++ b/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/has-package-exports-patterns-0.0.2.tgz diff --git a/cli/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/registry.json b/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/registry.json index 9a0b27f3f..9a0b27f3f 100644 --- a/cli/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/registry.json +++ b/tests/testdata/npm/registry/@ljharb/has-package-exports-patterns/registry.json diff --git a/cli/tests/testdata/npm/registry/@types/node/node-18.8.2.tgz b/tests/testdata/npm/registry/@types/node/node-18.8.2.tgz Binary files differindex 8afc9d21d..8afc9d21d 100644 --- a/cli/tests/testdata/npm/registry/@types/node/node-18.8.2.tgz +++ b/tests/testdata/npm/registry/@types/node/node-18.8.2.tgz diff --git a/cli/tests/testdata/npm/registry/@types/node/registry.json b/tests/testdata/npm/registry/@types/node/registry.json index 3fff1578e..3fff1578e 100644 --- a/cli/tests/testdata/npm/registry/@types/node/registry.json +++ b/tests/testdata/npm/registry/@types/node/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-core/compiler-core-3.2.38.tgz b/tests/testdata/npm/registry/@vue/compiler-core/compiler-core-3.2.38.tgz Binary files differindex d316a32f9..d316a32f9 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-core/compiler-core-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/compiler-core/compiler-core-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-core/registry.json b/tests/testdata/npm/registry/@vue/compiler-core/registry.json index b7e9ed04a..b7e9ed04a 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-core/registry.json +++ b/tests/testdata/npm/registry/@vue/compiler-core/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-dom/compiler-dom-3.2.38.tgz b/tests/testdata/npm/registry/@vue/compiler-dom/compiler-dom-3.2.38.tgz Binary files differindex e3cd8a3a1..e3cd8a3a1 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-dom/compiler-dom-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/compiler-dom/compiler-dom-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-dom/registry.json b/tests/testdata/npm/registry/@vue/compiler-dom/registry.json index 48dfe2360..48dfe2360 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-dom/registry.json +++ b/tests/testdata/npm/registry/@vue/compiler-dom/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-sfc/compiler-sfc-3.2.38.tgz b/tests/testdata/npm/registry/@vue/compiler-sfc/compiler-sfc-3.2.38.tgz Binary files differindex a12455d3b..a12455d3b 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-sfc/compiler-sfc-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/compiler-sfc/compiler-sfc-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-sfc/registry.json b/tests/testdata/npm/registry/@vue/compiler-sfc/registry.json index ec24f27e5..ec24f27e5 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-sfc/registry.json +++ b/tests/testdata/npm/registry/@vue/compiler-sfc/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-ssr/compiler-ssr-3.2.38.tgz b/tests/testdata/npm/registry/@vue/compiler-ssr/compiler-ssr-3.2.38.tgz Binary files differindex 9c30d8ab4..9c30d8ab4 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-ssr/compiler-ssr-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/compiler-ssr/compiler-ssr-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/compiler-ssr/registry.json b/tests/testdata/npm/registry/@vue/compiler-ssr/registry.json index 53f311c77..53f311c77 100644 --- a/cli/tests/testdata/npm/registry/@vue/compiler-ssr/registry.json +++ b/tests/testdata/npm/registry/@vue/compiler-ssr/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/reactivity-transform/reactivity-transform-3.2.38.tgz b/tests/testdata/npm/registry/@vue/reactivity-transform/reactivity-transform-3.2.38.tgz Binary files differindex 3fcf21c21..3fcf21c21 100644 --- a/cli/tests/testdata/npm/registry/@vue/reactivity-transform/reactivity-transform-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/reactivity-transform/reactivity-transform-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/reactivity-transform/registry.json b/tests/testdata/npm/registry/@vue/reactivity-transform/registry.json index 1b98491a9..1b98491a9 100644 --- a/cli/tests/testdata/npm/registry/@vue/reactivity-transform/registry.json +++ b/tests/testdata/npm/registry/@vue/reactivity-transform/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/reactivity/reactivity-3.2.38.tgz b/tests/testdata/npm/registry/@vue/reactivity/reactivity-3.2.38.tgz Binary files differindex 9c7f17ba1..9c7f17ba1 100644 --- a/cli/tests/testdata/npm/registry/@vue/reactivity/reactivity-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/reactivity/reactivity-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/reactivity/registry.json b/tests/testdata/npm/registry/@vue/reactivity/registry.json index fe116a5b8..fe116a5b8 100644 --- a/cli/tests/testdata/npm/registry/@vue/reactivity/registry.json +++ b/tests/testdata/npm/registry/@vue/reactivity/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/runtime-core/registry.json b/tests/testdata/npm/registry/@vue/runtime-core/registry.json index 546068610..546068610 100644 --- a/cli/tests/testdata/npm/registry/@vue/runtime-core/registry.json +++ b/tests/testdata/npm/registry/@vue/runtime-core/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/runtime-core/runtime-core-3.2.38.tgz b/tests/testdata/npm/registry/@vue/runtime-core/runtime-core-3.2.38.tgz Binary files differindex 4cfa0899f..4cfa0899f 100644 --- a/cli/tests/testdata/npm/registry/@vue/runtime-core/runtime-core-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/runtime-core/runtime-core-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/runtime-dom/registry.json b/tests/testdata/npm/registry/@vue/runtime-dom/registry.json index 1e4ab2d01..1e4ab2d01 100644 --- a/cli/tests/testdata/npm/registry/@vue/runtime-dom/registry.json +++ b/tests/testdata/npm/registry/@vue/runtime-dom/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/runtime-dom/runtime-dom-3.2.38.tgz b/tests/testdata/npm/registry/@vue/runtime-dom/runtime-dom-3.2.38.tgz Binary files differindex fa6097b17..fa6097b17 100644 --- a/cli/tests/testdata/npm/registry/@vue/runtime-dom/runtime-dom-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/runtime-dom/runtime-dom-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/server-renderer/registry.json b/tests/testdata/npm/registry/@vue/server-renderer/registry.json index f910f4a0b..f910f4a0b 100644 --- a/cli/tests/testdata/npm/registry/@vue/server-renderer/registry.json +++ b/tests/testdata/npm/registry/@vue/server-renderer/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/server-renderer/server-renderer-3.2.38.tgz b/tests/testdata/npm/registry/@vue/server-renderer/server-renderer-3.2.38.tgz Binary files differindex e3d1603f5..e3d1603f5 100644 --- a/cli/tests/testdata/npm/registry/@vue/server-renderer/server-renderer-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/server-renderer/server-renderer-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/@vue/shared/registry.json b/tests/testdata/npm/registry/@vue/shared/registry.json index 55132d401..55132d401 100644 --- a/cli/tests/testdata/npm/registry/@vue/shared/registry.json +++ b/tests/testdata/npm/registry/@vue/shared/registry.json diff --git a/cli/tests/testdata/npm/registry/@vue/shared/shared-3.2.38.tgz b/tests/testdata/npm/registry/@vue/shared/shared-3.2.38.tgz Binary files differindex 99112c2dd..99112c2dd 100644 --- a/cli/tests/testdata/npm/registry/@vue/shared/shared-3.2.38.tgz +++ b/tests/testdata/npm/registry/@vue/shared/shared-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/ajv-formats/ajv-formats-2.1.1.tgz b/tests/testdata/npm/registry/ajv-formats/ajv-formats-2.1.1.tgz Binary files differindex ff6708c53..ff6708c53 100644 --- a/cli/tests/testdata/npm/registry/ajv-formats/ajv-formats-2.1.1.tgz +++ b/tests/testdata/npm/registry/ajv-formats/ajv-formats-2.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/ajv-formats/registry.json b/tests/testdata/npm/registry/ajv-formats/registry.json index a34350100..a34350100 100644 --- a/cli/tests/testdata/npm/registry/ajv-formats/registry.json +++ b/tests/testdata/npm/registry/ajv-formats/registry.json diff --git a/cli/tests/testdata/npm/registry/ajv/ajv-8.11.0.tgz b/tests/testdata/npm/registry/ajv/ajv-8.11.0.tgz Binary files differindex 57f893c52..57f893c52 100644 --- a/cli/tests/testdata/npm/registry/ajv/ajv-8.11.0.tgz +++ b/tests/testdata/npm/registry/ajv/ajv-8.11.0.tgz diff --git a/cli/tests/testdata/npm/registry/ajv/registry.json b/tests/testdata/npm/registry/ajv/registry.json index d3d3884d1..d3d3884d1 100644 --- a/cli/tests/testdata/npm/registry/ajv/registry.json +++ b/tests/testdata/npm/registry/ajv/registry.json diff --git a/cli/tests/testdata/npm/registry/ansi-regex/ansi-regex-3.0.1.tgz b/tests/testdata/npm/registry/ansi-regex/ansi-regex-3.0.1.tgz Binary files differindex 336d9dcef..336d9dcef 100644 --- a/cli/tests/testdata/npm/registry/ansi-regex/ansi-regex-3.0.1.tgz +++ b/tests/testdata/npm/registry/ansi-regex/ansi-regex-3.0.1.tgz diff --git a/cli/tests/testdata/npm/registry/ansi-regex/ansi-regex-5.0.1.tgz b/tests/testdata/npm/registry/ansi-regex/ansi-regex-5.0.1.tgz Binary files differindex e1095e4d1..e1095e4d1 100644 --- a/cli/tests/testdata/npm/registry/ansi-regex/ansi-regex-5.0.1.tgz +++ b/tests/testdata/npm/registry/ansi-regex/ansi-regex-5.0.1.tgz diff --git a/cli/tests/testdata/npm/registry/ansi-regex/registry.json b/tests/testdata/npm/registry/ansi-regex/registry.json index 594ae03ee..594ae03ee 100644 --- a/cli/tests/testdata/npm/registry/ansi-regex/registry.json +++ b/tests/testdata/npm/registry/ansi-regex/registry.json diff --git a/cli/tests/testdata/npm/registry/ansi-styles/ansi-styles-4.3.0.tgz b/tests/testdata/npm/registry/ansi-styles/ansi-styles-4.3.0.tgz Binary files differindex 39e6a7843..39e6a7843 100644 --- a/cli/tests/testdata/npm/registry/ansi-styles/ansi-styles-4.3.0.tgz +++ b/tests/testdata/npm/registry/ansi-styles/ansi-styles-4.3.0.tgz diff --git a/cli/tests/testdata/npm/registry/ansi-styles/registry.json b/tests/testdata/npm/registry/ansi-styles/registry.json index 2cdcc7c3f..2cdcc7c3f 100644 --- a/cli/tests/testdata/npm/registry/ansi-styles/registry.json +++ b/tests/testdata/npm/registry/ansi-styles/registry.json diff --git a/cli/tests/testdata/npm/registry/asn1/asn1-0.2.6.tgz b/tests/testdata/npm/registry/asn1/asn1-0.2.6.tgz Binary files differindex a3d0923f0..a3d0923f0 100644 --- a/cli/tests/testdata/npm/registry/asn1/asn1-0.2.6.tgz +++ b/tests/testdata/npm/registry/asn1/asn1-0.2.6.tgz diff --git a/cli/tests/testdata/npm/registry/asn1/registry.json b/tests/testdata/npm/registry/asn1/registry.json index 5d424a9fd..5d424a9fd 100644 --- a/cli/tests/testdata/npm/registry/asn1/registry.json +++ b/tests/testdata/npm/registry/asn1/registry.json diff --git a/cli/tests/testdata/npm/registry/assertion-error/assertion-error-1.1.0.tgz b/tests/testdata/npm/registry/assertion-error/assertion-error-1.1.0.tgz Binary files differindex e3a821f6a..e3a821f6a 100644 --- a/cli/tests/testdata/npm/registry/assertion-error/assertion-error-1.1.0.tgz +++ b/tests/testdata/npm/registry/assertion-error/assertion-error-1.1.0.tgz diff --git a/cli/tests/testdata/npm/registry/assertion-error/registry.json b/tests/testdata/npm/registry/assertion-error/registry.json index 9f5b89fae..9f5b89fae 100644 --- a/cli/tests/testdata/npm/registry/assertion-error/registry.json +++ b/tests/testdata/npm/registry/assertion-error/registry.json diff --git a/cli/tests/testdata/npm/registry/autoprefixer/autoprefixer-10.4.14.tgz b/tests/testdata/npm/registry/autoprefixer/autoprefixer-10.4.14.tgz Binary files differindex b5dd92a33..b5dd92a33 100644 --- a/cli/tests/testdata/npm/registry/autoprefixer/autoprefixer-10.4.14.tgz +++ b/tests/testdata/npm/registry/autoprefixer/autoprefixer-10.4.14.tgz diff --git a/cli/tests/testdata/npm/registry/autoprefixer/registry.json b/tests/testdata/npm/registry/autoprefixer/registry.json index 82f869ab3..82f869ab3 100644 --- a/cli/tests/testdata/npm/registry/autoprefixer/registry.json +++ b/tests/testdata/npm/registry/autoprefixer/registry.json diff --git a/cli/tests/testdata/npm/registry/bcrypt-pbkdf/bcrypt-pbkdf-1.0.2.tgz b/tests/testdata/npm/registry/bcrypt-pbkdf/bcrypt-pbkdf-1.0.2.tgz Binary files differindex a3d682b9a..a3d682b9a 100644 --- a/cli/tests/testdata/npm/registry/bcrypt-pbkdf/bcrypt-pbkdf-1.0.2.tgz +++ b/tests/testdata/npm/registry/bcrypt-pbkdf/bcrypt-pbkdf-1.0.2.tgz diff --git a/cli/tests/testdata/npm/registry/bcrypt-pbkdf/registry.json b/tests/testdata/npm/registry/bcrypt-pbkdf/registry.json index 85f96ff84..85f96ff84 100644 --- a/cli/tests/testdata/npm/registry/bcrypt-pbkdf/registry.json +++ b/tests/testdata/npm/registry/bcrypt-pbkdf/registry.json diff --git a/cli/tests/testdata/npm/registry/browserslist/browserslist-4.21.5.tgz b/tests/testdata/npm/registry/browserslist/browserslist-4.21.5.tgz Binary files differindex 7c98d1564..7c98d1564 100644 --- a/cli/tests/testdata/npm/registry/browserslist/browserslist-4.21.5.tgz +++ b/tests/testdata/npm/registry/browserslist/browserslist-4.21.5.tgz diff --git a/cli/tests/testdata/npm/registry/browserslist/registry.json b/tests/testdata/npm/registry/browserslist/registry.json index 4f0aea9b3..4f0aea9b3 100644 --- a/cli/tests/testdata/npm/registry/browserslist/registry.json +++ b/tests/testdata/npm/registry/browserslist/registry.json diff --git a/cli/tests/testdata/npm/registry/buildcheck/buildcheck-0.0.3.tgz b/tests/testdata/npm/registry/buildcheck/buildcheck-0.0.3.tgz Binary files differindex 0681fd738..0681fd738 100644 --- a/cli/tests/testdata/npm/registry/buildcheck/buildcheck-0.0.3.tgz +++ b/tests/testdata/npm/registry/buildcheck/buildcheck-0.0.3.tgz diff --git a/cli/tests/testdata/npm/registry/buildcheck/registry.json b/tests/testdata/npm/registry/buildcheck/registry.json index 99839b0ad..99839b0ad 100644 --- a/cli/tests/testdata/npm/registry/buildcheck/registry.json +++ b/tests/testdata/npm/registry/buildcheck/registry.json diff --git a/cli/tests/testdata/npm/registry/camelcase/camelcase-5.3.1.tgz b/tests/testdata/npm/registry/camelcase/camelcase-5.3.1.tgz Binary files differindex f57b4f1f4..f57b4f1f4 100644 --- a/cli/tests/testdata/npm/registry/camelcase/camelcase-5.3.1.tgz +++ b/tests/testdata/npm/registry/camelcase/camelcase-5.3.1.tgz diff --git a/cli/tests/testdata/npm/registry/camelcase/registry.json b/tests/testdata/npm/registry/camelcase/registry.json index 7492725af..7492725af 100644 --- a/cli/tests/testdata/npm/registry/camelcase/registry.json +++ b/tests/testdata/npm/registry/camelcase/registry.json diff --git a/cli/tests/testdata/npm/registry/caniuse-lite/caniuse-lite-1.0.30001473.tgz b/tests/testdata/npm/registry/caniuse-lite/caniuse-lite-1.0.30001473.tgz Binary files differindex c80b88220..c80b88220 100644 --- a/cli/tests/testdata/npm/registry/caniuse-lite/caniuse-lite-1.0.30001473.tgz +++ b/tests/testdata/npm/registry/caniuse-lite/caniuse-lite-1.0.30001473.tgz diff --git a/cli/tests/testdata/npm/registry/caniuse-lite/registry.json b/tests/testdata/npm/registry/caniuse-lite/registry.json index bd61c7114..bd61c7114 100644 --- a/cli/tests/testdata/npm/registry/caniuse-lite/registry.json +++ b/tests/testdata/npm/registry/caniuse-lite/registry.json diff --git a/cli/tests/testdata/npm/registry/chai/chai-4.3.6.tgz b/tests/testdata/npm/registry/chai/chai-4.3.6.tgz Binary files differindex 5f1dd8f1d..5f1dd8f1d 100644 --- a/cli/tests/testdata/npm/registry/chai/chai-4.3.6.tgz +++ b/tests/testdata/npm/registry/chai/chai-4.3.6.tgz diff --git a/cli/tests/testdata/npm/registry/chai/registry.json b/tests/testdata/npm/registry/chai/registry.json index 931e9dfc3..931e9dfc3 100644 --- a/cli/tests/testdata/npm/registry/chai/registry.json +++ b/tests/testdata/npm/registry/chai/registry.json diff --git a/cli/tests/testdata/npm/registry/chalk/chalk-4.1.2.tgz b/tests/testdata/npm/registry/chalk/chalk-4.1.2.tgz Binary files differindex 8d34872c0..8d34872c0 100644 --- a/cli/tests/testdata/npm/registry/chalk/chalk-4.1.2.tgz +++ b/tests/testdata/npm/registry/chalk/chalk-4.1.2.tgz diff --git a/cli/tests/testdata/npm/registry/chalk/chalk-5.0.1.tgz b/tests/testdata/npm/registry/chalk/chalk-5.0.1.tgz Binary files differindex 01e179059..01e179059 100644 --- a/cli/tests/testdata/npm/registry/chalk/chalk-5.0.1.tgz +++ b/tests/testdata/npm/registry/chalk/chalk-5.0.1.tgz diff --git a/cli/tests/testdata/npm/registry/chalk/registry.json b/tests/testdata/npm/registry/chalk/registry.json index 65c4b0621..65c4b0621 100644 --- a/cli/tests/testdata/npm/registry/chalk/registry.json +++ b/tests/testdata/npm/registry/chalk/registry.json diff --git a/cli/tests/testdata/npm/registry/check-error/check-error-1.0.2.tgz b/tests/testdata/npm/registry/check-error/check-error-1.0.2.tgz Binary files differindex eb5b02846..eb5b02846 100644 --- a/cli/tests/testdata/npm/registry/check-error/check-error-1.0.2.tgz +++ b/tests/testdata/npm/registry/check-error/check-error-1.0.2.tgz diff --git a/cli/tests/testdata/npm/registry/check-error/registry.json b/tests/testdata/npm/registry/check-error/registry.json index a0bc1c621..a0bc1c621 100644 --- a/cli/tests/testdata/npm/registry/check-error/registry.json +++ b/tests/testdata/npm/registry/check-error/registry.json diff --git a/cli/tests/testdata/npm/registry/cliui/cliui-6.0.0.tgz b/tests/testdata/npm/registry/cliui/cliui-6.0.0.tgz Binary files differindex 8be5cdd96..8be5cdd96 100644 --- a/cli/tests/testdata/npm/registry/cliui/cliui-6.0.0.tgz +++ b/tests/testdata/npm/registry/cliui/cliui-6.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/cliui/registry.json b/tests/testdata/npm/registry/cliui/registry.json index 273a71287..273a71287 100644 --- a/cli/tests/testdata/npm/registry/cliui/registry.json +++ b/tests/testdata/npm/registry/cliui/registry.json diff --git a/cli/tests/testdata/npm/registry/color-convert/color-convert-2.0.1.tgz b/tests/testdata/npm/registry/color-convert/color-convert-2.0.1.tgz Binary files differindex f656c5d7f..f656c5d7f 100644 --- a/cli/tests/testdata/npm/registry/color-convert/color-convert-2.0.1.tgz +++ b/tests/testdata/npm/registry/color-convert/color-convert-2.0.1.tgz diff --git a/cli/tests/testdata/npm/registry/color-convert/registry.json b/tests/testdata/npm/registry/color-convert/registry.json index 261d04bac..261d04bac 100644 --- a/cli/tests/testdata/npm/registry/color-convert/registry.json +++ b/tests/testdata/npm/registry/color-convert/registry.json diff --git a/cli/tests/testdata/npm/registry/color-name/color-name-1.1.4.tgz b/tests/testdata/npm/registry/color-name/color-name-1.1.4.tgz Binary files differindex 98fca076d..98fca076d 100644 --- a/cli/tests/testdata/npm/registry/color-name/color-name-1.1.4.tgz +++ b/tests/testdata/npm/registry/color-name/color-name-1.1.4.tgz diff --git a/cli/tests/testdata/npm/registry/color-name/registry.json b/tests/testdata/npm/registry/color-name/registry.json index 786b8df94..786b8df94 100644 --- a/cli/tests/testdata/npm/registry/color-name/registry.json +++ b/tests/testdata/npm/registry/color-name/registry.json diff --git a/cli/tests/testdata/npm/registry/cowsay/cowsay-1.5.0.tgz b/tests/testdata/npm/registry/cowsay/cowsay-1.5.0.tgz Binary files differindex e78660fde..e78660fde 100644 --- a/cli/tests/testdata/npm/registry/cowsay/cowsay-1.5.0.tgz +++ b/tests/testdata/npm/registry/cowsay/cowsay-1.5.0.tgz diff --git a/cli/tests/testdata/npm/registry/cowsay/registry.json b/tests/testdata/npm/registry/cowsay/registry.json index d3c549124..d3c549124 100644 --- a/cli/tests/testdata/npm/registry/cowsay/registry.json +++ b/tests/testdata/npm/registry/cowsay/registry.json diff --git a/cli/tests/testdata/npm/registry/cpu-features/cpu-features-0.0.4.tgz b/tests/testdata/npm/registry/cpu-features/cpu-features-0.0.4.tgz Binary files differindex b63b3cc3b..b63b3cc3b 100644 --- a/cli/tests/testdata/npm/registry/cpu-features/cpu-features-0.0.4.tgz +++ b/tests/testdata/npm/registry/cpu-features/cpu-features-0.0.4.tgz diff --git a/cli/tests/testdata/npm/registry/cpu-features/registry.json b/tests/testdata/npm/registry/cpu-features/registry.json index 5076d0060..5076d0060 100644 --- a/cli/tests/testdata/npm/registry/cpu-features/registry.json +++ b/tests/testdata/npm/registry/cpu-features/registry.json diff --git a/cli/tests/testdata/npm/registry/crypto-js/crypto-js-4.1.1.tgz b/tests/testdata/npm/registry/crypto-js/crypto-js-4.1.1.tgz Binary files differindex d60fbc5db..d60fbc5db 100644 --- a/cli/tests/testdata/npm/registry/crypto-js/crypto-js-4.1.1.tgz +++ b/tests/testdata/npm/registry/crypto-js/crypto-js-4.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/crypto-js/registry.json b/tests/testdata/npm/registry/crypto-js/registry.json index cbe46de2d..cbe46de2d 100644 --- a/cli/tests/testdata/npm/registry/crypto-js/registry.json +++ b/tests/testdata/npm/registry/crypto-js/registry.json diff --git a/cli/tests/testdata/npm/registry/csstype/csstype-2.6.20.tgz b/tests/testdata/npm/registry/csstype/csstype-2.6.20.tgz Binary files differindex ecc42c27f..ecc42c27f 100644 --- a/cli/tests/testdata/npm/registry/csstype/csstype-2.6.20.tgz +++ b/tests/testdata/npm/registry/csstype/csstype-2.6.20.tgz diff --git a/cli/tests/testdata/npm/registry/csstype/registry.json b/tests/testdata/npm/registry/csstype/registry.json index 326499b7e..326499b7e 100644 --- a/cli/tests/testdata/npm/registry/csstype/registry.json +++ b/tests/testdata/npm/registry/csstype/registry.json diff --git a/cli/tests/testdata/npm/registry/decamelize/decamelize-1.2.0.tgz b/tests/testdata/npm/registry/decamelize/decamelize-1.2.0.tgz Binary files differindex 8b51d0650..8b51d0650 100644 --- a/cli/tests/testdata/npm/registry/decamelize/decamelize-1.2.0.tgz +++ b/tests/testdata/npm/registry/decamelize/decamelize-1.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/decamelize/registry.json b/tests/testdata/npm/registry/decamelize/registry.json index 6f2a465ab..6f2a465ab 100644 --- a/cli/tests/testdata/npm/registry/decamelize/registry.json +++ b/tests/testdata/npm/registry/decamelize/registry.json diff --git a/cli/tests/testdata/npm/registry/deep-eql/deep-eql-3.0.1.tgz b/tests/testdata/npm/registry/deep-eql/deep-eql-3.0.1.tgz Binary files differindex 62f93692c..62f93692c 100644 --- a/cli/tests/testdata/npm/registry/deep-eql/deep-eql-3.0.1.tgz +++ b/tests/testdata/npm/registry/deep-eql/deep-eql-3.0.1.tgz diff --git a/cli/tests/testdata/npm/registry/deep-eql/registry.json b/tests/testdata/npm/registry/deep-eql/registry.json index fd3d887f8..fd3d887f8 100644 --- a/cli/tests/testdata/npm/registry/deep-eql/registry.json +++ b/tests/testdata/npm/registry/deep-eql/registry.json diff --git a/cli/tests/testdata/npm/registry/define-properties/define-properties-1.2.0.tgz b/tests/testdata/npm/registry/define-properties/define-properties-1.2.0.tgz Binary files differindex 69b5e1875..69b5e1875 100644 --- a/cli/tests/testdata/npm/registry/define-properties/define-properties-1.2.0.tgz +++ b/tests/testdata/npm/registry/define-properties/define-properties-1.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/define-properties/registry.json b/tests/testdata/npm/registry/define-properties/registry.json index f25eb5f05..f25eb5f05 100644 --- a/cli/tests/testdata/npm/registry/define-properties/registry.json +++ b/tests/testdata/npm/registry/define-properties/registry.json diff --git a/cli/tests/testdata/npm/registry/electron-to-chromium/electron-to-chromium-1.4.348.tgz b/tests/testdata/npm/registry/electron-to-chromium/electron-to-chromium-1.4.348.tgz Binary files differindex 29485240b..29485240b 100644 --- a/cli/tests/testdata/npm/registry/electron-to-chromium/electron-to-chromium-1.4.348.tgz +++ b/tests/testdata/npm/registry/electron-to-chromium/electron-to-chromium-1.4.348.tgz diff --git a/cli/tests/testdata/npm/registry/electron-to-chromium/registry.json b/tests/testdata/npm/registry/electron-to-chromium/registry.json index 61dc31014..61dc31014 100644 --- a/cli/tests/testdata/npm/registry/electron-to-chromium/registry.json +++ b/tests/testdata/npm/registry/electron-to-chromium/registry.json diff --git a/cli/tests/testdata/npm/registry/emoji-regex/emoji-regex-8.0.0.tgz b/tests/testdata/npm/registry/emoji-regex/emoji-regex-8.0.0.tgz Binary files differindex 2c77dccef..2c77dccef 100644 --- a/cli/tests/testdata/npm/registry/emoji-regex/emoji-regex-8.0.0.tgz +++ b/tests/testdata/npm/registry/emoji-regex/emoji-regex-8.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/emoji-regex/registry.json b/tests/testdata/npm/registry/emoji-regex/registry.json index b3309bcfa..b3309bcfa 100644 --- a/cli/tests/testdata/npm/registry/emoji-regex/registry.json +++ b/tests/testdata/npm/registry/emoji-regex/registry.json diff --git a/cli/tests/testdata/npm/registry/escalade/escalade-3.1.1.tgz b/tests/testdata/npm/registry/escalade/escalade-3.1.1.tgz Binary files differindex 56df047ab..56df047ab 100644 --- a/cli/tests/testdata/npm/registry/escalade/escalade-3.1.1.tgz +++ b/tests/testdata/npm/registry/escalade/escalade-3.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/escalade/registry.json b/tests/testdata/npm/registry/escalade/registry.json index d7ff9cd39..d7ff9cd39 100644 --- a/cli/tests/testdata/npm/registry/escalade/registry.json +++ b/tests/testdata/npm/registry/escalade/registry.json diff --git a/cli/tests/testdata/npm/registry/estree-walker/estree-walker-2.0.2.tgz b/tests/testdata/npm/registry/estree-walker/estree-walker-2.0.2.tgz Binary files differindex dd0fd457d..dd0fd457d 100644 --- a/cli/tests/testdata/npm/registry/estree-walker/estree-walker-2.0.2.tgz +++ b/tests/testdata/npm/registry/estree-walker/estree-walker-2.0.2.tgz diff --git a/cli/tests/testdata/npm/registry/estree-walker/registry.json b/tests/testdata/npm/registry/estree-walker/registry.json index 2e30c2169..2e30c2169 100644 --- a/cli/tests/testdata/npm/registry/estree-walker/registry.json +++ b/tests/testdata/npm/registry/estree-walker/registry.json diff --git a/cli/tests/testdata/npm/registry/fast-deep-equal/fast-deep-equal-3.1.3.tgz b/tests/testdata/npm/registry/fast-deep-equal/fast-deep-equal-3.1.3.tgz Binary files differindex dbc9d8dcc..dbc9d8dcc 100644 --- a/cli/tests/testdata/npm/registry/fast-deep-equal/fast-deep-equal-3.1.3.tgz +++ b/tests/testdata/npm/registry/fast-deep-equal/fast-deep-equal-3.1.3.tgz diff --git a/cli/tests/testdata/npm/registry/fast-deep-equal/registry.json b/tests/testdata/npm/registry/fast-deep-equal/registry.json index 457e453b3..457e453b3 100644 --- a/cli/tests/testdata/npm/registry/fast-deep-equal/registry.json +++ b/tests/testdata/npm/registry/fast-deep-equal/registry.json diff --git a/cli/tests/testdata/npm/registry/find-up/find-up-4.1.0.tgz b/tests/testdata/npm/registry/find-up/find-up-4.1.0.tgz Binary files differindex 92166bd31..92166bd31 100644 --- a/cli/tests/testdata/npm/registry/find-up/find-up-4.1.0.tgz +++ b/tests/testdata/npm/registry/find-up/find-up-4.1.0.tgz diff --git a/cli/tests/testdata/npm/registry/find-up/registry.json b/tests/testdata/npm/registry/find-up/registry.json index 61325e7ce..61325e7ce 100644 --- a/cli/tests/testdata/npm/registry/find-up/registry.json +++ b/tests/testdata/npm/registry/find-up/registry.json diff --git a/cli/tests/testdata/npm/registry/fraction.js/fraction.js-4.2.0.tgz b/tests/testdata/npm/registry/fraction.js/fraction.js-4.2.0.tgz Binary files differindex 8bb9ec3b6..8bb9ec3b6 100644 --- a/cli/tests/testdata/npm/registry/fraction.js/fraction.js-4.2.0.tgz +++ b/tests/testdata/npm/registry/fraction.js/fraction.js-4.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/fraction.js/registry.json b/tests/testdata/npm/registry/fraction.js/registry.json index fae0b27b7..fae0b27b7 100644 --- a/cli/tests/testdata/npm/registry/fraction.js/registry.json +++ b/tests/testdata/npm/registry/fraction.js/registry.json diff --git a/cli/tests/testdata/npm/registry/fs-extra/fs-extra-10.1.0.tgz b/tests/testdata/npm/registry/fs-extra/fs-extra-10.1.0.tgz Binary files differindex 02cb6b891..02cb6b891 100644 --- a/cli/tests/testdata/npm/registry/fs-extra/fs-extra-10.1.0.tgz +++ b/tests/testdata/npm/registry/fs-extra/fs-extra-10.1.0.tgz diff --git a/cli/tests/testdata/npm/registry/fs-extra/registry.json b/tests/testdata/npm/registry/fs-extra/registry.json index b94c2feba..b94c2feba 100644 --- a/cli/tests/testdata/npm/registry/fs-extra/registry.json +++ b/tests/testdata/npm/registry/fs-extra/registry.json diff --git a/cli/tests/testdata/npm/registry/function-bind/function-bind-1.1.1.tgz b/tests/testdata/npm/registry/function-bind/function-bind-1.1.1.tgz Binary files differindex 44bef1635..44bef1635 100644 --- a/cli/tests/testdata/npm/registry/function-bind/function-bind-1.1.1.tgz +++ b/tests/testdata/npm/registry/function-bind/function-bind-1.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/function-bind/registry.json b/tests/testdata/npm/registry/function-bind/registry.json index b606d42f5..b606d42f5 100644 --- a/cli/tests/testdata/npm/registry/function-bind/registry.json +++ b/tests/testdata/npm/registry/function-bind/registry.json diff --git a/cli/tests/testdata/npm/registry/get-caller-file/get-caller-file-2.0.5.tgz b/tests/testdata/npm/registry/get-caller-file/get-caller-file-2.0.5.tgz Binary files differindex 2df8b82e0..2df8b82e0 100644 --- a/cli/tests/testdata/npm/registry/get-caller-file/get-caller-file-2.0.5.tgz +++ b/tests/testdata/npm/registry/get-caller-file/get-caller-file-2.0.5.tgz diff --git a/cli/tests/testdata/npm/registry/get-caller-file/registry.json b/tests/testdata/npm/registry/get-caller-file/registry.json index ad4892978..ad4892978 100644 --- a/cli/tests/testdata/npm/registry/get-caller-file/registry.json +++ b/tests/testdata/npm/registry/get-caller-file/registry.json diff --git a/cli/tests/testdata/npm/registry/get-func-name/get-func-name-2.0.0.tgz b/tests/testdata/npm/registry/get-func-name/get-func-name-2.0.0.tgz Binary files differindex 28705cc07..28705cc07 100644 --- a/cli/tests/testdata/npm/registry/get-func-name/get-func-name-2.0.0.tgz +++ b/tests/testdata/npm/registry/get-func-name/get-func-name-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/get-func-name/registry.json b/tests/testdata/npm/registry/get-func-name/registry.json index 7f65ac9c0..7f65ac9c0 100644 --- a/cli/tests/testdata/npm/registry/get-func-name/registry.json +++ b/tests/testdata/npm/registry/get-func-name/registry.json diff --git a/cli/tests/testdata/npm/registry/get-intrinsic/get-intrinsic-1.2.0.tgz b/tests/testdata/npm/registry/get-intrinsic/get-intrinsic-1.2.0.tgz Binary files differindex b55e814a0..b55e814a0 100644 --- a/cli/tests/testdata/npm/registry/get-intrinsic/get-intrinsic-1.2.0.tgz +++ b/tests/testdata/npm/registry/get-intrinsic/get-intrinsic-1.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/get-intrinsic/registry.json b/tests/testdata/npm/registry/get-intrinsic/registry.json index b09a472f6..b09a472f6 100644 --- a/cli/tests/testdata/npm/registry/get-intrinsic/registry.json +++ b/tests/testdata/npm/registry/get-intrinsic/registry.json diff --git a/cli/tests/testdata/npm/registry/get-stdin/get-stdin-8.0.0.tgz b/tests/testdata/npm/registry/get-stdin/get-stdin-8.0.0.tgz Binary files differindex 60dc7c66c..60dc7c66c 100644 --- a/cli/tests/testdata/npm/registry/get-stdin/get-stdin-8.0.0.tgz +++ b/tests/testdata/npm/registry/get-stdin/get-stdin-8.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/get-stdin/registry.json b/tests/testdata/npm/registry/get-stdin/registry.json index d28eb15fb..d28eb15fb 100644 --- a/cli/tests/testdata/npm/registry/get-stdin/registry.json +++ b/tests/testdata/npm/registry/get-stdin/registry.json diff --git a/cli/tests/testdata/npm/registry/globals/globals-13.17.0.tgz b/tests/testdata/npm/registry/globals/globals-13.17.0.tgz Binary files differindex de205587e..de205587e 100644 --- a/cli/tests/testdata/npm/registry/globals/globals-13.17.0.tgz +++ b/tests/testdata/npm/registry/globals/globals-13.17.0.tgz diff --git a/cli/tests/testdata/npm/registry/globals/registry.json b/tests/testdata/npm/registry/globals/registry.json index 0ffad6d66..0ffad6d66 100644 --- a/cli/tests/testdata/npm/registry/globals/registry.json +++ b/tests/testdata/npm/registry/globals/registry.json diff --git a/cli/tests/testdata/npm/registry/graceful-fs/graceful-fs-4.2.10.tgz b/tests/testdata/npm/registry/graceful-fs/graceful-fs-4.2.10.tgz Binary files differindex 6f27e707c..6f27e707c 100644 --- a/cli/tests/testdata/npm/registry/graceful-fs/graceful-fs-4.2.10.tgz +++ b/tests/testdata/npm/registry/graceful-fs/graceful-fs-4.2.10.tgz diff --git a/cli/tests/testdata/npm/registry/graceful-fs/registry.json b/tests/testdata/npm/registry/graceful-fs/registry.json index 201501a5b..201501a5b 100644 --- a/cli/tests/testdata/npm/registry/graceful-fs/registry.json +++ b/tests/testdata/npm/registry/graceful-fs/registry.json diff --git a/cli/tests/testdata/npm/registry/has-flag/has-flag-4.0.0.tgz b/tests/testdata/npm/registry/has-flag/has-flag-4.0.0.tgz Binary files differindex 509ae0c0f..509ae0c0f 100644 --- a/cli/tests/testdata/npm/registry/has-flag/has-flag-4.0.0.tgz +++ b/tests/testdata/npm/registry/has-flag/has-flag-4.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/has-flag/registry.json b/tests/testdata/npm/registry/has-flag/registry.json index 6f3f70d94..6f3f70d94 100644 --- a/cli/tests/testdata/npm/registry/has-flag/registry.json +++ b/tests/testdata/npm/registry/has-flag/registry.json diff --git a/cli/tests/testdata/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz b/tests/testdata/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz Binary files differindex 2069c9a10..2069c9a10 100644 --- a/cli/tests/testdata/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz +++ b/tests/testdata/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz diff --git a/cli/tests/testdata/npm/registry/has-package-exports/registry.json b/tests/testdata/npm/registry/has-package-exports/registry.json index f664bed54..f664bed54 100644 --- a/cli/tests/testdata/npm/registry/has-package-exports/registry.json +++ b/tests/testdata/npm/registry/has-package-exports/registry.json diff --git a/cli/tests/testdata/npm/registry/has-property-descriptors/has-property-descriptors-1.0.0.tgz b/tests/testdata/npm/registry/has-property-descriptors/has-property-descriptors-1.0.0.tgz Binary files differindex ee60a4f9e..ee60a4f9e 100644 --- a/cli/tests/testdata/npm/registry/has-property-descriptors/has-property-descriptors-1.0.0.tgz +++ b/tests/testdata/npm/registry/has-property-descriptors/has-property-descriptors-1.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/has-property-descriptors/registry.json b/tests/testdata/npm/registry/has-property-descriptors/registry.json index 6cc2fae10..6cc2fae10 100644 --- a/cli/tests/testdata/npm/registry/has-property-descriptors/registry.json +++ b/tests/testdata/npm/registry/has-property-descriptors/registry.json diff --git a/cli/tests/testdata/npm/registry/has-symbols/has-symbols-1.0.3.tgz b/tests/testdata/npm/registry/has-symbols/has-symbols-1.0.3.tgz Binary files differindex a5f34be72..a5f34be72 100644 --- a/cli/tests/testdata/npm/registry/has-symbols/has-symbols-1.0.3.tgz +++ b/tests/testdata/npm/registry/has-symbols/has-symbols-1.0.3.tgz diff --git a/cli/tests/testdata/npm/registry/has-symbols/registry.json b/tests/testdata/npm/registry/has-symbols/registry.json index c8602cac7..c8602cac7 100644 --- a/cli/tests/testdata/npm/registry/has-symbols/registry.json +++ b/tests/testdata/npm/registry/has-symbols/registry.json diff --git a/cli/tests/testdata/npm/registry/has/has-1.0.3.tgz b/tests/testdata/npm/registry/has/has-1.0.3.tgz Binary files differindex 90c33297e..90c33297e 100644 --- a/cli/tests/testdata/npm/registry/has/has-1.0.3.tgz +++ b/tests/testdata/npm/registry/has/has-1.0.3.tgz diff --git a/cli/tests/testdata/npm/registry/has/registry.json b/tests/testdata/npm/registry/has/registry.json index 137122e4a..137122e4a 100644 --- a/cli/tests/testdata/npm/registry/has/registry.json +++ b/tests/testdata/npm/registry/has/registry.json diff --git a/cli/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-2.0.0.tgz b/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-2.0.0.tgz Binary files differindex 712d49d09..712d49d09 100644 --- a/cli/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-2.0.0.tgz +++ b/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-3.0.0.tgz b/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-3.0.0.tgz Binary files differindex 5009bc401..5009bc401 100644 --- a/cli/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-3.0.0.tgz +++ b/tests/testdata/npm/registry/is-fullwidth-code-point/is-fullwidth-code-point-3.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/is-fullwidth-code-point/registry.json b/tests/testdata/npm/registry/is-fullwidth-code-point/registry.json index f8503b377..f8503b377 100644 --- a/cli/tests/testdata/npm/registry/is-fullwidth-code-point/registry.json +++ b/tests/testdata/npm/registry/is-fullwidth-code-point/registry.json diff --git a/cli/tests/testdata/npm/registry/js-tokens/js-tokens-4.0.0.tgz b/tests/testdata/npm/registry/js-tokens/js-tokens-4.0.0.tgz Binary files differindex 5a06ecbe8..5a06ecbe8 100644 --- a/cli/tests/testdata/npm/registry/js-tokens/js-tokens-4.0.0.tgz +++ b/tests/testdata/npm/registry/js-tokens/js-tokens-4.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/js-tokens/registry.json b/tests/testdata/npm/registry/js-tokens/registry.json index b7a67c29e..b7a67c29e 100644 --- a/cli/tests/testdata/npm/registry/js-tokens/registry.json +++ b/tests/testdata/npm/registry/js-tokens/registry.json diff --git a/cli/tests/testdata/npm/registry/json-schema-traverse/json-schema-traverse-1.0.0.tgz b/tests/testdata/npm/registry/json-schema-traverse/json-schema-traverse-1.0.0.tgz Binary files differindex ef3a92464..ef3a92464 100644 --- a/cli/tests/testdata/npm/registry/json-schema-traverse/json-schema-traverse-1.0.0.tgz +++ b/tests/testdata/npm/registry/json-schema-traverse/json-schema-traverse-1.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/json-schema-traverse/registry.json b/tests/testdata/npm/registry/json-schema-traverse/registry.json index 3c6ef138b..3c6ef138b 100644 --- a/cli/tests/testdata/npm/registry/json-schema-traverse/registry.json +++ b/tests/testdata/npm/registry/json-schema-traverse/registry.json diff --git a/cli/tests/testdata/npm/registry/jsonfile/jsonfile-6.1.0.tgz b/tests/testdata/npm/registry/jsonfile/jsonfile-6.1.0.tgz Binary files differindex a38a22598..a38a22598 100644 --- a/cli/tests/testdata/npm/registry/jsonfile/jsonfile-6.1.0.tgz +++ b/tests/testdata/npm/registry/jsonfile/jsonfile-6.1.0.tgz diff --git a/cli/tests/testdata/npm/registry/jsonfile/registry.json b/tests/testdata/npm/registry/jsonfile/registry.json index 480aa0466..480aa0466 100644 --- a/cli/tests/testdata/npm/registry/jsonfile/registry.json +++ b/tests/testdata/npm/registry/jsonfile/registry.json diff --git a/cli/tests/testdata/npm/registry/locate-path/locate-path-5.0.0.tgz b/tests/testdata/npm/registry/locate-path/locate-path-5.0.0.tgz Binary files differindex b0af46ef5..b0af46ef5 100644 --- a/cli/tests/testdata/npm/registry/locate-path/locate-path-5.0.0.tgz +++ b/tests/testdata/npm/registry/locate-path/locate-path-5.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/locate-path/registry.json b/tests/testdata/npm/registry/locate-path/registry.json index 0f9fac7bd..0f9fac7bd 100644 --- a/cli/tests/testdata/npm/registry/locate-path/registry.json +++ b/tests/testdata/npm/registry/locate-path/registry.json diff --git a/cli/tests/testdata/npm/registry/loose-envify/loose-envify-1.4.0.tgz b/tests/testdata/npm/registry/loose-envify/loose-envify-1.4.0.tgz Binary files differindex cc1d1e415..cc1d1e415 100644 --- a/cli/tests/testdata/npm/registry/loose-envify/loose-envify-1.4.0.tgz +++ b/tests/testdata/npm/registry/loose-envify/loose-envify-1.4.0.tgz diff --git a/cli/tests/testdata/npm/registry/loose-envify/registry.json b/tests/testdata/npm/registry/loose-envify/registry.json index 37ff16f38..37ff16f38 100644 --- a/cli/tests/testdata/npm/registry/loose-envify/registry.json +++ b/tests/testdata/npm/registry/loose-envify/registry.json diff --git a/cli/tests/testdata/npm/registry/loupe/loupe-2.3.4.tgz b/tests/testdata/npm/registry/loupe/loupe-2.3.4.tgz Binary files differindex 030649758..030649758 100644 --- a/cli/tests/testdata/npm/registry/loupe/loupe-2.3.4.tgz +++ b/tests/testdata/npm/registry/loupe/loupe-2.3.4.tgz diff --git a/cli/tests/testdata/npm/registry/loupe/registry.json b/tests/testdata/npm/registry/loupe/registry.json index 50df710e2..50df710e2 100644 --- a/cli/tests/testdata/npm/registry/loupe/registry.json +++ b/tests/testdata/npm/registry/loupe/registry.json diff --git a/cli/tests/testdata/npm/registry/magic-string/magic-string-0.25.9.tgz b/tests/testdata/npm/registry/magic-string/magic-string-0.25.9.tgz Binary files differindex 20410aa3f..20410aa3f 100644 --- a/cli/tests/testdata/npm/registry/magic-string/magic-string-0.25.9.tgz +++ b/tests/testdata/npm/registry/magic-string/magic-string-0.25.9.tgz diff --git a/cli/tests/testdata/npm/registry/magic-string/registry.json b/tests/testdata/npm/registry/magic-string/registry.json index f69832980..f69832980 100644 --- a/cli/tests/testdata/npm/registry/magic-string/registry.json +++ b/tests/testdata/npm/registry/magic-string/registry.json diff --git a/cli/tests/testdata/npm/registry/mkdirp/mkdirp-1.0.4.tgz b/tests/testdata/npm/registry/mkdirp/mkdirp-1.0.4.tgz Binary files differindex bf8eca6e2..bf8eca6e2 100644 --- a/cli/tests/testdata/npm/registry/mkdirp/mkdirp-1.0.4.tgz +++ b/tests/testdata/npm/registry/mkdirp/mkdirp-1.0.4.tgz diff --git a/cli/tests/testdata/npm/registry/mkdirp/registry.json b/tests/testdata/npm/registry/mkdirp/registry.json index 945147c1a..945147c1a 100644 --- a/cli/tests/testdata/npm/registry/mkdirp/registry.json +++ b/tests/testdata/npm/registry/mkdirp/registry.json diff --git a/cli/tests/testdata/npm/registry/nan/nan-2.16.0.tgz b/tests/testdata/npm/registry/nan/nan-2.16.0.tgz Binary files differindex 26925e88a..26925e88a 100644 --- a/cli/tests/testdata/npm/registry/nan/nan-2.16.0.tgz +++ b/tests/testdata/npm/registry/nan/nan-2.16.0.tgz diff --git a/cli/tests/testdata/npm/registry/nan/registry.json b/tests/testdata/npm/registry/nan/registry.json index a26c7cd9f..a26c7cd9f 100644 --- a/cli/tests/testdata/npm/registry/nan/registry.json +++ b/tests/testdata/npm/registry/nan/registry.json diff --git a/cli/tests/testdata/npm/registry/nanoid/nanoid-3.3.4.tgz b/tests/testdata/npm/registry/nanoid/nanoid-3.3.4.tgz Binary files differindex e5e4bb4a3..e5e4bb4a3 100644 --- a/cli/tests/testdata/npm/registry/nanoid/nanoid-3.3.4.tgz +++ b/tests/testdata/npm/registry/nanoid/nanoid-3.3.4.tgz diff --git a/cli/tests/testdata/npm/registry/nanoid/registry.json b/tests/testdata/npm/registry/nanoid/registry.json index 2e0a943cb..2e0a943cb 100644 --- a/cli/tests/testdata/npm/registry/nanoid/registry.json +++ b/tests/testdata/npm/registry/nanoid/registry.json diff --git a/cli/tests/testdata/npm/registry/node-releases/node-releases-2.0.10.tgz b/tests/testdata/npm/registry/node-releases/node-releases-2.0.10.tgz Binary files differindex 077911115..077911115 100644 --- a/cli/tests/testdata/npm/registry/node-releases/node-releases-2.0.10.tgz +++ b/tests/testdata/npm/registry/node-releases/node-releases-2.0.10.tgz diff --git a/cli/tests/testdata/npm/registry/node-releases/registry.json b/tests/testdata/npm/registry/node-releases/registry.json index 46602c366..46602c366 100644 --- a/cli/tests/testdata/npm/registry/node-releases/registry.json +++ b/tests/testdata/npm/registry/node-releases/registry.json diff --git a/cli/tests/testdata/npm/registry/normalize-range/normalize-range-0.1.2.tgz b/tests/testdata/npm/registry/normalize-range/normalize-range-0.1.2.tgz Binary files differindex 4747cd49e..4747cd49e 100644 --- a/cli/tests/testdata/npm/registry/normalize-range/normalize-range-0.1.2.tgz +++ b/tests/testdata/npm/registry/normalize-range/normalize-range-0.1.2.tgz diff --git a/cli/tests/testdata/npm/registry/normalize-range/registry.json b/tests/testdata/npm/registry/normalize-range/registry.json index 1222b80b9..1222b80b9 100644 --- a/cli/tests/testdata/npm/registry/normalize-range/registry.json +++ b/tests/testdata/npm/registry/normalize-range/registry.json diff --git a/cli/tests/testdata/npm/registry/object-keys/object-keys-1.1.1.tgz b/tests/testdata/npm/registry/object-keys/object-keys-1.1.1.tgz Binary files differindex 3e52f10df..3e52f10df 100644 --- a/cli/tests/testdata/npm/registry/object-keys/object-keys-1.1.1.tgz +++ b/tests/testdata/npm/registry/object-keys/object-keys-1.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/object-keys/registry.json b/tests/testdata/npm/registry/object-keys/registry.json index bbfedec12..bbfedec12 100644 --- a/cli/tests/testdata/npm/registry/object-keys/registry.json +++ b/tests/testdata/npm/registry/object-keys/registry.json diff --git a/cli/tests/testdata/npm/registry/p-limit/p-limit-2.3.0.tgz b/tests/testdata/npm/registry/p-limit/p-limit-2.3.0.tgz Binary files differindex 2a7b2b386..2a7b2b386 100644 --- a/cli/tests/testdata/npm/registry/p-limit/p-limit-2.3.0.tgz +++ b/tests/testdata/npm/registry/p-limit/p-limit-2.3.0.tgz diff --git a/cli/tests/testdata/npm/registry/p-limit/registry.json b/tests/testdata/npm/registry/p-limit/registry.json index c6ec683fd..c6ec683fd 100644 --- a/cli/tests/testdata/npm/registry/p-limit/registry.json +++ b/tests/testdata/npm/registry/p-limit/registry.json diff --git a/cli/tests/testdata/npm/registry/p-locate/p-locate-4.1.0.tgz b/tests/testdata/npm/registry/p-locate/p-locate-4.1.0.tgz Binary files differindex 15bb2f253..15bb2f253 100644 --- a/cli/tests/testdata/npm/registry/p-locate/p-locate-4.1.0.tgz +++ b/tests/testdata/npm/registry/p-locate/p-locate-4.1.0.tgz diff --git a/cli/tests/testdata/npm/registry/p-locate/registry.json b/tests/testdata/npm/registry/p-locate/registry.json index d9ff28bc7..d9ff28bc7 100644 --- a/cli/tests/testdata/npm/registry/p-locate/registry.json +++ b/tests/testdata/npm/registry/p-locate/registry.json diff --git a/cli/tests/testdata/npm/registry/p-try/p-try-2.2.0.tgz b/tests/testdata/npm/registry/p-try/p-try-2.2.0.tgz Binary files differindex 058e57967..058e57967 100644 --- a/cli/tests/testdata/npm/registry/p-try/p-try-2.2.0.tgz +++ b/tests/testdata/npm/registry/p-try/p-try-2.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/p-try/registry.json b/tests/testdata/npm/registry/p-try/registry.json index 511394563..511394563 100644 --- a/cli/tests/testdata/npm/registry/p-try/registry.json +++ b/tests/testdata/npm/registry/p-try/registry.json diff --git a/cli/tests/testdata/npm/registry/path-exists/path-exists-4.0.0.tgz b/tests/testdata/npm/registry/path-exists/path-exists-4.0.0.tgz Binary files differindex eb702860d..eb702860d 100644 --- a/cli/tests/testdata/npm/registry/path-exists/path-exists-4.0.0.tgz +++ b/tests/testdata/npm/registry/path-exists/path-exists-4.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/path-exists/registry.json b/tests/testdata/npm/registry/path-exists/registry.json index d363874d7..d363874d7 100644 --- a/cli/tests/testdata/npm/registry/path-exists/registry.json +++ b/tests/testdata/npm/registry/path-exists/registry.json diff --git a/cli/tests/testdata/npm/registry/pathval/pathval-1.1.1.tgz b/tests/testdata/npm/registry/pathval/pathval-1.1.1.tgz Binary files differindex 270690cb3..270690cb3 100644 --- a/cli/tests/testdata/npm/registry/pathval/pathval-1.1.1.tgz +++ b/tests/testdata/npm/registry/pathval/pathval-1.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/pathval/registry.json b/tests/testdata/npm/registry/pathval/registry.json index 9ea21129c..9ea21129c 100644 --- a/cli/tests/testdata/npm/registry/pathval/registry.json +++ b/tests/testdata/npm/registry/pathval/registry.json diff --git a/cli/tests/testdata/npm/registry/picocolors/picocolors-1.0.0.tgz b/tests/testdata/npm/registry/picocolors/picocolors-1.0.0.tgz Binary files differindex d16f9ff2d..d16f9ff2d 100644 --- a/cli/tests/testdata/npm/registry/picocolors/picocolors-1.0.0.tgz +++ b/tests/testdata/npm/registry/picocolors/picocolors-1.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/picocolors/registry.json b/tests/testdata/npm/registry/picocolors/registry.json index 3cfd4ee2b..3cfd4ee2b 100644 --- a/cli/tests/testdata/npm/registry/picocolors/registry.json +++ b/tests/testdata/npm/registry/picocolors/registry.json diff --git a/cli/tests/testdata/npm/registry/postcss-value-parser/postcss-value-parser-4.2.0.tgz b/tests/testdata/npm/registry/postcss-value-parser/postcss-value-parser-4.2.0.tgz Binary files differindex a9fb27c1e..a9fb27c1e 100644 --- a/cli/tests/testdata/npm/registry/postcss-value-parser/postcss-value-parser-4.2.0.tgz +++ b/tests/testdata/npm/registry/postcss-value-parser/postcss-value-parser-4.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/postcss-value-parser/registry.json b/tests/testdata/npm/registry/postcss-value-parser/registry.json index fd8eb2aa0..fd8eb2aa0 100644 --- a/cli/tests/testdata/npm/registry/postcss-value-parser/registry.json +++ b/tests/testdata/npm/registry/postcss-value-parser/registry.json diff --git a/cli/tests/testdata/npm/registry/postcss/postcss-8.4.16.tgz b/tests/testdata/npm/registry/postcss/postcss-8.4.16.tgz Binary files differindex 007e88abf..007e88abf 100644 --- a/cli/tests/testdata/npm/registry/postcss/postcss-8.4.16.tgz +++ b/tests/testdata/npm/registry/postcss/postcss-8.4.16.tgz diff --git a/cli/tests/testdata/npm/registry/postcss/registry.json b/tests/testdata/npm/registry/postcss/registry.json index 046eb3066..046eb3066 100644 --- a/cli/tests/testdata/npm/registry/postcss/registry.json +++ b/tests/testdata/npm/registry/postcss/registry.json diff --git a/cli/tests/testdata/npm/registry/punycode/punycode-2.1.1.tgz b/tests/testdata/npm/registry/punycode/punycode-2.1.1.tgz Binary files differindex 575229dc5..575229dc5 100644 --- a/cli/tests/testdata/npm/registry/punycode/punycode-2.1.1.tgz +++ b/tests/testdata/npm/registry/punycode/punycode-2.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/punycode/registry.json b/tests/testdata/npm/registry/punycode/registry.json index f1dd9cb95..f1dd9cb95 100644 --- a/cli/tests/testdata/npm/registry/punycode/registry.json +++ b/tests/testdata/npm/registry/punycode/registry.json diff --git a/cli/tests/testdata/npm/registry/react-dom/react-dom-18.2.0.tgz b/tests/testdata/npm/registry/react-dom/react-dom-18.2.0.tgz Binary files differindex 9fb92cb2e..9fb92cb2e 100644 --- a/cli/tests/testdata/npm/registry/react-dom/react-dom-18.2.0.tgz +++ b/tests/testdata/npm/registry/react-dom/react-dom-18.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/react-dom/registry.json b/tests/testdata/npm/registry/react-dom/registry.json index 177f93527..177f93527 100644 --- a/cli/tests/testdata/npm/registry/react-dom/registry.json +++ b/tests/testdata/npm/registry/react-dom/registry.json diff --git a/cli/tests/testdata/npm/registry/react/react-18.2.0.tgz b/tests/testdata/npm/registry/react/react-18.2.0.tgz Binary files differindex 6cb2cb98c..6cb2cb98c 100644 --- a/cli/tests/testdata/npm/registry/react/react-18.2.0.tgz +++ b/tests/testdata/npm/registry/react/react-18.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/react/registry.json b/tests/testdata/npm/registry/react/registry.json index 3bbccd0c0..3bbccd0c0 100644 --- a/cli/tests/testdata/npm/registry/react/registry.json +++ b/tests/testdata/npm/registry/react/registry.json diff --git a/cli/tests/testdata/npm/registry/require-directory/registry.json b/tests/testdata/npm/registry/require-directory/registry.json index 49b6c318d..49b6c318d 100644 --- a/cli/tests/testdata/npm/registry/require-directory/registry.json +++ b/tests/testdata/npm/registry/require-directory/registry.json diff --git a/cli/tests/testdata/npm/registry/require-directory/require-directory-2.1.1.tgz b/tests/testdata/npm/registry/require-directory/require-directory-2.1.1.tgz Binary files differindex ce48f4895..ce48f4895 100644 --- a/cli/tests/testdata/npm/registry/require-directory/require-directory-2.1.1.tgz +++ b/tests/testdata/npm/registry/require-directory/require-directory-2.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/require-from-string/registry.json b/tests/testdata/npm/registry/require-from-string/registry.json index a348e30df..a348e30df 100644 --- a/cli/tests/testdata/npm/registry/require-from-string/registry.json +++ b/tests/testdata/npm/registry/require-from-string/registry.json diff --git a/cli/tests/testdata/npm/registry/require-from-string/require-from-string-2.0.2.tgz b/tests/testdata/npm/registry/require-from-string/require-from-string-2.0.2.tgz Binary files differindex 918da97ed..918da97ed 100644 --- a/cli/tests/testdata/npm/registry/require-from-string/require-from-string-2.0.2.tgz +++ b/tests/testdata/npm/registry/require-from-string/require-from-string-2.0.2.tgz diff --git a/cli/tests/testdata/npm/registry/require-main-filename/registry.json b/tests/testdata/npm/registry/require-main-filename/registry.json index b2c6f2edd..b2c6f2edd 100644 --- a/cli/tests/testdata/npm/registry/require-main-filename/registry.json +++ b/tests/testdata/npm/registry/require-main-filename/registry.json diff --git a/cli/tests/testdata/npm/registry/require-main-filename/require-main-filename-2.0.0.tgz b/tests/testdata/npm/registry/require-main-filename/require-main-filename-2.0.0.tgz Binary files differindex 88daf52ed..88daf52ed 100644 --- a/cli/tests/testdata/npm/registry/require-main-filename/require-main-filename-2.0.0.tgz +++ b/tests/testdata/npm/registry/require-main-filename/require-main-filename-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/safer-buffer/registry.json b/tests/testdata/npm/registry/safer-buffer/registry.json index a992a08a6..a992a08a6 100644 --- a/cli/tests/testdata/npm/registry/safer-buffer/registry.json +++ b/tests/testdata/npm/registry/safer-buffer/registry.json diff --git a/cli/tests/testdata/npm/registry/safer-buffer/safer-buffer-2.1.2.tgz b/tests/testdata/npm/registry/safer-buffer/safer-buffer-2.1.2.tgz Binary files differindex ca15817bb..ca15817bb 100644 --- a/cli/tests/testdata/npm/registry/safer-buffer/safer-buffer-2.1.2.tgz +++ b/tests/testdata/npm/registry/safer-buffer/safer-buffer-2.1.2.tgz diff --git a/cli/tests/testdata/npm/registry/scheduler/registry.json b/tests/testdata/npm/registry/scheduler/registry.json index 02b5fb3c6..02b5fb3c6 100644 --- a/cli/tests/testdata/npm/registry/scheduler/registry.json +++ b/tests/testdata/npm/registry/scheduler/registry.json diff --git a/cli/tests/testdata/npm/registry/scheduler/scheduler-0.23.0.tgz b/tests/testdata/npm/registry/scheduler/scheduler-0.23.0.tgz Binary files differindex 23561b07c..23561b07c 100644 --- a/cli/tests/testdata/npm/registry/scheduler/scheduler-0.23.0.tgz +++ b/tests/testdata/npm/registry/scheduler/scheduler-0.23.0.tgz diff --git a/cli/tests/testdata/npm/registry/set-blocking/registry.json b/tests/testdata/npm/registry/set-blocking/registry.json index 9ca16a014..9ca16a014 100644 --- a/cli/tests/testdata/npm/registry/set-blocking/registry.json +++ b/tests/testdata/npm/registry/set-blocking/registry.json diff --git a/cli/tests/testdata/npm/registry/set-blocking/set-blocking-2.0.0.tgz b/tests/testdata/npm/registry/set-blocking/set-blocking-2.0.0.tgz Binary files differindex 2f61349cc..2f61349cc 100644 --- a/cli/tests/testdata/npm/registry/set-blocking/set-blocking-2.0.0.tgz +++ b/tests/testdata/npm/registry/set-blocking/set-blocking-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/source-map-js/registry.json b/tests/testdata/npm/registry/source-map-js/registry.json index d91922c97..d91922c97 100644 --- a/cli/tests/testdata/npm/registry/source-map-js/registry.json +++ b/tests/testdata/npm/registry/source-map-js/registry.json diff --git a/cli/tests/testdata/npm/registry/source-map-js/source-map-js-1.0.2.tgz b/tests/testdata/npm/registry/source-map-js/source-map-js-1.0.2.tgz Binary files differindex 518aeeb7d..518aeeb7d 100644 --- a/cli/tests/testdata/npm/registry/source-map-js/source-map-js-1.0.2.tgz +++ b/tests/testdata/npm/registry/source-map-js/source-map-js-1.0.2.tgz diff --git a/cli/tests/testdata/npm/registry/source-map/registry.json b/tests/testdata/npm/registry/source-map/registry.json index 6dd57b84f..6dd57b84f 100644 --- a/cli/tests/testdata/npm/registry/source-map/registry.json +++ b/tests/testdata/npm/registry/source-map/registry.json diff --git a/cli/tests/testdata/npm/registry/source-map/source-map-0.6.1.tgz b/tests/testdata/npm/registry/source-map/source-map-0.6.1.tgz Binary files differindex 7833490ca..7833490ca 100644 --- a/cli/tests/testdata/npm/registry/source-map/source-map-0.6.1.tgz +++ b/tests/testdata/npm/registry/source-map/source-map-0.6.1.tgz diff --git a/cli/tests/testdata/npm/registry/sourcemap-codec/registry.json b/tests/testdata/npm/registry/sourcemap-codec/registry.json index 8f7c5bb88..8f7c5bb88 100644 --- a/cli/tests/testdata/npm/registry/sourcemap-codec/registry.json +++ b/tests/testdata/npm/registry/sourcemap-codec/registry.json diff --git a/cli/tests/testdata/npm/registry/sourcemap-codec/sourcemap-codec-1.4.8.tgz b/tests/testdata/npm/registry/sourcemap-codec/sourcemap-codec-1.4.8.tgz Binary files differindex 9be3ae95d..9be3ae95d 100644 --- a/cli/tests/testdata/npm/registry/sourcemap-codec/sourcemap-codec-1.4.8.tgz +++ b/tests/testdata/npm/registry/sourcemap-codec/sourcemap-codec-1.4.8.tgz diff --git a/cli/tests/testdata/npm/registry/ssh2/registry.json b/tests/testdata/npm/registry/ssh2/registry.json index 3c8a38c69..3c8a38c69 100644 --- a/cli/tests/testdata/npm/registry/ssh2/registry.json +++ b/tests/testdata/npm/registry/ssh2/registry.json diff --git a/cli/tests/testdata/npm/registry/ssh2/ssh2-1.11.0.tgz b/tests/testdata/npm/registry/ssh2/ssh2-1.11.0.tgz Binary files differindex 661eb6b3d..661eb6b3d 100644 --- a/cli/tests/testdata/npm/registry/ssh2/ssh2-1.11.0.tgz +++ b/tests/testdata/npm/registry/ssh2/ssh2-1.11.0.tgz diff --git a/cli/tests/testdata/npm/registry/string-width/registry.json b/tests/testdata/npm/registry/string-width/registry.json index 2c634b154..2c634b154 100644 --- a/cli/tests/testdata/npm/registry/string-width/registry.json +++ b/tests/testdata/npm/registry/string-width/registry.json diff --git a/cli/tests/testdata/npm/registry/string-width/string-width-2.1.1.tgz b/tests/testdata/npm/registry/string-width/string-width-2.1.1.tgz Binary files differindex e698b1bec..e698b1bec 100644 --- a/cli/tests/testdata/npm/registry/string-width/string-width-2.1.1.tgz +++ b/tests/testdata/npm/registry/string-width/string-width-2.1.1.tgz diff --git a/cli/tests/testdata/npm/registry/string-width/string-width-4.2.3.tgz b/tests/testdata/npm/registry/string-width/string-width-4.2.3.tgz Binary files differindex a62235171..a62235171 100644 --- a/cli/tests/testdata/npm/registry/string-width/string-width-4.2.3.tgz +++ b/tests/testdata/npm/registry/string-width/string-width-4.2.3.tgz diff --git a/cli/tests/testdata/npm/registry/strip-ansi/registry.json b/tests/testdata/npm/registry/strip-ansi/registry.json index ddccbdb99..ddccbdb99 100644 --- a/cli/tests/testdata/npm/registry/strip-ansi/registry.json +++ b/tests/testdata/npm/registry/strip-ansi/registry.json diff --git a/cli/tests/testdata/npm/registry/strip-ansi/strip-ansi-4.0.0.tgz b/tests/testdata/npm/registry/strip-ansi/strip-ansi-4.0.0.tgz Binary files differindex 94b6f2533..94b6f2533 100644 --- a/cli/tests/testdata/npm/registry/strip-ansi/strip-ansi-4.0.0.tgz +++ b/tests/testdata/npm/registry/strip-ansi/strip-ansi-4.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/strip-ansi/strip-ansi-6.0.1.tgz b/tests/testdata/npm/registry/strip-ansi/strip-ansi-6.0.1.tgz Binary files differindex 14041ae05..14041ae05 100644 --- a/cli/tests/testdata/npm/registry/strip-ansi/strip-ansi-6.0.1.tgz +++ b/tests/testdata/npm/registry/strip-ansi/strip-ansi-6.0.1.tgz diff --git a/cli/tests/testdata/npm/registry/strip-final-newline/registry.json b/tests/testdata/npm/registry/strip-final-newline/registry.json index 67fe7b81e..67fe7b81e 100644 --- a/cli/tests/testdata/npm/registry/strip-final-newline/registry.json +++ b/tests/testdata/npm/registry/strip-final-newline/registry.json diff --git a/cli/tests/testdata/npm/registry/strip-final-newline/strip-final-newline-2.0.0.tgz b/tests/testdata/npm/registry/strip-final-newline/strip-final-newline-2.0.0.tgz Binary files differindex 97ab3f643..97ab3f643 100644 --- a/cli/tests/testdata/npm/registry/strip-final-newline/strip-final-newline-2.0.0.tgz +++ b/tests/testdata/npm/registry/strip-final-newline/strip-final-newline-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/supports-color/registry.json b/tests/testdata/npm/registry/supports-color/registry.json index 2853617f3..2853617f3 100644 --- a/cli/tests/testdata/npm/registry/supports-color/registry.json +++ b/tests/testdata/npm/registry/supports-color/registry.json diff --git a/cli/tests/testdata/npm/registry/supports-color/supports-color-7.2.0.tgz b/tests/testdata/npm/registry/supports-color/supports-color-7.2.0.tgz Binary files differindex 07183d297..07183d297 100644 --- a/cli/tests/testdata/npm/registry/supports-color/supports-color-7.2.0.tgz +++ b/tests/testdata/npm/registry/supports-color/supports-color-7.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/supports-esm/registry.json b/tests/testdata/npm/registry/supports-esm/registry.json index 0114ddad4..0114ddad4 100644 --- a/cli/tests/testdata/npm/registry/supports-esm/registry.json +++ b/tests/testdata/npm/registry/supports-esm/registry.json diff --git a/cli/tests/testdata/npm/registry/supports-esm/supports-esm-1.0.0.tgz b/tests/testdata/npm/registry/supports-esm/supports-esm-1.0.0.tgz Binary files differindex 64e085fa3..64e085fa3 100644 --- a/cli/tests/testdata/npm/registry/supports-esm/supports-esm-1.0.0.tgz +++ b/tests/testdata/npm/registry/supports-esm/supports-esm-1.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/tweetnacl/registry.json b/tests/testdata/npm/registry/tweetnacl/registry.json index 7ab22ff73..7ab22ff73 100644 --- a/cli/tests/testdata/npm/registry/tweetnacl/registry.json +++ b/tests/testdata/npm/registry/tweetnacl/registry.json diff --git a/cli/tests/testdata/npm/registry/tweetnacl/tweetnacl-0.14.5.tgz b/tests/testdata/npm/registry/tweetnacl/tweetnacl-0.14.5.tgz Binary files differindex c2955148e..c2955148e 100644 --- a/cli/tests/testdata/npm/registry/tweetnacl/tweetnacl-0.14.5.tgz +++ b/tests/testdata/npm/registry/tweetnacl/tweetnacl-0.14.5.tgz diff --git a/cli/tests/testdata/npm/registry/type-detect/registry.json b/tests/testdata/npm/registry/type-detect/registry.json index 8a335f240..8a335f240 100644 --- a/cli/tests/testdata/npm/registry/type-detect/registry.json +++ b/tests/testdata/npm/registry/type-detect/registry.json diff --git a/cli/tests/testdata/npm/registry/type-detect/type-detect-4.0.8.tgz b/tests/testdata/npm/registry/type-detect/type-detect-4.0.8.tgz Binary files differindex a8f95abf8..a8f95abf8 100644 --- a/cli/tests/testdata/npm/registry/type-detect/type-detect-4.0.8.tgz +++ b/tests/testdata/npm/registry/type-detect/type-detect-4.0.8.tgz diff --git a/cli/tests/testdata/npm/registry/type-fest/registry.json b/tests/testdata/npm/registry/type-fest/registry.json index ea1ff9b7e..ea1ff9b7e 100644 --- a/cli/tests/testdata/npm/registry/type-fest/registry.json +++ b/tests/testdata/npm/registry/type-fest/registry.json diff --git a/cli/tests/testdata/npm/registry/type-fest/type-fest-0.20.2.tgz b/tests/testdata/npm/registry/type-fest/type-fest-0.20.2.tgz Binary files differindex 0ac67554d..0ac67554d 100644 --- a/cli/tests/testdata/npm/registry/type-fest/type-fest-0.20.2.tgz +++ b/tests/testdata/npm/registry/type-fest/type-fest-0.20.2.tgz diff --git a/cli/tests/testdata/npm/registry/universalify/registry.json b/tests/testdata/npm/registry/universalify/registry.json index 4331737c1..4331737c1 100644 --- a/cli/tests/testdata/npm/registry/universalify/registry.json +++ b/tests/testdata/npm/registry/universalify/registry.json diff --git a/cli/tests/testdata/npm/registry/universalify/universalify-2.0.0.tgz b/tests/testdata/npm/registry/universalify/universalify-2.0.0.tgz Binary files differindex 2b9ae90b2..2b9ae90b2 100644 --- a/cli/tests/testdata/npm/registry/universalify/universalify-2.0.0.tgz +++ b/tests/testdata/npm/registry/universalify/universalify-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/update-browserslist-db/registry.json b/tests/testdata/npm/registry/update-browserslist-db/registry.json index 820a404e1..820a404e1 100644 --- a/cli/tests/testdata/npm/registry/update-browserslist-db/registry.json +++ b/tests/testdata/npm/registry/update-browserslist-db/registry.json diff --git a/cli/tests/testdata/npm/registry/update-browserslist-db/update-browserslist-db-1.0.10.tgz b/tests/testdata/npm/registry/update-browserslist-db/update-browserslist-db-1.0.10.tgz Binary files differindex e479fb923..e479fb923 100644 --- a/cli/tests/testdata/npm/registry/update-browserslist-db/update-browserslist-db-1.0.10.tgz +++ b/tests/testdata/npm/registry/update-browserslist-db/update-browserslist-db-1.0.10.tgz diff --git a/cli/tests/testdata/npm/registry/uri-js/registry.json b/tests/testdata/npm/registry/uri-js/registry.json index af182d9d7..af182d9d7 100644 --- a/cli/tests/testdata/npm/registry/uri-js/registry.json +++ b/tests/testdata/npm/registry/uri-js/registry.json diff --git a/cli/tests/testdata/npm/registry/uri-js/uri-js-4.4.1.tgz b/tests/testdata/npm/registry/uri-js/uri-js-4.4.1.tgz Binary files differindex 9886fbe4d..9886fbe4d 100644 --- a/cli/tests/testdata/npm/registry/uri-js/uri-js-4.4.1.tgz +++ b/tests/testdata/npm/registry/uri-js/uri-js-4.4.1.tgz diff --git a/cli/tests/testdata/npm/registry/vue/registry.json b/tests/testdata/npm/registry/vue/registry.json index 4a600902f..4a600902f 100644 --- a/cli/tests/testdata/npm/registry/vue/registry.json +++ b/tests/testdata/npm/registry/vue/registry.json diff --git a/cli/tests/testdata/npm/registry/vue/vue-3.2.38.tgz b/tests/testdata/npm/registry/vue/vue-3.2.38.tgz Binary files differindex 5e9453cd4..5e9453cd4 100644 --- a/cli/tests/testdata/npm/registry/vue/vue-3.2.38.tgz +++ b/tests/testdata/npm/registry/vue/vue-3.2.38.tgz diff --git a/cli/tests/testdata/npm/registry/which-module/registry.json b/tests/testdata/npm/registry/which-module/registry.json index 432f5ac7b..432f5ac7b 100644 --- a/cli/tests/testdata/npm/registry/which-module/registry.json +++ b/tests/testdata/npm/registry/which-module/registry.json diff --git a/cli/tests/testdata/npm/registry/which-module/which-module-2.0.0.tgz b/tests/testdata/npm/registry/which-module/which-module-2.0.0.tgz Binary files differindex 8a8bb3238..8a8bb3238 100644 --- a/cli/tests/testdata/npm/registry/which-module/which-module-2.0.0.tgz +++ b/tests/testdata/npm/registry/which-module/which-module-2.0.0.tgz diff --git a/cli/tests/testdata/npm/registry/wrap-ansi/registry.json b/tests/testdata/npm/registry/wrap-ansi/registry.json index 3297b213f..3297b213f 100644 --- a/cli/tests/testdata/npm/registry/wrap-ansi/registry.json +++ b/tests/testdata/npm/registry/wrap-ansi/registry.json diff --git a/cli/tests/testdata/npm/registry/wrap-ansi/wrap-ansi-6.2.0.tgz b/tests/testdata/npm/registry/wrap-ansi/wrap-ansi-6.2.0.tgz Binary files differindex bed5c97e6..bed5c97e6 100644 --- a/cli/tests/testdata/npm/registry/wrap-ansi/wrap-ansi-6.2.0.tgz +++ b/tests/testdata/npm/registry/wrap-ansi/wrap-ansi-6.2.0.tgz diff --git a/cli/tests/testdata/npm/registry/y18n/registry.json b/tests/testdata/npm/registry/y18n/registry.json index 179b763e0..179b763e0 100644 --- a/cli/tests/testdata/npm/registry/y18n/registry.json +++ b/tests/testdata/npm/registry/y18n/registry.json diff --git a/cli/tests/testdata/npm/registry/y18n/y18n-4.0.3.tgz b/tests/testdata/npm/registry/y18n/y18n-4.0.3.tgz Binary files differindex 390ae5b2b..390ae5b2b 100644 --- a/cli/tests/testdata/npm/registry/y18n/y18n-4.0.3.tgz +++ b/tests/testdata/npm/registry/y18n/y18n-4.0.3.tgz diff --git a/cli/tests/testdata/npm/registry/yargs-parser/registry.json b/tests/testdata/npm/registry/yargs-parser/registry.json index c877f7fd0..c877f7fd0 100644 --- a/cli/tests/testdata/npm/registry/yargs-parser/registry.json +++ b/tests/testdata/npm/registry/yargs-parser/registry.json diff --git a/cli/tests/testdata/npm/registry/yargs-parser/yargs-parser-18.1.3.tgz b/tests/testdata/npm/registry/yargs-parser/yargs-parser-18.1.3.tgz Binary files differindex 6824ba401..6824ba401 100644 --- a/cli/tests/testdata/npm/registry/yargs-parser/yargs-parser-18.1.3.tgz +++ b/tests/testdata/npm/registry/yargs-parser/yargs-parser-18.1.3.tgz diff --git a/cli/tests/testdata/npm/registry/yargs/registry.json b/tests/testdata/npm/registry/yargs/registry.json index 717d8801e..717d8801e 100644 --- a/cli/tests/testdata/npm/registry/yargs/registry.json +++ b/tests/testdata/npm/registry/yargs/registry.json diff --git a/cli/tests/testdata/npm/registry/yargs/yargs-15.4.1.tgz b/tests/testdata/npm/registry/yargs/yargs-15.4.1.tgz Binary files differindex fe9253139..fe9253139 100644 --- a/cli/tests/testdata/npm/registry/yargs/yargs-15.4.1.tgz +++ b/tests/testdata/npm/registry/yargs/yargs-15.4.1.tgz diff --git a/cli/tests/testdata/npm/reload/main.ts b/tests/testdata/npm/reload/main.ts index 1ccc441a1..1ccc441a1 100644 --- a/cli/tests/testdata/npm/reload/main.ts +++ b/tests/testdata/npm/reload/main.ts diff --git a/cli/tests/testdata/npm/remote_npm_specifier/main.out b/tests/testdata/npm/remote_npm_specifier/main.out index 9daeafb98..9daeafb98 100644 --- a/cli/tests/testdata/npm/remote_npm_specifier/main.out +++ b/tests/testdata/npm/remote_npm_specifier/main.out diff --git a/cli/tests/testdata/npm/remote_npm_specifier/main.ts b/tests/testdata/npm/remote_npm_specifier/main.ts index 20a99b688..20a99b688 100644 --- a/cli/tests/testdata/npm/remote_npm_specifier/main.ts +++ b/tests/testdata/npm/remote_npm_specifier/main.ts diff --git a/cli/tests/testdata/npm/remote_npm_specifier/remote.ts b/tests/testdata/npm/remote_npm_specifier/remote.ts index 923ed3ed8..923ed3ed8 100644 --- a/cli/tests/testdata/npm/remote_npm_specifier/remote.ts +++ b/tests/testdata/npm/remote_npm_specifier/remote.ts diff --git a/cli/tests/testdata/npm/require_added_nm_folder/main.js b/tests/testdata/npm/require_added_nm_folder/main.js index 723b2023a..723b2023a 100644 --- a/cli/tests/testdata/npm/require_added_nm_folder/main.js +++ b/tests/testdata/npm/require_added_nm_folder/main.js diff --git a/cli/tests/testdata/npm/require_added_nm_folder/main.out b/tests/testdata/npm/require_added_nm_folder/main.out index 7ed6ff82d..7ed6ff82d 100644 --- a/cli/tests/testdata/npm/require_added_nm_folder/main.out +++ b/tests/testdata/npm/require_added_nm_folder/main.out diff --git a/cli/tests/testdata/npm/require_json/main.js b/tests/testdata/npm/require_json/main.js index d11e85305..d11e85305 100644 --- a/cli/tests/testdata/npm/require_json/main.js +++ b/tests/testdata/npm/require_json/main.js diff --git a/cli/tests/testdata/npm/require_json/main.out b/tests/testdata/npm/require_json/main.out index 97db68e1b..97db68e1b 100644 --- a/cli/tests/testdata/npm/require_json/main.out +++ b/tests/testdata/npm/require_json/main.out diff --git a/cli/tests/testdata/npm/require_main/main.js b/tests/testdata/npm/require_main/main.js index ddecd4fdb..ddecd4fdb 100644 --- a/cli/tests/testdata/npm/require_main/main.js +++ b/tests/testdata/npm/require_main/main.js diff --git a/cli/tests/testdata/npm/require_main/main.out b/tests/testdata/npm/require_main/main.out index e2dbde096..e2dbde096 100644 --- a/cli/tests/testdata/npm/require_main/main.out +++ b/tests/testdata/npm/require_main/main.out diff --git a/cli/tests/testdata/npm/require_resolve_url/package.json b/tests/testdata/npm/require_resolve_url/package.json index 814c77a5b..814c77a5b 100644 --- a/cli/tests/testdata/npm/require_resolve_url/package.json +++ b/tests/testdata/npm/require_resolve_url/package.json diff --git a/cli/tests/testdata/npm/require_resolve_url/url_paths.out b/tests/testdata/npm/require_resolve_url/url_paths.out index 404d7dcba..404d7dcba 100644 --- a/cli/tests/testdata/npm/require_resolve_url/url_paths.out +++ b/tests/testdata/npm/require_resolve_url/url_paths.out diff --git a/cli/tests/testdata/npm/require_resolve_url/url_paths.ts b/tests/testdata/npm/require_resolve_url/url_paths.ts index 7826568fe..7826568fe 100644 --- a/cli/tests/testdata/npm/require_resolve_url/url_paths.ts +++ b/tests/testdata/npm/require_resolve_url/url_paths.ts diff --git a/cli/tests/testdata/npm/reserved_word_exports/main.out b/tests/testdata/npm/reserved_word_exports/main.out index 345a7012f..345a7012f 100644 --- a/cli/tests/testdata/npm/reserved_word_exports/main.out +++ b/tests/testdata/npm/reserved_word_exports/main.out diff --git a/cli/tests/testdata/npm/reserved_word_exports/main.ts b/tests/testdata/npm/reserved_word_exports/main.ts index 33cf183d3..33cf183d3 100644 --- a/cli/tests/testdata/npm/reserved_word_exports/main.ts +++ b/tests/testdata/npm/reserved_word_exports/main.ts diff --git a/cli/tests/testdata/npm/run_existing_npm_package/main.out b/tests/testdata/npm/run_existing_npm_package/main.out index baf7b7afd..baf7b7afd 100644 --- a/cli/tests/testdata/npm/run_existing_npm_package/main.out +++ b/tests/testdata/npm/run_existing_npm_package/main.out diff --git a/cli/tests/testdata/npm/run_existing_npm_package/package.json b/tests/testdata/npm/run_existing_npm_package/package.json index 1cd6d749d..1cd6d749d 100644 --- a/cli/tests/testdata/npm/run_existing_npm_package/package.json +++ b/tests/testdata/npm/run_existing_npm_package/package.json diff --git a/cli/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out b/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out index bec78df94..bec78df94 100644 --- a/cli/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out +++ b/tests/testdata/npm/run_existing_npm_package_with_subpath/main.out diff --git a/cli/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json b/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json index e9a7e84ce..e9a7e84ce 100644 --- a/cli/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json +++ b/tests/testdata/npm/run_existing_npm_package_with_subpath/package.json diff --git a/cli/tests/testdata/npm/sub_paths/main.jsx b/tests/testdata/npm/sub_paths/main.jsx index 0c712b9ff..0c712b9ff 100644 --- a/cli/tests/testdata/npm/sub_paths/main.jsx +++ b/tests/testdata/npm/sub_paths/main.jsx diff --git a/cli/tests/testdata/npm/sub_paths/main.out b/tests/testdata/npm/sub_paths/main.out index f034585a7..f034585a7 100644 --- a/cli/tests/testdata/npm/sub_paths/main.out +++ b/tests/testdata/npm/sub_paths/main.out diff --git a/cli/tests/testdata/npm/tarball_with_global_header/main.js b/tests/testdata/npm/tarball_with_global_header/main.js index d1bb40fbc..d1bb40fbc 100644 --- a/cli/tests/testdata/npm/tarball_with_global_header/main.js +++ b/tests/testdata/npm/tarball_with_global_header/main.js diff --git a/cli/tests/testdata/npm/tarball_with_global_header/main.out b/tests/testdata/npm/tarball_with_global_header/main.out index ff211087b..ff211087b 100644 --- a/cli/tests/testdata/npm/tarball_with_global_header/main.out +++ b/tests/testdata/npm/tarball_with_global_header/main.out diff --git a/cli/tests/testdata/npm/translate_cjs_to_esm/main.js b/tests/testdata/npm/translate_cjs_to_esm/main.js index 04a86fbf1..04a86fbf1 100644 --- a/cli/tests/testdata/npm/translate_cjs_to_esm/main.js +++ b/tests/testdata/npm/translate_cjs_to_esm/main.js diff --git a/cli/tests/testdata/npm/translate_cjs_to_esm/main.out b/tests/testdata/npm/translate_cjs_to_esm/main.out index c21a965b8..c21a965b8 100644 --- a/cli/tests/testdata/npm/translate_cjs_to_esm/main.out +++ b/tests/testdata/npm/translate_cjs_to_esm/main.out diff --git a/cli/tests/testdata/npm/types/main.out b/tests/testdata/npm/types/main.out index de1f2c145..de1f2c145 100644 --- a/cli/tests/testdata/npm/types/main.out +++ b/tests/testdata/npm/types/main.out diff --git a/cli/tests/testdata/npm/types/main.ts b/tests/testdata/npm/types/main.ts index ae420f6d6..ae420f6d6 100644 --- a/cli/tests/testdata/npm/types/main.ts +++ b/tests/testdata/npm/types/main.ts diff --git a/cli/tests/testdata/npm/types_ambient_module/import_map.json b/tests/testdata/npm/types_ambient_module/import_map.json index f61d99b47..f61d99b47 100644 --- a/cli/tests/testdata/npm/types_ambient_module/import_map.json +++ b/tests/testdata/npm/types_ambient_module/import_map.json diff --git a/cli/tests/testdata/npm/types_ambient_module/main.out b/tests/testdata/npm/types_ambient_module/main.out index c84130707..c84130707 100644 --- a/cli/tests/testdata/npm/types_ambient_module/main.out +++ b/tests/testdata/npm/types_ambient_module/main.out diff --git a/cli/tests/testdata/npm/types_ambient_module/main.ts b/tests/testdata/npm/types_ambient_module/main.ts index 8f77cabe8..8f77cabe8 100644 --- a/cli/tests/testdata/npm/types_ambient_module/main.ts +++ b/tests/testdata/npm/types_ambient_module/main.ts diff --git a/cli/tests/testdata/npm/types_ambient_module/main_import_map.out b/tests/testdata/npm/types_ambient_module/main_import_map.out index 548f9b479..548f9b479 100644 --- a/cli/tests/testdata/npm/types_ambient_module/main_import_map.out +++ b/tests/testdata/npm/types_ambient_module/main_import_map.out diff --git a/cli/tests/testdata/npm/types_ambient_module/main_import_map.ts b/tests/testdata/npm/types_ambient_module/main_import_map.ts index 2694c94b7..2694c94b7 100644 --- a/cli/tests/testdata/npm/types_ambient_module/main_import_map.ts +++ b/tests/testdata/npm/types_ambient_module/main_import_map.ts diff --git a/cli/tests/testdata/npm/types_entry_value_not_exists/main.out b/tests/testdata/npm/types_entry_value_not_exists/main.out index 0bb31a195..0bb31a195 100644 --- a/cli/tests/testdata/npm/types_entry_value_not_exists/main.out +++ b/tests/testdata/npm/types_entry_value_not_exists/main.out diff --git a/cli/tests/testdata/npm/types_entry_value_not_exists/main.ts b/tests/testdata/npm/types_entry_value_not_exists/main.ts index 04374ef87..04374ef87 100644 --- a/cli/tests/testdata/npm/types_entry_value_not_exists/main.ts +++ b/tests/testdata/npm/types_entry_value_not_exists/main.ts diff --git a/cli/tests/testdata/npm/types_exports_import_types/main.out b/tests/testdata/npm/types_exports_import_types/main.out index a3db009ca..a3db009ca 100644 --- a/cli/tests/testdata/npm/types_exports_import_types/main.out +++ b/tests/testdata/npm/types_exports_import_types/main.out diff --git a/cli/tests/testdata/npm/types_exports_import_types/main.ts b/tests/testdata/npm/types_exports_import_types/main.ts index 3ae3e92a3..3ae3e92a3 100644 --- a/cli/tests/testdata/npm/types_exports_import_types/main.ts +++ b/tests/testdata/npm/types_exports_import_types/main.ts diff --git a/cli/tests/testdata/npm/types_no_types_entry/main.out b/tests/testdata/npm/types_no_types_entry/main.out index 059009d3f..059009d3f 100644 --- a/cli/tests/testdata/npm/types_no_types_entry/main.out +++ b/tests/testdata/npm/types_no_types_entry/main.out diff --git a/cli/tests/testdata/npm/types_no_types_entry/main.ts b/tests/testdata/npm/types_no_types_entry/main.ts index eef53b681..eef53b681 100644 --- a/cli/tests/testdata/npm/types_no_types_entry/main.ts +++ b/tests/testdata/npm/types_no_types_entry/main.ts diff --git a/cli/tests/testdata/npm/typescript_file_in_package/main.out b/tests/testdata/npm/typescript_file_in_package/main.out index 0d6f53cd9..0d6f53cd9 100644 --- a/cli/tests/testdata/npm/typescript_file_in_package/main.out +++ b/tests/testdata/npm/typescript_file_in_package/main.out diff --git a/cli/tests/testdata/npm/typescript_file_in_package/main.ts b/tests/testdata/npm/typescript_file_in_package/main.ts index aefc38ebe..aefc38ebe 100644 --- a/cli/tests/testdata/npm/typescript_file_in_package/main.ts +++ b/tests/testdata/npm/typescript_file_in_package/main.ts diff --git a/cli/tests/testdata/package_json/basic/fail_check.check.out b/tests/testdata/package_json/basic/fail_check.check.out index 03997a051..03997a051 100644 --- a/cli/tests/testdata/package_json/basic/fail_check.check.out +++ b/tests/testdata/package_json/basic/fail_check.check.out diff --git a/cli/tests/testdata/package_json/basic/fail_check.ts b/tests/testdata/package_json/basic/fail_check.ts index cef10763d..cef10763d 100644 --- a/cli/tests/testdata/package_json/basic/fail_check.ts +++ b/tests/testdata/package_json/basic/fail_check.ts diff --git a/cli/tests/testdata/package_json/basic/lib.bench.out b/tests/testdata/package_json/basic/lib.bench.out index fa9c5efc6..fa9c5efc6 100644 --- a/cli/tests/testdata/package_json/basic/lib.bench.out +++ b/tests/testdata/package_json/basic/lib.bench.out diff --git a/cli/tests/testdata/package_json/basic/lib.bench.ts b/tests/testdata/package_json/basic/lib.bench.ts index e6b79d025..e6b79d025 100644 --- a/cli/tests/testdata/package_json/basic/lib.bench.ts +++ b/tests/testdata/package_json/basic/lib.bench.ts diff --git a/cli/tests/testdata/package_json/basic/lib.test.out b/tests/testdata/package_json/basic/lib.test.out index fa1cbb0f7..fa1cbb0f7 100644 --- a/cli/tests/testdata/package_json/basic/lib.test.out +++ b/tests/testdata/package_json/basic/lib.test.out diff --git a/cli/tests/testdata/package_json/basic/lib.test.ts b/tests/testdata/package_json/basic/lib.test.ts index 4e833e1f3..4e833e1f3 100644 --- a/cli/tests/testdata/package_json/basic/lib.test.ts +++ b/tests/testdata/package_json/basic/lib.test.ts diff --git a/cli/tests/testdata/package_json/basic/lib.ts b/tests/testdata/package_json/basic/lib.ts index 1deed81f7..1deed81f7 100644 --- a/cli/tests/testdata/package_json/basic/lib.ts +++ b/tests/testdata/package_json/basic/lib.ts diff --git a/cli/tests/testdata/package_json/basic/main.cache.out b/tests/testdata/package_json/basic/main.cache.out index 1c729e2a3..1c729e2a3 100644 --- a/cli/tests/testdata/package_json/basic/main.cache.out +++ b/tests/testdata/package_json/basic/main.cache.out diff --git a/cli/tests/testdata/package_json/basic/main.check.out b/tests/testdata/package_json/basic/main.check.out index a506cb0ed..a506cb0ed 100644 --- a/cli/tests/testdata/package_json/basic/main.check.out +++ b/tests/testdata/package_json/basic/main.check.out diff --git a/cli/tests/testdata/package_json/basic/main.info.out b/tests/testdata/package_json/basic/main.info.out index 892c0612a..892c0612a 100644 --- a/cli/tests/testdata/package_json/basic/main.info.out +++ b/tests/testdata/package_json/basic/main.info.out diff --git a/cli/tests/testdata/package_json/basic/main.ts b/tests/testdata/package_json/basic/main.ts index e241f3002..e241f3002 100644 --- a/cli/tests/testdata/package_json/basic/main.ts +++ b/tests/testdata/package_json/basic/main.ts diff --git a/cli/tests/testdata/package_json/basic/package.json b/tests/testdata/package_json/basic/package.json index 54ca824d6..54ca824d6 100644 --- a/cli/tests/testdata/package_json/basic/package.json +++ b/tests/testdata/package_json/basic/package.json diff --git a/cli/tests/testdata/package_json/deno_json/deno.json b/tests/testdata/package_json/deno_json/deno.json index 8a89da280..8a89da280 100644 --- a/cli/tests/testdata/package_json/deno_json/deno.json +++ b/tests/testdata/package_json/deno_json/deno.json diff --git a/cli/tests/testdata/package_json/deno_json/main.check.out b/tests/testdata/package_json/deno_json/main.check.out index 53b6869c0..53b6869c0 100644 --- a/cli/tests/testdata/package_json/deno_json/main.check.out +++ b/tests/testdata/package_json/deno_json/main.check.out diff --git a/cli/tests/testdata/package_json/deno_json/main.out b/tests/testdata/package_json/deno_json/main.out index 1191247b6..1191247b6 100644 --- a/cli/tests/testdata/package_json/deno_json/main.out +++ b/tests/testdata/package_json/deno_json/main.out diff --git a/cli/tests/testdata/package_json/deno_json/main.ts b/tests/testdata/package_json/deno_json/main.ts index 7768ff3fc..7768ff3fc 100644 --- a/cli/tests/testdata/package_json/deno_json/main.ts +++ b/tests/testdata/package_json/deno_json/main.ts diff --git a/cli/tests/testdata/package_json/deno_json/other.ts b/tests/testdata/package_json/deno_json/other.ts index 997d84adf..997d84adf 100644 --- a/cli/tests/testdata/package_json/deno_json/other.ts +++ b/tests/testdata/package_json/deno_json/other.ts diff --git a/cli/tests/testdata/package_json/deno_json/package.json b/tests/testdata/package_json/deno_json/package.json index 54ca824d6..54ca824d6 100644 --- a/cli/tests/testdata/package_json/deno_json/package.json +++ b/tests/testdata/package_json/deno_json/package.json diff --git a/cli/tests/testdata/package_json/invalid_value/error.ts b/tests/testdata/package_json/invalid_value/error.ts index fd75d633c..fd75d633c 100644 --- a/cli/tests/testdata/package_json/invalid_value/error.ts +++ b/tests/testdata/package_json/invalid_value/error.ts diff --git a/cli/tests/testdata/package_json/invalid_value/error.ts.out b/tests/testdata/package_json/invalid_value/error.ts.out index faa811a30..faa811a30 100644 --- a/cli/tests/testdata/package_json/invalid_value/error.ts.out +++ b/tests/testdata/package_json/invalid_value/error.ts.out diff --git a/cli/tests/testdata/package_json/invalid_value/ok.ts b/tests/testdata/package_json/invalid_value/ok.ts index ce517439f..ce517439f 100644 --- a/cli/tests/testdata/package_json/invalid_value/ok.ts +++ b/tests/testdata/package_json/invalid_value/ok.ts diff --git a/cli/tests/testdata/package_json/invalid_value/ok.ts.out b/tests/testdata/package_json/invalid_value/ok.ts.out index 17d9bba00..17d9bba00 100644 --- a/cli/tests/testdata/package_json/invalid_value/ok.ts.out +++ b/tests/testdata/package_json/invalid_value/ok.ts.out diff --git a/cli/tests/testdata/package_json/invalid_value/package.json b/tests/testdata/package_json/invalid_value/package.json index c8857649e..c8857649e 100644 --- a/cli/tests/testdata/package_json/invalid_value/package.json +++ b/tests/testdata/package_json/invalid_value/package.json diff --git a/cli/tests/testdata/package_json/invalid_value/task.out b/tests/testdata/package_json/invalid_value/task.out index 28e3c770d..28e3c770d 100644 --- a/cli/tests/testdata/package_json/invalid_value/task.out +++ b/tests/testdata/package_json/invalid_value/task.out diff --git a/cli/tests/testdata/publish/deno_jsonc.out b/tests/testdata/publish/deno_jsonc.out index 2d5e4ffea..2d5e4ffea 100644 --- a/cli/tests/testdata/publish/deno_jsonc.out +++ b/tests/testdata/publish/deno_jsonc.out diff --git a/cli/tests/testdata/publish/deno_jsonc/deno.jsonc b/tests/testdata/publish/deno_jsonc/deno.jsonc index 4c9dfb08c..4c9dfb08c 100644 --- a/cli/tests/testdata/publish/deno_jsonc/deno.jsonc +++ b/tests/testdata/publish/deno_jsonc/deno.jsonc diff --git a/cli/tests/testdata/publish/deno_jsonc/mod.ts b/tests/testdata/publish/deno_jsonc/mod.ts index 4bb6da255..4bb6da255 100644 --- a/cli/tests/testdata/publish/deno_jsonc/mod.ts +++ b/tests/testdata/publish/deno_jsonc/mod.ts diff --git a/cli/tests/testdata/publish/deno_jsonc/std_http.ts b/tests/testdata/publish/deno_jsonc/std_http.ts index 9d57b36f3..9d57b36f3 100644 --- a/cli/tests/testdata/publish/deno_jsonc/std_http.ts +++ b/tests/testdata/publish/deno_jsonc/std_http.ts diff --git a/cli/tests/testdata/publish/dry_run.out b/tests/testdata/publish/dry_run.out index f9f4df72e..f9f4df72e 100644 --- a/cli/tests/testdata/publish/dry_run.out +++ b/tests/testdata/publish/dry_run.out diff --git a/cli/tests/testdata/publish/invalid_fast_check.out b/tests/testdata/publish/invalid_fast_check.out index d18be45fe..d18be45fe 100644 --- a/cli/tests/testdata/publish/invalid_fast_check.out +++ b/tests/testdata/publish/invalid_fast_check.out diff --git a/cli/tests/testdata/publish/invalid_fast_check/deno.json b/tests/testdata/publish/invalid_fast_check/deno.json index 5826e5529..5826e5529 100644 --- a/cli/tests/testdata/publish/invalid_fast_check/deno.json +++ b/tests/testdata/publish/invalid_fast_check/deno.json diff --git a/cli/tests/testdata/publish/invalid_fast_check/mod.ts b/tests/testdata/publish/invalid_fast_check/mod.ts index 025311049..025311049 100644 --- a/cli/tests/testdata/publish/invalid_fast_check/mod.ts +++ b/tests/testdata/publish/invalid_fast_check/mod.ts diff --git a/cli/tests/testdata/publish/invalid_import.out b/tests/testdata/publish/invalid_import.out index ca9d20eed..ca9d20eed 100644 --- a/cli/tests/testdata/publish/invalid_import.out +++ b/tests/testdata/publish/invalid_import.out diff --git a/cli/tests/testdata/publish/invalid_import/deno.json b/tests/testdata/publish/invalid_import/deno.json index 49b666d22..49b666d22 100644 --- a/cli/tests/testdata/publish/invalid_import/deno.json +++ b/tests/testdata/publish/invalid_import/deno.json diff --git a/cli/tests/testdata/publish/invalid_import/mod.ts b/tests/testdata/publish/invalid_import/mod.ts index bdaf010e2..bdaf010e2 100644 --- a/cli/tests/testdata/publish/invalid_import/mod.ts +++ b/tests/testdata/publish/invalid_import/mod.ts diff --git a/cli/tests/testdata/publish/invalid_path.out b/tests/testdata/publish/invalid_path.out index cd3e92e0c..cd3e92e0c 100644 --- a/cli/tests/testdata/publish/invalid_path.out +++ b/tests/testdata/publish/invalid_path.out diff --git a/cli/tests/testdata/publish/invalid_path/deno.json b/tests/testdata/publish/invalid_path/deno.json index 213a7cec6..213a7cec6 100644 --- a/cli/tests/testdata/publish/invalid_path/deno.json +++ b/tests/testdata/publish/invalid_path/deno.json diff --git a/cli/tests/testdata/publish/invalid_path/mod.ts b/tests/testdata/publish/invalid_path/mod.ts index 9e217d9b0..9e217d9b0 100644 --- a/cli/tests/testdata/publish/invalid_path/mod.ts +++ b/tests/testdata/publish/invalid_path/mod.ts diff --git a/cli/tests/testdata/publish/invalid_path/path with spaces.txt b/tests/testdata/publish/invalid_path/path with spaces.txt index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/publish/invalid_path/path with spaces.txt +++ b/tests/testdata/publish/invalid_path/path with spaces.txt diff --git a/cli/tests/testdata/publish/javascript_decl_file.out b/tests/testdata/publish/javascript_decl_file.out index deb66eba0..deb66eba0 100644 --- a/cli/tests/testdata/publish/javascript_decl_file.out +++ b/tests/testdata/publish/javascript_decl_file.out diff --git a/cli/tests/testdata/publish/javascript_decl_file/deno.json b/tests/testdata/publish/javascript_decl_file/deno.json index e5dbfa8d3..e5dbfa8d3 100644 --- a/cli/tests/testdata/publish/javascript_decl_file/deno.json +++ b/tests/testdata/publish/javascript_decl_file/deno.json diff --git a/cli/tests/testdata/publish/javascript_decl_file/mod.d.ts b/tests/testdata/publish/javascript_decl_file/mod.d.ts index b2f6c69a8..b2f6c69a8 100644 --- a/cli/tests/testdata/publish/javascript_decl_file/mod.d.ts +++ b/tests/testdata/publish/javascript_decl_file/mod.d.ts diff --git a/cli/tests/testdata/publish/javascript_decl_file/mod.js b/tests/testdata/publish/javascript_decl_file/mod.js index 2395e622b..2395e622b 100644 --- a/cli/tests/testdata/publish/javascript_decl_file/mod.js +++ b/tests/testdata/publish/javascript_decl_file/mod.js diff --git a/cli/tests/testdata/publish/javascript_missing_decl_file.out b/tests/testdata/publish/javascript_missing_decl_file.out index 557451b29..557451b29 100644 --- a/cli/tests/testdata/publish/javascript_missing_decl_file.out +++ b/tests/testdata/publish/javascript_missing_decl_file.out diff --git a/cli/tests/testdata/publish/javascript_missing_decl_file/deno.json b/tests/testdata/publish/javascript_missing_decl_file/deno.json index e12927c26..e12927c26 100644 --- a/cli/tests/testdata/publish/javascript_missing_decl_file/deno.json +++ b/tests/testdata/publish/javascript_missing_decl_file/deno.json diff --git a/cli/tests/testdata/publish/javascript_missing_decl_file/mod.js b/tests/testdata/publish/javascript_missing_decl_file/mod.js index 4a62fa5b4..4a62fa5b4 100644 --- a/cli/tests/testdata/publish/javascript_missing_decl_file/mod.js +++ b/tests/testdata/publish/javascript_missing_decl_file/mod.js diff --git a/cli/tests/testdata/publish/javascript_missing_decl_file/other.js b/tests/testdata/publish/javascript_missing_decl_file/other.js index 89ffb80ba..89ffb80ba 100644 --- a/cli/tests/testdata/publish/javascript_missing_decl_file/other.js +++ b/tests/testdata/publish/javascript_missing_decl_file/other.js diff --git a/cli/tests/testdata/publish/missing_deno_json.out b/tests/testdata/publish/missing_deno_json.out index adb472c71..adb472c71 100644 --- a/cli/tests/testdata/publish/missing_deno_json.out +++ b/tests/testdata/publish/missing_deno_json.out diff --git a/cli/tests/testdata/publish/missing_deno_json/main.ts b/tests/testdata/publish/missing_deno_json/main.ts index 8d9b8a22a..8d9b8a22a 100644 --- a/cli/tests/testdata/publish/missing_deno_json/main.ts +++ b/tests/testdata/publish/missing_deno_json/main.ts diff --git a/cli/tests/testdata/publish/no_token.out b/tests/testdata/publish/no_token.out index 41415094c..41415094c 100644 --- a/cli/tests/testdata/publish/no_token.out +++ b/tests/testdata/publish/no_token.out diff --git a/cli/tests/testdata/publish/no_zap.out b/tests/testdata/publish/no_zap.out index 109964903..109964903 100644 --- a/cli/tests/testdata/publish/no_zap.out +++ b/tests/testdata/publish/no_zap.out diff --git a/cli/tests/testdata/publish/node_specifier.out b/tests/testdata/publish/node_specifier.out index 7acb5b5ba..7acb5b5ba 100644 --- a/cli/tests/testdata/publish/node_specifier.out +++ b/tests/testdata/publish/node_specifier.out diff --git a/cli/tests/testdata/publish/node_specifier/deno.json b/tests/testdata/publish/node_specifier/deno.json index 213a7cec6..213a7cec6 100644 --- a/cli/tests/testdata/publish/node_specifier/deno.json +++ b/tests/testdata/publish/node_specifier/deno.json diff --git a/cli/tests/testdata/publish/node_specifier/mod.ts b/tests/testdata/publish/node_specifier/mod.ts index 9d8263709..9d8263709 100644 --- a/cli/tests/testdata/publish/node_specifier/mod.ts +++ b/tests/testdata/publish/node_specifier/mod.ts diff --git a/cli/tests/testdata/publish/successful.out b/tests/testdata/publish/successful.out index 7dbe16807..7dbe16807 100644 --- a/cli/tests/testdata/publish/successful.out +++ b/tests/testdata/publish/successful.out diff --git a/cli/tests/testdata/publish/successful/deno.json b/tests/testdata/publish/successful/deno.json index fefab899b..fefab899b 100644 --- a/cli/tests/testdata/publish/successful/deno.json +++ b/tests/testdata/publish/successful/deno.json diff --git a/cli/tests/testdata/publish/successful/mod.ts b/tests/testdata/publish/successful/mod.ts index 4bb6da255..4bb6da255 100644 --- a/cli/tests/testdata/publish/successful/mod.ts +++ b/tests/testdata/publish/successful/mod.ts diff --git a/cli/tests/testdata/publish/successful/std_http.ts b/tests/testdata/publish/successful/std_http.ts index 9d57b36f3..9d57b36f3 100644 --- a/cli/tests/testdata/publish/successful/std_http.ts +++ b/tests/testdata/publish/successful/std_http.ts diff --git a/cli/tests/testdata/publish/symlink.out b/tests/testdata/publish/symlink.out index d226fa18e..d226fa18e 100644 --- a/cli/tests/testdata/publish/symlink.out +++ b/tests/testdata/publish/symlink.out diff --git a/cli/tests/testdata/publish/symlink/deno.json b/tests/testdata/publish/symlink/deno.json index 213a7cec6..213a7cec6 100644 --- a/cli/tests/testdata/publish/symlink/deno.json +++ b/tests/testdata/publish/symlink/deno.json diff --git a/cli/tests/testdata/publish/symlink/mod.ts b/tests/testdata/publish/symlink/mod.ts index 9e217d9b0..9e217d9b0 100644 --- a/cli/tests/testdata/publish/symlink/mod.ts +++ b/tests/testdata/publish/symlink/mod.ts diff --git a/cli/tests/testdata/publish/symlink/symlink b/tests/testdata/publish/symlink/symlink index 0df9bcd04..0df9bcd04 120000 --- a/cli/tests/testdata/publish/symlink/symlink +++ b/tests/testdata/publish/symlink/symlink diff --git a/cli/tests/testdata/publish/unanalyzable_dynamic_import.out b/tests/testdata/publish/unanalyzable_dynamic_import.out index 3be7ece87..3be7ece87 100644 --- a/cli/tests/testdata/publish/unanalyzable_dynamic_import.out +++ b/tests/testdata/publish/unanalyzable_dynamic_import.out diff --git a/cli/tests/testdata/publish/unanalyzable_dynamic_import/deno.json b/tests/testdata/publish/unanalyzable_dynamic_import/deno.json index 213a7cec6..213a7cec6 100644 --- a/cli/tests/testdata/publish/unanalyzable_dynamic_import/deno.json +++ b/tests/testdata/publish/unanalyzable_dynamic_import/deno.json diff --git a/cli/tests/testdata/publish/unanalyzable_dynamic_import/mod.ts b/tests/testdata/publish/unanalyzable_dynamic_import/mod.ts index fd53cb2c8..fd53cb2c8 100644 --- a/cli/tests/testdata/publish/unanalyzable_dynamic_import/mod.ts +++ b/tests/testdata/publish/unanalyzable_dynamic_import/mod.ts diff --git a/cli/tests/testdata/publish/workspace.out b/tests/testdata/publish/workspace.out index 588c22bbc..588c22bbc 100644 --- a/cli/tests/testdata/publish/workspace.out +++ b/tests/testdata/publish/workspace.out diff --git a/cli/tests/testdata/publish/workspace/bar/deno.json b/tests/testdata/publish/workspace/bar/deno.json index 213a7cec6..213a7cec6 100644 --- a/cli/tests/testdata/publish/workspace/bar/deno.json +++ b/tests/testdata/publish/workspace/bar/deno.json diff --git a/cli/tests/testdata/publish/workspace/bar/mod.ts b/tests/testdata/publish/workspace/bar/mod.ts index 8d9b8a22a..8d9b8a22a 100644 --- a/cli/tests/testdata/publish/workspace/bar/mod.ts +++ b/tests/testdata/publish/workspace/bar/mod.ts diff --git a/cli/tests/testdata/publish/workspace/deno.json b/tests/testdata/publish/workspace/deno.json index 57602aab5..57602aab5 100644 --- a/cli/tests/testdata/publish/workspace/deno.json +++ b/tests/testdata/publish/workspace/deno.json diff --git a/cli/tests/testdata/publish/workspace/foo/deno.json b/tests/testdata/publish/workspace/foo/deno.json index 79563d36c..79563d36c 100644 --- a/cli/tests/testdata/publish/workspace/foo/deno.json +++ b/tests/testdata/publish/workspace/foo/deno.json diff --git a/cli/tests/testdata/publish/workspace/foo/mod.ts b/tests/testdata/publish/workspace/foo/mod.ts index adf584463..adf584463 100644 --- a/cli/tests/testdata/publish/workspace/foo/mod.ts +++ b/tests/testdata/publish/workspace/foo/mod.ts diff --git a/cli/tests/testdata/publish/workspace_individual.out b/tests/testdata/publish/workspace_individual.out index 4eadb45af..4eadb45af 100644 --- a/cli/tests/testdata/publish/workspace_individual.out +++ b/tests/testdata/publish/workspace_individual.out diff --git a/cli/tests/testdata/repl/import_type.ts b/tests/testdata/repl/import_type.ts index 851ebad86..851ebad86 100644 --- a/cli/tests/testdata/repl/import_type.ts +++ b/tests/testdata/repl/import_type.ts diff --git a/cli/tests/testdata/run/001_hello.js b/tests/testdata/run/001_hello.js index accefceba..accefceba 100644 --- a/cli/tests/testdata/run/001_hello.js +++ b/tests/testdata/run/001_hello.js diff --git a/cli/tests/testdata/run/001_hello.js.out b/tests/testdata/run/001_hello.js.out index 557db03de..557db03de 100644 --- a/cli/tests/testdata/run/001_hello.js.out +++ b/tests/testdata/run/001_hello.js.out diff --git a/cli/tests/testdata/run/002_hello.ts b/tests/testdata/run/002_hello.ts index accefceba..accefceba 100644 --- a/cli/tests/testdata/run/002_hello.ts +++ b/tests/testdata/run/002_hello.ts diff --git a/cli/tests/testdata/run/002_hello.ts.out b/tests/testdata/run/002_hello.ts.out index 557db03de..557db03de 100644 --- a/cli/tests/testdata/run/002_hello.ts.out +++ b/tests/testdata/run/002_hello.ts.out diff --git a/cli/tests/testdata/run/003_relative_import.ts b/tests/testdata/run/003_relative_import.ts index 840121bfe..840121bfe 100644 --- a/cli/tests/testdata/run/003_relative_import.ts +++ b/tests/testdata/run/003_relative_import.ts diff --git a/cli/tests/testdata/run/003_relative_import.ts.out b/tests/testdata/run/003_relative_import.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/003_relative_import.ts.out +++ b/tests/testdata/run/003_relative_import.ts.out diff --git a/cli/tests/testdata/run/004_set_timeout.ts b/tests/testdata/run/004_set_timeout.ts index 214b25086..214b25086 100644 --- a/cli/tests/testdata/run/004_set_timeout.ts +++ b/tests/testdata/run/004_set_timeout.ts diff --git a/cli/tests/testdata/run/004_set_timeout.ts.out b/tests/testdata/run/004_set_timeout.ts.out index f9264f7fb..f9264f7fb 100644 --- a/cli/tests/testdata/run/004_set_timeout.ts.out +++ b/tests/testdata/run/004_set_timeout.ts.out diff --git a/cli/tests/testdata/run/005_more_imports.ts b/tests/testdata/run/005_more_imports.ts index 6c96fac64..6c96fac64 100644 --- a/cli/tests/testdata/run/005_more_imports.ts +++ b/tests/testdata/run/005_more_imports.ts diff --git a/cli/tests/testdata/run/005_more_imports.ts.out b/tests/testdata/run/005_more_imports.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/005_more_imports.ts.out +++ b/tests/testdata/run/005_more_imports.ts.out diff --git a/cli/tests/testdata/run/006_url_imports.ts b/tests/testdata/run/006_url_imports.ts index 4036f27ed..4036f27ed 100644 --- a/cli/tests/testdata/run/006_url_imports.ts +++ b/tests/testdata/run/006_url_imports.ts diff --git a/cli/tests/testdata/run/006_url_imports.ts.out b/tests/testdata/run/006_url_imports.ts.out index 989ce33e9..989ce33e9 100644 --- a/cli/tests/testdata/run/006_url_imports.ts.out +++ b/tests/testdata/run/006_url_imports.ts.out diff --git a/cli/tests/testdata/run/012_async.ts b/tests/testdata/run/012_async.ts index 536197b68..536197b68 100644 --- a/cli/tests/testdata/run/012_async.ts +++ b/tests/testdata/run/012_async.ts diff --git a/cli/tests/testdata/run/012_async.ts.out b/tests/testdata/run/012_async.ts.out index 01e79c32a..01e79c32a 100644 --- a/cli/tests/testdata/run/012_async.ts.out +++ b/tests/testdata/run/012_async.ts.out diff --git a/cli/tests/testdata/run/013_dynamic_import.ts b/tests/testdata/run/013_dynamic_import.ts index fc231936c..fc231936c 100644 --- a/cli/tests/testdata/run/013_dynamic_import.ts +++ b/tests/testdata/run/013_dynamic_import.ts diff --git a/cli/tests/testdata/run/013_dynamic_import.ts.out b/tests/testdata/run/013_dynamic_import.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/013_dynamic_import.ts.out +++ b/tests/testdata/run/013_dynamic_import.ts.out diff --git a/cli/tests/testdata/run/014_duplicate_import.ts b/tests/testdata/run/014_duplicate_import.ts index c7dd881cf..c7dd881cf 100644 --- a/cli/tests/testdata/run/014_duplicate_import.ts +++ b/tests/testdata/run/014_duplicate_import.ts diff --git a/cli/tests/testdata/run/014_duplicate_import.ts.out b/tests/testdata/run/014_duplicate_import.ts.out index 4effa19f4..4effa19f4 100644 --- a/cli/tests/testdata/run/014_duplicate_import.ts.out +++ b/tests/testdata/run/014_duplicate_import.ts.out diff --git a/cli/tests/testdata/run/015_duplicate_parallel_import.js b/tests/testdata/run/015_duplicate_parallel_import.js index 2fbe2c732..2fbe2c732 100644 --- a/cli/tests/testdata/run/015_duplicate_parallel_import.js +++ b/tests/testdata/run/015_duplicate_parallel_import.js diff --git a/cli/tests/testdata/run/015_duplicate_parallel_import.js.out b/tests/testdata/run/015_duplicate_parallel_import.js.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/015_duplicate_parallel_import.js.out +++ b/tests/testdata/run/015_duplicate_parallel_import.js.out diff --git a/cli/tests/testdata/run/016_double_await.ts b/tests/testdata/run/016_double_await.ts index 457a53ff3..457a53ff3 100644 --- a/cli/tests/testdata/run/016_double_await.ts +++ b/tests/testdata/run/016_double_await.ts diff --git a/cli/tests/testdata/run/016_double_await.ts.out b/tests/testdata/run/016_double_await.ts.out index da29283aa..da29283aa 100644 --- a/cli/tests/testdata/run/016_double_await.ts.out +++ b/tests/testdata/run/016_double_await.ts.out diff --git a/cli/tests/testdata/run/017_import_redirect.ts b/tests/testdata/run/017_import_redirect.ts index 1265dd4ed..1265dd4ed 100644 --- a/cli/tests/testdata/run/017_import_redirect.ts +++ b/tests/testdata/run/017_import_redirect.ts diff --git a/cli/tests/testdata/run/017_import_redirect.ts.out b/tests/testdata/run/017_import_redirect.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/017_import_redirect.ts.out +++ b/tests/testdata/run/017_import_redirect.ts.out diff --git a/cli/tests/testdata/run/017_import_redirect_info.out b/tests/testdata/run/017_import_redirect_info.out index d1850ccb5..d1850ccb5 100644 --- a/cli/tests/testdata/run/017_import_redirect_info.out +++ b/tests/testdata/run/017_import_redirect_info.out diff --git a/cli/tests/testdata/run/018_async_catch.ts b/tests/testdata/run/018_async_catch.ts index ac43a52e8..ac43a52e8 100644 --- a/cli/tests/testdata/run/018_async_catch.ts +++ b/tests/testdata/run/018_async_catch.ts diff --git a/cli/tests/testdata/run/018_async_catch.ts.out b/tests/testdata/run/018_async_catch.ts.out index 4fc219973..4fc219973 100644 --- a/cli/tests/testdata/run/018_async_catch.ts.out +++ b/tests/testdata/run/018_async_catch.ts.out diff --git a/cli/tests/testdata/run/019_media_types.ts b/tests/testdata/run/019_media_types.ts index d985bd249..d985bd249 100644 --- a/cli/tests/testdata/run/019_media_types.ts +++ b/tests/testdata/run/019_media_types.ts diff --git a/cli/tests/testdata/run/019_media_types.ts.out b/tests/testdata/run/019_media_types.ts.out index b3e94678c..b3e94678c 100644 --- a/cli/tests/testdata/run/019_media_types.ts.out +++ b/tests/testdata/run/019_media_types.ts.out diff --git a/cli/tests/testdata/run/020_json_modules.ts b/tests/testdata/run/020_json_modules.ts index b4ae60665..b4ae60665 100644 --- a/cli/tests/testdata/run/020_json_modules.ts +++ b/tests/testdata/run/020_json_modules.ts diff --git a/cli/tests/testdata/run/020_json_modules.ts.out b/tests/testdata/run/020_json_modules.ts.out index 948901724..948901724 100644 --- a/cli/tests/testdata/run/020_json_modules.ts.out +++ b/tests/testdata/run/020_json_modules.ts.out diff --git a/cli/tests/testdata/run/021_mjs_modules.ts b/tests/testdata/run/021_mjs_modules.ts index 838cd2c38..838cd2c38 100644 --- a/cli/tests/testdata/run/021_mjs_modules.ts +++ b/tests/testdata/run/021_mjs_modules.ts diff --git a/cli/tests/testdata/run/021_mjs_modules.ts.out b/tests/testdata/run/021_mjs_modules.ts.out index 27ba77dda..27ba77dda 100644 --- a/cli/tests/testdata/run/021_mjs_modules.ts.out +++ b/tests/testdata/run/021_mjs_modules.ts.out diff --git a/cli/tests/testdata/run/023_no_ext b/tests/testdata/run/023_no_ext index d2cd6a037..d2cd6a037 100644 --- a/cli/tests/testdata/run/023_no_ext +++ b/tests/testdata/run/023_no_ext diff --git a/cli/tests/testdata/run/023_no_ext.out b/tests/testdata/run/023_no_ext.out index 27ba77dda..27ba77dda 100644 --- a/cli/tests/testdata/run/023_no_ext.out +++ b/tests/testdata/run/023_no_ext.out diff --git a/cli/tests/testdata/run/025_hrtime.ts b/tests/testdata/run/025_hrtime.ts index b69d61488..b69d61488 100644 --- a/cli/tests/testdata/run/025_hrtime.ts +++ b/tests/testdata/run/025_hrtime.ts diff --git a/cli/tests/testdata/run/025_hrtime.ts.out b/tests/testdata/run/025_hrtime.ts.out index bb101b641..bb101b641 100644 --- a/cli/tests/testdata/run/025_hrtime.ts.out +++ b/tests/testdata/run/025_hrtime.ts.out diff --git a/cli/tests/testdata/run/025_reload_js_type_error.js b/tests/testdata/run/025_reload_js_type_error.js index 3b7c23cc9..3b7c23cc9 100644 --- a/cli/tests/testdata/run/025_reload_js_type_error.js +++ b/tests/testdata/run/025_reload_js_type_error.js diff --git a/cli/tests/testdata/run/025_reload_js_type_error.js.out b/tests/testdata/run/025_reload_js_type_error.js.out index ce0136250..ce0136250 100644 --- a/cli/tests/testdata/run/025_reload_js_type_error.js.out +++ b/tests/testdata/run/025_reload_js_type_error.js.out diff --git a/cli/tests/testdata/run/026_redirect_javascript.js b/tests/testdata/run/026_redirect_javascript.js index 226a6b622..226a6b622 100644 --- a/cli/tests/testdata/run/026_redirect_javascript.js +++ b/tests/testdata/run/026_redirect_javascript.js diff --git a/cli/tests/testdata/run/026_redirect_javascript.js.out b/tests/testdata/run/026_redirect_javascript.js.out index 290864299..290864299 100644 --- a/cli/tests/testdata/run/026_redirect_javascript.js.out +++ b/tests/testdata/run/026_redirect_javascript.js.out diff --git a/cli/tests/testdata/run/027_redirect_typescript.ts b/tests/testdata/run/027_redirect_typescript.ts index 584341975..584341975 100644 --- a/cli/tests/testdata/run/027_redirect_typescript.ts +++ b/tests/testdata/run/027_redirect_typescript.ts diff --git a/cli/tests/testdata/run/027_redirect_typescript.ts.out b/tests/testdata/run/027_redirect_typescript.ts.out index 480d4e8ca..480d4e8ca 100644 --- a/cli/tests/testdata/run/027_redirect_typescript.ts.out +++ b/tests/testdata/run/027_redirect_typescript.ts.out diff --git a/cli/tests/testdata/run/028_args.ts b/tests/testdata/run/028_args.ts index ec41d52f9..ec41d52f9 100644 --- a/cli/tests/testdata/run/028_args.ts +++ b/tests/testdata/run/028_args.ts diff --git a/cli/tests/testdata/run/028_args.ts.out b/tests/testdata/run/028_args.ts.out index 0f1b5c59e..0f1b5c59e 100644 --- a/cli/tests/testdata/run/028_args.ts.out +++ b/tests/testdata/run/028_args.ts.out diff --git a/cli/tests/testdata/run/033_import_map.out b/tests/testdata/run/033_import_map.out index e9b9160e9..e9b9160e9 100644 --- a/cli/tests/testdata/run/033_import_map.out +++ b/tests/testdata/run/033_import_map.out diff --git a/cli/tests/testdata/run/033_import_map_in_config_file.out b/tests/testdata/run/033_import_map_in_config_file.out index 72df124a2..72df124a2 100644 --- a/cli/tests/testdata/run/033_import_map_in_config_file.out +++ b/tests/testdata/run/033_import_map_in_config_file.out diff --git a/cli/tests/testdata/run/033_import_map_in_flag_has_precedence.out b/tests/testdata/run/033_import_map_in_flag_has_precedence.out index e9b183ee6..e9b183ee6 100644 --- a/cli/tests/testdata/run/033_import_map_in_flag_has_precedence.out +++ b/tests/testdata/run/033_import_map_in_flag_has_precedence.out diff --git a/cli/tests/testdata/run/033_import_map_remote.out b/tests/testdata/run/033_import_map_remote.out index 804fa0d57..804fa0d57 100644 --- a/cli/tests/testdata/run/033_import_map_remote.out +++ b/tests/testdata/run/033_import_map_remote.out diff --git a/cli/tests/testdata/run/035_cached_only_flag.out b/tests/testdata/run/035_cached_only_flag.out index f677ec915..f677ec915 100644 --- a/cli/tests/testdata/run/035_cached_only_flag.out +++ b/tests/testdata/run/035_cached_only_flag.out diff --git a/cli/tests/testdata/run/038_checkjs.js b/tests/testdata/run/038_checkjs.js index f0856d94c..f0856d94c 100644 --- a/cli/tests/testdata/run/038_checkjs.js +++ b/tests/testdata/run/038_checkjs.js diff --git a/cli/tests/testdata/run/038_checkjs.js.out b/tests/testdata/run/038_checkjs.js.out index 4ea473e4f..4ea473e4f 100644 --- a/cli/tests/testdata/run/038_checkjs.js.out +++ b/tests/testdata/run/038_checkjs.js.out diff --git a/cli/tests/testdata/run/042_dyn_import_evalcontext.ts b/tests/testdata/run/042_dyn_import_evalcontext.ts index 386ae48ec..386ae48ec 100644 --- a/cli/tests/testdata/run/042_dyn_import_evalcontext.ts +++ b/tests/testdata/run/042_dyn_import_evalcontext.ts diff --git a/cli/tests/testdata/run/042_dyn_import_evalcontext.ts.out b/tests/testdata/run/042_dyn_import_evalcontext.ts.out index 89e16b478..89e16b478 100644 --- a/cli/tests/testdata/run/042_dyn_import_evalcontext.ts.out +++ b/tests/testdata/run/042_dyn_import_evalcontext.ts.out diff --git a/cli/tests/testdata/run/044_bad_resource.ts b/tests/testdata/run/044_bad_resource.ts index b956a3e3f..b956a3e3f 100644 --- a/cli/tests/testdata/run/044_bad_resource.ts +++ b/tests/testdata/run/044_bad_resource.ts diff --git a/cli/tests/testdata/run/044_bad_resource.ts.out b/tests/testdata/run/044_bad_resource.ts.out index c9912711d..c9912711d 100644 --- a/cli/tests/testdata/run/044_bad_resource.ts.out +++ b/tests/testdata/run/044_bad_resource.ts.out diff --git a/cli/tests/testdata/run/045_mod.ts b/tests/testdata/run/045_mod.ts index b5f2a0b5b..b5f2a0b5b 100644 --- a/cli/tests/testdata/run/045_mod.ts +++ b/tests/testdata/run/045_mod.ts diff --git a/cli/tests/testdata/run/045_output.ts b/tests/testdata/run/045_output.ts index 398760ca0..398760ca0 100644 --- a/cli/tests/testdata/run/045_output.ts +++ b/tests/testdata/run/045_output.ts diff --git a/cli/tests/testdata/run/045_programmatic_proxy_client.ts b/tests/testdata/run/045_programmatic_proxy_client.ts index 73af590c7..73af590c7 100644 --- a/cli/tests/testdata/run/045_programmatic_proxy_client.ts +++ b/tests/testdata/run/045_programmatic_proxy_client.ts diff --git a/cli/tests/testdata/run/045_proxy_client.ts b/tests/testdata/run/045_proxy_client.ts index 41deae2a5..41deae2a5 100644 --- a/cli/tests/testdata/run/045_proxy_client.ts +++ b/tests/testdata/run/045_proxy_client.ts diff --git a/tests/testdata/run/045_proxy_test.ts b/tests/testdata/run/045_proxy_test.ts new file mode 100644 index 000000000..1929ed6bc --- /dev/null +++ b/tests/testdata/run/045_proxy_test.ts @@ -0,0 +1,121 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { Server } from "../../../test_util/std/http/server.ts"; +import { assertEquals } from "../../../test_util/std/assert/mod.ts"; + +const addr = Deno.args[1] || "localhost:4555"; + +async function proxyServer() { + const [hostname, p] = addr.split(":"); + const port = parseInt(p ?? 4555); + const server = new Server({ hostname, port, handler }); + console.log(`Proxy server listening on http://${addr}/`); + await server.listenAndServe(); +} + +async function handler(req: Request): Promise<Response> { + console.log(`Proxy request to: ${req.url}`); + const headers = new Headers(req.headers); + const proxyAuthorization = headers.get("proxy-authorization"); + if (proxyAuthorization) { + console.log(`proxy-authorization: ${proxyAuthorization}`); + headers.delete("proxy-authorization"); + } + const resp = await fetch(req.url, { + method: req.method, + headers: headers, + }); + return new Response(new Uint8Array(await resp.arrayBuffer()), { + status: resp.status, + headers: resp.headers, + }); +} + +async function testFetch() { + const { code } = await new Deno.Command(Deno.execPath(), { + args: [ + "run", + "--quiet", + "--reload", + "--allow-net", + "run/045_proxy_client.ts", + ], + env: { + HTTP_PROXY: `http://${addr}`, + }, + }).output(); + + assertEquals(code, 0); +} + +async function testModuleDownload() { + const { code } = await new Deno.Command(Deno.execPath(), { + args: [ + "cache", + "--reload", + "--quiet", + "http://localhost:4545/run/045_mod.ts", + ], + env: { + HTTP_PROXY: `http://${addr}`, + }, + }).output(); + + assertEquals(code, 0); +} + +async function testFetchNoProxy() { + const { code } = await new Deno.Command(Deno.execPath(), { + args: [ + "run", + "--quiet", + "--reload", + "--allow-net", + "run/045_proxy_client.ts", + ], + env: { + HTTP_PROXY: "http://not.exising.proxy.server", + NO_PROXY: "localhost", + }, + }).output(); + + assertEquals(code, 0); +} + +async function testModuleDownloadNoProxy() { + const { code } = await new Deno.Command(Deno.execPath(), { + args: [ + "cache", + "--reload", + "--quiet", + "http://localhost:4545/run/045_mod.ts", + ], + env: { + HTTP_PROXY: "http://not.exising.proxy.server", + NO_PROXY: "localhost", + }, + }).output(); + + assertEquals(code, 0); +} + +async function testFetchProgrammaticProxy() { + const { code } = await new Deno.Command(Deno.execPath(), { + args: [ + "run", + "--quiet", + "--reload", + "--allow-net=localhost:4545,localhost:4555", + "--unstable", + "run/045_programmatic_proxy_client.ts", + ], + }).output(); + assertEquals(code, 0); +} + +proxyServer(); +await testFetch(); +await testModuleDownload(); +await testFetchNoProxy(); +await testModuleDownloadNoProxy(); +await testFetchProgrammaticProxy(); +Deno.exit(0); diff --git a/cli/tests/testdata/run/045_proxy_test.ts.out b/tests/testdata/run/045_proxy_test.ts.out index a1e567a14..a1e567a14 100644 --- a/cli/tests/testdata/run/045_proxy_test.ts.out +++ b/tests/testdata/run/045_proxy_test.ts.out diff --git a/cli/tests/testdata/run/046_jsx_test.tsx b/tests/testdata/run/046_jsx_test.tsx index 5ed3ff2fa..5ed3ff2fa 100644 --- a/cli/tests/testdata/run/046_jsx_test.tsx +++ b/tests/testdata/run/046_jsx_test.tsx diff --git a/cli/tests/testdata/run/046_jsx_test.tsx.out b/tests/testdata/run/046_jsx_test.tsx.out index 85cfe824b..85cfe824b 100644 --- a/cli/tests/testdata/run/046_jsx_test.tsx.out +++ b/tests/testdata/run/046_jsx_test.tsx.out diff --git a/cli/tests/testdata/run/047_jsx_test.jsx b/tests/testdata/run/047_jsx_test.jsx index 4c2314072..4c2314072 100644 --- a/cli/tests/testdata/run/047_jsx_test.jsx +++ b/tests/testdata/run/047_jsx_test.jsx diff --git a/cli/tests/testdata/run/047_jsx_test.jsx.out b/tests/testdata/run/047_jsx_test.jsx.out index 85cfe824b..85cfe824b 100644 --- a/cli/tests/testdata/run/047_jsx_test.jsx.out +++ b/tests/testdata/run/047_jsx_test.jsx.out diff --git a/cli/tests/testdata/run/048_media_types_jsx.ts b/tests/testdata/run/048_media_types_jsx.ts index 8dcd0ad68..8dcd0ad68 100644 --- a/cli/tests/testdata/run/048_media_types_jsx.ts +++ b/tests/testdata/run/048_media_types_jsx.ts diff --git a/cli/tests/testdata/run/048_media_types_jsx.ts.out b/tests/testdata/run/048_media_types_jsx.ts.out index 266cc5741..266cc5741 100644 --- a/cli/tests/testdata/run/048_media_types_jsx.ts.out +++ b/tests/testdata/run/048_media_types_jsx.ts.out diff --git a/cli/tests/testdata/run/052_no_remote_flag.out b/tests/testdata/run/052_no_remote_flag.out index 2f5950ee8..2f5950ee8 100644 --- a/cli/tests/testdata/run/052_no_remote_flag.out +++ b/tests/testdata/run/052_no_remote_flag.out diff --git a/cli/tests/testdata/run/056_make_temp_file_write_perm.out b/tests/testdata/run/056_make_temp_file_write_perm.out index c56aae43f..c56aae43f 100644 --- a/cli/tests/testdata/run/056_make_temp_file_write_perm.out +++ b/tests/testdata/run/056_make_temp_file_write_perm.out diff --git a/cli/tests/testdata/run/056_make_temp_file_write_perm.ts b/tests/testdata/run/056_make_temp_file_write_perm.ts index c0deda8a2..c0deda8a2 100644 --- a/cli/tests/testdata/run/056_make_temp_file_write_perm.ts +++ b/tests/testdata/run/056_make_temp_file_write_perm.ts diff --git a/cli/tests/testdata/run/058_tasks_microtasks_close.ts b/tests/testdata/run/058_tasks_microtasks_close.ts index 38e156044..38e156044 100644 --- a/cli/tests/testdata/run/058_tasks_microtasks_close.ts +++ b/tests/testdata/run/058_tasks_microtasks_close.ts diff --git a/cli/tests/testdata/run/058_tasks_microtasks_close.ts.out b/tests/testdata/run/058_tasks_microtasks_close.ts.out index 218273cab..218273cab 100644 --- a/cli/tests/testdata/run/058_tasks_microtasks_close.ts.out +++ b/tests/testdata/run/058_tasks_microtasks_close.ts.out diff --git a/cli/tests/testdata/run/059_fs_relative_path_perm.ts b/tests/testdata/run/059_fs_relative_path_perm.ts index 26630fe1c..26630fe1c 100644 --- a/cli/tests/testdata/run/059_fs_relative_path_perm.ts +++ b/tests/testdata/run/059_fs_relative_path_perm.ts diff --git a/cli/tests/testdata/run/059_fs_relative_path_perm.ts.out b/tests/testdata/run/059_fs_relative_path_perm.ts.out index b23628cd6..b23628cd6 100644 --- a/cli/tests/testdata/run/059_fs_relative_path_perm.ts.out +++ b/tests/testdata/run/059_fs_relative_path_perm.ts.out diff --git a/cli/tests/testdata/run/061_permissions_request.ts b/tests/testdata/run/061_permissions_request.ts index c31e7ac42..c31e7ac42 100644 --- a/cli/tests/testdata/run/061_permissions_request.ts +++ b/tests/testdata/run/061_permissions_request.ts diff --git a/cli/tests/testdata/run/061_permissions_request_sync.ts b/tests/testdata/run/061_permissions_request_sync.ts index 52d225c47..52d225c47 100644 --- a/cli/tests/testdata/run/061_permissions_request_sync.ts +++ b/tests/testdata/run/061_permissions_request_sync.ts diff --git a/cli/tests/testdata/run/062_permissions_request_global.ts b/tests/testdata/run/062_permissions_request_global.ts index e431bc31b..e431bc31b 100644 --- a/cli/tests/testdata/run/062_permissions_request_global.ts +++ b/tests/testdata/run/062_permissions_request_global.ts diff --git a/cli/tests/testdata/run/062_permissions_request_global_sync.ts b/tests/testdata/run/062_permissions_request_global_sync.ts index d0e17c7ed..d0e17c7ed 100644 --- a/cli/tests/testdata/run/062_permissions_request_global_sync.ts +++ b/tests/testdata/run/062_permissions_request_global_sync.ts diff --git a/cli/tests/testdata/run/063_permissions_revoke.ts b/tests/testdata/run/063_permissions_revoke.ts index a81eee7cb..a81eee7cb 100644 --- a/cli/tests/testdata/run/063_permissions_revoke.ts +++ b/tests/testdata/run/063_permissions_revoke.ts diff --git a/cli/tests/testdata/run/063_permissions_revoke.ts.out b/tests/testdata/run/063_permissions_revoke.ts.out index bbd64c557..bbd64c557 100644 --- a/cli/tests/testdata/run/063_permissions_revoke.ts.out +++ b/tests/testdata/run/063_permissions_revoke.ts.out diff --git a/cli/tests/testdata/run/063_permissions_revoke_sync.ts b/tests/testdata/run/063_permissions_revoke_sync.ts index 267ef3785..267ef3785 100644 --- a/cli/tests/testdata/run/063_permissions_revoke_sync.ts +++ b/tests/testdata/run/063_permissions_revoke_sync.ts diff --git a/cli/tests/testdata/run/064_permissions_revoke_global.ts b/tests/testdata/run/064_permissions_revoke_global.ts index a9b1fcd40..a9b1fcd40 100644 --- a/cli/tests/testdata/run/064_permissions_revoke_global.ts +++ b/tests/testdata/run/064_permissions_revoke_global.ts diff --git a/cli/tests/testdata/run/064_permissions_revoke_global.ts.out b/tests/testdata/run/064_permissions_revoke_global.ts.out index f7e389a76..f7e389a76 100644 --- a/cli/tests/testdata/run/064_permissions_revoke_global.ts.out +++ b/tests/testdata/run/064_permissions_revoke_global.ts.out diff --git a/cli/tests/testdata/run/064_permissions_revoke_global_sync.ts b/tests/testdata/run/064_permissions_revoke_global_sync.ts index 597b1481d..597b1481d 100644 --- a/cli/tests/testdata/run/064_permissions_revoke_global_sync.ts +++ b/tests/testdata/run/064_permissions_revoke_global_sync.ts diff --git a/cli/tests/testdata/run/065_permissions_revoke_net.ts b/tests/testdata/run/065_permissions_revoke_net.ts index 40c9d413a..40c9d413a 100644 --- a/cli/tests/testdata/run/065_permissions_revoke_net.ts +++ b/tests/testdata/run/065_permissions_revoke_net.ts diff --git a/cli/tests/testdata/run/065_permissions_revoke_net.ts.out b/tests/testdata/run/065_permissions_revoke_net.ts.out index a9c941ecd..a9c941ecd 100644 --- a/cli/tests/testdata/run/065_permissions_revoke_net.ts.out +++ b/tests/testdata/run/065_permissions_revoke_net.ts.out diff --git a/cli/tests/testdata/run/066_prompt.ts b/tests/testdata/run/066_prompt.ts index f059be685..f059be685 100644 --- a/cli/tests/testdata/run/066_prompt.ts +++ b/tests/testdata/run/066_prompt.ts diff --git a/cli/tests/testdata/run/070_location.ts b/tests/testdata/run/070_location.ts index 05e5abdf1..05e5abdf1 100644 --- a/cli/tests/testdata/run/070_location.ts +++ b/tests/testdata/run/070_location.ts diff --git a/cli/tests/testdata/run/070_location.ts.out b/tests/testdata/run/070_location.ts.out index a03cf6477..a03cf6477 100644 --- a/cli/tests/testdata/run/070_location.ts.out +++ b/tests/testdata/run/070_location.ts.out diff --git a/cli/tests/testdata/run/071_location_unset.ts b/tests/testdata/run/071_location_unset.ts index f560d2716..f560d2716 100644 --- a/cli/tests/testdata/run/071_location_unset.ts +++ b/tests/testdata/run/071_location_unset.ts diff --git a/cli/tests/testdata/run/071_location_unset.ts.out b/tests/testdata/run/071_location_unset.ts.out index c9482011f..c9482011f 100644 --- a/cli/tests/testdata/run/071_location_unset.ts.out +++ b/tests/testdata/run/071_location_unset.ts.out diff --git a/cli/tests/testdata/run/072_location_relative_fetch.ts b/tests/testdata/run/072_location_relative_fetch.ts index b2a291693..b2a291693 100644 --- a/cli/tests/testdata/run/072_location_relative_fetch.ts +++ b/tests/testdata/run/072_location_relative_fetch.ts diff --git a/cli/tests/testdata/run/072_location_relative_fetch.ts.out b/tests/testdata/run/072_location_relative_fetch.ts.out index 8151f6f88..8151f6f88 100644 --- a/cli/tests/testdata/run/072_location_relative_fetch.ts.out +++ b/tests/testdata/run/072_location_relative_fetch.ts.out diff --git a/cli/tests/testdata/run/075_import_local_query_hash.ts b/tests/testdata/run/075_import_local_query_hash.ts index 99c7ceab4..99c7ceab4 100644 --- a/cli/tests/testdata/run/075_import_local_query_hash.ts +++ b/tests/testdata/run/075_import_local_query_hash.ts diff --git a/cli/tests/testdata/run/075_import_local_query_hash.ts.out b/tests/testdata/run/075_import_local_query_hash.ts.out index 340777742..340777742 100644 --- a/cli/tests/testdata/run/075_import_local_query_hash.ts.out +++ b/tests/testdata/run/075_import_local_query_hash.ts.out diff --git a/cli/tests/testdata/run/077_fetch_empty.ts b/tests/testdata/run/077_fetch_empty.ts index b10a9094e..b10a9094e 100644 --- a/cli/tests/testdata/run/077_fetch_empty.ts +++ b/tests/testdata/run/077_fetch_empty.ts diff --git a/cli/tests/testdata/run/077_fetch_empty.ts.out b/tests/testdata/run/077_fetch_empty.ts.out index f11e0f563..f11e0f563 100644 --- a/cli/tests/testdata/run/077_fetch_empty.ts.out +++ b/tests/testdata/run/077_fetch_empty.ts.out diff --git a/cli/tests/testdata/run/078_unload_on_exit.ts b/tests/testdata/run/078_unload_on_exit.ts index 43d33eb25..43d33eb25 100644 --- a/cli/tests/testdata/run/078_unload_on_exit.ts +++ b/tests/testdata/run/078_unload_on_exit.ts diff --git a/cli/tests/testdata/run/078_unload_on_exit.ts.out b/tests/testdata/run/078_unload_on_exit.ts.out index e213f9632..e213f9632 100644 --- a/cli/tests/testdata/run/078_unload_on_exit.ts.out +++ b/tests/testdata/run/078_unload_on_exit.ts.out diff --git a/cli/tests/testdata/run/079_location_authentication.ts b/tests/testdata/run/079_location_authentication.ts index 4989312ac..4989312ac 100644 --- a/cli/tests/testdata/run/079_location_authentication.ts +++ b/tests/testdata/run/079_location_authentication.ts diff --git a/cli/tests/testdata/run/079_location_authentication.ts.out b/tests/testdata/run/079_location_authentication.ts.out index 0dd73f999..0dd73f999 100644 --- a/cli/tests/testdata/run/079_location_authentication.ts.out +++ b/tests/testdata/run/079_location_authentication.ts.out diff --git a/cli/tests/testdata/run/081_location_relative_fetch_redirect.ts b/tests/testdata/run/081_location_relative_fetch_redirect.ts index 742ef0afb..742ef0afb 100644 --- a/cli/tests/testdata/run/081_location_relative_fetch_redirect.ts +++ b/tests/testdata/run/081_location_relative_fetch_redirect.ts diff --git a/cli/tests/testdata/run/081_location_relative_fetch_redirect.ts.out b/tests/testdata/run/081_location_relative_fetch_redirect.ts.out index f62b93195..f62b93195 100644 --- a/cli/tests/testdata/run/081_location_relative_fetch_redirect.ts.out +++ b/tests/testdata/run/081_location_relative_fetch_redirect.ts.out diff --git a/cli/tests/testdata/run/082_prepare_stack_trace_throw.js b/tests/testdata/run/082_prepare_stack_trace_throw.js index 8137bfdc8..8137bfdc8 100644 --- a/cli/tests/testdata/run/082_prepare_stack_trace_throw.js +++ b/tests/testdata/run/082_prepare_stack_trace_throw.js diff --git a/cli/tests/testdata/run/082_prepare_stack_trace_throw.js.out b/tests/testdata/run/082_prepare_stack_trace_throw.js.out index b6715c749..b6715c749 100644 --- a/cli/tests/testdata/run/082_prepare_stack_trace_throw.js.out +++ b/tests/testdata/run/082_prepare_stack_trace_throw.js.out diff --git a/cli/tests/testdata/run/083_legacy_external_source_map.ts b/tests/testdata/run/083_legacy_external_source_map.ts index 73d267b87..73d267b87 100644 --- a/cli/tests/testdata/run/083_legacy_external_source_map.ts +++ b/tests/testdata/run/083_legacy_external_source_map.ts diff --git a/cli/tests/testdata/run/088_dynamic_import_already_evaluating.ts b/tests/testdata/run/088_dynamic_import_already_evaluating.ts index 272163a5d..272163a5d 100644 --- a/cli/tests/testdata/run/088_dynamic_import_already_evaluating.ts +++ b/tests/testdata/run/088_dynamic_import_already_evaluating.ts diff --git a/cli/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out b/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out index a36dd11e7..a36dd11e7 100644 --- a/cli/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out +++ b/tests/testdata/run/088_dynamic_import_already_evaluating.ts.out diff --git a/cli/tests/testdata/run/088_dynamic_import_target.ts b/tests/testdata/run/088_dynamic_import_target.ts index 226f1851a..226f1851a 100644 --- a/cli/tests/testdata/run/088_dynamic_import_target.ts +++ b/tests/testdata/run/088_dynamic_import_target.ts diff --git a/cli/tests/testdata/run/089_run_allow_list.ts b/tests/testdata/run/089_run_allow_list.ts index d9cabba84..d9cabba84 100644 --- a/cli/tests/testdata/run/089_run_allow_list.ts +++ b/tests/testdata/run/089_run_allow_list.ts diff --git a/cli/tests/testdata/run/089_run_allow_list.ts.out b/tests/testdata/run/089_run_allow_list.ts.out index 68a4a2ac5..68a4a2ac5 100644 --- a/cli/tests/testdata/run/089_run_allow_list.ts.out +++ b/tests/testdata/run/089_run_allow_list.ts.out diff --git a/cli/tests/testdata/run/090_run_permissions_request.ts b/tests/testdata/run/090_run_permissions_request.ts index 8ecad2b3b..8ecad2b3b 100644 --- a/cli/tests/testdata/run/090_run_permissions_request.ts +++ b/tests/testdata/run/090_run_permissions_request.ts diff --git a/cli/tests/testdata/run/090_run_permissions_request_sync.ts b/tests/testdata/run/090_run_permissions_request_sync.ts index 40ff84522..40ff84522 100644 --- a/cli/tests/testdata/run/090_run_permissions_request_sync.ts +++ b/tests/testdata/run/090_run_permissions_request_sync.ts diff --git a/cli/tests/testdata/run/091_use_define_for_class_fields.ts b/tests/testdata/run/091_use_define_for_class_fields.ts index 46be3ac0b..46be3ac0b 100644 --- a/cli/tests/testdata/run/091_use_define_for_class_fields.ts +++ b/tests/testdata/run/091_use_define_for_class_fields.ts diff --git a/cli/tests/testdata/run/091_use_define_for_class_fields.ts.out b/tests/testdata/run/091_use_define_for_class_fields.ts.out index 08f94a967..08f94a967 100644 --- a/cli/tests/testdata/run/091_use_define_for_class_fields.ts.out +++ b/tests/testdata/run/091_use_define_for_class_fields.ts.out diff --git a/cli/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts b/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts index 87684430d..87684430d 100644 --- a/cli/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts +++ b/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts diff --git a/cli/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts.out b/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts.out index 7f35b8b4f..7f35b8b4f 100644 --- a/cli/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts.out +++ b/tests/testdata/run/092_import_map_unmapped_bare_specifier.ts.out diff --git a/cli/tests/testdata/run/aggregate_error.out b/tests/testdata/run/aggregate_error.out index 59c0fb2a5..59c0fb2a5 100644 --- a/cli/tests/testdata/run/aggregate_error.out +++ b/tests/testdata/run/aggregate_error.out diff --git a/cli/tests/testdata/run/aggregate_error.ts b/tests/testdata/run/aggregate_error.ts index ce4b54376..ce4b54376 100644 --- a/cli/tests/testdata/run/aggregate_error.ts +++ b/tests/testdata/run/aggregate_error.ts diff --git a/cli/tests/testdata/run/async_error.ts b/tests/testdata/run/async_error.ts index b55c73aeb..b55c73aeb 100644 --- a/cli/tests/testdata/run/async_error.ts +++ b/tests/testdata/run/async_error.ts diff --git a/cli/tests/testdata/run/async_error.ts.out b/tests/testdata/run/async_error.ts.out index b424f9072..b424f9072 100644 --- a/cli/tests/testdata/run/async_error.ts.out +++ b/tests/testdata/run/async_error.ts.out diff --git a/cli/tests/testdata/run/auto_discover_lockfile/deno.json b/tests/testdata/run/auto_discover_lockfile/deno.json index 90faa728a..90faa728a 100644 --- a/cli/tests/testdata/run/auto_discover_lockfile/deno.json +++ b/tests/testdata/run/auto_discover_lockfile/deno.json diff --git a/cli/tests/testdata/run/auto_discover_lockfile/deno.lock b/tests/testdata/run/auto_discover_lockfile/deno.lock index 059f66789..059f66789 100644 --- a/cli/tests/testdata/run/auto_discover_lockfile/deno.lock +++ b/tests/testdata/run/auto_discover_lockfile/deno.lock diff --git a/cli/tests/testdata/run/auto_discover_lockfile/main.out b/tests/testdata/run/auto_discover_lockfile/main.out index 28f4724e9..28f4724e9 100644 --- a/cli/tests/testdata/run/auto_discover_lockfile/main.out +++ b/tests/testdata/run/auto_discover_lockfile/main.out diff --git a/cli/tests/testdata/run/auto_discover_lockfile/main.ts b/tests/testdata/run/auto_discover_lockfile/main.ts index baa52775d..baa52775d 100644 --- a/cli/tests/testdata/run/auto_discover_lockfile/main.ts +++ b/tests/testdata/run/auto_discover_lockfile/main.ts diff --git a/cli/tests/testdata/run/before_unload.js b/tests/testdata/run/before_unload.js index 2572e512b..2572e512b 100644 --- a/cli/tests/testdata/run/before_unload.js +++ b/tests/testdata/run/before_unload.js diff --git a/cli/tests/testdata/run/before_unload.js.out b/tests/testdata/run/before_unload.js.out index f1f2ab49a..f1f2ab49a 100644 --- a/cli/tests/testdata/run/before_unload.js.out +++ b/tests/testdata/run/before_unload.js.out diff --git a/cli/tests/testdata/run/blob_gc_finalization.js b/tests/testdata/run/blob_gc_finalization.js index c721e6b45..c721e6b45 100644 --- a/cli/tests/testdata/run/blob_gc_finalization.js +++ b/tests/testdata/run/blob_gc_finalization.js diff --git a/cli/tests/testdata/run/blob_gc_finalization.js.out b/tests/testdata/run/blob_gc_finalization.js.out index dcc4500f8..dcc4500f8 100644 --- a/cli/tests/testdata/run/blob_gc_finalization.js.out +++ b/tests/testdata/run/blob_gc_finalization.js.out diff --git a/cli/tests/testdata/run/byte_order_mark.out b/tests/testdata/run/byte_order_mark.out index 557db03de..557db03de 100644 --- a/cli/tests/testdata/run/byte_order_mark.out +++ b/tests/testdata/run/byte_order_mark.out diff --git a/cli/tests/testdata/run/byte_order_mark.ts b/tests/testdata/run/byte_order_mark.ts index 40eb23c1d..40eb23c1d 100644 --- a/cli/tests/testdata/run/byte_order_mark.ts +++ b/tests/testdata/run/byte_order_mark.ts diff --git a/cli/tests/testdata/run/check_js_points_to_ts/bar.ts b/tests/testdata/run/check_js_points_to_ts/bar.ts index 026cd2f1e..026cd2f1e 100644 --- a/cli/tests/testdata/run/check_js_points_to_ts/bar.ts +++ b/tests/testdata/run/check_js_points_to_ts/bar.ts diff --git a/cli/tests/testdata/run/check_js_points_to_ts/foo.d.ts b/tests/testdata/run/check_js_points_to_ts/foo.d.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/run/check_js_points_to_ts/foo.d.ts +++ b/tests/testdata/run/check_js_points_to_ts/foo.d.ts diff --git a/cli/tests/testdata/run/check_js_points_to_ts/foo.js b/tests/testdata/run/check_js_points_to_ts/foo.js index 9ac1a14ff..9ac1a14ff 100644 --- a/cli/tests/testdata/run/check_js_points_to_ts/foo.js +++ b/tests/testdata/run/check_js_points_to_ts/foo.js diff --git a/cli/tests/testdata/run/check_js_points_to_ts/test.js b/tests/testdata/run/check_js_points_to_ts/test.js index 00d894451..00d894451 100644 --- a/cli/tests/testdata/run/check_js_points_to_ts/test.js +++ b/tests/testdata/run/check_js_points_to_ts/test.js diff --git a/cli/tests/testdata/run/check_js_points_to_ts/test.js.out b/tests/testdata/run/check_js_points_to_ts/test.js.out index 67cda9a65..67cda9a65 100644 --- a/cli/tests/testdata/run/check_js_points_to_ts/test.js.out +++ b/tests/testdata/run/check_js_points_to_ts/test.js.out diff --git a/cli/tests/testdata/run/checkjs.tsconfig.json b/tests/testdata/run/checkjs.tsconfig.json index 46d96db9e..46d96db9e 100644 --- a/cli/tests/testdata/run/checkjs.tsconfig.json +++ b/tests/testdata/run/checkjs.tsconfig.json diff --git a/cli/tests/testdata/run/cjs_imports/commonjs.cjs b/tests/testdata/run/cjs_imports/commonjs.cjs index accefceba..accefceba 100644 --- a/cli/tests/testdata/run/cjs_imports/commonjs.cjs +++ b/tests/testdata/run/cjs_imports/commonjs.cjs diff --git a/cli/tests/testdata/run/cjs_imports/main.out b/tests/testdata/run/cjs_imports/main.out index 557db03de..557db03de 100644 --- a/cli/tests/testdata/run/cjs_imports/main.out +++ b/tests/testdata/run/cjs_imports/main.out diff --git a/cli/tests/testdata/run/cjs_imports/main.ts b/tests/testdata/run/cjs_imports/main.ts index d8b77c22e..d8b77c22e 100644 --- a/cli/tests/testdata/run/cjs_imports/main.ts +++ b/tests/testdata/run/cjs_imports/main.ts diff --git a/cli/tests/testdata/run/classic_workers_event_loop.js b/tests/testdata/run/classic_workers_event_loop.js index 810a6df7f..810a6df7f 100644 --- a/cli/tests/testdata/run/classic_workers_event_loop.js +++ b/tests/testdata/run/classic_workers_event_loop.js diff --git a/cli/tests/testdata/run/classic_workers_event_loop.js.out b/tests/testdata/run/classic_workers_event_loop.js.out index 19f86f493..19f86f493 100644 --- a/cli/tests/testdata/run/classic_workers_event_loop.js.out +++ b/tests/testdata/run/classic_workers_event_loop.js.out diff --git a/cli/tests/testdata/run/colors_without_globalThis.js b/tests/testdata/run/colors_without_globalThis.js index f9d4b68fc..f9d4b68fc 100644 --- a/cli/tests/testdata/run/colors_without_globalThis.js +++ b/tests/testdata/run/colors_without_globalThis.js diff --git a/cli/tests/testdata/run/complex_error.ts b/tests/testdata/run/complex_error.ts index b462992ac..b462992ac 100644 --- a/cli/tests/testdata/run/complex_error.ts +++ b/tests/testdata/run/complex_error.ts diff --git a/cli/tests/testdata/run/complex_error.ts.out b/tests/testdata/run/complex_error.ts.out index 3c3c26eaf..3c3c26eaf 100644 --- a/cli/tests/testdata/run/complex_error.ts.out +++ b/tests/testdata/run/complex_error.ts.out diff --git a/cli/tests/testdata/run/complex_permissions_test.ts b/tests/testdata/run/complex_permissions_test.ts index bae157246..bae157246 100644 --- a/cli/tests/testdata/run/complex_permissions_test.ts +++ b/tests/testdata/run/complex_permissions_test.ts diff --git a/cli/tests/testdata/run/config/main.out b/tests/testdata/run/config/main.out index 277314807..277314807 100644 --- a/cli/tests/testdata/run/config/main.out +++ b/tests/testdata/run/config/main.out diff --git a/cli/tests/testdata/run/config/main.ts b/tests/testdata/run/config/main.ts index 51a61e447..51a61e447 100644 --- a/cli/tests/testdata/run/config/main.ts +++ b/tests/testdata/run/config/main.ts diff --git a/cli/tests/testdata/run/config/tsconfig.json b/tests/testdata/run/config/tsconfig.json index 0f0881920..0f0881920 100644 --- a/cli/tests/testdata/run/config/tsconfig.json +++ b/tests/testdata/run/config/tsconfig.json diff --git a/cli/tests/testdata/run/config_file_lock_boolean/deno.lock b/tests/testdata/run/config_file_lock_boolean/deno.lock index 059f66789..059f66789 100644 --- a/cli/tests/testdata/run/config_file_lock_boolean/deno.lock +++ b/tests/testdata/run/config_file_lock_boolean/deno.lock diff --git a/cli/tests/testdata/run/config_file_lock_boolean/false.json b/tests/testdata/run/config_file_lock_boolean/false.json index 358b7d299..358b7d299 100644 --- a/cli/tests/testdata/run/config_file_lock_boolean/false.json +++ b/tests/testdata/run/config_file_lock_boolean/false.json diff --git a/cli/tests/testdata/run/config_file_lock_boolean/false.main.out b/tests/testdata/run/config_file_lock_boolean/false.main.out index 0d8f0a237..0d8f0a237 100644 --- a/cli/tests/testdata/run/config_file_lock_boolean/false.main.out +++ b/tests/testdata/run/config_file_lock_boolean/false.main.out diff --git a/cli/tests/testdata/run/config_file_lock_boolean/main.ts b/tests/testdata/run/config_file_lock_boolean/main.ts index baa52775d..baa52775d 100644 --- a/cli/tests/testdata/run/config_file_lock_boolean/main.ts +++ b/tests/testdata/run/config_file_lock_boolean/main.ts diff --git a/cli/tests/testdata/run/config_file_lock_boolean/true.json b/tests/testdata/run/config_file_lock_boolean/true.json index 090481af9..090481af9 100644 --- a/cli/tests/testdata/run/config_file_lock_boolean/true.json +++ b/tests/testdata/run/config_file_lock_boolean/true.json diff --git a/cli/tests/testdata/run/config_file_lock_boolean/true.main.out b/tests/testdata/run/config_file_lock_boolean/true.main.out index 313c0eb0c..313c0eb0c 100644 --- a/cli/tests/testdata/run/config_file_lock_boolean/true.main.out +++ b/tests/testdata/run/config_file_lock_boolean/true.main.out diff --git a/cli/tests/testdata/run/config_file_lock_path.json b/tests/testdata/run/config_file_lock_path.json index 2c393f76e..2c393f76e 100644 --- a/cli/tests/testdata/run/config_file_lock_path.json +++ b/tests/testdata/run/config_file_lock_path.json diff --git a/cli/tests/testdata/run/config_file_lock_path.out b/tests/testdata/run/config_file_lock_path.out index 97d35337f..97d35337f 100644 --- a/cli/tests/testdata/run/config_file_lock_path.out +++ b/tests/testdata/run/config_file_lock_path.out diff --git a/cli/tests/testdata/run/config_json_import.ts b/tests/testdata/run/config_json_import.ts index 9cf1cceaa..9cf1cceaa 100644 --- a/cli/tests/testdata/run/config_json_import.ts +++ b/tests/testdata/run/config_json_import.ts diff --git a/cli/tests/testdata/run/config_json_import.ts.out b/tests/testdata/run/config_json_import.ts.out index aa55be7d5..aa55be7d5 100644 --- a/cli/tests/testdata/run/config_json_import.ts.out +++ b/tests/testdata/run/config_json_import.ts.out diff --git a/cli/tests/testdata/run/config_types/deno.lock b/tests/testdata/run/config_types/deno.lock index 157bd98a2..157bd98a2 100644 --- a/cli/tests/testdata/run/config_types/deno.lock +++ b/tests/testdata/run/config_types/deno.lock diff --git a/cli/tests/testdata/run/config_types/main.out b/tests/testdata/run/config_types/main.out index 417b7b537..417b7b537 100644 --- a/cli/tests/testdata/run/config_types/main.out +++ b/tests/testdata/run/config_types/main.out diff --git a/cli/tests/testdata/run/config_types/main.ts b/tests/testdata/run/config_types/main.ts index f1a8d6583..f1a8d6583 100644 --- a/cli/tests/testdata/run/config_types/main.ts +++ b/tests/testdata/run/config_types/main.ts diff --git a/cli/tests/testdata/run/config_types/remote.tsconfig.json b/tests/testdata/run/config_types/remote.tsconfig.json index 255ff5def..255ff5def 100644 --- a/cli/tests/testdata/run/config_types/remote.tsconfig.json +++ b/tests/testdata/run/config_types/remote.tsconfig.json diff --git a/cli/tests/testdata/run/config_types/tsconfig.json b/tests/testdata/run/config_types/tsconfig.json index 85f1549e0..85f1549e0 100644 --- a/cli/tests/testdata/run/config_types/tsconfig.json +++ b/tests/testdata/run/config_types/tsconfig.json diff --git a/cli/tests/testdata/run/config_types/types.d.ts b/tests/testdata/run/config_types/types.d.ts index 536a6d0a6..536a6d0a6 100644 --- a/cli/tests/testdata/run/config_types/types.d.ts +++ b/tests/testdata/run/config_types/types.d.ts diff --git a/cli/tests/testdata/run/custom_inspect_url.js b/tests/testdata/run/custom_inspect_url.js index 69aa2dc49..69aa2dc49 100644 --- a/cli/tests/testdata/run/custom_inspect_url.js +++ b/tests/testdata/run/custom_inspect_url.js diff --git a/cli/tests/testdata/run/custom_inspect_url.js.out b/tests/testdata/run/custom_inspect_url.js.out index 1c714e34e..1c714e34e 100644 --- a/cli/tests/testdata/run/custom_inspect_url.js.out +++ b/tests/testdata/run/custom_inspect_url.js.out diff --git a/cli/tests/testdata/run/decorators/experimental/deno.json b/tests/testdata/run/decorators/experimental/deno.json index 504cd646e..504cd646e 100644 --- a/cli/tests/testdata/run/decorators/experimental/deno.json +++ b/tests/testdata/run/decorators/experimental/deno.json diff --git a/cli/tests/testdata/run/decorators/experimental/no_check/main.out b/tests/testdata/run/decorators/experimental/no_check/main.out index 015f7076e..015f7076e 100644 --- a/cli/tests/testdata/run/decorators/experimental/no_check/main.out +++ b/tests/testdata/run/decorators/experimental/no_check/main.out diff --git a/cli/tests/testdata/run/decorators/experimental/no_check/main.ts b/tests/testdata/run/decorators/experimental/no_check/main.ts index 9f7ec550d..9f7ec550d 100644 --- a/cli/tests/testdata/run/decorators/experimental/no_check/main.ts +++ b/tests/testdata/run/decorators/experimental/no_check/main.ts diff --git a/cli/tests/testdata/run/decorators/experimental/runtime/main.out b/tests/testdata/run/decorators/experimental/runtime/main.out index 0fc1d4590..0fc1d4590 100644 --- a/cli/tests/testdata/run/decorators/experimental/runtime/main.out +++ b/tests/testdata/run/decorators/experimental/runtime/main.out diff --git a/cli/tests/testdata/run/decorators/experimental/runtime/main.ts b/tests/testdata/run/decorators/experimental/runtime/main.ts index 40a26bbd4..40a26bbd4 100644 --- a/cli/tests/testdata/run/decorators/experimental/runtime/main.ts +++ b/tests/testdata/run/decorators/experimental/runtime/main.ts diff --git a/cli/tests/testdata/run/decorators/experimental/ts/main.out b/tests/testdata/run/decorators/experimental/ts/main.out index ee77417cf..ee77417cf 100644 --- a/cli/tests/testdata/run/decorators/experimental/ts/main.out +++ b/tests/testdata/run/decorators/experimental/ts/main.out diff --git a/cli/tests/testdata/run/decorators/experimental/ts/main.ts b/tests/testdata/run/decorators/experimental/ts/main.ts index 95fba6cd4..95fba6cd4 100644 --- a/cli/tests/testdata/run/decorators/experimental/ts/main.ts +++ b/tests/testdata/run/decorators/experimental/ts/main.ts diff --git a/cli/tests/testdata/run/decorators/tc39_proposal/main.out b/tests/testdata/run/decorators/tc39_proposal/main.out index 39394952e..39394952e 100644 --- a/cli/tests/testdata/run/decorators/tc39_proposal/main.out +++ b/tests/testdata/run/decorators/tc39_proposal/main.out diff --git a/cli/tests/testdata/run/decorators/tc39_proposal/main.ts b/tests/testdata/run/decorators/tc39_proposal/main.ts index 00c8a8502..00c8a8502 100644 --- a/cli/tests/testdata/run/decorators/tc39_proposal/main.ts +++ b/tests/testdata/run/decorators/tc39_proposal/main.ts diff --git a/cli/tests/testdata/run/delete_window.js b/tests/testdata/run/delete_window.js index f2f16820d..f2f16820d 100644 --- a/cli/tests/testdata/run/delete_window.js +++ b/tests/testdata/run/delete_window.js diff --git a/cli/tests/testdata/run/deno_exit_tampering.ts b/tests/testdata/run/deno_exit_tampering.ts index 3b24261e2..3b24261e2 100644 --- a/cli/tests/testdata/run/deno_exit_tampering.ts +++ b/tests/testdata/run/deno_exit_tampering.ts diff --git a/cli/tests/testdata/run/deny_all_permission_args.js b/tests/testdata/run/deny_all_permission_args.js index b0ca864fb..b0ca864fb 100644 --- a/cli/tests/testdata/run/deny_all_permission_args.js +++ b/tests/testdata/run/deny_all_permission_args.js diff --git a/cli/tests/testdata/run/deny_all_permission_args.out b/tests/testdata/run/deny_all_permission_args.out index 2a5228d62..2a5228d62 100644 --- a/cli/tests/testdata/run/deny_all_permission_args.out +++ b/tests/testdata/run/deny_all_permission_args.out diff --git a/cli/tests/testdata/run/deny_some_permission_args.js b/tests/testdata/run/deny_some_permission_args.js index 320376b6f..320376b6f 100644 --- a/cli/tests/testdata/run/deny_some_permission_args.js +++ b/tests/testdata/run/deny_some_permission_args.js diff --git a/cli/tests/testdata/run/deny_some_permission_args.out b/tests/testdata/run/deny_some_permission_args.out index 80c37159b..80c37159b 100644 --- a/cli/tests/testdata/run/deny_some_permission_args.out +++ b/tests/testdata/run/deny_some_permission_args.out diff --git a/cli/tests/testdata/run/disallow_http_from_https.js b/tests/testdata/run/disallow_http_from_https.js index b8ddff170..b8ddff170 100644 --- a/cli/tests/testdata/run/disallow_http_from_https.js +++ b/tests/testdata/run/disallow_http_from_https.js diff --git a/cli/tests/testdata/run/disallow_http_from_https.ts b/tests/testdata/run/disallow_http_from_https.ts index b8ddff170..b8ddff170 100644 --- a/cli/tests/testdata/run/disallow_http_from_https.ts +++ b/tests/testdata/run/disallow_http_from_https.ts diff --git a/cli/tests/testdata/run/disallow_http_from_https_js.out b/tests/testdata/run/disallow_http_from_https_js.out index 5dc327975..5dc327975 100644 --- a/cli/tests/testdata/run/disallow_http_from_https_js.out +++ b/tests/testdata/run/disallow_http_from_https_js.out diff --git a/cli/tests/testdata/run/disallow_http_from_https_ts.out b/tests/testdata/run/disallow_http_from_https_ts.out index e3b8f4390..e3b8f4390 100644 --- a/cli/tests/testdata/run/disallow_http_from_https_ts.out +++ b/tests/testdata/run/disallow_http_from_https_ts.out diff --git a/cli/tests/testdata/run/dom_exception_formatting.ts b/tests/testdata/run/dom_exception_formatting.ts index 0209ec81e..0209ec81e 100644 --- a/cli/tests/testdata/run/dom_exception_formatting.ts +++ b/tests/testdata/run/dom_exception_formatting.ts diff --git a/cli/tests/testdata/run/dom_exception_formatting.ts.out b/tests/testdata/run/dom_exception_formatting.ts.out index 75615d0a8..75615d0a8 100644 --- a/cli/tests/testdata/run/dom_exception_formatting.ts.out +++ b/tests/testdata/run/dom_exception_formatting.ts.out diff --git a/cli/tests/testdata/run/dynamic_import_already_rejected/error_001.ts b/tests/testdata/run/dynamic_import_already_rejected/error_001.ts index b01068bc0..b01068bc0 100644 --- a/cli/tests/testdata/run/dynamic_import_already_rejected/error_001.ts +++ b/tests/testdata/run/dynamic_import_already_rejected/error_001.ts diff --git a/cli/tests/testdata/run/dynamic_import_already_rejected/main.out b/tests/testdata/run/dynamic_import_already_rejected/main.out index c3eb66f9e..c3eb66f9e 100644 --- a/cli/tests/testdata/run/dynamic_import_already_rejected/main.out +++ b/tests/testdata/run/dynamic_import_already_rejected/main.out diff --git a/cli/tests/testdata/run/dynamic_import_already_rejected/main.ts b/tests/testdata/run/dynamic_import_already_rejected/main.ts index 249de8d8b..249de8d8b 100644 --- a/cli/tests/testdata/run/dynamic_import_already_rejected/main.ts +++ b/tests/testdata/run/dynamic_import_already_rejected/main.ts diff --git a/cli/tests/testdata/run/dynamic_import_async_error/delayed_error.ts b/tests/testdata/run/dynamic_import_async_error/delayed_error.ts index 76057e627..76057e627 100644 --- a/cli/tests/testdata/run/dynamic_import_async_error/delayed_error.ts +++ b/tests/testdata/run/dynamic_import_async_error/delayed_error.ts diff --git a/cli/tests/testdata/run/dynamic_import_async_error/main.out b/tests/testdata/run/dynamic_import_async_error/main.out index 974c2e426..974c2e426 100644 --- a/cli/tests/testdata/run/dynamic_import_async_error/main.out +++ b/tests/testdata/run/dynamic_import_async_error/main.out diff --git a/cli/tests/testdata/run/dynamic_import_async_error/main.ts b/tests/testdata/run/dynamic_import_async_error/main.ts index 998e7ed3e..998e7ed3e 100644 --- a/cli/tests/testdata/run/dynamic_import_async_error/main.ts +++ b/tests/testdata/run/dynamic_import_async_error/main.ts diff --git a/cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out b/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out index c344d0aae..c344d0aae 100644 --- a/cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out +++ b/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.out diff --git a/cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts b/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts index 0832e40be..0832e40be 100644 --- a/cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts +++ b/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/main.ts diff --git a/cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts b/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts index 56f2002ed..56f2002ed 100644 --- a/cli/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts +++ b/tests/testdata/run/dynamic_import_concurrent_non_statically_analyzable/mod.ts diff --git a/cli/tests/testdata/run/dynamic_import_conditional.js b/tests/testdata/run/dynamic_import_conditional.js index 1b4193e3e..1b4193e3e 100644 --- a/cli/tests/testdata/run/dynamic_import_conditional.js +++ b/tests/testdata/run/dynamic_import_conditional.js diff --git a/cli/tests/testdata/run/dynamic_import_conditional.js.out b/tests/testdata/run/dynamic_import_conditional.js.out index 27ba77dda..27ba77dda 100644 --- a/cli/tests/testdata/run/dynamic_import_conditional.js.out +++ b/tests/testdata/run/dynamic_import_conditional.js.out diff --git a/cli/tests/testdata/run/dynamic_import_syntax_error.js b/tests/testdata/run/dynamic_import_syntax_error.js index be8ec132f..be8ec132f 100644 --- a/cli/tests/testdata/run/dynamic_import_syntax_error.js +++ b/tests/testdata/run/dynamic_import_syntax_error.js diff --git a/cli/tests/testdata/run/dynamic_import_syntax_error.js.out b/tests/testdata/run/dynamic_import_syntax_error.js.out index 91e69eac7..91e69eac7 100644 --- a/cli/tests/testdata/run/dynamic_import_syntax_error.js.out +++ b/tests/testdata/run/dynamic_import_syntax_error.js.out diff --git a/cli/tests/testdata/run/dynamic_import_syntax_error_import.js b/tests/testdata/run/dynamic_import_syntax_error_import.js index bcf075638..bcf075638 100644 --- a/cli/tests/testdata/run/dynamic_import_syntax_error_import.js +++ b/tests/testdata/run/dynamic_import_syntax_error_import.js diff --git a/cli/tests/testdata/run/empty.ts b/tests/testdata/run/empty.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/run/empty.ts +++ b/tests/testdata/run/empty.ts diff --git a/cli/tests/testdata/run/env_file.out b/tests/testdata/run/env_file.out index 54a0bf25d..54a0bf25d 100644 --- a/cli/tests/testdata/run/env_file.out +++ b/tests/testdata/run/env_file.out diff --git a/cli/tests/testdata/run/env_file.ts b/tests/testdata/run/env_file.ts index 48488ce72..48488ce72 100644 --- a/cli/tests/testdata/run/env_file.ts +++ b/tests/testdata/run/env_file.ts diff --git a/cli/tests/testdata/run/env_file_missing.out b/tests/testdata/run/env_file_missing.out index ae1f8f595..ae1f8f595 100644 --- a/cli/tests/testdata/run/env_file_missing.out +++ b/tests/testdata/run/env_file_missing.out diff --git a/cli/tests/testdata/run/error_001.ts b/tests/testdata/run/error_001.ts index b01068bc0..b01068bc0 100644 --- a/cli/tests/testdata/run/error_001.ts +++ b/tests/testdata/run/error_001.ts diff --git a/cli/tests/testdata/run/error_001.ts.out b/tests/testdata/run/error_001.ts.out index 9d8559917..9d8559917 100644 --- a/cli/tests/testdata/run/error_001.ts.out +++ b/tests/testdata/run/error_001.ts.out diff --git a/cli/tests/testdata/run/error_002.ts b/tests/testdata/run/error_002.ts index 5f8179bbe..5f8179bbe 100644 --- a/cli/tests/testdata/run/error_002.ts +++ b/tests/testdata/run/error_002.ts diff --git a/cli/tests/testdata/run/error_002.ts.out b/tests/testdata/run/error_002.ts.out index 9fec5d968..9fec5d968 100644 --- a/cli/tests/testdata/run/error_002.ts.out +++ b/tests/testdata/run/error_002.ts.out diff --git a/cli/tests/testdata/run/error_003_typescript.ts b/tests/testdata/run/error_003_typescript.ts index e1f882123..e1f882123 100644 --- a/cli/tests/testdata/run/error_003_typescript.ts +++ b/tests/testdata/run/error_003_typescript.ts diff --git a/cli/tests/testdata/run/error_003_typescript.ts.out b/tests/testdata/run/error_003_typescript.ts.out index bbb2ec470..bbb2ec470 100644 --- a/cli/tests/testdata/run/error_003_typescript.ts.out +++ b/tests/testdata/run/error_003_typescript.ts.out diff --git a/cli/tests/testdata/run/error_004_missing_module.ts b/tests/testdata/run/error_004_missing_module.ts index 82b281181..82b281181 100644 --- a/cli/tests/testdata/run/error_004_missing_module.ts +++ b/tests/testdata/run/error_004_missing_module.ts diff --git a/cli/tests/testdata/run/error_004_missing_module.ts.out b/tests/testdata/run/error_004_missing_module.ts.out index 9a2cfb8a8..9a2cfb8a8 100644 --- a/cli/tests/testdata/run/error_004_missing_module.ts.out +++ b/tests/testdata/run/error_004_missing_module.ts.out diff --git a/cli/tests/testdata/run/error_005_missing_dynamic_import.ts b/tests/testdata/run/error_005_missing_dynamic_import.ts index 8ea8ff94e..8ea8ff94e 100644 --- a/cli/tests/testdata/run/error_005_missing_dynamic_import.ts +++ b/tests/testdata/run/error_005_missing_dynamic_import.ts diff --git a/cli/tests/testdata/run/error_005_missing_dynamic_import.ts.out b/tests/testdata/run/error_005_missing_dynamic_import.ts.out index 55e4a8524..55e4a8524 100644 --- a/cli/tests/testdata/run/error_005_missing_dynamic_import.ts.out +++ b/tests/testdata/run/error_005_missing_dynamic_import.ts.out diff --git a/cli/tests/testdata/run/error_006_import_ext_failure.ts b/tests/testdata/run/error_006_import_ext_failure.ts index 3c32303a3..3c32303a3 100644 --- a/cli/tests/testdata/run/error_006_import_ext_failure.ts +++ b/tests/testdata/run/error_006_import_ext_failure.ts diff --git a/cli/tests/testdata/run/error_006_import_ext_failure.ts.out b/tests/testdata/run/error_006_import_ext_failure.ts.out index 667579bd8..667579bd8 100644 --- a/cli/tests/testdata/run/error_006_import_ext_failure.ts.out +++ b/tests/testdata/run/error_006_import_ext_failure.ts.out diff --git a/cli/tests/testdata/run/error_007_any.ts b/tests/testdata/run/error_007_any.ts index bfef1289b..bfef1289b 100644 --- a/cli/tests/testdata/run/error_007_any.ts +++ b/tests/testdata/run/error_007_any.ts diff --git a/cli/tests/testdata/run/error_007_any.ts.out b/tests/testdata/run/error_007_any.ts.out index 8d13dadb9..8d13dadb9 100644 --- a/cli/tests/testdata/run/error_007_any.ts.out +++ b/tests/testdata/run/error_007_any.ts.out diff --git a/cli/tests/testdata/run/error_008_checkjs.js b/tests/testdata/run/error_008_checkjs.js index f0856d94c..f0856d94c 100644 --- a/cli/tests/testdata/run/error_008_checkjs.js +++ b/tests/testdata/run/error_008_checkjs.js diff --git a/cli/tests/testdata/run/error_008_checkjs.js.out b/tests/testdata/run/error_008_checkjs.js.out index bab481422..bab481422 100644 --- a/cli/tests/testdata/run/error_008_checkjs.js.out +++ b/tests/testdata/run/error_008_checkjs.js.out diff --git a/cli/tests/testdata/run/error_009_extensions_error.js b/tests/testdata/run/error_009_extensions_error.js index 01b97ea38..01b97ea38 100644 --- a/cli/tests/testdata/run/error_009_extensions_error.js +++ b/tests/testdata/run/error_009_extensions_error.js diff --git a/cli/tests/testdata/run/error_009_extensions_error.js.out b/tests/testdata/run/error_009_extensions_error.js.out index 0fd1306de..0fd1306de 100644 --- a/cli/tests/testdata/run/error_009_extensions_error.js.out +++ b/tests/testdata/run/error_009_extensions_error.js.out diff --git a/cli/tests/testdata/run/error_009_missing_js_module.disabled b/tests/testdata/run/error_009_missing_js_module.disabled index 3156fc94b..3156fc94b 100644 --- a/cli/tests/testdata/run/error_009_missing_js_module.disabled +++ b/tests/testdata/run/error_009_missing_js_module.disabled diff --git a/cli/tests/testdata/run/error_011_bad_module_specifier.ts b/tests/testdata/run/error_011_bad_module_specifier.ts index 1c57e37a5..1c57e37a5 100644 --- a/cli/tests/testdata/run/error_011_bad_module_specifier.ts +++ b/tests/testdata/run/error_011_bad_module_specifier.ts diff --git a/cli/tests/testdata/run/error_011_bad_module_specifier.ts.out b/tests/testdata/run/error_011_bad_module_specifier.ts.out index 81be915d1..81be915d1 100644 --- a/cli/tests/testdata/run/error_011_bad_module_specifier.ts.out +++ b/tests/testdata/run/error_011_bad_module_specifier.ts.out diff --git a/cli/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts b/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts index 5f39f407c..5f39f407c 100644 --- a/cli/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts +++ b/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts diff --git a/cli/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out b/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out index 7acd66713..7acd66713 100644 --- a/cli/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out +++ b/tests/testdata/run/error_012_bad_dynamic_import_specifier.ts.out diff --git a/cli/tests/testdata/run/error_013_missing_script.out b/tests/testdata/run/error_013_missing_script.out index 7ee268de4..7ee268de4 100644 --- a/cli/tests/testdata/run/error_013_missing_script.out +++ b/tests/testdata/run/error_013_missing_script.out diff --git a/cli/tests/testdata/run/error_014_catch_dynamic_import_error.js b/tests/testdata/run/error_014_catch_dynamic_import_error.js index c58e54dcb..c58e54dcb 100644 --- a/cli/tests/testdata/run/error_014_catch_dynamic_import_error.js +++ b/tests/testdata/run/error_014_catch_dynamic_import_error.js diff --git a/cli/tests/testdata/run/error_014_catch_dynamic_import_error.js.out b/tests/testdata/run/error_014_catch_dynamic_import_error.js.out index 868c97194..868c97194 100644 --- a/cli/tests/testdata/run/error_014_catch_dynamic_import_error.js.out +++ b/tests/testdata/run/error_014_catch_dynamic_import_error.js.out diff --git a/cli/tests/testdata/run/error_015_dynamic_import_permissions.js b/tests/testdata/run/error_015_dynamic_import_permissions.js index 47961cf63..47961cf63 100644 --- a/cli/tests/testdata/run/error_015_dynamic_import_permissions.js +++ b/tests/testdata/run/error_015_dynamic_import_permissions.js diff --git a/cli/tests/testdata/run/error_015_dynamic_import_permissions.out b/tests/testdata/run/error_015_dynamic_import_permissions.out index 87ce43e9c..87ce43e9c 100644 --- a/cli/tests/testdata/run/error_015_dynamic_import_permissions.out +++ b/tests/testdata/run/error_015_dynamic_import_permissions.out diff --git a/cli/tests/testdata/run/error_016_dynamic_import_permissions2.js b/tests/testdata/run/error_016_dynamic_import_permissions2.js index f018d4a2e..f018d4a2e 100644 --- a/cli/tests/testdata/run/error_016_dynamic_import_permissions2.js +++ b/tests/testdata/run/error_016_dynamic_import_permissions2.js diff --git a/cli/tests/testdata/run/error_016_dynamic_import_permissions2.out b/tests/testdata/run/error_016_dynamic_import_permissions2.out index 710871f41..710871f41 100644 --- a/cli/tests/testdata/run/error_016_dynamic_import_permissions2.out +++ b/tests/testdata/run/error_016_dynamic_import_permissions2.out diff --git a/cli/tests/testdata/run/error_017_hide_long_source_ts.ts b/tests/testdata/run/error_017_hide_long_source_ts.ts index d61cb1277..d61cb1277 100644 --- a/cli/tests/testdata/run/error_017_hide_long_source_ts.ts +++ b/tests/testdata/run/error_017_hide_long_source_ts.ts diff --git a/cli/tests/testdata/run/error_017_hide_long_source_ts.ts.out b/tests/testdata/run/error_017_hide_long_source_ts.ts.out index 917061ab9..917061ab9 100644 --- a/cli/tests/testdata/run/error_017_hide_long_source_ts.ts.out +++ b/tests/testdata/run/error_017_hide_long_source_ts.ts.out diff --git a/cli/tests/testdata/run/error_018_hide_long_source_js.js b/tests/testdata/run/error_018_hide_long_source_js.js index d61cb1277..d61cb1277 100644 --- a/cli/tests/testdata/run/error_018_hide_long_source_js.js +++ b/tests/testdata/run/error_018_hide_long_source_js.js diff --git a/cli/tests/testdata/run/error_018_hide_long_source_js.js.out b/tests/testdata/run/error_018_hide_long_source_js.js.out index 0897a100c..0897a100c 100644 --- a/cli/tests/testdata/run/error_018_hide_long_source_js.js.out +++ b/tests/testdata/run/error_018_hide_long_source_js.js.out diff --git a/cli/tests/testdata/run/error_019_stack_function.ts b/tests/testdata/run/error_019_stack_function.ts index a6a69d146..a6a69d146 100644 --- a/cli/tests/testdata/run/error_019_stack_function.ts +++ b/tests/testdata/run/error_019_stack_function.ts diff --git a/cli/tests/testdata/run/error_019_stack_function.ts.out b/tests/testdata/run/error_019_stack_function.ts.out index edaff27c0..edaff27c0 100644 --- a/cli/tests/testdata/run/error_019_stack_function.ts.out +++ b/tests/testdata/run/error_019_stack_function.ts.out diff --git a/cli/tests/testdata/run/error_020_stack_constructor.ts b/tests/testdata/run/error_020_stack_constructor.ts index 526d1a661..526d1a661 100644 --- a/cli/tests/testdata/run/error_020_stack_constructor.ts +++ b/tests/testdata/run/error_020_stack_constructor.ts diff --git a/cli/tests/testdata/run/error_020_stack_constructor.ts.out b/tests/testdata/run/error_020_stack_constructor.ts.out index 9e48b8f98..9e48b8f98 100644 --- a/cli/tests/testdata/run/error_020_stack_constructor.ts.out +++ b/tests/testdata/run/error_020_stack_constructor.ts.out diff --git a/cli/tests/testdata/run/error_021_stack_method.ts b/tests/testdata/run/error_021_stack_method.ts index b6ebe1f5e..b6ebe1f5e 100644 --- a/cli/tests/testdata/run/error_021_stack_method.ts +++ b/tests/testdata/run/error_021_stack_method.ts diff --git a/cli/tests/testdata/run/error_021_stack_method.ts.out b/tests/testdata/run/error_021_stack_method.ts.out index 9df9b1b7c..9df9b1b7c 100644 --- a/cli/tests/testdata/run/error_021_stack_method.ts.out +++ b/tests/testdata/run/error_021_stack_method.ts.out diff --git a/cli/tests/testdata/run/error_022_stack_custom_error.ts b/tests/testdata/run/error_022_stack_custom_error.ts index b95743503..b95743503 100644 --- a/cli/tests/testdata/run/error_022_stack_custom_error.ts +++ b/tests/testdata/run/error_022_stack_custom_error.ts diff --git a/cli/tests/testdata/run/error_022_stack_custom_error.ts.out b/tests/testdata/run/error_022_stack_custom_error.ts.out index 73e033e52..73e033e52 100644 --- a/cli/tests/testdata/run/error_022_stack_custom_error.ts.out +++ b/tests/testdata/run/error_022_stack_custom_error.ts.out diff --git a/cli/tests/testdata/run/error_023_stack_async.ts b/tests/testdata/run/error_023_stack_async.ts index fdabaa5df..fdabaa5df 100644 --- a/cli/tests/testdata/run/error_023_stack_async.ts +++ b/tests/testdata/run/error_023_stack_async.ts diff --git a/cli/tests/testdata/run/error_023_stack_async.ts.out b/tests/testdata/run/error_023_stack_async.ts.out index 2d122d986..2d122d986 100644 --- a/cli/tests/testdata/run/error_023_stack_async.ts.out +++ b/tests/testdata/run/error_023_stack_async.ts.out diff --git a/cli/tests/testdata/run/error_024_stack_promise_all.ts b/tests/testdata/run/error_024_stack_promise_all.ts index 8ca7b203c..8ca7b203c 100644 --- a/cli/tests/testdata/run/error_024_stack_promise_all.ts +++ b/tests/testdata/run/error_024_stack_promise_all.ts diff --git a/cli/tests/testdata/run/error_024_stack_promise_all.ts.out b/tests/testdata/run/error_024_stack_promise_all.ts.out index c7d10a649..c7d10a649 100644 --- a/cli/tests/testdata/run/error_024_stack_promise_all.ts.out +++ b/tests/testdata/run/error_024_stack_promise_all.ts.out diff --git a/cli/tests/testdata/run/error_025_tab_indent b/tests/testdata/run/error_025_tab_indent index 35a25bcea..35a25bcea 100644 --- a/cli/tests/testdata/run/error_025_tab_indent +++ b/tests/testdata/run/error_025_tab_indent diff --git a/cli/tests/testdata/run/error_025_tab_indent.out b/tests/testdata/run/error_025_tab_indent.out index edf525c90..edf525c90 100644 --- a/cli/tests/testdata/run/error_025_tab_indent.out +++ b/tests/testdata/run/error_025_tab_indent.out diff --git a/cli/tests/testdata/run/error_026_remote_import_error.ts b/tests/testdata/run/error_026_remote_import_error.ts index 1b230d06b..1b230d06b 100644 --- a/cli/tests/testdata/run/error_026_remote_import_error.ts +++ b/tests/testdata/run/error_026_remote_import_error.ts diff --git a/cli/tests/testdata/run/error_026_remote_import_error.ts.out b/tests/testdata/run/error_026_remote_import_error.ts.out index f3f8c0068..f3f8c0068 100644 --- a/cli/tests/testdata/run/error_026_remote_import_error.ts.out +++ b/tests/testdata/run/error_026_remote_import_error.ts.out diff --git a/cli/tests/testdata/run/error_cause.ts b/tests/testdata/run/error_cause.ts index 385ce2a03..385ce2a03 100644 --- a/cli/tests/testdata/run/error_cause.ts +++ b/tests/testdata/run/error_cause.ts diff --git a/cli/tests/testdata/run/error_cause.ts.out b/tests/testdata/run/error_cause.ts.out index 4dc439ac9..4dc439ac9 100644 --- a/cli/tests/testdata/run/error_cause.ts.out +++ b/tests/testdata/run/error_cause.ts.out diff --git a/cli/tests/testdata/run/error_cause_recursive.ts b/tests/testdata/run/error_cause_recursive.ts index a6999b1ff..a6999b1ff 100644 --- a/cli/tests/testdata/run/error_cause_recursive.ts +++ b/tests/testdata/run/error_cause_recursive.ts diff --git a/cli/tests/testdata/run/error_cause_recursive.ts.out b/tests/testdata/run/error_cause_recursive.ts.out index 52d5a03a1..52d5a03a1 100644 --- a/cli/tests/testdata/run/error_cause_recursive.ts.out +++ b/tests/testdata/run/error_cause_recursive.ts.out diff --git a/cli/tests/testdata/run/error_for_await.ts b/tests/testdata/run/error_for_await.ts index 64c81abe4..64c81abe4 100644 --- a/cli/tests/testdata/run/error_for_await.ts +++ b/tests/testdata/run/error_for_await.ts diff --git a/cli/tests/testdata/run/error_for_await.ts.out b/tests/testdata/run/error_for_await.ts.out index db3cdecb4..db3cdecb4 100644 --- a/cli/tests/testdata/run/error_for_await.ts.out +++ b/tests/testdata/run/error_for_await.ts.out diff --git a/cli/tests/testdata/run/error_import_map_unable_to_load.out b/tests/testdata/run/error_import_map_unable_to_load.out index 50760e438..50760e438 100644 --- a/cli/tests/testdata/run/error_import_map_unable_to_load.out +++ b/tests/testdata/run/error_import_map_unable_to_load.out diff --git a/cli/tests/testdata/run/error_local_static_import_from_remote.js b/tests/testdata/run/error_local_static_import_from_remote.js index eb7fd23ba..eb7fd23ba 100644 --- a/cli/tests/testdata/run/error_local_static_import_from_remote.js +++ b/tests/testdata/run/error_local_static_import_from_remote.js diff --git a/cli/tests/testdata/run/error_local_static_import_from_remote.js.out b/tests/testdata/run/error_local_static_import_from_remote.js.out index 34f9e81e1..34f9e81e1 100644 --- a/cli/tests/testdata/run/error_local_static_import_from_remote.js.out +++ b/tests/testdata/run/error_local_static_import_from_remote.js.out diff --git a/cli/tests/testdata/run/error_local_static_import_from_remote.ts b/tests/testdata/run/error_local_static_import_from_remote.ts index a831db0c4..a831db0c4 100644 --- a/cli/tests/testdata/run/error_local_static_import_from_remote.ts +++ b/tests/testdata/run/error_local_static_import_from_remote.ts diff --git a/cli/tests/testdata/run/error_local_static_import_from_remote.ts.out b/tests/testdata/run/error_local_static_import_from_remote.ts.out index 88990a049..88990a049 100644 --- a/cli/tests/testdata/run/error_local_static_import_from_remote.ts.out +++ b/tests/testdata/run/error_local_static_import_from_remote.ts.out diff --git a/cli/tests/testdata/run/error_missing_module_named_import.ts b/tests/testdata/run/error_missing_module_named_import.ts index 9eb5239ff..9eb5239ff 100644 --- a/cli/tests/testdata/run/error_missing_module_named_import.ts +++ b/tests/testdata/run/error_missing_module_named_import.ts diff --git a/cli/tests/testdata/run/error_missing_module_named_import.ts.out b/tests/testdata/run/error_missing_module_named_import.ts.out index 700377d65..700377d65 100644 --- a/cli/tests/testdata/run/error_missing_module_named_import.ts.out +++ b/tests/testdata/run/error_missing_module_named_import.ts.out diff --git a/cli/tests/testdata/run/error_name_non_string.js b/tests/testdata/run/error_name_non_string.js index ae9609927..ae9609927 100644 --- a/cli/tests/testdata/run/error_name_non_string.js +++ b/tests/testdata/run/error_name_non_string.js diff --git a/cli/tests/testdata/run/error_name_non_string.js.out b/tests/testdata/run/error_name_non_string.js.out index 14fa56c62..14fa56c62 100644 --- a/cli/tests/testdata/run/error_name_non_string.js.out +++ b/tests/testdata/run/error_name_non_string.js.out diff --git a/cli/tests/testdata/run/error_no_check.ts b/tests/testdata/run/error_no_check.ts index 2da01e639..2da01e639 100644 --- a/cli/tests/testdata/run/error_no_check.ts +++ b/tests/testdata/run/error_no_check.ts diff --git a/cli/tests/testdata/run/error_no_check.ts.out b/tests/testdata/run/error_no_check.ts.out index 78f478045..78f478045 100644 --- a/cli/tests/testdata/run/error_no_check.ts.out +++ b/tests/testdata/run/error_no_check.ts.out diff --git a/cli/tests/testdata/run/error_syntax.js b/tests/testdata/run/error_syntax.js index c0414c356..c0414c356 100644 --- a/cli/tests/testdata/run/error_syntax.js +++ b/tests/testdata/run/error_syntax.js diff --git a/cli/tests/testdata/run/error_syntax.js.out b/tests/testdata/run/error_syntax.js.out index fa4d51686..fa4d51686 100644 --- a/cli/tests/testdata/run/error_syntax.js.out +++ b/tests/testdata/run/error_syntax.js.out diff --git a/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs b/tests/testdata/run/error_syntax_empty_trailing_line.mjs index 864dfb0c7..864dfb0c7 100644 --- a/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs +++ b/tests/testdata/run/error_syntax_empty_trailing_line.mjs diff --git a/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out b/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out index 2eb290bb5..2eb290bb5 100644 --- a/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out +++ b/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out diff --git a/cli/tests/testdata/run/error_type_definitions.ts b/tests/testdata/run/error_type_definitions.ts index 86675cbaa..86675cbaa 100644 --- a/cli/tests/testdata/run/error_type_definitions.ts +++ b/tests/testdata/run/error_type_definitions.ts diff --git a/cli/tests/testdata/run/error_type_definitions.ts.out b/tests/testdata/run/error_type_definitions.ts.out index d60d4d483..d60d4d483 100644 --- a/cli/tests/testdata/run/error_type_definitions.ts.out +++ b/tests/testdata/run/error_type_definitions.ts.out diff --git a/cli/tests/testdata/run/error_with_errors_prop.js b/tests/testdata/run/error_with_errors_prop.js index d1c6bbfaa..d1c6bbfaa 100644 --- a/cli/tests/testdata/run/error_with_errors_prop.js +++ b/tests/testdata/run/error_with_errors_prop.js diff --git a/cli/tests/testdata/run/error_with_errors_prop.js.out b/tests/testdata/run/error_with_errors_prop.js.out index d958996af..d958996af 100644 --- a/cli/tests/testdata/run/error_with_errors_prop.js.out +++ b/tests/testdata/run/error_with_errors_prop.js.out diff --git a/cli/tests/testdata/run/es_private_fields.js b/tests/testdata/run/es_private_fields.js index b5f83e39c..b5f83e39c 100644 --- a/cli/tests/testdata/run/es_private_fields.js +++ b/tests/testdata/run/es_private_fields.js diff --git a/cli/tests/testdata/run/es_private_fields.js.out b/tests/testdata/run/es_private_fields.js.out index be1970b05..be1970b05 100644 --- a/cli/tests/testdata/run/es_private_fields.js.out +++ b/tests/testdata/run/es_private_fields.js.out diff --git a/cli/tests/testdata/run/eval_context_throw_dom_exception.js b/tests/testdata/run/eval_context_throw_dom_exception.js index 99eaa0f4a..99eaa0f4a 100644 --- a/cli/tests/testdata/run/eval_context_throw_dom_exception.js +++ b/tests/testdata/run/eval_context_throw_dom_exception.js diff --git a/cli/tests/testdata/run/eval_context_throw_dom_exception.js.out b/tests/testdata/run/eval_context_throw_dom_exception.js.out index f7d368471..f7d368471 100644 --- a/cli/tests/testdata/run/eval_context_throw_dom_exception.js.out +++ b/tests/testdata/run/eval_context_throw_dom_exception.js.out diff --git a/cli/tests/testdata/run/event_listener_error.ts b/tests/testdata/run/event_listener_error.ts index 1cbdf7bc2..1cbdf7bc2 100644 --- a/cli/tests/testdata/run/event_listener_error.ts +++ b/tests/testdata/run/event_listener_error.ts diff --git a/cli/tests/testdata/run/event_listener_error.ts.out b/tests/testdata/run/event_listener_error.ts.out index a20a91dfd..a20a91dfd 100644 --- a/cli/tests/testdata/run/event_listener_error.ts.out +++ b/tests/testdata/run/event_listener_error.ts.out diff --git a/cli/tests/testdata/run/event_listener_error_handled.ts b/tests/testdata/run/event_listener_error_handled.ts index c4c8fd1cd..c4c8fd1cd 100644 --- a/cli/tests/testdata/run/event_listener_error_handled.ts +++ b/tests/testdata/run/event_listener_error_handled.ts diff --git a/cli/tests/testdata/run/event_listener_error_handled.ts.out b/tests/testdata/run/event_listener_error_handled.ts.out index d3cf525c3..d3cf525c3 100644 --- a/cli/tests/testdata/run/event_listener_error_handled.ts.out +++ b/tests/testdata/run/event_listener_error_handled.ts.out diff --git a/cli/tests/testdata/run/event_listener_error_immediate_exit.ts b/tests/testdata/run/event_listener_error_immediate_exit.ts index 292a0df00..292a0df00 100644 --- a/cli/tests/testdata/run/event_listener_error_immediate_exit.ts +++ b/tests/testdata/run/event_listener_error_immediate_exit.ts diff --git a/cli/tests/testdata/run/event_listener_error_immediate_exit.ts.out b/tests/testdata/run/event_listener_error_immediate_exit.ts.out index 8f03f71b8..8f03f71b8 100644 --- a/cli/tests/testdata/run/event_listener_error_immediate_exit.ts.out +++ b/tests/testdata/run/event_listener_error_immediate_exit.ts.out diff --git a/cli/tests/testdata/run/event_listener_error_immediate_exit_worker.ts b/tests/testdata/run/event_listener_error_immediate_exit_worker.ts index 58c45d1bb..58c45d1bb 100644 --- a/cli/tests/testdata/run/event_listener_error_immediate_exit_worker.ts +++ b/tests/testdata/run/event_listener_error_immediate_exit_worker.ts diff --git a/cli/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out b/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out index 85b52190b..85b52190b 100644 --- a/cli/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out +++ b/tests/testdata/run/event_listener_error_immediate_exit_worker.ts.out diff --git a/cli/tests/testdata/run/exec_path.ts b/tests/testdata/run/exec_path.ts index b70b23237..b70b23237 100644 --- a/cli/tests/testdata/run/exec_path.ts +++ b/tests/testdata/run/exec_path.ts diff --git a/cli/tests/testdata/run/exit_error42.ts b/tests/testdata/run/exit_error42.ts index e4db41f3a..e4db41f3a 100644 --- a/cli/tests/testdata/run/exit_error42.ts +++ b/tests/testdata/run/exit_error42.ts diff --git a/cli/tests/testdata/run/exit_error42.ts.out b/tests/testdata/run/exit_error42.ts.out index 90be1f305..90be1f305 100644 --- a/cli/tests/testdata/run/exit_error42.ts.out +++ b/tests/testdata/run/exit_error42.ts.out diff --git a/cli/tests/testdata/run/explicit_resource_management/main.out b/tests/testdata/run/explicit_resource_management/main.out index ff5ac4b59..ff5ac4b59 100644 --- a/cli/tests/testdata/run/explicit_resource_management/main.out +++ b/tests/testdata/run/explicit_resource_management/main.out diff --git a/cli/tests/testdata/run/explicit_resource_management/main.ts b/tests/testdata/run/explicit_resource_management/main.ts index 0201a51f9..0201a51f9 100644 --- a/cli/tests/testdata/run/explicit_resource_management/main.ts +++ b/tests/testdata/run/explicit_resource_management/main.ts diff --git a/cli/tests/testdata/run/export_type_def.ts b/tests/testdata/run/export_type_def.ts index 9a1e2b0fe..9a1e2b0fe 100644 --- a/cli/tests/testdata/run/export_type_def.ts +++ b/tests/testdata/run/export_type_def.ts diff --git a/cli/tests/testdata/run/extension_dynamic_import.ts b/tests/testdata/run/extension_dynamic_import.ts index 6fb3ac3a0..6fb3ac3a0 100644 --- a/cli/tests/testdata/run/extension_dynamic_import.ts +++ b/tests/testdata/run/extension_dynamic_import.ts diff --git a/cli/tests/testdata/run/extension_dynamic_import.ts.out b/tests/testdata/run/extension_dynamic_import.ts.out index b22717d62..b22717d62 100644 --- a/cli/tests/testdata/run/extension_dynamic_import.ts.out +++ b/tests/testdata/run/extension_dynamic_import.ts.out diff --git a/cli/tests/testdata/run/extension_import.ts b/tests/testdata/run/extension_import.ts index 7bbbab799..7bbbab799 100644 --- a/cli/tests/testdata/run/extension_import.ts +++ b/tests/testdata/run/extension_import.ts diff --git a/cli/tests/testdata/run/extension_import.ts.out b/tests/testdata/run/extension_import.ts.out index 88039a9ce..88039a9ce 100644 --- a/cli/tests/testdata/run/extension_import.ts.out +++ b/tests/testdata/run/extension_import.ts.out diff --git a/cli/tests/testdata/run/fetch/hello.txt b/tests/testdata/run/fetch/hello.txt index af5626b4a..af5626b4a 100644 --- a/cli/tests/testdata/run/fetch/hello.txt +++ b/tests/testdata/run/fetch/hello.txt diff --git a/cli/tests/testdata/run/fetch/other.ts b/tests/testdata/run/fetch/other.ts index 91fe376b3..91fe376b3 100644 --- a/cli/tests/testdata/run/fetch/other.ts +++ b/tests/testdata/run/fetch/other.ts diff --git a/cli/tests/testdata/run/fetch/test.ts b/tests/testdata/run/fetch/test.ts index baa52775d..baa52775d 100644 --- a/cli/tests/testdata/run/fetch/test.ts +++ b/tests/testdata/run/fetch/test.ts diff --git a/cli/tests/testdata/run/fetch_async_error_stack.ts b/tests/testdata/run/fetch_async_error_stack.ts index f583192c2..f583192c2 100644 --- a/cli/tests/testdata/run/fetch_async_error_stack.ts +++ b/tests/testdata/run/fetch_async_error_stack.ts diff --git a/cli/tests/testdata/run/fetch_async_error_stack.ts.out b/tests/testdata/run/fetch_async_error_stack.ts.out index e8169228f..e8169228f 100644 --- a/cli/tests/testdata/run/fetch_async_error_stack.ts.out +++ b/tests/testdata/run/fetch_async_error_stack.ts.out diff --git a/cli/tests/testdata/run/fetch_response_finalization.js b/tests/testdata/run/fetch_response_finalization.js index 85fc6afa3..85fc6afa3 100644 --- a/cli/tests/testdata/run/fetch_response_finalization.js +++ b/tests/testdata/run/fetch_response_finalization.js diff --git a/cli/tests/testdata/run/fetch_response_finalization.js.out b/tests/testdata/run/fetch_response_finalization.js.out index 645842a5b..645842a5b 100644 --- a/cli/tests/testdata/run/fetch_response_finalization.js.out +++ b/tests/testdata/run/fetch_response_finalization.js.out diff --git a/cli/tests/testdata/run/finalization_registry.js b/tests/testdata/run/finalization_registry.js index ee9dc384f..ee9dc384f 100644 --- a/cli/tests/testdata/run/finalization_registry.js +++ b/tests/testdata/run/finalization_registry.js diff --git a/cli/tests/testdata/run/finalization_registry.js.out b/tests/testdata/run/finalization_registry.js.out index fee61413a..fee61413a 100644 --- a/cli/tests/testdata/run/finalization_registry.js.out +++ b/tests/testdata/run/finalization_registry.js.out diff --git a/cli/tests/testdata/run/fix_dynamic_import_errors.js b/tests/testdata/run/fix_dynamic_import_errors.js index 1d7be37e0..1d7be37e0 100644 --- a/cli/tests/testdata/run/fix_dynamic_import_errors.js +++ b/tests/testdata/run/fix_dynamic_import_errors.js diff --git a/cli/tests/testdata/run/fix_dynamic_import_errors.js.out b/tests/testdata/run/fix_dynamic_import_errors.js.out index e7856fb9c..e7856fb9c 100644 --- a/cli/tests/testdata/run/fix_dynamic_import_errors.js.out +++ b/tests/testdata/run/fix_dynamic_import_errors.js.out diff --git a/cli/tests/testdata/run/fix_emittable_skipped.js b/tests/testdata/run/fix_emittable_skipped.js index a4ccc9efd..a4ccc9efd 100644 --- a/cli/tests/testdata/run/fix_emittable_skipped.js +++ b/tests/testdata/run/fix_emittable_skipped.js diff --git a/cli/tests/testdata/run/fix_emittable_skipped.ts.out b/tests/testdata/run/fix_emittable_skipped.ts.out index 865759299..865759299 100644 --- a/cli/tests/testdata/run/fix_emittable_skipped.ts.out +++ b/tests/testdata/run/fix_emittable_skipped.ts.out diff --git a/cli/tests/testdata/run/fix_js_import_js.ts b/tests/testdata/run/fix_js_import_js.ts index 0f01877cd..0f01877cd 100644 --- a/cli/tests/testdata/run/fix_js_import_js.ts +++ b/tests/testdata/run/fix_js_import_js.ts diff --git a/cli/tests/testdata/run/fix_js_import_js.ts.out b/tests/testdata/run/fix_js_import_js.ts.out index 27ba77dda..27ba77dda 100644 --- a/cli/tests/testdata/run/fix_js_import_js.ts.out +++ b/tests/testdata/run/fix_js_import_js.ts.out diff --git a/cli/tests/testdata/run/fix_js_imports.ts b/tests/testdata/run/fix_js_imports.ts index 6ed13bae3..6ed13bae3 100644 --- a/cli/tests/testdata/run/fix_js_imports.ts +++ b/tests/testdata/run/fix_js_imports.ts diff --git a/cli/tests/testdata/run/fix_js_imports.ts.out b/tests/testdata/run/fix_js_imports.ts.out index c427932a4..c427932a4 100644 --- a/cli/tests/testdata/run/fix_js_imports.ts.out +++ b/tests/testdata/run/fix_js_imports.ts.out diff --git a/cli/tests/testdata/run/fix_tsc_file_exists.out b/tests/testdata/run/fix_tsc_file_exists.out index ce0136250..ce0136250 100644 --- a/cli/tests/testdata/run/fix_tsc_file_exists.out +++ b/tests/testdata/run/fix_tsc_file_exists.out diff --git a/cli/tests/testdata/run/fix_worker_dispatchevent.ts b/tests/testdata/run/fix_worker_dispatchevent.ts index 1b73b52dc..1b73b52dc 100644 --- a/cli/tests/testdata/run/fix_worker_dispatchevent.ts +++ b/tests/testdata/run/fix_worker_dispatchevent.ts diff --git a/cli/tests/testdata/run/fix_worker_dispatchevent.ts.out b/tests/testdata/run/fix_worker_dispatchevent.ts.out index 2e9ba477f..2e9ba477f 100644 --- a/cli/tests/testdata/run/fix_worker_dispatchevent.ts.out +++ b/tests/testdata/run/fix_worker_dispatchevent.ts.out diff --git a/cli/tests/testdata/run/followup_dyn_import_resolves/main.ts b/tests/testdata/run/followup_dyn_import_resolves/main.ts index a8508f942..a8508f942 100644 --- a/cli/tests/testdata/run/followup_dyn_import_resolves/main.ts +++ b/tests/testdata/run/followup_dyn_import_resolves/main.ts diff --git a/cli/tests/testdata/run/followup_dyn_import_resolves/main.ts.out b/tests/testdata/run/followup_dyn_import_resolves/main.ts.out index a19976d4a..a19976d4a 100644 --- a/cli/tests/testdata/run/followup_dyn_import_resolves/main.ts.out +++ b/tests/testdata/run/followup_dyn_import_resolves/main.ts.out diff --git a/cli/tests/testdata/run/followup_dyn_import_resolves/sub1.ts b/tests/testdata/run/followup_dyn_import_resolves/sub1.ts index d06c30221..d06c30221 100644 --- a/cli/tests/testdata/run/followup_dyn_import_resolves/sub1.ts +++ b/tests/testdata/run/followup_dyn_import_resolves/sub1.ts diff --git a/cli/tests/testdata/run/followup_dyn_import_resolves/sub2.ts b/tests/testdata/run/followup_dyn_import_resolves/sub2.ts index cce2b524c..cce2b524c 100644 --- a/cli/tests/testdata/run/followup_dyn_import_resolves/sub2.ts +++ b/tests/testdata/run/followup_dyn_import_resolves/sub2.ts diff --git a/cli/tests/testdata/run/heapstats.js b/tests/testdata/run/heapstats.js index b93c9c120..b93c9c120 100644 --- a/cli/tests/testdata/run/heapstats.js +++ b/tests/testdata/run/heapstats.js diff --git a/cli/tests/testdata/run/heapstats.js.out b/tests/testdata/run/heapstats.js.out index 954266333..954266333 100644 --- a/cli/tests/testdata/run/heapstats.js.out +++ b/tests/testdata/run/heapstats.js.out diff --git a/cli/tests/testdata/run/http2_request_url.ts b/tests/testdata/run/http2_request_url.ts index 5acff8cc2..5acff8cc2 100644 --- a/cli/tests/testdata/run/http2_request_url.ts +++ b/tests/testdata/run/http2_request_url.ts diff --git a/cli/tests/testdata/run/https_import.ts b/tests/testdata/run/https_import.ts index 3bcc90326..3bcc90326 100644 --- a/cli/tests/testdata/run/https_import.ts +++ b/tests/testdata/run/https_import.ts diff --git a/cli/tests/testdata/run/https_import.ts.out b/tests/testdata/run/https_import.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/https_import.ts.out +++ b/tests/testdata/run/https_import.ts.out diff --git a/cli/tests/testdata/run/if_main.ts b/tests/testdata/run/if_main.ts index 4dcfecea0..4dcfecea0 100644 --- a/cli/tests/testdata/run/if_main.ts +++ b/tests/testdata/run/if_main.ts diff --git a/cli/tests/testdata/run/if_main.ts.out b/tests/testdata/run/if_main.ts.out index ba2906d06..ba2906d06 100644 --- a/cli/tests/testdata/run/if_main.ts.out +++ b/tests/testdata/run/if_main.ts.out diff --git a/cli/tests/testdata/run/import_blob_url.ts b/tests/testdata/run/import_blob_url.ts index 86bb634e1..86bb634e1 100644 --- a/cli/tests/testdata/run/import_blob_url.ts +++ b/tests/testdata/run/import_blob_url.ts diff --git a/cli/tests/testdata/run/import_blob_url.ts.out b/tests/testdata/run/import_blob_url.ts.out index bfa0b9d94..bfa0b9d94 100644 --- a/cli/tests/testdata/run/import_blob_url.ts.out +++ b/tests/testdata/run/import_blob_url.ts.out diff --git a/cli/tests/testdata/run/import_blob_url_error_stack.ts b/tests/testdata/run/import_blob_url_error_stack.ts index f9c4f2e9d..f9c4f2e9d 100644 --- a/cli/tests/testdata/run/import_blob_url_error_stack.ts +++ b/tests/testdata/run/import_blob_url_error_stack.ts diff --git a/cli/tests/testdata/run/import_blob_url_error_stack.ts.out b/tests/testdata/run/import_blob_url_error_stack.ts.out index 201556b8a..201556b8a 100644 --- a/cli/tests/testdata/run/import_blob_url_error_stack.ts.out +++ b/tests/testdata/run/import_blob_url_error_stack.ts.out diff --git a/cli/tests/testdata/run/import_blob_url_import_relative.ts b/tests/testdata/run/import_blob_url_import_relative.ts index ad130bdac..ad130bdac 100644 --- a/cli/tests/testdata/run/import_blob_url_import_relative.ts +++ b/tests/testdata/run/import_blob_url_import_relative.ts diff --git a/cli/tests/testdata/run/import_blob_url_import_relative.ts.out b/tests/testdata/run/import_blob_url_import_relative.ts.out index 59a6f07fb..59a6f07fb 100644 --- a/cli/tests/testdata/run/import_blob_url_import_relative.ts.out +++ b/tests/testdata/run/import_blob_url_import_relative.ts.out diff --git a/cli/tests/testdata/run/import_blob_url_imports.ts b/tests/testdata/run/import_blob_url_imports.ts index a7c639152..a7c639152 100644 --- a/cli/tests/testdata/run/import_blob_url_imports.ts +++ b/tests/testdata/run/import_blob_url_imports.ts diff --git a/cli/tests/testdata/run/import_blob_url_imports.ts.out b/tests/testdata/run/import_blob_url_imports.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/import_blob_url_imports.ts.out +++ b/tests/testdata/run/import_blob_url_imports.ts.out diff --git a/cli/tests/testdata/run/import_blob_url_jsx.ts b/tests/testdata/run/import_blob_url_jsx.ts index 8d645796a..8d645796a 100644 --- a/cli/tests/testdata/run/import_blob_url_jsx.ts +++ b/tests/testdata/run/import_blob_url_jsx.ts diff --git a/cli/tests/testdata/run/import_blob_url_jsx.ts.out b/tests/testdata/run/import_blob_url_jsx.ts.out index c1c85f250..c1c85f250 100644 --- a/cli/tests/testdata/run/import_blob_url_jsx.ts.out +++ b/tests/testdata/run/import_blob_url_jsx.ts.out diff --git a/cli/tests/testdata/run/import_compression/brotli b/tests/testdata/run/import_compression/brotli index 65f679d57..65f679d57 100644 --- a/cli/tests/testdata/run/import_compression/brotli +++ b/tests/testdata/run/import_compression/brotli diff --git a/cli/tests/testdata/run/import_compression/gziped b/tests/testdata/run/import_compression/gziped Binary files differindex 9f9a7bc69..9f9a7bc69 100644 --- a/cli/tests/testdata/run/import_compression/gziped +++ b/tests/testdata/run/import_compression/gziped diff --git a/cli/tests/testdata/run/import_compression/main.out b/tests/testdata/run/import_compression/main.out index 371994979..371994979 100644 --- a/cli/tests/testdata/run/import_compression/main.out +++ b/tests/testdata/run/import_compression/main.out diff --git a/cli/tests/testdata/run/import_compression/main.ts b/tests/testdata/run/import_compression/main.ts index 3dcd6fa24..3dcd6fa24 100644 --- a/cli/tests/testdata/run/import_compression/main.ts +++ b/tests/testdata/run/import_compression/main.ts diff --git a/cli/tests/testdata/run/import_data_url.ts b/tests/testdata/run/import_data_url.ts index 258514a5e..258514a5e 100644 --- a/cli/tests/testdata/run/import_data_url.ts +++ b/tests/testdata/run/import_data_url.ts diff --git a/cli/tests/testdata/run/import_data_url.ts.out b/tests/testdata/run/import_data_url.ts.out index bfa0b9d94..bfa0b9d94 100644 --- a/cli/tests/testdata/run/import_data_url.ts.out +++ b/tests/testdata/run/import_data_url.ts.out diff --git a/cli/tests/testdata/run/import_data_url_error_stack.ts b/tests/testdata/run/import_data_url_error_stack.ts index 022e49fe1..022e49fe1 100644 --- a/cli/tests/testdata/run/import_data_url_error_stack.ts +++ b/tests/testdata/run/import_data_url_error_stack.ts diff --git a/cli/tests/testdata/run/import_data_url_error_stack.ts.out b/tests/testdata/run/import_data_url_error_stack.ts.out index 83eed611d..83eed611d 100644 --- a/cli/tests/testdata/run/import_data_url_error_stack.ts.out +++ b/tests/testdata/run/import_data_url_error_stack.ts.out diff --git a/cli/tests/testdata/run/import_data_url_import_relative.ts b/tests/testdata/run/import_data_url_import_relative.ts index 23947fe60..23947fe60 100644 --- a/cli/tests/testdata/run/import_data_url_import_relative.ts +++ b/tests/testdata/run/import_data_url_import_relative.ts diff --git a/cli/tests/testdata/run/import_data_url_import_relative.ts.out b/tests/testdata/run/import_data_url_import_relative.ts.out index 821c3e4df..821c3e4df 100644 --- a/cli/tests/testdata/run/import_data_url_import_relative.ts.out +++ b/tests/testdata/run/import_data_url_import_relative.ts.out diff --git a/cli/tests/testdata/run/import_data_url_imports.ts b/tests/testdata/run/import_data_url_imports.ts index df7dae727..df7dae727 100644 --- a/cli/tests/testdata/run/import_data_url_imports.ts +++ b/tests/testdata/run/import_data_url_imports.ts diff --git a/cli/tests/testdata/run/import_data_url_imports.ts.out b/tests/testdata/run/import_data_url_imports.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/import_data_url_imports.ts.out +++ b/tests/testdata/run/import_data_url_imports.ts.out diff --git a/cli/tests/testdata/run/import_data_url_jsx.ts b/tests/testdata/run/import_data_url_jsx.ts index 1881211f9..1881211f9 100644 --- a/cli/tests/testdata/run/import_data_url_jsx.ts +++ b/tests/testdata/run/import_data_url_jsx.ts diff --git a/cli/tests/testdata/run/import_data_url_jsx.ts.out b/tests/testdata/run/import_data_url_jsx.ts.out index c1c85f250..c1c85f250 100644 --- a/cli/tests/testdata/run/import_data_url_jsx.ts.out +++ b/tests/testdata/run/import_data_url_jsx.ts.out diff --git a/cli/tests/testdata/run/import_dynamic_data_url.ts b/tests/testdata/run/import_dynamic_data_url.ts index 53a0fbcd3..53a0fbcd3 100644 --- a/cli/tests/testdata/run/import_dynamic_data_url.ts +++ b/tests/testdata/run/import_dynamic_data_url.ts diff --git a/cli/tests/testdata/run/import_dynamic_data_url.ts.out b/tests/testdata/run/import_dynamic_data_url.ts.out index bfa0b9d94..bfa0b9d94 100644 --- a/cli/tests/testdata/run/import_dynamic_data_url.ts.out +++ b/tests/testdata/run/import_dynamic_data_url.ts.out diff --git a/cli/tests/testdata/run/import_extensionless.ts b/tests/testdata/run/import_extensionless.ts index 689d553ff..689d553ff 100644 --- a/cli/tests/testdata/run/import_extensionless.ts +++ b/tests/testdata/run/import_extensionless.ts diff --git a/cli/tests/testdata/run/import_extensionless.ts.out b/tests/testdata/run/import_extensionless.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/import_extensionless.ts.out +++ b/tests/testdata/run/import_extensionless.ts.out diff --git a/cli/tests/testdata/run/import_file_with_colon.ts b/tests/testdata/run/import_file_with_colon.ts index 619bdd66d..619bdd66d 100644 --- a/cli/tests/testdata/run/import_file_with_colon.ts +++ b/tests/testdata/run/import_file_with_colon.ts diff --git a/cli/tests/testdata/run/import_file_with_colon.ts.out b/tests/testdata/run/import_file_with_colon.ts.out index f60bbf4b1..f60bbf4b1 100644 --- a/cli/tests/testdata/run/import_file_with_colon.ts.out +++ b/tests/testdata/run/import_file_with_colon.ts.out diff --git a/cli/tests/testdata/run/import_maps/test_data.ts b/tests/testdata/run/import_maps/test_data.ts index 5e8efea69..5e8efea69 100644 --- a/cli/tests/testdata/run/import_maps/test_data.ts +++ b/tests/testdata/run/import_maps/test_data.ts diff --git a/cli/tests/testdata/run/import_maps/test_data.ts.out b/tests/testdata/run/import_maps/test_data.ts.out index da996dc0d..da996dc0d 100644 --- a/cli/tests/testdata/run/import_maps/test_data.ts.out +++ b/tests/testdata/run/import_maps/test_data.ts.out diff --git a/cli/tests/testdata/run/import_meta/importmap.json b/tests/testdata/run/import_meta/importmap.json index d85fe3028..d85fe3028 100644 --- a/cli/tests/testdata/run/import_meta/importmap.json +++ b/tests/testdata/run/import_meta/importmap.json diff --git a/cli/tests/testdata/run/import_meta/main.out b/tests/testdata/run/import_meta/main.out index 5a86d6240..5a86d6240 100644 --- a/cli/tests/testdata/run/import_meta/main.out +++ b/tests/testdata/run/import_meta/main.out diff --git a/tests/testdata/run/import_meta/main.ts b/tests/testdata/run/import_meta/main.ts new file mode 100644 index 000000000..61880e2c1 --- /dev/null +++ b/tests/testdata/run/import_meta/main.ts @@ -0,0 +1,52 @@ +import { assertThrows } from "../../../../test_util/std/assert/mod.ts"; +import "http://localhost:4545/run/import_meta/other.ts"; +import "./other.ts"; + +console.log( + "main", + import.meta.url, + import.meta.main, + import.meta.filename, + import.meta.dirname, +); + +console.log("Resolving ./foo.js", import.meta.resolve("./foo.js")); +console.log("Resolving bare from import map", import.meta.resolve("bare")); +console.log( + "Resolving https://example.com/rewrite from import map", + import.meta.resolve("https://example.com/rewrite"), +); +console.log( + "Resolving without a value from import map", + import.meta.resolve(), +); +console.log( + "Resolving 1 from import map", + import.meta.resolve(1), +); +console.log( + "Resolving null from import map", + import.meta.resolve(null), +); +console.log( + "Resolving object from import map", + import.meta.resolve({}), +); +assertThrows(() => { + import.meta.resolve("too", "many", "arguments"); +}, TypeError); +assertThrows(() => { + import.meta.resolve("://malformed/url?asdf"); +}, TypeError); +console.log( + "Resolving npm:cowsay", + import.meta.resolve("npm:cowsay"), +); +console.log( + "Resolving npm:cowsay@1", + import.meta.resolve("npm:cowsay@1"), +); +console.log( + "Resolving npm:preact from import map", + import.meta.resolve("npm:preact"), +); diff --git a/cli/tests/testdata/run/import_meta/other.ts b/tests/testdata/run/import_meta/other.ts index 5da6a4936..5da6a4936 100644 --- a/cli/tests/testdata/run/import_meta/other.ts +++ b/tests/testdata/run/import_meta/other.ts diff --git a/cli/tests/testdata/run/import_type.ts b/tests/testdata/run/import_type.ts index 22c639cbc..22c639cbc 100644 --- a/cli/tests/testdata/run/import_type.ts +++ b/tests/testdata/run/import_type.ts diff --git a/cli/tests/testdata/run/import_type.ts.out b/tests/testdata/run/import_type.ts.out index e35539e35..e35539e35 100644 --- a/cli/tests/testdata/run/import_type.ts.out +++ b/tests/testdata/run/import_type.ts.out diff --git a/cli/tests/testdata/run/inline_js_source_map.ts b/tests/testdata/run/inline_js_source_map.ts index 5ae7c226a..5ae7c226a 100644 --- a/cli/tests/testdata/run/inline_js_source_map.ts +++ b/tests/testdata/run/inline_js_source_map.ts diff --git a/cli/tests/testdata/run/inline_js_source_map_2.js b/tests/testdata/run/inline_js_source_map_2.js index d14d906b8..d14d906b8 100644 --- a/cli/tests/testdata/run/inline_js_source_map_2.js +++ b/tests/testdata/run/inline_js_source_map_2.js diff --git a/cli/tests/testdata/run/inline_js_source_map_2.js.out b/tests/testdata/run/inline_js_source_map_2.js.out index ba3053eba..ba3053eba 100644 --- a/cli/tests/testdata/run/inline_js_source_map_2.js.out +++ b/tests/testdata/run/inline_js_source_map_2.js.out diff --git a/cli/tests/testdata/run/inline_js_source_map_2.ts b/tests/testdata/run/inline_js_source_map_2.ts index fa50586e6..fa50586e6 100644 --- a/cli/tests/testdata/run/inline_js_source_map_2.ts +++ b/tests/testdata/run/inline_js_source_map_2.ts diff --git a/cli/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 index 7660cc229..7660cc229 100644 --- a/cli/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 diff --git a/cli/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out b/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out index ba3053eba..ba3053eba 100644 --- a/cli/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out +++ b/tests/testdata/run/inline_js_source_map_2_with_inline_contents.js.out diff --git a/cli/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 index 887f02320..887f02320 100644 --- a/cli/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 diff --git a/cli/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out b/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out index d80a1c7bb..d80a1c7bb 100644 --- a/cli/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out +++ b/tests/testdata/run/inline_js_source_map_with_contents_from_graph.js.out diff --git a/cli/tests/testdata/run/issue13562.ts b/tests/testdata/run/issue13562.ts index afbf69f99..afbf69f99 100644 --- a/cli/tests/testdata/run/issue13562.ts +++ b/tests/testdata/run/issue13562.ts diff --git a/cli/tests/testdata/run/issue13562.ts.out b/tests/testdata/run/issue13562.ts.out index e965047ad..e965047ad 100644 --- a/cli/tests/testdata/run/issue13562.ts.out +++ b/tests/testdata/run/issue13562.ts.out diff --git a/cli/tests/testdata/run/issue9750.js b/tests/testdata/run/issue9750.js index 89fd61629..89fd61629 100644 --- a/cli/tests/testdata/run/issue9750.js +++ b/tests/testdata/run/issue9750.js diff --git a/cli/tests/testdata/run/js_import_detect.ts b/tests/testdata/run/js_import_detect.ts index 751741996..751741996 100644 --- a/cli/tests/testdata/run/js_import_detect.ts +++ b/tests/testdata/run/js_import_detect.ts diff --git a/cli/tests/testdata/run/js_import_detect.ts.out b/tests/testdata/run/js_import_detect.ts.out index 9766475a4..9766475a4 100644 --- a/cli/tests/testdata/run/js_import_detect.ts.out +++ b/tests/testdata/run/js_import_detect.ts.out diff --git a/cli/tests/testdata/run/js_root_with_ts_check.js b/tests/testdata/run/js_root_with_ts_check.js index adca847ee..adca847ee 100644 --- a/cli/tests/testdata/run/js_root_with_ts_check.js +++ b/tests/testdata/run/js_root_with_ts_check.js diff --git a/cli/tests/testdata/run/js_root_with_ts_check.js.out b/tests/testdata/run/js_root_with_ts_check.js.out index 34e2fa61e..34e2fa61e 100644 --- a/cli/tests/testdata/run/js_root_with_ts_check.js.out +++ b/tests/testdata/run/js_root_with_ts_check.js.out diff --git a/cli/tests/testdata/run/jsx_import_from_ts.App.jsx b/tests/testdata/run/jsx_import_from_ts.App.jsx index 649230613..649230613 100644 --- a/cli/tests/testdata/run/jsx_import_from_ts.App.jsx +++ b/tests/testdata/run/jsx_import_from_ts.App.jsx diff --git a/cli/tests/testdata/run/jsx_import_from_ts.ts b/tests/testdata/run/jsx_import_from_ts.ts index 3cc916698..3cc916698 100644 --- a/cli/tests/testdata/run/jsx_import_from_ts.ts +++ b/tests/testdata/run/jsx_import_from_ts.ts diff --git a/cli/tests/testdata/run/jsx_import_from_ts.ts.out b/tests/testdata/run/jsx_import_from_ts.ts.out index d449b8c9a..d449b8c9a 100644 --- a/cli/tests/testdata/run/jsx_import_from_ts.ts.out +++ b/tests/testdata/run/jsx_import_from_ts.ts.out diff --git a/cli/tests/testdata/run/jsx_import_source.out b/tests/testdata/run/jsx_import_source.out index b9555987a..b9555987a 100644 --- a/cli/tests/testdata/run/jsx_import_source.out +++ b/tests/testdata/run/jsx_import_source.out diff --git a/cli/tests/testdata/run/jsx_import_source_dev.out b/tests/testdata/run/jsx_import_source_dev.out index 38d7a12f0..38d7a12f0 100644 --- a/cli/tests/testdata/run/jsx_import_source_dev.out +++ b/tests/testdata/run/jsx_import_source_dev.out diff --git a/cli/tests/testdata/run/jsx_import_source_error.out b/tests/testdata/run/jsx_import_source_error.out index 634a5b09b..634a5b09b 100644 --- a/cli/tests/testdata/run/jsx_import_source_error.out +++ b/tests/testdata/run/jsx_import_source_error.out diff --git a/cli/tests/testdata/run/jsx_import_source_import_map.out b/tests/testdata/run/jsx_import_source_import_map.out index 0d3238967..0d3238967 100644 --- a/cli/tests/testdata/run/jsx_import_source_import_map.out +++ b/tests/testdata/run/jsx_import_source_import_map.out diff --git a/cli/tests/testdata/run/jsx_import_source_import_map_dev.out b/tests/testdata/run/jsx_import_source_import_map_dev.out index 56f514d90..56f514d90 100644 --- a/cli/tests/testdata/run/jsx_import_source_import_map_dev.out +++ b/tests/testdata/run/jsx_import_source_import_map_dev.out diff --git a/cli/tests/testdata/run/jsx_import_source_no_pragma.tsx b/tests/testdata/run/jsx_import_source_no_pragma.tsx index 2c756054f..2c756054f 100644 --- a/cli/tests/testdata/run/jsx_import_source_no_pragma.tsx +++ b/tests/testdata/run/jsx_import_source_no_pragma.tsx diff --git a/cli/tests/testdata/run/jsx_import_source_pragma.tsx b/tests/testdata/run/jsx_import_source_pragma.tsx index c19e53d4f..c19e53d4f 100644 --- a/cli/tests/testdata/run/jsx_import_source_pragma.tsx +++ b/tests/testdata/run/jsx_import_source_pragma.tsx diff --git a/cli/tests/testdata/run/jsx_import_source_pragma_import_map.tsx b/tests/testdata/run/jsx_import_source_pragma_import_map.tsx index 548365f18..548365f18 100644 --- a/cli/tests/testdata/run/jsx_import_source_pragma_import_map.tsx +++ b/tests/testdata/run/jsx_import_source_pragma_import_map.tsx diff --git a/cli/tests/testdata/run/jsx_precompile/no_pragma.out b/tests/testdata/run/jsx_precompile/no_pragma.out index 437995923..437995923 100644 --- a/cli/tests/testdata/run/jsx_precompile/no_pragma.out +++ b/tests/testdata/run/jsx_precompile/no_pragma.out diff --git a/cli/tests/testdata/run/jsx_precompile/no_pragma.tsx b/tests/testdata/run/jsx_precompile/no_pragma.tsx index 7ba21d80d..7ba21d80d 100644 --- a/cli/tests/testdata/run/jsx_precompile/no_pragma.tsx +++ b/tests/testdata/run/jsx_precompile/no_pragma.tsx diff --git a/cli/tests/testdata/run/lock_check_err.json b/tests/testdata/run/lock_check_err.json index fc6c2d45c..fc6c2d45c 100644 --- a/cli/tests/testdata/run/lock_check_err.json +++ b/tests/testdata/run/lock_check_err.json diff --git a/cli/tests/testdata/run/lock_check_err.out b/tests/testdata/run/lock_check_err.out index e4cc7b81a..e4cc7b81a 100644 --- a/cli/tests/testdata/run/lock_check_err.out +++ b/tests/testdata/run/lock_check_err.out diff --git a/cli/tests/testdata/run/lock_check_err2.json b/tests/testdata/run/lock_check_err2.json index a59cbc9e3..a59cbc9e3 100644 --- a/cli/tests/testdata/run/lock_check_err2.json +++ b/tests/testdata/run/lock_check_err2.json diff --git a/cli/tests/testdata/run/lock_check_err2.out b/tests/testdata/run/lock_check_err2.out index 065c7434b..065c7434b 100644 --- a/cli/tests/testdata/run/lock_check_err2.out +++ b/tests/testdata/run/lock_check_err2.out diff --git a/cli/tests/testdata/run/lock_check_ok.json b/tests/testdata/run/lock_check_ok.json index 94de0f630..94de0f630 100644 --- a/cli/tests/testdata/run/lock_check_ok.json +++ b/tests/testdata/run/lock_check_ok.json diff --git a/cli/tests/testdata/run/lock_check_ok2.json b/tests/testdata/run/lock_check_ok2.json index 14d8b7117..14d8b7117 100644 --- a/cli/tests/testdata/run/lock_check_ok2.json +++ b/tests/testdata/run/lock_check_ok2.json diff --git a/cli/tests/testdata/run/lock_dynamic_imports.json b/tests/testdata/run/lock_dynamic_imports.json index 0269b9409..0269b9409 100644 --- a/cli/tests/testdata/run/lock_dynamic_imports.json +++ b/tests/testdata/run/lock_dynamic_imports.json diff --git a/cli/tests/testdata/run/lock_dynamic_imports.out b/tests/testdata/run/lock_dynamic_imports.out index acc65c8e6..acc65c8e6 100644 --- a/cli/tests/testdata/run/lock_dynamic_imports.out +++ b/tests/testdata/run/lock_dynamic_imports.out diff --git a/cli/tests/testdata/run/lock_only_http_and_https/b.ts b/tests/testdata/run/lock_only_http_and_https/b.ts index 3bf5ac26a..3bf5ac26a 100644 --- a/cli/tests/testdata/run/lock_only_http_and_https/b.ts +++ b/tests/testdata/run/lock_only_http_and_https/b.ts diff --git a/cli/tests/testdata/run/lock_only_http_and_https/deno.lock b/tests/testdata/run/lock_only_http_and_https/deno.lock index 695926fd5..695926fd5 100644 --- a/cli/tests/testdata/run/lock_only_http_and_https/deno.lock +++ b/tests/testdata/run/lock_only_http_and_https/deno.lock diff --git a/cli/tests/testdata/run/lock_only_http_and_https/main.out b/tests/testdata/run/lock_only_http_and_https/main.out index cc47b50f3..cc47b50f3 100644 --- a/cli/tests/testdata/run/lock_only_http_and_https/main.out +++ b/tests/testdata/run/lock_only_http_and_https/main.out diff --git a/cli/tests/testdata/run/lock_only_http_and_https/main.ts b/tests/testdata/run/lock_only_http_and_https/main.ts index 879e825ed..879e825ed 100644 --- a/cli/tests/testdata/run/lock_only_http_and_https/main.ts +++ b/tests/testdata/run/lock_only_http_and_https/main.ts diff --git a/cli/tests/testdata/run/lock_v2_check_err.json b/tests/testdata/run/lock_v2_check_err.json index 6bd6491c6..6bd6491c6 100644 --- a/cli/tests/testdata/run/lock_v2_check_err.json +++ b/tests/testdata/run/lock_v2_check_err.json diff --git a/cli/tests/testdata/run/lock_v2_check_err.out b/tests/testdata/run/lock_v2_check_err.out index 28ad01cf4..28ad01cf4 100644 --- a/cli/tests/testdata/run/lock_v2_check_err.out +++ b/tests/testdata/run/lock_v2_check_err.out diff --git a/cli/tests/testdata/run/lock_v2_check_err2.json b/tests/testdata/run/lock_v2_check_err2.json index 30fbcdf4b..30fbcdf4b 100644 --- a/cli/tests/testdata/run/lock_v2_check_err2.json +++ b/tests/testdata/run/lock_v2_check_err2.json diff --git a/cli/tests/testdata/run/lock_v2_check_err2.out b/tests/testdata/run/lock_v2_check_err2.out index 3d82cba27..3d82cba27 100644 --- a/cli/tests/testdata/run/lock_v2_check_err2.out +++ b/tests/testdata/run/lock_v2_check_err2.out diff --git a/cli/tests/testdata/run/lock_v2_check_ok.json b/tests/testdata/run/lock_v2_check_ok.json index 63bec862a..63bec862a 100644 --- a/cli/tests/testdata/run/lock_v2_check_ok.json +++ b/tests/testdata/run/lock_v2_check_ok.json diff --git a/cli/tests/testdata/run/lock_v2_check_ok2.json b/tests/testdata/run/lock_v2_check_ok2.json index 4356c9421..4356c9421 100644 --- a/cli/tests/testdata/run/lock_v2_check_ok2.json +++ b/tests/testdata/run/lock_v2_check_ok2.json diff --git a/cli/tests/testdata/run/lock_v2_dynamic_imports.json b/tests/testdata/run/lock_v2_dynamic_imports.json index eadbee272..eadbee272 100644 --- a/cli/tests/testdata/run/lock_v2_dynamic_imports.json +++ b/tests/testdata/run/lock_v2_dynamic_imports.json diff --git a/cli/tests/testdata/run/lock_v2_dynamic_imports.out b/tests/testdata/run/lock_v2_dynamic_imports.out index 36c2c9b5c..36c2c9b5c 100644 --- a/cli/tests/testdata/run/lock_v2_dynamic_imports.out +++ b/tests/testdata/run/lock_v2_dynamic_imports.out diff --git a/cli/tests/testdata/run/lock_write_fetch/file_exists.ts b/tests/testdata/run/lock_write_fetch/file_exists.ts index 20de4d4f2..20de4d4f2 100644 --- a/cli/tests/testdata/run/lock_write_fetch/file_exists.ts +++ b/tests/testdata/run/lock_write_fetch/file_exists.ts diff --git a/cli/tests/testdata/run/lock_write_fetch/main.out b/tests/testdata/run/lock_write_fetch/main.out index bfdb952f9..bfdb952f9 100644 --- a/cli/tests/testdata/run/lock_write_fetch/main.out +++ b/tests/testdata/run/lock_write_fetch/main.out diff --git a/cli/tests/testdata/run/lock_write_fetch/main.ts b/tests/testdata/run/lock_write_fetch/main.ts index 57bc54d02..57bc54d02 100644 --- a/cli/tests/testdata/run/lock_write_fetch/main.ts +++ b/tests/testdata/run/lock_write_fetch/main.ts diff --git a/cli/tests/testdata/run/long_data_url_formatting.ts b/tests/testdata/run/long_data_url_formatting.ts index 2ed2d5a03..2ed2d5a03 100644 --- a/cli/tests/testdata/run/long_data_url_formatting.ts +++ b/tests/testdata/run/long_data_url_formatting.ts diff --git a/cli/tests/testdata/run/long_data_url_formatting.ts.out b/tests/testdata/run/long_data_url_formatting.ts.out index ea78c2591..ea78c2591 100644 --- a/cli/tests/testdata/run/long_data_url_formatting.ts.out +++ b/tests/testdata/run/long_data_url_formatting.ts.out diff --git a/cli/tests/testdata/run/main_module/main.out b/tests/testdata/run/main_module/main.out index 29f592c2a..29f592c2a 100644 --- a/cli/tests/testdata/run/main_module/main.out +++ b/tests/testdata/run/main_module/main.out diff --git a/cli/tests/testdata/run/main_module/main.ts b/tests/testdata/run/main_module/main.ts index d2f2c66ee..d2f2c66ee 100644 --- a/cli/tests/testdata/run/main_module/main.ts +++ b/tests/testdata/run/main_module/main.ts diff --git a/cli/tests/testdata/run/main_module/other.ts b/tests/testdata/run/main_module/other.ts index b3e524b0a..b3e524b0a 100644 --- a/cli/tests/testdata/run/main_module/other.ts +++ b/tests/testdata/run/main_module/other.ts diff --git a/cli/tests/testdata/run/mts_dmts_mjs.out b/tests/testdata/run/mts_dmts_mjs.out index 789819226..789819226 100644 --- a/cli/tests/testdata/run/mts_dmts_mjs.out +++ b/tests/testdata/run/mts_dmts_mjs.out diff --git a/cli/tests/testdata/run/nested_error/main.ts b/tests/testdata/run/nested_error/main.ts index 69828e1ca..69828e1ca 100644 --- a/cli/tests/testdata/run/nested_error/main.ts +++ b/tests/testdata/run/nested_error/main.ts diff --git a/cli/tests/testdata/run/nested_error/main.ts.out b/tests/testdata/run/nested_error/main.ts.out index 05780bc6a..05780bc6a 100644 --- a/cli/tests/testdata/run/nested_error/main.ts.out +++ b/tests/testdata/run/nested_error/main.ts.out diff --git a/cli/tests/testdata/run/no_check_imports_not_used_as_values/hello.ts b/tests/testdata/run/no_check_imports_not_used_as_values/hello.ts index 1a9d8f114..1a9d8f114 100644 --- a/cli/tests/testdata/run/no_check_imports_not_used_as_values/hello.ts +++ b/tests/testdata/run/no_check_imports_not_used_as_values/hello.ts diff --git a/cli/tests/testdata/run/no_check_imports_not_used_as_values/main.out b/tests/testdata/run/no_check_imports_not_used_as_values/main.out index f744c4183..f744c4183 100644 --- a/cli/tests/testdata/run/no_check_imports_not_used_as_values/main.out +++ b/tests/testdata/run/no_check_imports_not_used_as_values/main.out diff --git a/cli/tests/testdata/run/no_check_imports_not_used_as_values/main.ts b/tests/testdata/run/no_check_imports_not_used_as_values/main.ts index 80e17aa35..80e17aa35 100644 --- a/cli/tests/testdata/run/no_check_imports_not_used_as_values/main.ts +++ b/tests/testdata/run/no_check_imports_not_used_as_values/main.ts diff --git a/cli/tests/testdata/run/no_check_imports_not_used_as_values/preserve_imports.tsconfig.json b/tests/testdata/run/no_check_imports_not_used_as_values/preserve_imports.tsconfig.json index 9b19291aa..9b19291aa 100644 --- a/cli/tests/testdata/run/no_check_imports_not_used_as_values/preserve_imports.tsconfig.json +++ b/tests/testdata/run/no_check_imports_not_used_as_values/preserve_imports.tsconfig.json diff --git a/cli/tests/testdata/run/no_check_remote.ts b/tests/testdata/run/no_check_remote.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/run/no_check_remote.ts +++ b/tests/testdata/run/no_check_remote.ts diff --git a/cli/tests/testdata/run/no_check_remote.ts.disabled.out b/tests/testdata/run/no_check_remote.ts.disabled.out index 344264634..344264634 100644 --- a/cli/tests/testdata/run/no_check_remote.ts.disabled.out +++ b/tests/testdata/run/no_check_remote.ts.disabled.out diff --git a/cli/tests/testdata/run/no_check_remote.ts.enabled.out b/tests/testdata/run/no_check_remote.ts.enabled.out index 48082f72f..48082f72f 100644 --- a/cli/tests/testdata/run/no_check_remote.ts.enabled.out +++ b/tests/testdata/run/no_check_remote.ts.enabled.out diff --git a/cli/tests/testdata/run/no_lock_flag/deno.json b/tests/testdata/run/no_lock_flag/deno.json index 90faa728a..90faa728a 100644 --- a/cli/tests/testdata/run/no_lock_flag/deno.json +++ b/tests/testdata/run/no_lock_flag/deno.json diff --git a/cli/tests/testdata/run/no_lock_flag/deno.lock b/tests/testdata/run/no_lock_flag/deno.lock index 059f66789..059f66789 100644 --- a/cli/tests/testdata/run/no_lock_flag/deno.lock +++ b/tests/testdata/run/no_lock_flag/deno.lock diff --git a/cli/tests/testdata/run/no_lock_flag/main.out b/tests/testdata/run/no_lock_flag/main.out index 0d8f0a237..0d8f0a237 100644 --- a/cli/tests/testdata/run/no_lock_flag/main.out +++ b/tests/testdata/run/no_lock_flag/main.out diff --git a/cli/tests/testdata/run/no_lock_flag/main.ts b/tests/testdata/run/no_lock_flag/main.ts index baa52775d..baa52775d 100644 --- a/cli/tests/testdata/run/no_lock_flag/main.ts +++ b/tests/testdata/run/no_lock_flag/main.ts diff --git a/cli/tests/testdata/run/no_mem_cache.js b/tests/testdata/run/no_mem_cache.js index a486732b6..a486732b6 100644 --- a/cli/tests/testdata/run/no_mem_cache.js +++ b/tests/testdata/run/no_mem_cache.js diff --git a/cli/tests/testdata/run/no_mem_cache.js.out b/tests/testdata/run/no_mem_cache.js.out index a32119c8a..a32119c8a 100644 --- a/cli/tests/testdata/run/no_mem_cache.js.out +++ b/tests/testdata/run/no_mem_cache.js.out diff --git a/cli/tests/testdata/run/no_prompt.ts b/tests/testdata/run/no_prompt.ts index 17d54b92c..17d54b92c 100644 --- a/cli/tests/testdata/run/no_prompt.ts +++ b/tests/testdata/run/no_prompt.ts diff --git a/cli/tests/testdata/run/no_validate_asm.js b/tests/testdata/run/no_validate_asm.js index ef999e080..ef999e080 100644 --- a/cli/tests/testdata/run/no_validate_asm.js +++ b/tests/testdata/run/no_validate_asm.js diff --git a/cli/tests/testdata/run/node_builtin_modules/mod.js b/tests/testdata/run/node_builtin_modules/mod.js index a01ac4422..a01ac4422 100644 --- a/cli/tests/testdata/run/node_builtin_modules/mod.js +++ b/tests/testdata/run/node_builtin_modules/mod.js diff --git a/cli/tests/testdata/run/node_builtin_modules/mod.js.out b/tests/testdata/run/node_builtin_modules/mod.js.out index 844e3d927..844e3d927 100644 --- a/cli/tests/testdata/run/node_builtin_modules/mod.js.out +++ b/tests/testdata/run/node_builtin_modules/mod.js.out diff --git a/cli/tests/testdata/run/node_builtin_modules/mod.ts b/tests/testdata/run/node_builtin_modules/mod.ts index a01ac4422..a01ac4422 100644 --- a/cli/tests/testdata/run/node_builtin_modules/mod.ts +++ b/tests/testdata/run/node_builtin_modules/mod.ts diff --git a/cli/tests/testdata/run/node_builtin_modules/mod.ts.out b/tests/testdata/run/node_builtin_modules/mod.ts.out index 844e3d927..844e3d927 100644 --- a/cli/tests/testdata/run/node_builtin_modules/mod.ts.out +++ b/tests/testdata/run/node_builtin_modules/mod.ts.out diff --git a/cli/tests/testdata/run/node_env_var_allowlist.ts b/tests/testdata/run/node_env_var_allowlist.ts index 95da38c24..95da38c24 100644 --- a/cli/tests/testdata/run/node_env_var_allowlist.ts +++ b/tests/testdata/run/node_env_var_allowlist.ts diff --git a/cli/tests/testdata/run/node_env_var_allowlist.ts.out b/tests/testdata/run/node_env_var_allowlist.ts.out index ea66a2965..ea66a2965 100644 --- a/cli/tests/testdata/run/node_env_var_allowlist.ts.out +++ b/tests/testdata/run/node_env_var_allowlist.ts.out diff --git a/cli/tests/testdata/run/node_prefix_missing/config.json b/tests/testdata/run/node_prefix_missing/config.json index 67480c3d4..67480c3d4 100644 --- a/cli/tests/testdata/run/node_prefix_missing/config.json +++ b/tests/testdata/run/node_prefix_missing/config.json diff --git a/cli/tests/testdata/run/node_prefix_missing/import_map.json b/tests/testdata/run/node_prefix_missing/import_map.json index 3add7d009..3add7d009 100644 --- a/cli/tests/testdata/run/node_prefix_missing/import_map.json +++ b/tests/testdata/run/node_prefix_missing/import_map.json diff --git a/cli/tests/testdata/run/node_prefix_missing/main.ts b/tests/testdata/run/node_prefix_missing/main.ts index c5c1885a2..c5c1885a2 100644 --- a/cli/tests/testdata/run/node_prefix_missing/main.ts +++ b/tests/testdata/run/node_prefix_missing/main.ts diff --git a/cli/tests/testdata/run/node_prefix_missing/main.ts.out b/tests/testdata/run/node_prefix_missing/main.ts.out index fd19ed55f..fd19ed55f 100644 --- a/cli/tests/testdata/run/node_prefix_missing/main.ts.out +++ b/tests/testdata/run/node_prefix_missing/main.ts.out diff --git a/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled b/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled new file mode 100644 index 000000000..513b411ce --- /dev/null +++ b/tests/testdata/run/node_prefix_missing/main.ts.out_feature_enabled @@ -0,0 +1,2 @@ +[WILDCARD]Warning: Resolving "fs" as "node:fs" at file:///[WILDCARD]/tests/testdata/run/node_prefix_missing/main.ts:1:16. If you want to use a built-in Node module, add a "node:" prefix. +[Function: writeFile] diff --git a/tests/testdata/run/onload/imported.ts b/tests/testdata/run/onload/imported.ts new file mode 100644 index 000000000..d2a93c8d2 --- /dev/null +++ b/tests/testdata/run/onload/imported.ts @@ -0,0 +1,13 @@ +// deno-lint-ignore-file no-window-prefix +import { assert } from "../../../../test_util/std/assert/mod.ts"; +import "./nest_imported.ts"; + +const handler = (e: Event) => { + assert(e.type === "beforeunload" ? e.cancelable : !e.cancelable); + console.log(`got ${e.type} event in event handler (imported)`); +}; + +window.addEventListener("load", handler); +window.addEventListener("beforeunload", handler); +window.addEventListener("unload", handler); +console.log("log from imported script"); diff --git a/cli/tests/testdata/run/onload/main.out b/tests/testdata/run/onload/main.out index b25d33fa8..b25d33fa8 100644 --- a/cli/tests/testdata/run/onload/main.out +++ b/tests/testdata/run/onload/main.out diff --git a/tests/testdata/run/onload/main.ts b/tests/testdata/run/onload/main.ts new file mode 100644 index 000000000..990a21131 --- /dev/null +++ b/tests/testdata/run/onload/main.ts @@ -0,0 +1,34 @@ +// deno-lint-ignore-file no-window-prefix no-prototype-builtins +import { assert } from "../../../../test_util/std/assert/mod.ts"; +import "./imported.ts"; + +assert(window.hasOwnProperty("onload")); +assert(window.onload === null); + +const eventHandler = (e: Event) => { + assert(e.type === "beforeunload" ? e.cancelable : !e.cancelable); + console.log(`got ${e.type} event in event handler (main)`); +}; + +window.addEventListener("load", eventHandler); + +window.addEventListener("beforeunload", eventHandler); + +window.addEventListener("unload", eventHandler); + +window.onload = (e: Event) => { + assert(!e.cancelable); + console.log(`got ${e.type} event in onload function`); +}; + +window.onbeforeunload = (e: BeforeUnloadEvent) => { + assert(e.cancelable); + console.log(`got ${e.type} event in onbeforeunload function`); +}; + +window.onunload = (e: Event) => { + assert(!e.cancelable); + console.log(`got ${e.type} event in onunload function`); +}; + +console.log("log from main"); diff --git a/tests/testdata/run/onload/nest_imported.ts b/tests/testdata/run/onload/nest_imported.ts new file mode 100644 index 000000000..2151f4185 --- /dev/null +++ b/tests/testdata/run/onload/nest_imported.ts @@ -0,0 +1,12 @@ +// deno-lint-ignore-file no-window-prefix +import { assert } from "../../../../test_util/std/assert/mod.ts"; + +const handler = (e: Event) => { + assert(e.type === "beforeunload" ? e.cancelable : !e.cancelable); + console.log(`got ${e.type} event in event handler (nest_imported)`); +}; + +window.addEventListener("load", handler); +window.addEventListener("beforeunload", handler); +window.addEventListener("unload", handler); +console.log("log from nest_imported script"); diff --git a/cli/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts b/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts index b6a776439..b6a776439 100644 --- a/cli/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts +++ b/tests/testdata/run/op_exit_op_set_exit_code_in_worker.ts diff --git a/cli/tests/testdata/run/op_exit_op_set_exit_code_worker.js b/tests/testdata/run/op_exit_op_set_exit_code_worker.js index 9b284c37d..9b284c37d 100644 --- a/cli/tests/testdata/run/op_exit_op_set_exit_code_worker.js +++ b/tests/testdata/run/op_exit_op_set_exit_code_worker.js diff --git a/cli/tests/testdata/run/permission_args.out b/tests/testdata/run/permission_args.out index 6a1e1787c..6a1e1787c 100644 --- a/cli/tests/testdata/run/permission_args.out +++ b/tests/testdata/run/permission_args.out diff --git a/cli/tests/testdata/run/permission_request_long.ts b/tests/testdata/run/permission_request_long.ts index 05937e95a..05937e95a 100644 --- a/cli/tests/testdata/run/permission_request_long.ts +++ b/tests/testdata/run/permission_request_long.ts diff --git a/cli/tests/testdata/run/permission_test.ts b/tests/testdata/run/permission_test.ts index a2312e3ac..a2312e3ac 100644 --- a/cli/tests/testdata/run/permission_test.ts +++ b/tests/testdata/run/permission_test.ts diff --git a/cli/tests/testdata/run/permissions_cache.ts b/tests/testdata/run/permissions_cache.ts index c77ee0f36..c77ee0f36 100644 --- a/cli/tests/testdata/run/permissions_cache.ts +++ b/tests/testdata/run/permissions_cache.ts diff --git a/cli/tests/testdata/run/permissions_prompt_allow_all.ts b/tests/testdata/run/permissions_prompt_allow_all.ts index 8aa7d040e..8aa7d040e 100644 --- a/cli/tests/testdata/run/permissions_prompt_allow_all.ts +++ b/tests/testdata/run/permissions_prompt_allow_all.ts diff --git a/cli/tests/testdata/run/permissions_prompt_allow_all_2.ts b/tests/testdata/run/permissions_prompt_allow_all_2.ts index f42b35753..f42b35753 100644 --- a/cli/tests/testdata/run/permissions_prompt_allow_all_2.ts +++ b/tests/testdata/run/permissions_prompt_allow_all_2.ts diff --git a/cli/tests/testdata/run/private_field_presence.ts b/tests/testdata/run/private_field_presence.ts index 7ce2840d8..7ce2840d8 100644 --- a/cli/tests/testdata/run/private_field_presence.ts +++ b/tests/testdata/run/private_field_presence.ts diff --git a/cli/tests/testdata/run/private_field_presence.ts.out b/tests/testdata/run/private_field_presence.ts.out index 1d474d525..1d474d525 100644 --- a/cli/tests/testdata/run/private_field_presence.ts.out +++ b/tests/testdata/run/private_field_presence.ts.out diff --git a/cli/tests/testdata/run/proto_exploit.js b/tests/testdata/run/proto_exploit.js index 8bd22cfe5..8bd22cfe5 100644 --- a/cli/tests/testdata/run/proto_exploit.js +++ b/tests/testdata/run/proto_exploit.js diff --git a/cli/tests/testdata/run/proto_exploit.js.out b/tests/testdata/run/proto_exploit.js.out index fde881dc5..fde881dc5 100644 --- a/cli/tests/testdata/run/proto_exploit.js.out +++ b/tests/testdata/run/proto_exploit.js.out diff --git a/cli/tests/testdata/run/queue_microtask_error.ts b/tests/testdata/run/queue_microtask_error.ts index b2e9642c5..b2e9642c5 100644 --- a/cli/tests/testdata/run/queue_microtask_error.ts +++ b/tests/testdata/run/queue_microtask_error.ts diff --git a/cli/tests/testdata/run/queue_microtask_error.ts.out b/tests/testdata/run/queue_microtask_error.ts.out index a8ce13170..a8ce13170 100644 --- a/cli/tests/testdata/run/queue_microtask_error.ts.out +++ b/tests/testdata/run/queue_microtask_error.ts.out diff --git a/cli/tests/testdata/run/queue_microtask_error_handled.ts b/tests/testdata/run/queue_microtask_error_handled.ts index 47ea2d32e..47ea2d32e 100644 --- a/cli/tests/testdata/run/queue_microtask_error_handled.ts +++ b/tests/testdata/run/queue_microtask_error_handled.ts diff --git a/cli/tests/testdata/run/queue_microtask_error_handled.ts.out b/tests/testdata/run/queue_microtask_error_handled.ts.out index bdc8eafa1..bdc8eafa1 100644 --- a/cli/tests/testdata/run/queue_microtask_error_handled.ts.out +++ b/tests/testdata/run/queue_microtask_error_handled.ts.out diff --git a/cli/tests/testdata/run/reference_types.ts b/tests/testdata/run/reference_types.ts index 105e23b37..105e23b37 100644 --- a/cli/tests/testdata/run/reference_types.ts +++ b/tests/testdata/run/reference_types.ts diff --git a/cli/tests/testdata/run/reference_types.ts.out b/tests/testdata/run/reference_types.ts.out index 417b7b537..417b7b537 100644 --- a/cli/tests/testdata/run/reference_types.ts.out +++ b/tests/testdata/run/reference_types.ts.out diff --git a/cli/tests/testdata/run/reference_types_error.js b/tests/testdata/run/reference_types_error.js index 68b6c2136..68b6c2136 100644 --- a/cli/tests/testdata/run/reference_types_error.js +++ b/tests/testdata/run/reference_types_error.js diff --git a/cli/tests/testdata/run/reference_types_error.js.out b/tests/testdata/run/reference_types_error.js.out index 86055f3ac..86055f3ac 100644 --- a/cli/tests/testdata/run/reference_types_error.js.out +++ b/tests/testdata/run/reference_types_error.js.out diff --git a/cli/tests/testdata/run/reference_types_remote.ts b/tests/testdata/run/reference_types_remote.ts index e7fa81b2c..e7fa81b2c 100644 --- a/cli/tests/testdata/run/reference_types_remote.ts +++ b/tests/testdata/run/reference_types_remote.ts diff --git a/cli/tests/testdata/run/reference_types_remote.ts.out b/tests/testdata/run/reference_types_remote.ts.out index 417b7b537..417b7b537 100644 --- a/cli/tests/testdata/run/reference_types_remote.ts.out +++ b/tests/testdata/run/reference_types_remote.ts.out diff --git a/cli/tests/testdata/run/rejection_handled.out b/tests/testdata/run/rejection_handled.out index 5c06fcd2b..5c06fcd2b 100644 --- a/cli/tests/testdata/run/rejection_handled.out +++ b/tests/testdata/run/rejection_handled.out diff --git a/cli/tests/testdata/run/rejection_handled.ts b/tests/testdata/run/rejection_handled.ts index f058ff966..f058ff966 100644 --- a/cli/tests/testdata/run/rejection_handled.ts +++ b/tests/testdata/run/rejection_handled.ts diff --git a/cli/tests/testdata/run/remote_type_error/main.ts b/tests/testdata/run/remote_type_error/main.ts index 00f8a52df..00f8a52df 100644 --- a/cli/tests/testdata/run/remote_type_error/main.ts +++ b/tests/testdata/run/remote_type_error/main.ts diff --git a/cli/tests/testdata/run/remote_type_error/remote.ts b/tests/testdata/run/remote_type_error/remote.ts index 6e9bf4adb..6e9bf4adb 100644 --- a/cli/tests/testdata/run/remote_type_error/remote.ts +++ b/tests/testdata/run/remote_type_error/remote.ts diff --git a/cli/tests/testdata/run/replace_self.js b/tests/testdata/run/replace_self.js index cfd473cd3..cfd473cd3 100644 --- a/cli/tests/testdata/run/replace_self.js +++ b/tests/testdata/run/replace_self.js diff --git a/cli/tests/testdata/run/replace_self.js.out b/tests/testdata/run/replace_self.js.out index aaffb5a62..aaffb5a62 100644 --- a/cli/tests/testdata/run/replace_self.js.out +++ b/tests/testdata/run/replace_self.js.out diff --git a/cli/tests/testdata/run/report_error.ts b/tests/testdata/run/report_error.ts index a6d4af1fd..a6d4af1fd 100644 --- a/cli/tests/testdata/run/report_error.ts +++ b/tests/testdata/run/report_error.ts diff --git a/cli/tests/testdata/run/report_error.ts.out b/tests/testdata/run/report_error.ts.out index 185db62a5..185db62a5 100644 --- a/cli/tests/testdata/run/report_error.ts.out +++ b/tests/testdata/run/report_error.ts.out diff --git a/cli/tests/testdata/run/report_error_end_of_program.ts b/tests/testdata/run/report_error_end_of_program.ts index cd7ce7f9c..cd7ce7f9c 100644 --- a/cli/tests/testdata/run/report_error_end_of_program.ts +++ b/tests/testdata/run/report_error_end_of_program.ts diff --git a/cli/tests/testdata/run/report_error_end_of_program.ts.out b/tests/testdata/run/report_error_end_of_program.ts.out index ecca63389..ecca63389 100644 --- a/cli/tests/testdata/run/report_error_end_of_program.ts.out +++ b/tests/testdata/run/report_error_end_of_program.ts.out diff --git a/cli/tests/testdata/run/report_error_handled.ts b/tests/testdata/run/report_error_handled.ts index d18996c13..d18996c13 100644 --- a/cli/tests/testdata/run/report_error_handled.ts +++ b/tests/testdata/run/report_error_handled.ts diff --git a/cli/tests/testdata/run/report_error_handled.ts.out b/tests/testdata/run/report_error_handled.ts.out index 89fa30314..89fa30314 100644 --- a/cli/tests/testdata/run/report_error_handled.ts.out +++ b/tests/testdata/run/report_error_handled.ts.out diff --git a/cli/tests/testdata/run/resolve_dns.ts b/tests/testdata/run/resolve_dns.ts index a2d0fd046..a2d0fd046 100644 --- a/cli/tests/testdata/run/resolve_dns.ts +++ b/tests/testdata/run/resolve_dns.ts diff --git a/cli/tests/testdata/run/resolve_dns.ts.out b/tests/testdata/run/resolve_dns.ts.out index 025028395..025028395 100644 --- a/cli/tests/testdata/run/resolve_dns.ts.out +++ b/tests/testdata/run/resolve_dns.ts.out diff --git a/cli/tests/testdata/run/resolve_dns.zone.in b/tests/testdata/run/resolve_dns.zone.in index 94d5b9fc3..94d5b9fc3 100644 --- a/cli/tests/testdata/run/resolve_dns.zone.in +++ b/tests/testdata/run/resolve_dns.zone.in diff --git a/cli/tests/testdata/run/runtime_decorators.ts b/tests/testdata/run/runtime_decorators.ts index 40a26bbd4..40a26bbd4 100644 --- a/cli/tests/testdata/run/runtime_decorators.ts +++ b/tests/testdata/run/runtime_decorators.ts diff --git a/cli/tests/testdata/run/runtime_decorators.ts.out b/tests/testdata/run/runtime_decorators.ts.out index 0fc1d4590..0fc1d4590 100644 --- a/cli/tests/testdata/run/runtime_decorators.ts.out +++ b/tests/testdata/run/runtime_decorators.ts.out diff --git a/cli/tests/testdata/run/seed_random.js b/tests/testdata/run/seed_random.js index 7f6e336df..7f6e336df 100644 --- a/cli/tests/testdata/run/seed_random.js +++ b/tests/testdata/run/seed_random.js diff --git a/cli/tests/testdata/run/seed_random.js.out b/tests/testdata/run/seed_random.js.out index 4d1ebd081..4d1ebd081 100644 --- a/cli/tests/testdata/run/seed_random.js.out +++ b/tests/testdata/run/seed_random.js.out diff --git a/cli/tests/testdata/run/set_exit_code_0.ts b/tests/testdata/run/set_exit_code_0.ts index 8a0103c8f..8a0103c8f 100644 --- a/cli/tests/testdata/run/set_exit_code_0.ts +++ b/tests/testdata/run/set_exit_code_0.ts diff --git a/cli/tests/testdata/run/set_exit_code_1.ts b/tests/testdata/run/set_exit_code_1.ts index 45027ccf7..45027ccf7 100644 --- a/cli/tests/testdata/run/set_exit_code_1.ts +++ b/tests/testdata/run/set_exit_code_1.ts diff --git a/cli/tests/testdata/run/set_exit_code_2.ts b/tests/testdata/run/set_exit_code_2.ts index 48469c17d..48469c17d 100644 --- a/cli/tests/testdata/run/set_exit_code_2.ts +++ b/tests/testdata/run/set_exit_code_2.ts diff --git a/cli/tests/testdata/run/set_timeout_error.ts b/tests/testdata/run/set_timeout_error.ts index 2864574e7..2864574e7 100644 --- a/cli/tests/testdata/run/set_timeout_error.ts +++ b/tests/testdata/run/set_timeout_error.ts diff --git a/cli/tests/testdata/run/set_timeout_error.ts.out b/tests/testdata/run/set_timeout_error.ts.out index 9db053f6c..9db053f6c 100644 --- a/cli/tests/testdata/run/set_timeout_error.ts.out +++ b/tests/testdata/run/set_timeout_error.ts.out diff --git a/cli/tests/testdata/run/set_timeout_error_handled.ts b/tests/testdata/run/set_timeout_error_handled.ts index aee2d97d2..aee2d97d2 100644 --- a/cli/tests/testdata/run/set_timeout_error_handled.ts +++ b/tests/testdata/run/set_timeout_error_handled.ts diff --git a/cli/tests/testdata/run/set_timeout_error_handled.ts.out b/tests/testdata/run/set_timeout_error_handled.ts.out index 054dd9b6b..054dd9b6b 100644 --- a/cli/tests/testdata/run/set_timeout_error_handled.ts.out +++ b/tests/testdata/run/set_timeout_error_handled.ts.out diff --git a/cli/tests/testdata/run/shebang.ts b/tests/testdata/run/shebang.ts index 00feb2da0..00feb2da0 100644 --- a/cli/tests/testdata/run/shebang.ts +++ b/tests/testdata/run/shebang.ts diff --git a/cli/tests/testdata/run/shebang.ts.out b/tests/testdata/run/shebang.ts.out index d81cc0710..d81cc0710 100644 --- a/cli/tests/testdata/run/shebang.ts.out +++ b/tests/testdata/run/shebang.ts.out diff --git a/cli/tests/testdata/run/shebang2.ts b/tests/testdata/run/shebang2.ts index da0d7bf0c..da0d7bf0c 100644 --- a/cli/tests/testdata/run/shebang2.ts +++ b/tests/testdata/run/shebang2.ts diff --git a/cli/tests/testdata/run/single_compile_with_reload.ts b/tests/testdata/run/single_compile_with_reload.ts index 9478ad523..9478ad523 100644 --- a/cli/tests/testdata/run/single_compile_with_reload.ts +++ b/tests/testdata/run/single_compile_with_reload.ts diff --git a/cli/tests/testdata/run/single_compile_with_reload.ts.out b/tests/testdata/run/single_compile_with_reload.ts.out index a3986e3af..a3986e3af 100644 --- a/cli/tests/testdata/run/single_compile_with_reload.ts.out +++ b/tests/testdata/run/single_compile_with_reload.ts.out diff --git a/cli/tests/testdata/run/single_compile_with_reload_dyn.ts b/tests/testdata/run/single_compile_with_reload_dyn.ts index 6c96fac64..6c96fac64 100644 --- a/cli/tests/testdata/run/single_compile_with_reload_dyn.ts +++ b/tests/testdata/run/single_compile_with_reload_dyn.ts diff --git a/cli/tests/testdata/run/single_compile_with_reload_worker.ts b/tests/testdata/run/single_compile_with_reload_worker.ts index 103cafe20..103cafe20 100644 --- a/cli/tests/testdata/run/single_compile_with_reload_worker.ts +++ b/tests/testdata/run/single_compile_with_reload_worker.ts diff --git a/cli/tests/testdata/run/spawn_stdout_inherit.ts b/tests/testdata/run/spawn_stdout_inherit.ts index 04f635cea..04f635cea 100644 --- a/cli/tests/testdata/run/spawn_stdout_inherit.ts +++ b/tests/testdata/run/spawn_stdout_inherit.ts diff --git a/cli/tests/testdata/run/spawn_stdout_inherit.ts.out b/tests/testdata/run/spawn_stdout_inherit.ts.out index 474891cf2..474891cf2 100644 --- a/cli/tests/testdata/run/spawn_stdout_inherit.ts.out +++ b/tests/testdata/run/spawn_stdout_inherit.ts.out diff --git a/cli/tests/testdata/run/stdin_read_all.out b/tests/testdata/run/stdin_read_all.out index 2f0dfb71a..2f0dfb71a 100644 --- a/cli/tests/testdata/run/stdin_read_all.out +++ b/tests/testdata/run/stdin_read_all.out diff --git a/cli/tests/testdata/run/stdin_read_all.ts b/tests/testdata/run/stdin_read_all.ts index d683a2bf6..d683a2bf6 100644 --- a/cli/tests/testdata/run/stdin_read_all.ts +++ b/tests/testdata/run/stdin_read_all.ts diff --git a/cli/tests/testdata/run/stdio_streams_are_locked_in_permission_prompt/worker.js b/tests/testdata/run/stdio_streams_are_locked_in_permission_prompt/worker.js index 287027c83..287027c83 100644 --- a/cli/tests/testdata/run/stdio_streams_are_locked_in_permission_prompt/worker.js +++ b/tests/testdata/run/stdio_streams_are_locked_in_permission_prompt/worker.js diff --git a/cli/tests/testdata/run/stdout_write_all.out b/tests/testdata/run/stdout_write_all.out index d0e667fd4..d0e667fd4 100644 --- a/cli/tests/testdata/run/stdout_write_all.out +++ b/tests/testdata/run/stdout_write_all.out diff --git a/cli/tests/testdata/run/stdout_write_all.ts b/tests/testdata/run/stdout_write_all.ts index cfb2981e4..cfb2981e4 100644 --- a/cli/tests/testdata/run/stdout_write_all.ts +++ b/tests/testdata/run/stdout_write_all.ts diff --git a/cli/tests/testdata/run/stdout_write_sync_async.out b/tests/testdata/run/stdout_write_sync_async.out index 91ebda1ca..91ebda1ca 100644 --- a/cli/tests/testdata/run/stdout_write_sync_async.out +++ b/tests/testdata/run/stdout_write_sync_async.out diff --git a/cli/tests/testdata/run/stdout_write_sync_async.ts b/tests/testdata/run/stdout_write_sync_async.ts index 648999d8a..648999d8a 100644 --- a/cli/tests/testdata/run/stdout_write_sync_async.ts +++ b/tests/testdata/run/stdout_write_sync_async.ts diff --git a/cli/tests/testdata/run/swc_syntax_error.ts b/tests/testdata/run/swc_syntax_error.ts index 991ca9214..991ca9214 100644 --- a/cli/tests/testdata/run/swc_syntax_error.ts +++ b/tests/testdata/run/swc_syntax_error.ts diff --git a/cli/tests/testdata/run/swc_syntax_error.ts.out b/tests/testdata/run/swc_syntax_error.ts.out index 81b0c1949..81b0c1949 100644 --- a/cli/tests/testdata/run/swc_syntax_error.ts.out +++ b/tests/testdata/run/swc_syntax_error.ts.out diff --git a/cli/tests/testdata/run/test_and_bench_in_run.js b/tests/testdata/run/test_and_bench_in_run.js index 108ae937a..108ae937a 100644 --- a/cli/tests/testdata/run/test_and_bench_in_run.js +++ b/tests/testdata/run/test_and_bench_in_run.js diff --git a/tests/testdata/run/textproto.ts b/tests/testdata/run/textproto.ts new file mode 100644 index 000000000..cf9a4dce9 --- /dev/null +++ b/tests/testdata/run/textproto.ts @@ -0,0 +1,173 @@ +// 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 "../../../test_util/std/io/buf_reader.ts"; +import { concat } from "../../../test_util/std/bytes/concat.ts"; + +// 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/cli/tests/testdata/run/tls.out b/tests/testdata/run/tls.out index c8e8a135c..c8e8a135c 100644 --- a/cli/tests/testdata/run/tls.out +++ b/tests/testdata/run/tls.out diff --git a/tests/testdata/run/tls_connecttls.js b/tests/testdata/run/tls_connecttls.js new file mode 100644 index 000000000..f085d7a8f --- /dev/null +++ b/tests/testdata/run/tls_connecttls.js @@ -0,0 +1,66 @@ +import { assert, assertEquals } from "../../../test_util/std/assert/mod.ts"; +import { BufReader, BufWriter } from "../../../test_util/std/io/mod.ts"; +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, +}); +assert(conn.rid > 0); +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 new file mode 100644 index 000000000..5f5428ecd --- /dev/null +++ b/tests/testdata/run/tls_starttls.js @@ -0,0 +1,65 @@ +import { assert, assertEquals } from "../../../test_util/std/assert/mod.ts"; +import { BufReader } from "../../../test_util/std/io/buf_reader.ts"; +import { BufWriter } from "../../../test_util/std/io/buf_writer.ts"; +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 }); +assert(conn.rid > 0); +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/cli/tests/testdata/run/top_level_await/circular.js b/tests/testdata/run/top_level_await/circular.js index ff2964b6a..ff2964b6a 100644 --- a/cli/tests/testdata/run/top_level_await/circular.js +++ b/tests/testdata/run/top_level_await/circular.js diff --git a/cli/tests/testdata/run/top_level_await/circular.out b/tests/testdata/run/top_level_await/circular.out index c88978961..c88978961 100644 --- a/cli/tests/testdata/run/top_level_await/circular.out +++ b/tests/testdata/run/top_level_await/circular.out diff --git a/cli/tests/testdata/run/top_level_await/loop.js b/tests/testdata/run/top_level_await/loop.js index 415db5ec7..415db5ec7 100644 --- a/cli/tests/testdata/run/top_level_await/loop.js +++ b/tests/testdata/run/top_level_await/loop.js diff --git a/cli/tests/testdata/run/top_level_await/loop.out b/tests/testdata/run/top_level_await/loop.out index 1bdffbf66..1bdffbf66 100644 --- a/cli/tests/testdata/run/top_level_await/loop.out +++ b/tests/testdata/run/top_level_await/loop.out diff --git a/cli/tests/testdata/run/top_level_await/nested.out b/tests/testdata/run/top_level_await/nested.out index 8a1218a10..8a1218a10 100644 --- a/cli/tests/testdata/run/top_level_await/nested.out +++ b/tests/testdata/run/top_level_await/nested.out diff --git a/cli/tests/testdata/run/top_level_await/nested/a.js b/tests/testdata/run/top_level_await/nested/a.js index 74837d4ba..74837d4ba 100644 --- a/cli/tests/testdata/run/top_level_await/nested/a.js +++ b/tests/testdata/run/top_level_await/nested/a.js diff --git a/cli/tests/testdata/run/top_level_await/nested/b.js b/tests/testdata/run/top_level_await/nested/b.js index 3bd241b50..3bd241b50 100644 --- a/cli/tests/testdata/run/top_level_await/nested/b.js +++ b/tests/testdata/run/top_level_await/nested/b.js diff --git a/cli/tests/testdata/run/top_level_await/nested/main.js b/tests/testdata/run/top_level_await/nested/main.js index ed46a4717..ed46a4717 100644 --- a/cli/tests/testdata/run/top_level_await/nested/main.js +++ b/tests/testdata/run/top_level_await/nested/main.js diff --git a/cli/tests/testdata/run/top_level_await/order.js b/tests/testdata/run/top_level_await/order.js index 30659cdfb..30659cdfb 100644 --- a/cli/tests/testdata/run/top_level_await/order.js +++ b/tests/testdata/run/top_level_await/order.js diff --git a/cli/tests/testdata/run/top_level_await/order.out b/tests/testdata/run/top_level_await/order.out index 4cc27858c..4cc27858c 100644 --- a/cli/tests/testdata/run/top_level_await/order.out +++ b/tests/testdata/run/top_level_await/order.out diff --git a/cli/tests/testdata/run/top_level_await/tla/a.js b/tests/testdata/run/top_level_await/tla/a.js index c3ef3f7db..c3ef3f7db 100644 --- a/cli/tests/testdata/run/top_level_await/tla/a.js +++ b/tests/testdata/run/top_level_await/tla/a.js diff --git a/cli/tests/testdata/run/top_level_await/tla/b.js b/tests/testdata/run/top_level_await/tla/b.js index 3271c92d8..3271c92d8 100644 --- a/cli/tests/testdata/run/top_level_await/tla/b.js +++ b/tests/testdata/run/top_level_await/tla/b.js diff --git a/cli/tests/testdata/run/top_level_await/tla/c.js b/tests/testdata/run/top_level_await/tla/c.js index 806eb0a8b..806eb0a8b 100644 --- a/cli/tests/testdata/run/top_level_await/tla/c.js +++ b/tests/testdata/run/top_level_await/tla/c.js diff --git a/cli/tests/testdata/run/top_level_await/tla/d.js b/tests/testdata/run/top_level_await/tla/d.js index 283ebf817..283ebf817 100644 --- a/cli/tests/testdata/run/top_level_await/tla/d.js +++ b/tests/testdata/run/top_level_await/tla/d.js diff --git a/cli/tests/testdata/run/top_level_await/tla/order.js b/tests/testdata/run/top_level_await/tla/order.js index f213a562c..f213a562c 100644 --- a/cli/tests/testdata/run/top_level_await/tla/order.js +++ b/tests/testdata/run/top_level_await/tla/order.js diff --git a/cli/tests/testdata/run/top_level_await/tla/parent.js b/tests/testdata/run/top_level_await/tla/parent.js index 1ecc15463..1ecc15463 100644 --- a/cli/tests/testdata/run/top_level_await/tla/parent.js +++ b/tests/testdata/run/top_level_await/tla/parent.js diff --git a/cli/tests/testdata/run/top_level_await/tla2/a.js b/tests/testdata/run/top_level_await/tla2/a.js index d07bcb94d..d07bcb94d 100644 --- a/cli/tests/testdata/run/top_level_await/tla2/a.js +++ b/tests/testdata/run/top_level_await/tla2/a.js diff --git a/cli/tests/testdata/run/top_level_await/tla2/b.js b/tests/testdata/run/top_level_await/tla2/b.js index 68e357c1e..68e357c1e 100644 --- a/cli/tests/testdata/run/top_level_await/tla2/b.js +++ b/tests/testdata/run/top_level_await/tla2/b.js diff --git a/cli/tests/testdata/run/top_level_await/tla3/b.js b/tests/testdata/run/top_level_await/tla3/b.js index d0349545e..d0349545e 100644 --- a/cli/tests/testdata/run/top_level_await/tla3/b.js +++ b/tests/testdata/run/top_level_await/tla3/b.js diff --git a/cli/tests/testdata/run/top_level_await/tla3/timeout_loop.js b/tests/testdata/run/top_level_await/tla3/timeout_loop.js index 860e6cd2a..860e6cd2a 100644 --- a/cli/tests/testdata/run/top_level_await/tla3/timeout_loop.js +++ b/tests/testdata/run/top_level_await/tla3/timeout_loop.js diff --git a/cli/tests/testdata/run/top_level_await/top_level_await.js b/tests/testdata/run/top_level_await/top_level_await.js index ea319ea12..ea319ea12 100644 --- a/cli/tests/testdata/run/top_level_await/top_level_await.js +++ b/tests/testdata/run/top_level_await/top_level_await.js diff --git a/cli/tests/testdata/run/top_level_await/top_level_await.out b/tests/testdata/run/top_level_await/top_level_await.out index 4b65d15fe..4b65d15fe 100644 --- a/cli/tests/testdata/run/top_level_await/top_level_await.out +++ b/tests/testdata/run/top_level_await/top_level_await.out diff --git a/cli/tests/testdata/run/top_level_await/top_level_await.ts b/tests/testdata/run/top_level_await/top_level_await.ts index 8d47ceb21..8d47ceb21 100644 --- a/cli/tests/testdata/run/top_level_await/top_level_await.ts +++ b/tests/testdata/run/top_level_await/top_level_await.ts diff --git a/cli/tests/testdata/run/top_level_await/top_level_for_await.js b/tests/testdata/run/top_level_await/top_level_for_await.js index a330f6c71..a330f6c71 100644 --- a/cli/tests/testdata/run/top_level_await/top_level_for_await.js +++ b/tests/testdata/run/top_level_await/top_level_for_await.js diff --git a/cli/tests/testdata/run/top_level_await/top_level_for_await.out b/tests/testdata/run/top_level_await/top_level_for_await.out index 4539bbf2d..4539bbf2d 100644 --- a/cli/tests/testdata/run/top_level_await/top_level_for_await.out +++ b/tests/testdata/run/top_level_await/top_level_for_await.out diff --git a/cli/tests/testdata/run/top_level_await/top_level_for_await.ts b/tests/testdata/run/top_level_await/top_level_for_await.ts index 9179322d7..9179322d7 100644 --- a/cli/tests/testdata/run/top_level_await/top_level_for_await.ts +++ b/tests/testdata/run/top_level_await/top_level_for_await.ts diff --git a/cli/tests/testdata/run/top_level_await/unresolved.js b/tests/testdata/run/top_level_await/unresolved.js index 231a8cd63..231a8cd63 100644 --- a/cli/tests/testdata/run/top_level_await/unresolved.js +++ b/tests/testdata/run/top_level_await/unresolved.js diff --git a/cli/tests/testdata/run/top_level_await/unresolved.out b/tests/testdata/run/top_level_await/unresolved.out index 1f4ea5d38..1f4ea5d38 100644 --- a/cli/tests/testdata/run/top_level_await/unresolved.out +++ b/tests/testdata/run/top_level_await/unresolved.out diff --git a/cli/tests/testdata/run/ts_import_from_js/deps.js b/tests/testdata/run/ts_import_from_js/deps.js index 746b5cf6b..746b5cf6b 100644 --- a/cli/tests/testdata/run/ts_import_from_js/deps.js +++ b/tests/testdata/run/ts_import_from_js/deps.js diff --git a/cli/tests/testdata/run/ts_import_from_js/main.js b/tests/testdata/run/ts_import_from_js/main.js index 32d6c29a1..32d6c29a1 100644 --- a/cli/tests/testdata/run/ts_import_from_js/main.js +++ b/tests/testdata/run/ts_import_from_js/main.js diff --git a/cli/tests/testdata/run/ts_import_from_js/main.out b/tests/testdata/run/ts_import_from_js/main.out index e1d7a869f..e1d7a869f 100644 --- a/cli/tests/testdata/run/ts_import_from_js/main.out +++ b/tests/testdata/run/ts_import_from_js/main.out diff --git a/cli/tests/testdata/run/ts_type_imports.ts b/tests/testdata/run/ts_type_imports.ts index 73c779156..73c779156 100644 --- a/cli/tests/testdata/run/ts_type_imports.ts +++ b/tests/testdata/run/ts_type_imports.ts diff --git a/cli/tests/testdata/run/ts_type_imports.ts.out b/tests/testdata/run/ts_type_imports.ts.out index 3972d6a97..3972d6a97 100644 --- a/cli/tests/testdata/run/ts_type_imports.ts.out +++ b/tests/testdata/run/ts_type_imports.ts.out diff --git a/cli/tests/testdata/run/ts_type_imports_foo.ts b/tests/testdata/run/ts_type_imports_foo.ts index db20773f6..db20773f6 100644 --- a/cli/tests/testdata/run/ts_type_imports_foo.ts +++ b/tests/testdata/run/ts_type_imports_foo.ts diff --git a/cli/tests/testdata/run/ts_type_only_import.d.ts b/tests/testdata/run/ts_type_only_import.d.ts index d48e4b48a..d48e4b48a 100644 --- a/cli/tests/testdata/run/ts_type_only_import.d.ts +++ b/tests/testdata/run/ts_type_only_import.d.ts diff --git a/cli/tests/testdata/run/ts_type_only_import.ts b/tests/testdata/run/ts_type_only_import.ts index 53e114373..53e114373 100644 --- a/cli/tests/testdata/run/ts_type_only_import.ts +++ b/tests/testdata/run/ts_type_only_import.ts diff --git a/cli/tests/testdata/run/ts_type_only_import.ts.out b/tests/testdata/run/ts_type_only_import.ts.out index 42852cd26..42852cd26 100644 --- a/cli/tests/testdata/run/ts_type_only_import.ts.out +++ b/tests/testdata/run/ts_type_only_import.ts.out diff --git a/cli/tests/testdata/run/tsx_imports/Component.tsx b/tests/testdata/run/tsx_imports/Component.tsx index c466a28ca..c466a28ca 100644 --- a/cli/tests/testdata/run/tsx_imports/Component.tsx +++ b/tests/testdata/run/tsx_imports/Component.tsx diff --git a/cli/tests/testdata/run/tsx_imports/tsx_imports.ts b/tests/testdata/run/tsx_imports/tsx_imports.ts index 44ba10b7a..44ba10b7a 100644 --- a/cli/tests/testdata/run/tsx_imports/tsx_imports.ts +++ b/tests/testdata/run/tsx_imports/tsx_imports.ts diff --git a/cli/tests/testdata/run/tsx_imports/tsx_imports.ts.out b/tests/testdata/run/tsx_imports/tsx_imports.ts.out index 1f8b10d32..1f8b10d32 100644 --- a/cli/tests/testdata/run/tsx_imports/tsx_imports.ts.out +++ b/tests/testdata/run/tsx_imports/tsx_imports.ts.out diff --git a/cli/tests/testdata/run/type_definitions.ts b/tests/testdata/run/type_definitions.ts index 594842721..594842721 100644 --- a/cli/tests/testdata/run/type_definitions.ts +++ b/tests/testdata/run/type_definitions.ts diff --git a/cli/tests/testdata/run/type_definitions.ts.out b/tests/testdata/run/type_definitions.ts.out index b4fa88c50..b4fa88c50 100644 --- a/cli/tests/testdata/run/type_definitions.ts.out +++ b/tests/testdata/run/type_definitions.ts.out diff --git a/cli/tests/testdata/run/type_definitions_for_export.ts b/tests/testdata/run/type_definitions_for_export.ts index 1f17b4962..1f17b4962 100644 --- a/cli/tests/testdata/run/type_definitions_for_export.ts +++ b/tests/testdata/run/type_definitions_for_export.ts diff --git a/cli/tests/testdata/run/type_definitions_for_export.ts.out b/tests/testdata/run/type_definitions_for_export.ts.out index 8f1240bc7..8f1240bc7 100644 --- a/cli/tests/testdata/run/type_definitions_for_export.ts.out +++ b/tests/testdata/run/type_definitions_for_export.ts.out diff --git a/cli/tests/testdata/run/type_directives_01.ts b/tests/testdata/run/type_directives_01.ts index 71305824c..71305824c 100644 --- a/cli/tests/testdata/run/type_directives_01.ts +++ b/tests/testdata/run/type_directives_01.ts diff --git a/cli/tests/testdata/run/type_directives_01.ts.out b/tests/testdata/run/type_directives_01.ts.out index 77ed3ae26..77ed3ae26 100644 --- a/cli/tests/testdata/run/type_directives_01.ts.out +++ b/tests/testdata/run/type_directives_01.ts.out diff --git a/cli/tests/testdata/run/type_directives_02.ts b/tests/testdata/run/type_directives_02.ts index 0c59346e2..0c59346e2 100644 --- a/cli/tests/testdata/run/type_directives_02.ts +++ b/tests/testdata/run/type_directives_02.ts diff --git a/cli/tests/testdata/run/type_directives_02.ts.out b/tests/testdata/run/type_directives_02.ts.out index b064483b4..b064483b4 100644 --- a/cli/tests/testdata/run/type_directives_02.ts.out +++ b/tests/testdata/run/type_directives_02.ts.out diff --git a/cli/tests/testdata/run/type_directives_js_main.js b/tests/testdata/run/type_directives_js_main.js index 0c59346e2..0c59346e2 100644 --- a/cli/tests/testdata/run/type_directives_js_main.js +++ b/tests/testdata/run/type_directives_js_main.js diff --git a/cli/tests/testdata/run/type_directives_redirect.ts b/tests/testdata/run/type_directives_redirect.ts index 8b98831fd..8b98831fd 100644 --- a/cli/tests/testdata/run/type_directives_redirect.ts +++ b/tests/testdata/run/type_directives_redirect.ts diff --git a/cli/tests/testdata/run/type_directives_redirect.ts.out b/tests/testdata/run/type_directives_redirect.ts.out index 471d9c0b4..471d9c0b4 100644 --- a/cli/tests/testdata/run/type_directives_redirect.ts.out +++ b/tests/testdata/run/type_directives_redirect.ts.out diff --git a/cli/tests/testdata/run/type_headers_deno_types.ts b/tests/testdata/run/type_headers_deno_types.ts index 9670f68cd..9670f68cd 100644 --- a/cli/tests/testdata/run/type_headers_deno_types.ts +++ b/tests/testdata/run/type_headers_deno_types.ts diff --git a/cli/tests/testdata/run/type_headers_deno_types.ts.out b/tests/testdata/run/type_headers_deno_types.ts.out index 798f98311..798f98311 100644 --- a/cli/tests/testdata/run/type_headers_deno_types.ts.out +++ b/tests/testdata/run/type_headers_deno_types.ts.out diff --git a/cli/tests/testdata/run/unbuffered_stderr.ts b/tests/testdata/run/unbuffered_stderr.ts index 0f1d2a999..0f1d2a999 100644 --- a/cli/tests/testdata/run/unbuffered_stderr.ts +++ b/tests/testdata/run/unbuffered_stderr.ts diff --git a/cli/tests/testdata/run/unbuffered_stderr.ts.out b/tests/testdata/run/unbuffered_stderr.ts.out index c1b0730e0..c1b0730e0 100644 --- a/cli/tests/testdata/run/unbuffered_stderr.ts.out +++ b/tests/testdata/run/unbuffered_stderr.ts.out diff --git a/cli/tests/testdata/run/unbuffered_stdout.ts b/tests/testdata/run/unbuffered_stdout.ts index 9f1e07a97..9f1e07a97 100644 --- a/cli/tests/testdata/run/unbuffered_stdout.ts +++ b/tests/testdata/run/unbuffered_stdout.ts diff --git a/cli/tests/testdata/run/unbuffered_stdout.ts.out b/tests/testdata/run/unbuffered_stdout.ts.out index 2e65efe2a..2e65efe2a 100644 --- a/cli/tests/testdata/run/unbuffered_stdout.ts.out +++ b/tests/testdata/run/unbuffered_stdout.ts.out diff --git a/cli/tests/testdata/run/unhandled_rejection.ts b/tests/testdata/run/unhandled_rejection.ts index 388583434..388583434 100644 --- a/cli/tests/testdata/run/unhandled_rejection.ts +++ b/tests/testdata/run/unhandled_rejection.ts diff --git a/cli/tests/testdata/run/unhandled_rejection.ts.out b/tests/testdata/run/unhandled_rejection.ts.out index 6ab1667dc..6ab1667dc 100644 --- a/cli/tests/testdata/run/unhandled_rejection.ts.out +++ b/tests/testdata/run/unhandled_rejection.ts.out diff --git a/cli/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts b/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts index b490f2c20..b490f2c20 100644 --- a/cli/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts +++ b/tests/testdata/run/unhandled_rejection_dynamic_import/import.ts diff --git a/cli/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts b/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts index 244d84467..244d84467 100644 --- a/cli/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts +++ b/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts diff --git a/cli/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out b/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out index f44c6d2ff..f44c6d2ff 100644 --- a/cli/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out +++ b/tests/testdata/run/unhandled_rejection_dynamic_import/main.ts.out diff --git a/cli/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts b/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts index f84297afd..f84297afd 100644 --- a/cli/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts +++ b/tests/testdata/run/unhandled_rejection_dynamic_import2/import.ts diff --git a/cli/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts b/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts index 3da2e1d19..3da2e1d19 100644 --- a/cli/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts +++ b/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts diff --git a/cli/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out b/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out index 0a913a4b5..0a913a4b5 100644 --- a/cli/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out +++ b/tests/testdata/run/unhandled_rejection_dynamic_import2/main.ts.out diff --git a/cli/tests/testdata/run/unhandled_rejection_sync_error.ts b/tests/testdata/run/unhandled_rejection_sync_error.ts index 0dabb1cb7..0dabb1cb7 100644 --- a/cli/tests/testdata/run/unhandled_rejection_sync_error.ts +++ b/tests/testdata/run/unhandled_rejection_sync_error.ts diff --git a/cli/tests/testdata/run/unhandled_rejection_sync_error.ts.out b/tests/testdata/run/unhandled_rejection_sync_error.ts.out index e178373f0..e178373f0 100644 --- a/cli/tests/testdata/run/unhandled_rejection_sync_error.ts.out +++ b/tests/testdata/run/unhandled_rejection_sync_error.ts.out diff --git a/cli/tests/testdata/run/unsafe_proto/main.js b/tests/testdata/run/unsafe_proto/main.js index eb95c55a0..eb95c55a0 100644 --- a/cli/tests/testdata/run/unsafe_proto/main.js +++ b/tests/testdata/run/unsafe_proto/main.js diff --git a/cli/tests/testdata/run/unsafe_proto/main.out b/tests/testdata/run/unsafe_proto/main.out index 4b095fd0f..4b095fd0f 100644 --- a/cli/tests/testdata/run/unsafe_proto/main.out +++ b/tests/testdata/run/unsafe_proto/main.out diff --git a/cli/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out b/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out index bb101b641..bb101b641 100644 --- a/cli/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out +++ b/tests/testdata/run/unsafe_proto/main_with_unsafe_proto_flag.out diff --git a/cli/tests/testdata/run/unsafe_proto/worker.js b/tests/testdata/run/unsafe_proto/worker.js index b22bc8713..b22bc8713 100644 --- a/cli/tests/testdata/run/unsafe_proto/worker.js +++ b/tests/testdata/run/unsafe_proto/worker.js diff --git a/cli/tests/testdata/run/unstable.js b/tests/testdata/run/unstable.js index 8c01b214e..8c01b214e 100644 --- a/cli/tests/testdata/run/unstable.js +++ b/tests/testdata/run/unstable.js diff --git a/cli/tests/testdata/run/unstable.ts b/tests/testdata/run/unstable.ts index 8c01b214e..8c01b214e 100644 --- a/cli/tests/testdata/run/unstable.ts +++ b/tests/testdata/run/unstable.ts diff --git a/cli/tests/testdata/run/unstable_broadcast_channel.disabled.out b/tests/testdata/run/unstable_broadcast_channel.disabled.out index 775866352..775866352 100644 --- a/cli/tests/testdata/run/unstable_broadcast_channel.disabled.out +++ b/tests/testdata/run/unstable_broadcast_channel.disabled.out diff --git a/cli/tests/testdata/run/unstable_broadcast_channel.enabled.out b/tests/testdata/run/unstable_broadcast_channel.enabled.out index b3701ce44..b3701ce44 100644 --- a/cli/tests/testdata/run/unstable_broadcast_channel.enabled.out +++ b/tests/testdata/run/unstable_broadcast_channel.enabled.out diff --git a/cli/tests/testdata/run/unstable_broadcast_channel.js b/tests/testdata/run/unstable_broadcast_channel.js index b8576aa22..b8576aa22 100644 --- a/cli/tests/testdata/run/unstable_broadcast_channel.js +++ b/tests/testdata/run/unstable_broadcast_channel.js diff --git a/cli/tests/testdata/run/unstable_cron.disabled.out b/tests/testdata/run/unstable_cron.disabled.out index 775866352..775866352 100644 --- a/cli/tests/testdata/run/unstable_cron.disabled.out +++ b/tests/testdata/run/unstable_cron.disabled.out diff --git a/cli/tests/testdata/run/unstable_cron.enabled.out b/tests/testdata/run/unstable_cron.enabled.out index d18304f1f..d18304f1f 100644 --- a/cli/tests/testdata/run/unstable_cron.enabled.out +++ b/tests/testdata/run/unstable_cron.enabled.out diff --git a/cli/tests/testdata/run/unstable_cron.js b/tests/testdata/run/unstable_cron.js index 3114f6e55..3114f6e55 100644 --- a/cli/tests/testdata/run/unstable_cron.js +++ b/tests/testdata/run/unstable_cron.js diff --git a/cli/tests/testdata/run/unstable_disabled_js.out b/tests/testdata/run/unstable_disabled_js.out index 417b7b537..417b7b537 100644 --- a/cli/tests/testdata/run/unstable_disabled_js.out +++ b/tests/testdata/run/unstable_disabled_js.out diff --git a/cli/tests/testdata/run/unstable_enabled.out b/tests/testdata/run/unstable_enabled.out index 5f88c778c..5f88c778c 100644 --- a/cli/tests/testdata/run/unstable_enabled.out +++ b/tests/testdata/run/unstable_enabled.out diff --git a/cli/tests/testdata/run/unstable_enabled_js.out b/tests/testdata/run/unstable_enabled_js.out index 5f88c778c..5f88c778c 100644 --- a/cli/tests/testdata/run/unstable_enabled_js.out +++ b/tests/testdata/run/unstable_enabled_js.out diff --git a/cli/tests/testdata/run/unstable_ffi.disabled.out b/tests/testdata/run/unstable_ffi.disabled.out index 0d8ac4410..0d8ac4410 100644 --- a/cli/tests/testdata/run/unstable_ffi.disabled.out +++ b/tests/testdata/run/unstable_ffi.disabled.out diff --git a/cli/tests/testdata/run/unstable_ffi.enabled.out b/tests/testdata/run/unstable_ffi.enabled.out index 672b2a2a2..672b2a2a2 100644 --- a/cli/tests/testdata/run/unstable_ffi.enabled.out +++ b/tests/testdata/run/unstable_ffi.enabled.out diff --git a/cli/tests/testdata/run/unstable_ffi.js b/tests/testdata/run/unstable_ffi.js index 4809c5ffe..4809c5ffe 100644 --- a/cli/tests/testdata/run/unstable_ffi.js +++ b/tests/testdata/run/unstable_ffi.js diff --git a/cli/tests/testdata/run/unstable_fs.disabled.out b/tests/testdata/run/unstable_fs.disabled.out index 0d8ac4410..0d8ac4410 100644 --- a/cli/tests/testdata/run/unstable_fs.disabled.out +++ b/tests/testdata/run/unstable_fs.disabled.out diff --git a/cli/tests/testdata/run/unstable_fs.enabled.out b/tests/testdata/run/unstable_fs.enabled.out index 6938fa9c2..6938fa9c2 100644 --- a/cli/tests/testdata/run/unstable_fs.enabled.out +++ b/tests/testdata/run/unstable_fs.enabled.out diff --git a/cli/tests/testdata/run/unstable_fs.js b/tests/testdata/run/unstable_fs.js index 83f14f2fd..83f14f2fd 100644 --- a/cli/tests/testdata/run/unstable_fs.js +++ b/tests/testdata/run/unstable_fs.js diff --git a/cli/tests/testdata/run/unstable_http.disabled.out b/tests/testdata/run/unstable_http.disabled.out index 6eb83832e..6eb83832e 100644 --- a/cli/tests/testdata/run/unstable_http.disabled.out +++ b/tests/testdata/run/unstable_http.disabled.out diff --git a/cli/tests/testdata/run/unstable_http.enabled.out b/tests/testdata/run/unstable_http.enabled.out index 4f3c65625..4f3c65625 100644 --- a/cli/tests/testdata/run/unstable_http.enabled.out +++ b/tests/testdata/run/unstable_http.enabled.out diff --git a/cli/tests/testdata/run/unstable_http.js b/tests/testdata/run/unstable_http.js index 1a3ddb2d3..1a3ddb2d3 100644 --- a/cli/tests/testdata/run/unstable_http.js +++ b/tests/testdata/run/unstable_http.js diff --git a/cli/tests/testdata/run/unstable_kv.disabled.out b/tests/testdata/run/unstable_kv.disabled.out index 0d8ac4410..0d8ac4410 100644 --- a/cli/tests/testdata/run/unstable_kv.disabled.out +++ b/tests/testdata/run/unstable_kv.disabled.out diff --git a/cli/tests/testdata/run/unstable_kv.enabled.out b/tests/testdata/run/unstable_kv.enabled.out index a1356cefc..a1356cefc 100644 --- a/cli/tests/testdata/run/unstable_kv.enabled.out +++ b/tests/testdata/run/unstable_kv.enabled.out diff --git a/cli/tests/testdata/run/unstable_kv.js b/tests/testdata/run/unstable_kv.js index 17c0e05aa..17c0e05aa 100644 --- a/cli/tests/testdata/run/unstable_kv.js +++ b/tests/testdata/run/unstable_kv.js diff --git a/cli/tests/testdata/run/unstable_net.disabled.out b/tests/testdata/run/unstable_net.disabled.out index 3562f72fd..3562f72fd 100644 --- a/cli/tests/testdata/run/unstable_net.disabled.out +++ b/tests/testdata/run/unstable_net.disabled.out diff --git a/cli/tests/testdata/run/unstable_net.enabled.out b/tests/testdata/run/unstable_net.enabled.out index 8b86637f3..8b86637f3 100644 --- a/cli/tests/testdata/run/unstable_net.enabled.out +++ b/tests/testdata/run/unstable_net.enabled.out diff --git a/cli/tests/testdata/run/unstable_net.js b/tests/testdata/run/unstable_net.js index 4492b202b..4492b202b 100644 --- a/cli/tests/testdata/run/unstable_net.js +++ b/tests/testdata/run/unstable_net.js diff --git a/cli/tests/testdata/run/unstable_temporal_api/main.out b/tests/testdata/run/unstable_temporal_api/main.out index 46d25c3ea..46d25c3ea 100644 --- a/cli/tests/testdata/run/unstable_temporal_api/main.out +++ b/tests/testdata/run/unstable_temporal_api/main.out diff --git a/cli/tests/testdata/run/unstable_temporal_api/main.ts b/tests/testdata/run/unstable_temporal_api/main.ts index 1641b90bf..1641b90bf 100644 --- a/cli/tests/testdata/run/unstable_temporal_api/main.ts +++ b/tests/testdata/run/unstable_temporal_api/main.ts diff --git a/cli/tests/testdata/run/unstable_temporal_api/missing_flag.js b/tests/testdata/run/unstable_temporal_api/missing_flag.js index 92aed7931..92aed7931 100644 --- a/cli/tests/testdata/run/unstable_temporal_api/missing_flag.js +++ b/tests/testdata/run/unstable_temporal_api/missing_flag.js diff --git a/cli/tests/testdata/run/unstable_temporal_api/missing_flag.out b/tests/testdata/run/unstable_temporal_api/missing_flag.out index 8f8e23e70..8f8e23e70 100644 --- a/cli/tests/testdata/run/unstable_temporal_api/missing_flag.out +++ b/tests/testdata/run/unstable_temporal_api/missing_flag.out diff --git a/cli/tests/testdata/run/unstable_webgpu.disabled.out b/tests/testdata/run/unstable_webgpu.disabled.out index 775866352..775866352 100644 --- a/cli/tests/testdata/run/unstable_webgpu.disabled.out +++ b/tests/testdata/run/unstable_webgpu.disabled.out diff --git a/cli/tests/testdata/run/unstable_webgpu.enabled.out b/tests/testdata/run/unstable_webgpu.enabled.out index e2cc915ba..e2cc915ba 100644 --- a/cli/tests/testdata/run/unstable_webgpu.enabled.out +++ b/tests/testdata/run/unstable_webgpu.enabled.out diff --git a/cli/tests/testdata/run/unstable_webgpu.js b/tests/testdata/run/unstable_webgpu.js index a796b1c4d..a796b1c4d 100644 --- a/cli/tests/testdata/run/unstable_webgpu.js +++ b/tests/testdata/run/unstable_webgpu.js diff --git a/cli/tests/testdata/run/unstable_worker.ts b/tests/testdata/run/unstable_worker.ts index d111d2c7e..d111d2c7e 100644 --- a/cli/tests/testdata/run/unstable_worker.ts +++ b/tests/testdata/run/unstable_worker.ts diff --git a/cli/tests/testdata/run/unstable_worker.ts.out b/tests/testdata/run/unstable_worker.ts.out index 182dc58a4..182dc58a4 100644 --- a/cli/tests/testdata/run/unstable_worker.ts.out +++ b/tests/testdata/run/unstable_worker.ts.out diff --git a/cli/tests/testdata/run/unstable_worker_options.disabled.out b/tests/testdata/run/unstable_worker_options.disabled.out index ba50ca539..ba50ca539 100644 --- a/cli/tests/testdata/run/unstable_worker_options.disabled.out +++ b/tests/testdata/run/unstable_worker_options.disabled.out diff --git a/cli/tests/testdata/run/unstable_worker_options.enabled.out b/tests/testdata/run/unstable_worker_options.enabled.out index 57a52b019..57a52b019 100644 --- a/cli/tests/testdata/run/unstable_worker_options.enabled.out +++ b/tests/testdata/run/unstable_worker_options.enabled.out diff --git a/cli/tests/testdata/run/unstable_worker_options.js b/tests/testdata/run/unstable_worker_options.js index 213eb3ee6..213eb3ee6 100644 --- a/cli/tests/testdata/run/unstable_worker_options.js +++ b/tests/testdata/run/unstable_worker_options.js diff --git a/cli/tests/testdata/run/unsupported_dynamic_import_scheme.out b/tests/testdata/run/unsupported_dynamic_import_scheme.out index c708fced4..c708fced4 100644 --- a/cli/tests/testdata/run/unsupported_dynamic_import_scheme.out +++ b/tests/testdata/run/unsupported_dynamic_import_scheme.out diff --git a/cli/tests/testdata/run/v8_flags.js b/tests/testdata/run/v8_flags.js index f7999c4af..f7999c4af 100644 --- a/cli/tests/testdata/run/v8_flags.js +++ b/tests/testdata/run/v8_flags.js diff --git a/cli/tests/testdata/run/v8_flags.js.out b/tests/testdata/run/v8_flags.js.out index e2dbde096..e2dbde096 100644 --- a/cli/tests/testdata/run/v8_flags.js.out +++ b/tests/testdata/run/v8_flags.js.out diff --git a/cli/tests/testdata/run/v8_flags_unrecognized.out b/tests/testdata/run/v8_flags_unrecognized.out index 56e70f830..56e70f830 100644 --- a/cli/tests/testdata/run/v8_flags_unrecognized.out +++ b/tests/testdata/run/v8_flags_unrecognized.out diff --git a/cli/tests/testdata/run/v8_help.out b/tests/testdata/run/v8_help.out index 006d73557..006d73557 100644 --- a/cli/tests/testdata/run/v8_help.out +++ b/tests/testdata/run/v8_help.out diff --git a/cli/tests/testdata/run/warn_on_deprecated_api/main.js b/tests/testdata/run/warn_on_deprecated_api/main.js index a464be60a..a464be60a 100644 --- a/cli/tests/testdata/run/warn_on_deprecated_api/main.js +++ b/tests/testdata/run/warn_on_deprecated_api/main.js diff --git a/cli/tests/testdata/run/warn_on_deprecated_api/main.out b/tests/testdata/run/warn_on_deprecated_api/main.out index ff44c885f..ff44c885f 100644 --- a/cli/tests/testdata/run/warn_on_deprecated_api/main.out +++ b/tests/testdata/run/warn_on_deprecated_api/main.out diff --git a/cli/tests/testdata/run/warn_on_deprecated_api/main.verbose.out b/tests/testdata/run/warn_on_deprecated_api/main.verbose.out index 184051de1..184051de1 100644 --- a/cli/tests/testdata/run/warn_on_deprecated_api/main.verbose.out +++ b/tests/testdata/run/warn_on_deprecated_api/main.verbose.out diff --git a/cli/tests/testdata/run/warn_on_deprecated_api/main_disabled_env.out b/tests/testdata/run/warn_on_deprecated_api/main_disabled_env.out index ef85a6f99..ef85a6f99 100644 --- a/cli/tests/testdata/run/warn_on_deprecated_api/main_disabled_env.out +++ b/tests/testdata/run/warn_on_deprecated_api/main_disabled_env.out diff --git a/cli/tests/testdata/run/warn_on_deprecated_api/main_disabled_flag.out b/tests/testdata/run/warn_on_deprecated_api/main_disabled_flag.out index ce3755d16..ce3755d16 100644 --- a/cli/tests/testdata/run/warn_on_deprecated_api/main_disabled_flag.out +++ b/tests/testdata/run/warn_on_deprecated_api/main_disabled_flag.out diff --git a/cli/tests/testdata/run/warn_on_deprecated_api/mod.ts b/tests/testdata/run/warn_on_deprecated_api/mod.ts index f74632b2c..f74632b2c 100644 --- a/cli/tests/testdata/run/warn_on_deprecated_api/mod.ts +++ b/tests/testdata/run/warn_on_deprecated_api/mod.ts diff --git a/cli/tests/testdata/run/wasm.ts b/tests/testdata/run/wasm.ts index 96b5fdffc..96b5fdffc 100644 --- a/cli/tests/testdata/run/wasm.ts +++ b/tests/testdata/run/wasm.ts diff --git a/cli/tests/testdata/run/wasm.ts.out b/tests/testdata/run/wasm.ts.out index d81cc0710..d81cc0710 100644 --- a/cli/tests/testdata/run/wasm.ts.out +++ b/tests/testdata/run/wasm.ts.out diff --git a/cli/tests/testdata/run/wasm_async.js b/tests/testdata/run/wasm_async.js index 837460ae9..837460ae9 100644 --- a/cli/tests/testdata/run/wasm_async.js +++ b/tests/testdata/run/wasm_async.js diff --git a/cli/tests/testdata/run/wasm_async.out b/tests/testdata/run/wasm_async.out index 5cdf17de7..5cdf17de7 100644 --- a/cli/tests/testdata/run/wasm_async.out +++ b/tests/testdata/run/wasm_async.out diff --git a/cli/tests/testdata/run/wasm_shared.out b/tests/testdata/run/wasm_shared.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/run/wasm_shared.out +++ b/tests/testdata/run/wasm_shared.out diff --git a/cli/tests/testdata/run/wasm_shared.ts b/tests/testdata/run/wasm_shared.ts index b713385d5..b713385d5 100644 --- a/cli/tests/testdata/run/wasm_shared.ts +++ b/tests/testdata/run/wasm_shared.ts diff --git a/cli/tests/testdata/run/wasm_streaming_panic_test.js b/tests/testdata/run/wasm_streaming_panic_test.js index ec017592f..ec017592f 100644 --- a/cli/tests/testdata/run/wasm_streaming_panic_test.js +++ b/tests/testdata/run/wasm_streaming_panic_test.js diff --git a/cli/tests/testdata/run/wasm_streaming_panic_test.js.out b/tests/testdata/run/wasm_streaming_panic_test.js.out index 8a3c68e37..8a3c68e37 100644 --- a/cli/tests/testdata/run/wasm_streaming_panic_test.js.out +++ b/tests/testdata/run/wasm_streaming_panic_test.js.out diff --git a/cli/tests/testdata/run/wasm_unreachable.js b/tests/testdata/run/wasm_unreachable.js index d6a4f59db..d6a4f59db 100644 --- a/cli/tests/testdata/run/wasm_unreachable.js +++ b/tests/testdata/run/wasm_unreachable.js diff --git a/cli/tests/testdata/run/wasm_unreachable.out b/tests/testdata/run/wasm_unreachable.out index c213097ab..c213097ab 100644 --- a/cli/tests/testdata/run/wasm_unreachable.out +++ b/tests/testdata/run/wasm_unreachable.out diff --git a/cli/tests/testdata/run/wasm_url.js b/tests/testdata/run/wasm_url.js index 71686ef7e..71686ef7e 100644 --- a/cli/tests/testdata/run/wasm_url.js +++ b/tests/testdata/run/wasm_url.js diff --git a/cli/tests/testdata/run/wasm_url.out b/tests/testdata/run/wasm_url.out index ae3bf491a..ae3bf491a 100644 --- a/cli/tests/testdata/run/wasm_url.out +++ b/tests/testdata/run/wasm_url.out diff --git a/cli/tests/testdata/run/weakref.ts b/tests/testdata/run/weakref.ts index 47c3985fe..47c3985fe 100644 --- a/cli/tests/testdata/run/weakref.ts +++ b/tests/testdata/run/weakref.ts diff --git a/cli/tests/testdata/run/weakref.ts.out b/tests/testdata/run/weakref.ts.out index 32bafcf2d..32bafcf2d 100644 --- a/cli/tests/testdata/run/weakref.ts.out +++ b/tests/testdata/run/weakref.ts.out diff --git a/tests/testdata/run/websocket_server_idletimeout.ts b/tests/testdata/run/websocket_server_idletimeout.ts new file mode 100644 index 000000000..f116c4556 --- /dev/null +++ b/tests/testdata/run/websocket_server_idletimeout.ts @@ -0,0 +1,25 @@ +import { assertEquals } from "../../../test_util/std/assert/mod.ts"; + +const errorDeferred = Promise.withResolvers<void>(); +const closeDeferred = Promise.withResolvers<void>(); + +const listener = Deno.listen({ port: 4509 }); +console.log("READY"); +const httpConn = Deno.serveHttp(await listener.accept()); +const { request, respondWith } = (await httpConn.nextRequest())!; +const { response, socket } = Deno.upgradeWebSocket(request, { + idleTimeout: 1, +}); +socket.onerror = (e) => { + assertEquals((e as ErrorEvent).message, "No response from ping frame."); + errorDeferred.resolve(); +}; +socket.onclose = (e) => { + assertEquals(e.reason, "No response from ping frame."); + closeDeferred.resolve(); +}; +await respondWith(response); + +await errorDeferred.promise; +await closeDeferred.promise; +listener.close(); diff --git a/cli/tests/testdata/run/websocket_server_multi_field_connection_header_test.ts b/tests/testdata/run/websocket_server_multi_field_connection_header_test.ts index d94709767..d94709767 100644 --- a/cli/tests/testdata/run/websocket_server_multi_field_connection_header_test.ts +++ b/tests/testdata/run/websocket_server_multi_field_connection_header_test.ts diff --git a/cli/tests/testdata/run/websocketstream_ping_test.ts b/tests/testdata/run/websocketstream_ping_test.ts index a4b684468..a4b684468 100644 --- a/cli/tests/testdata/run/websocketstream_ping_test.ts +++ b/tests/testdata/run/websocketstream_ping_test.ts diff --git a/cli/tests/testdata/run/webstorage/config_a.jsonc b/tests/testdata/run/webstorage/config_a.jsonc index 875cb6001..875cb6001 100644 --- a/cli/tests/testdata/run/webstorage/config_a.jsonc +++ b/tests/testdata/run/webstorage/config_a.jsonc diff --git a/cli/tests/testdata/run/webstorage/config_b.jsonc b/tests/testdata/run/webstorage/config_b.jsonc index 875cb6001..875cb6001 100644 --- a/cli/tests/testdata/run/webstorage/config_b.jsonc +++ b/tests/testdata/run/webstorage/config_b.jsonc diff --git a/cli/tests/testdata/run/webstorage/fixture.ts b/tests/testdata/run/webstorage/fixture.ts index cf4bd9f1f..cf4bd9f1f 100644 --- a/cli/tests/testdata/run/webstorage/fixture.ts +++ b/tests/testdata/run/webstorage/fixture.ts diff --git a/cli/tests/testdata/run/webstorage/logger.ts b/tests/testdata/run/webstorage/logger.ts index 3898c4445..3898c4445 100644 --- a/cli/tests/testdata/run/webstorage/logger.ts +++ b/tests/testdata/run/webstorage/logger.ts diff --git a/cli/tests/testdata/run/webstorage/serialization.ts b/tests/testdata/run/webstorage/serialization.ts index f3791d355..f3791d355 100644 --- a/cli/tests/testdata/run/webstorage/serialization.ts +++ b/tests/testdata/run/webstorage/serialization.ts diff --git a/cli/tests/testdata/run/webstorage/serialization.ts.out b/tests/testdata/run/webstorage/serialization.ts.out index 4d80032f0..4d80032f0 100644 --- a/cli/tests/testdata/run/webstorage/serialization.ts.out +++ b/tests/testdata/run/webstorage/serialization.ts.out diff --git a/cli/tests/testdata/run/webstorage/setter.ts b/tests/testdata/run/webstorage/setter.ts index ec6d474f5..ec6d474f5 100644 --- a/cli/tests/testdata/run/webstorage/setter.ts +++ b/tests/testdata/run/webstorage/setter.ts diff --git a/cli/tests/testdata/run/with_config/auto_discovery_log.out b/tests/testdata/run/with_config/auto_discovery_log.out index 1a25eb9a7..1a25eb9a7 100644 --- a/cli/tests/testdata/run/with_config/auto_discovery_log.out +++ b/tests/testdata/run/with_config/auto_discovery_log.out diff --git a/cli/tests/testdata/run/with_config/deno.jsonc b/tests/testdata/run/with_config/deno.jsonc index 9017fac30..9017fac30 100644 --- a/cli/tests/testdata/run/with_config/deno.jsonc +++ b/tests/testdata/run/with_config/deno.jsonc diff --git a/cli/tests/testdata/run/with_config/frontend_work.ts b/tests/testdata/run/with_config/frontend_work.ts index 783af44e4..783af44e4 100644 --- a/cli/tests/testdata/run/with_config/frontend_work.ts +++ b/tests/testdata/run/with_config/frontend_work.ts diff --git a/cli/tests/testdata/run/with_config/no_auto_discovery.out b/tests/testdata/run/with_config/no_auto_discovery.out index 59339ebe5..59339ebe5 100644 --- a/cli/tests/testdata/run/with_config/no_auto_discovery.out +++ b/tests/testdata/run/with_config/no_auto_discovery.out diff --git a/cli/tests/testdata/run/with_config/server_side_work.ts b/tests/testdata/run/with_config/server_side_work.ts index 12db2ab05..12db2ab05 100644 --- a/cli/tests/testdata/run/with_config/server_side_work.ts +++ b/tests/testdata/run/with_config/server_side_work.ts diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/main.out b/tests/testdata/run/with_package_json/no_deno_json/main.out index 402b30ed4..402b30ed4 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/main.out +++ b/tests/testdata/run/with_package_json/no_deno_json/main.out diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/main.ts b/tests/testdata/run/with_package_json/no_deno_json/main.ts index 1e6e50040..1e6e50040 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/main.ts +++ b/tests/testdata/run/with_package_json/no_deno_json/main.ts diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.out b/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.out index 7ed6ff82d..7ed6ff82d 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.out +++ b/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.out diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.ts b/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.ts index 0f3785f91..0f3785f91 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.ts +++ b/tests/testdata/run/with_package_json/no_deno_json/no_package_json_imports.ts diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/noconfig.out b/tests/testdata/run/with_package_json/no_deno_json/noconfig.out index b9f9a6dea..b9f9a6dea 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/noconfig.out +++ b/tests/testdata/run/with_package_json/no_deno_json/noconfig.out diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/noconfig.ts b/tests/testdata/run/with_package_json/no_deno_json/noconfig.ts index 73b348fbc..73b348fbc 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/noconfig.ts +++ b/tests/testdata/run/with_package_json/no_deno_json/noconfig.ts diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/package.json b/tests/testdata/run/with_package_json/no_deno_json/package.json index a85b890a8..a85b890a8 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/package.json +++ b/tests/testdata/run/with_package_json/no_deno_json/package.json diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.js b/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.js index 492a8fa40..492a8fa40 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.js +++ b/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.js diff --git a/cli/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.out b/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.out index 0ec791960..0ec791960 100644 --- a/cli/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.out +++ b/tests/testdata/run/with_package_json/no_deno_json/sub_dir/main.out diff --git a/cli/tests/testdata/run/with_package_json/npm_binary/main.out b/tests/testdata/run/with_package_json/npm_binary/main.out index 13d196a5e..13d196a5e 100644 --- a/cli/tests/testdata/run/with_package_json/npm_binary/main.out +++ b/tests/testdata/run/with_package_json/npm_binary/main.out diff --git a/cli/tests/testdata/run/with_package_json/npm_binary/package.json b/tests/testdata/run/with_package_json/npm_binary/package.json index 9ee3f39a8..9ee3f39a8 100644 --- a/cli/tests/testdata/run/with_package_json/npm_binary/package.json +++ b/tests/testdata/run/with_package_json/npm_binary/package.json diff --git a/cli/tests/testdata/run/with_package_json/with_stop/main.out b/tests/testdata/run/with_package_json/with_stop/main.out index b199faf8d..b199faf8d 100644 --- a/cli/tests/testdata/run/with_package_json/with_stop/main.out +++ b/tests/testdata/run/with_package_json/with_stop/main.out diff --git a/cli/tests/testdata/run/with_package_json/with_stop/package.json b/tests/testdata/run/with_package_json/with_stop/package.json index 9ee3f39a8..9ee3f39a8 100644 --- a/cli/tests/testdata/run/with_package_json/with_stop/package.json +++ b/tests/testdata/run/with_package_json/with_stop/package.json diff --git a/cli/tests/testdata/run/with_package_json/with_stop/some/nested/deno.json b/tests/testdata/run/with_package_json/with_stop/some/nested/deno.json index 36e1765d1..36e1765d1 100644 --- a/cli/tests/testdata/run/with_package_json/with_stop/some/nested/deno.json +++ b/tests/testdata/run/with_package_json/with_stop/some/nested/deno.json diff --git a/cli/tests/testdata/run/with_package_json/with_stop/some/nested/dir/main.ts b/tests/testdata/run/with_package_json/with_stop/some/nested/dir/main.ts index 6016470a1..6016470a1 100644 --- a/cli/tests/testdata/run/with_package_json/with_stop/some/nested/dir/main.ts +++ b/tests/testdata/run/with_package_json/with_stop/some/nested/dir/main.ts diff --git a/cli/tests/testdata/run/worker_close_in_wasm_reactions.js b/tests/testdata/run/worker_close_in_wasm_reactions.js index 95f34e944..95f34e944 100644 --- a/cli/tests/testdata/run/worker_close_in_wasm_reactions.js +++ b/tests/testdata/run/worker_close_in_wasm_reactions.js diff --git a/cli/tests/testdata/run/worker_close_in_wasm_reactions.js.out b/tests/testdata/run/worker_close_in_wasm_reactions.js.out index 325180de4..325180de4 100644 --- a/cli/tests/testdata/run/worker_close_in_wasm_reactions.js.out +++ b/tests/testdata/run/worker_close_in_wasm_reactions.js.out diff --git a/cli/tests/testdata/run/worker_close_nested.js b/tests/testdata/run/worker_close_nested.js index 37b6ed9c9..37b6ed9c9 100644 --- a/cli/tests/testdata/run/worker_close_nested.js +++ b/tests/testdata/run/worker_close_nested.js diff --git a/cli/tests/testdata/run/worker_close_nested.js.out b/tests/testdata/run/worker_close_nested.js.out index 496bc6251..496bc6251 100644 --- a/cli/tests/testdata/run/worker_close_nested.js.out +++ b/tests/testdata/run/worker_close_nested.js.out diff --git a/cli/tests/testdata/run/worker_close_race.js b/tests/testdata/run/worker_close_race.js index 1da832425..1da832425 100644 --- a/cli/tests/testdata/run/worker_close_race.js +++ b/tests/testdata/run/worker_close_race.js diff --git a/cli/tests/testdata/run/worker_close_race.js.out b/tests/testdata/run/worker_close_race.js.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/run/worker_close_race.js.out +++ b/tests/testdata/run/worker_close_race.js.out diff --git a/cli/tests/testdata/run/worker_drop_handle_race.js b/tests/testdata/run/worker_drop_handle_race.js index 731a36964..731a36964 100644 --- a/cli/tests/testdata/run/worker_drop_handle_race.js +++ b/tests/testdata/run/worker_drop_handle_race.js diff --git a/cli/tests/testdata/run/worker_drop_handle_race.js.out b/tests/testdata/run/worker_drop_handle_race.js.out index 451c3af3d..451c3af3d 100644 --- a/cli/tests/testdata/run/worker_drop_handle_race.js.out +++ b/tests/testdata/run/worker_drop_handle_race.js.out diff --git a/cli/tests/testdata/run/worker_drop_handle_race_terminate.js b/tests/testdata/run/worker_drop_handle_race_terminate.js index 7c4e0b109..7c4e0b109 100644 --- a/cli/tests/testdata/run/worker_drop_handle_race_terminate.js +++ b/tests/testdata/run/worker_drop_handle_race_terminate.js diff --git a/cli/tests/testdata/run/worker_drop_handle_race_terminate.js.out b/tests/testdata/run/worker_drop_handle_race_terminate.js.out index 5ec1e7ff8..5ec1e7ff8 100644 --- a/cli/tests/testdata/run/worker_drop_handle_race_terminate.js.out +++ b/tests/testdata/run/worker_drop_handle_race_terminate.js.out diff --git a/cli/tests/testdata/run/worker_event_handler_test.js b/tests/testdata/run/worker_event_handler_test.js index a91b0ec0b..a91b0ec0b 100644 --- a/cli/tests/testdata/run/worker_event_handler_test.js +++ b/tests/testdata/run/worker_event_handler_test.js diff --git a/cli/tests/testdata/run/worker_event_handler_test.js.out b/tests/testdata/run/worker_event_handler_test.js.out index b3eed7f6c..b3eed7f6c 100644 --- a/cli/tests/testdata/run/worker_event_handler_test.js.out +++ b/tests/testdata/run/worker_event_handler_test.js.out diff --git a/cli/tests/testdata/run/worker_message_before_close.js b/tests/testdata/run/worker_message_before_close.js index 569388b9b..569388b9b 100644 --- a/cli/tests/testdata/run/worker_message_before_close.js +++ b/tests/testdata/run/worker_message_before_close.js diff --git a/cli/tests/testdata/run/worker_message_before_close.js.out b/tests/testdata/run/worker_message_before_close.js.out index f91b7b4cb..f91b7b4cb 100644 --- a/cli/tests/testdata/run/worker_message_before_close.js.out +++ b/tests/testdata/run/worker_message_before_close.js.out diff --git a/cli/tests/testdata/run/workspaces/basic/bar/deno.json b/tests/testdata/run/workspaces/basic/bar/deno.json index ef3bfc37a..ef3bfc37a 100644 --- a/cli/tests/testdata/run/workspaces/basic/bar/deno.json +++ b/tests/testdata/run/workspaces/basic/bar/deno.json diff --git a/cli/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts b/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts index f88d62fcc..f88d62fcc 100644 --- a/cli/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts +++ b/tests/testdata/run/workspaces/basic/bar/fizz/buzz.ts diff --git a/cli/tests/testdata/run/workspaces/basic/bar/mod.ts b/tests/testdata/run/workspaces/basic/bar/mod.ts index 6f898e389..6f898e389 100644 --- a/cli/tests/testdata/run/workspaces/basic/bar/mod.ts +++ b/tests/testdata/run/workspaces/basic/bar/mod.ts diff --git a/cli/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts b/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts index 1013de8d2..1013de8d2 100644 --- a/cli/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts +++ b/tests/testdata/run/workspaces/basic/bar/some_mod/hello.ts diff --git a/cli/tests/testdata/run/workspaces/basic/deno.json b/tests/testdata/run/workspaces/basic/deno.json index b971c4f3d..b971c4f3d 100644 --- a/cli/tests/testdata/run/workspaces/basic/deno.json +++ b/tests/testdata/run/workspaces/basic/deno.json diff --git a/cli/tests/testdata/run/workspaces/basic/foo/bar/hello.ts b/tests/testdata/run/workspaces/basic/foo/bar/hello.ts index c8a7e57c4..c8a7e57c4 100644 --- a/cli/tests/testdata/run/workspaces/basic/foo/bar/hello.ts +++ b/tests/testdata/run/workspaces/basic/foo/bar/hello.ts diff --git a/cli/tests/testdata/run/workspaces/basic/foo/deno.json b/tests/testdata/run/workspaces/basic/foo/deno.json index 46d84f06f..46d84f06f 100644 --- a/cli/tests/testdata/run/workspaces/basic/foo/deno.json +++ b/tests/testdata/run/workspaces/basic/foo/deno.json diff --git a/cli/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts b/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts index 4e03777d1..4e03777d1 100644 --- a/cli/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts +++ b/tests/testdata/run/workspaces/basic/foo/fizz/buzz.ts diff --git a/cli/tests/testdata/run/workspaces/basic/foo/mod.ts b/tests/testdata/run/workspaces/basic/foo/mod.ts index d7b16dcc0..d7b16dcc0 100644 --- a/cli/tests/testdata/run/workspaces/basic/foo/mod.ts +++ b/tests/testdata/run/workspaces/basic/foo/mod.ts diff --git a/cli/tests/testdata/run/workspaces/basic/main.out b/tests/testdata/run/workspaces/basic/main.out index 77e0de4d1..77e0de4d1 100644 --- a/cli/tests/testdata/run/workspaces/basic/main.out +++ b/tests/testdata/run/workspaces/basic/main.out diff --git a/cli/tests/testdata/run/workspaces/basic/main.ts b/tests/testdata/run/workspaces/basic/main.ts index 380c97619..380c97619 100644 --- a/cli/tests/testdata/run/workspaces/basic/main.ts +++ b/tests/testdata/run/workspaces/basic/main.ts diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/deno.json b/tests/testdata/run/workspaces/member_outside_root_dir/deno.json index 25feefad8..25feefad8 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/deno.json +++ b/tests/testdata/run/workspaces/member_outside_root_dir/deno.json diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts b/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts index c8a7e57c4..c8a7e57c4 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts +++ b/tests/testdata/run/workspaces/member_outside_root_dir/foo/bar/hello.ts diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json b/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json index 46d84f06f..46d84f06f 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json +++ b/tests/testdata/run/workspaces/member_outside_root_dir/foo/deno.json diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts b/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts index 4e03777d1..4e03777d1 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts +++ b/tests/testdata/run/workspaces/member_outside_root_dir/foo/fizz/buzz.ts diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts b/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts index d7b16dcc0..d7b16dcc0 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts +++ b/tests/testdata/run/workspaces/member_outside_root_dir/foo/mod.ts diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/main.out b/tests/testdata/run/workspaces/member_outside_root_dir/main.out index 205d95aea..205d95aea 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/main.out +++ b/tests/testdata/run/workspaces/member_outside_root_dir/main.out diff --git a/cli/tests/testdata/run/workspaces/member_outside_root_dir/main.ts b/tests/testdata/run/workspaces/member_outside_root_dir/main.ts index 182fd8517..182fd8517 100644 --- a/cli/tests/testdata/run/workspaces/member_outside_root_dir/main.ts +++ b/tests/testdata/run/workspaces/member_outside_root_dir/main.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/bar/deno.json b/tests/testdata/run/workspaces/nested_member/bar/deno.json index ef3bfc37a..ef3bfc37a 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/bar/deno.json +++ b/tests/testdata/run/workspaces/nested_member/bar/deno.json diff --git a/cli/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts b/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts index f88d62fcc..f88d62fcc 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts +++ b/tests/testdata/run/workspaces/nested_member/bar/fizz/buzz.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/bar/mod.ts b/tests/testdata/run/workspaces/nested_member/bar/mod.ts index 6f898e389..6f898e389 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/bar/mod.ts +++ b/tests/testdata/run/workspaces/nested_member/bar/mod.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts b/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts index 1013de8d2..1013de8d2 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts +++ b/tests/testdata/run/workspaces/nested_member/bar/some_mod/hello.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/deno.json b/tests/testdata/run/workspaces/nested_member/deno.json index 6d9c09d4d..6d9c09d4d 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/deno.json +++ b/tests/testdata/run/workspaces/nested_member/deno.json diff --git a/cli/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json b/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json index d40328b36..d40328b36 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json +++ b/tests/testdata/run/workspaces/nested_member/foo/bar/deno.json diff --git a/cli/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts b/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts index 9c1023153..9c1023153 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts +++ b/tests/testdata/run/workspaces/nested_member/foo/bar/hello.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/foo/deno.json b/tests/testdata/run/workspaces/nested_member/foo/deno.json index 68e053b02..68e053b02 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/foo/deno.json +++ b/tests/testdata/run/workspaces/nested_member/foo/deno.json diff --git a/cli/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts b/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts index 4e03777d1..4e03777d1 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts +++ b/tests/testdata/run/workspaces/nested_member/foo/fizz/buzz.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/foo/mod.ts b/tests/testdata/run/workspaces/nested_member/foo/mod.ts index b9d4d3c04..b9d4d3c04 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/foo/mod.ts +++ b/tests/testdata/run/workspaces/nested_member/foo/mod.ts diff --git a/cli/tests/testdata/run/workspaces/nested_member/main.out b/tests/testdata/run/workspaces/nested_member/main.out index 98598a306..98598a306 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/main.out +++ b/tests/testdata/run/workspaces/nested_member/main.out diff --git a/cli/tests/testdata/run/workspaces/nested_member/main.ts b/tests/testdata/run/workspaces/nested_member/main.ts index 2bf53f7c2..2bf53f7c2 100644 --- a/cli/tests/testdata/run/workspaces/nested_member/main.ts +++ b/tests/testdata/run/workspaces/nested_member/main.ts diff --git a/cli/tests/testdata/runtime/esm_imports_a.js b/tests/testdata/runtime/esm_imports_a.js index 673cd9aa3..673cd9aa3 100644 --- a/cli/tests/testdata/runtime/esm_imports_a.js +++ b/tests/testdata/runtime/esm_imports_a.js diff --git a/cli/tests/testdata/runtime/esm_imports_b.js b/tests/testdata/runtime/esm_imports_b.js index 840121368..840121368 100644 --- a/cli/tests/testdata/runtime/esm_imports_b.js +++ b/tests/testdata/runtime/esm_imports_b.js diff --git a/cli/tests/testdata/spawn_kill_permissions.ts b/tests/testdata/spawn_kill_permissions.ts index 86626bd5c..86626bd5c 100644 --- a/cli/tests/testdata/spawn_kill_permissions.ts +++ b/tests/testdata/spawn_kill_permissions.ts diff --git a/cli/tests/testdata/subdir/CAPITALS/main.js b/tests/testdata/subdir/CAPITALS/main.js index 768d1391f..768d1391f 100644 --- a/cli/tests/testdata/subdir/CAPITALS/main.js +++ b/tests/testdata/subdir/CAPITALS/main.js diff --git a/cli/tests/testdata/subdir/amd_like.js b/tests/testdata/subdir/amd_like.js index f27e505e4..f27e505e4 100644 --- a/cli/tests/testdata/subdir/amd_like.js +++ b/tests/testdata/subdir/amd_like.js diff --git a/cli/tests/testdata/subdir/auto_print_hello.ts b/tests/testdata/subdir/auto_print_hello.ts index 5efa72e03..5efa72e03 100644 --- a/cli/tests/testdata/subdir/auto_print_hello.ts +++ b/tests/testdata/subdir/auto_print_hello.ts diff --git a/cli/tests/testdata/subdir/circular1.ts b/tests/testdata/subdir/circular1.ts index 06fdb3373..06fdb3373 100644 --- a/cli/tests/testdata/subdir/circular1.ts +++ b/tests/testdata/subdir/circular1.ts diff --git a/cli/tests/testdata/subdir/circular2.ts b/tests/testdata/subdir/circular2.ts index 0864b7adf..0864b7adf 100644 --- a/cli/tests/testdata/subdir/circular2.ts +++ b/tests/testdata/subdir/circular2.ts diff --git a/cli/tests/testdata/subdir/comment.ts b/tests/testdata/subdir/comment.ts index ea7e630c0..ea7e630c0 100644 --- a/cli/tests/testdata/subdir/comment.ts +++ b/tests/testdata/subdir/comment.ts diff --git a/cli/tests/testdata/subdir/config.json b/tests/testdata/subdir/config.json index 01c3b5e79..01c3b5e79 100644 --- a/cli/tests/testdata/subdir/config.json +++ b/tests/testdata/subdir/config.json diff --git a/cli/tests/testdata/subdir/emittable.d.ts b/tests/testdata/subdir/emittable.d.ts index 425b80f24..425b80f24 100644 --- a/cli/tests/testdata/subdir/emittable.d.ts +++ b/tests/testdata/subdir/emittable.d.ts diff --git a/cli/tests/testdata/subdir/evil_remote_import.js b/tests/testdata/subdir/evil_remote_import.js index 4ff7d1b97..4ff7d1b97 100644 --- a/cli/tests/testdata/subdir/evil_remote_import.js +++ b/tests/testdata/subdir/evil_remote_import.js diff --git a/cli/tests/testdata/subdir/export_types.ts b/tests/testdata/subdir/export_types.ts index 18c8ed881..18c8ed881 100644 --- a/cli/tests/testdata/subdir/export_types.ts +++ b/tests/testdata/subdir/export_types.ts diff --git a/cli/tests/testdata/subdir/foo_types.d.ts b/tests/testdata/subdir/foo_types.d.ts index c489584b9..c489584b9 100644 --- a/cli/tests/testdata/subdir/foo_types.d.ts +++ b/tests/testdata/subdir/foo_types.d.ts diff --git a/cli/tests/testdata/subdir/form_urlencoded.txt b/tests/testdata/subdir/form_urlencoded.txt index 70e087c20..70e087c20 100644 --- a/cli/tests/testdata/subdir/form_urlencoded.txt +++ b/tests/testdata/subdir/form_urlencoded.txt diff --git a/cli/tests/testdata/subdir/import.mts b/tests/testdata/subdir/import.mts index eeb200f59..eeb200f59 100644 --- a/cli/tests/testdata/subdir/import.mts +++ b/tests/testdata/subdir/import.mts diff --git a/cli/tests/testdata/subdir/indirect_import_error.js b/tests/testdata/subdir/indirect_import_error.js index 84011d291..84011d291 100644 --- a/cli/tests/testdata/subdir/indirect_import_error.js +++ b/tests/testdata/subdir/indirect_import_error.js diff --git a/cli/tests/testdata/subdir/indirect_throws.js b/tests/testdata/subdir/indirect_throws.js index e1810a66c..e1810a66c 100644 --- a/cli/tests/testdata/subdir/indirect_throws.js +++ b/tests/testdata/subdir/indirect_throws.js diff --git a/cli/tests/testdata/subdir/json_1.json b/tests/testdata/subdir/json_1.json index 754d16b84..754d16b84 100644 --- a/cli/tests/testdata/subdir/json_1.json +++ b/tests/testdata/subdir/json_1.json diff --git a/cli/tests/testdata/subdir/json_2.json b/tests/testdata/subdir/json_2.json index 7deb8b173..7deb8b173 100644 --- a/cli/tests/testdata/subdir/json_2.json +++ b/tests/testdata/subdir/json_2.json diff --git a/cli/tests/testdata/subdir/json_3.json b/tests/testdata/subdir/json_3.json index b20bc0649..b20bc0649 100644 --- a/cli/tests/testdata/subdir/json_3.json +++ b/tests/testdata/subdir/json_3.json diff --git a/cli/tests/testdata/subdir/jsx_import_source_no_pragma.tsx b/tests/testdata/subdir/jsx_import_source_no_pragma.tsx index 2c756054f..2c756054f 100644 --- a/cli/tests/testdata/subdir/jsx_import_source_no_pragma.tsx +++ b/tests/testdata/subdir/jsx_import_source_no_pragma.tsx diff --git a/cli/tests/testdata/subdir/main.ts b/tests/testdata/subdir/main.ts index 29acf42e0..29acf42e0 100644 --- a/cli/tests/testdata/subdir/main.ts +++ b/tests/testdata/subdir/main.ts diff --git a/cli/tests/testdata/subdir/mismatch_ext.ts b/tests/testdata/subdir/mismatch_ext.ts index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mismatch_ext.ts +++ b/tests/testdata/subdir/mismatch_ext.ts diff --git a/cli/tests/testdata/subdir/mod.mjs b/tests/testdata/subdir/mod.mjs index 9233cce2f..9233cce2f 100644 --- a/cli/tests/testdata/subdir/mod.mjs +++ b/tests/testdata/subdir/mod.mjs diff --git a/cli/tests/testdata/subdir/mod1.ts b/tests/testdata/subdir/mod1.ts index 5e58f432e..5e58f432e 100644 --- a/cli/tests/testdata/subdir/mod1.ts +++ b/tests/testdata/subdir/mod1.ts diff --git a/cli/tests/testdata/subdir/mod2.ts b/tests/testdata/subdir/mod2.ts index ce1adc0e8..ce1adc0e8 100644 --- a/cli/tests/testdata/subdir/mod2.ts +++ b/tests/testdata/subdir/mod2.ts diff --git a/cli/tests/testdata/subdir/mod3.js b/tests/testdata/subdir/mod3.js index ce534f570..ce534f570 100644 --- a/cli/tests/testdata/subdir/mod3.js +++ b/tests/testdata/subdir/mod3.js diff --git a/cli/tests/testdata/subdir/mod4.js b/tests/testdata/subdir/mod4.js index 71332dbc4..71332dbc4 100644 --- a/cli/tests/testdata/subdir/mod4.js +++ b/tests/testdata/subdir/mod4.js diff --git a/cli/tests/testdata/subdir/mod5.mjs b/tests/testdata/subdir/mod5.mjs index f21d8862b..f21d8862b 100644 --- a/cli/tests/testdata/subdir/mod5.mjs +++ b/tests/testdata/subdir/mod5.mjs diff --git a/cli/tests/testdata/subdir/mod6.js b/tests/testdata/subdir/mod6.js index 5e17c9ee0..5e17c9ee0 100644 --- a/cli/tests/testdata/subdir/mod6.js +++ b/tests/testdata/subdir/mod6.js diff --git a/cli/tests/testdata/subdir/mod7.js b/tests/testdata/subdir/mod7.js index 2bd4b5eb7..2bd4b5eb7 100644 --- a/cli/tests/testdata/subdir/mod7.js +++ b/tests/testdata/subdir/mod7.js diff --git a/cli/tests/testdata/subdir/mod8.js b/tests/testdata/subdir/mod8.js index 5bf7a49a8..5bf7a49a8 100644 --- a/cli/tests/testdata/subdir/mod8.js +++ b/tests/testdata/subdir/mod8.js diff --git a/cli/tests/testdata/subdir/more_decorators.ts b/tests/testdata/subdir/more_decorators.ts index 674705d56..674705d56 100644 --- a/cli/tests/testdata/subdir/more_decorators.ts +++ b/tests/testdata/subdir/more_decorators.ts diff --git a/cli/tests/testdata/subdir/mt_application_ecmascript.j2.js b/tests/testdata/subdir/mt_application_ecmascript.j2.js index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_application_ecmascript.j2.js +++ b/tests/testdata/subdir/mt_application_ecmascript.j2.js diff --git a/cli/tests/testdata/subdir/mt_application_ecmascript_jsx.j2.jsx b/tests/testdata/subdir/mt_application_ecmascript_jsx.j2.jsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_application_ecmascript_jsx.j2.jsx +++ b/tests/testdata/subdir/mt_application_ecmascript_jsx.j2.jsx diff --git a/cli/tests/testdata/subdir/mt_application_x_javascript.j4.js b/tests/testdata/subdir/mt_application_x_javascript.j4.js index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_application_x_javascript.j4.js +++ b/tests/testdata/subdir/mt_application_x_javascript.j4.js diff --git a/cli/tests/testdata/subdir/mt_application_x_javascript_jsx.j4.jsx b/tests/testdata/subdir/mt_application_x_javascript_jsx.j4.jsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_application_x_javascript_jsx.j4.jsx +++ b/tests/testdata/subdir/mt_application_x_javascript_jsx.j4.jsx diff --git a/cli/tests/testdata/subdir/mt_application_x_typescript.t4.ts b/tests/testdata/subdir/mt_application_x_typescript.t4.ts index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_application_x_typescript.t4.ts +++ b/tests/testdata/subdir/mt_application_x_typescript.t4.ts diff --git a/cli/tests/testdata/subdir/mt_application_x_typescript_tsx.t4.tsx b/tests/testdata/subdir/mt_application_x_typescript_tsx.t4.tsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_application_x_typescript_tsx.t4.tsx +++ b/tests/testdata/subdir/mt_application_x_typescript_tsx.t4.tsx diff --git a/cli/tests/testdata/subdir/mt_javascript.js b/tests/testdata/subdir/mt_javascript.js index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_javascript.js +++ b/tests/testdata/subdir/mt_javascript.js diff --git a/cli/tests/testdata/subdir/mt_javascript_jsx.jsx b/tests/testdata/subdir/mt_javascript_jsx.jsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_javascript_jsx.jsx +++ b/tests/testdata/subdir/mt_javascript_jsx.jsx diff --git a/cli/tests/testdata/subdir/mt_text_ecmascript.j3.js b/tests/testdata/subdir/mt_text_ecmascript.j3.js index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_text_ecmascript.j3.js +++ b/tests/testdata/subdir/mt_text_ecmascript.j3.js diff --git a/cli/tests/testdata/subdir/mt_text_ecmascript_jsx.j3.jsx b/tests/testdata/subdir/mt_text_ecmascript_jsx.j3.jsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_text_ecmascript_jsx.j3.jsx +++ b/tests/testdata/subdir/mt_text_ecmascript_jsx.j3.jsx diff --git a/cli/tests/testdata/subdir/mt_text_javascript.j1.js b/tests/testdata/subdir/mt_text_javascript.j1.js index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_text_javascript.j1.js +++ b/tests/testdata/subdir/mt_text_javascript.j1.js diff --git a/cli/tests/testdata/subdir/mt_text_javascript_jsx.j1.jsx b/tests/testdata/subdir/mt_text_javascript_jsx.j1.jsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_text_javascript_jsx.j1.jsx +++ b/tests/testdata/subdir/mt_text_javascript_jsx.j1.jsx diff --git a/cli/tests/testdata/subdir/mt_text_typescript.t1.ts b/tests/testdata/subdir/mt_text_typescript.t1.ts index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_text_typescript.t1.ts +++ b/tests/testdata/subdir/mt_text_typescript.t1.ts diff --git a/cli/tests/testdata/subdir/mt_text_typescript_tsx.t1.tsx b/tests/testdata/subdir/mt_text_typescript_tsx.t1.tsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_text_typescript_tsx.t1.tsx +++ b/tests/testdata/subdir/mt_text_typescript_tsx.t1.tsx diff --git a/cli/tests/testdata/subdir/mt_video_mp2t.t3.ts b/tests/testdata/subdir/mt_video_mp2t.t3.ts index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_video_mp2t.t3.ts +++ b/tests/testdata/subdir/mt_video_mp2t.t3.ts diff --git a/cli/tests/testdata/subdir/mt_video_mp2t_tsx.t3.tsx b/tests/testdata/subdir/mt_video_mp2t_tsx.t3.tsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_video_mp2t_tsx.t3.tsx +++ b/tests/testdata/subdir/mt_video_mp2t_tsx.t3.tsx diff --git a/cli/tests/testdata/subdir/mt_video_vdn.t2.ts b/tests/testdata/subdir/mt_video_vdn.t2.ts index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/mt_video_vdn.t2.ts +++ b/tests/testdata/subdir/mt_video_vdn.t2.ts diff --git a/cli/tests/testdata/subdir/mt_video_vdn_tsx.t2.tsx b/tests/testdata/subdir/mt_video_vdn_tsx.t2.tsx index c5c27f9f9..c5c27f9f9 100644 --- a/cli/tests/testdata/subdir/mt_video_vdn_tsx.t2.tsx +++ b/tests/testdata/subdir/mt_video_vdn_tsx.t2.tsx diff --git a/cli/tests/testdata/subdir/no_ext b/tests/testdata/subdir/no_ext index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/no_ext +++ b/tests/testdata/subdir/no_ext diff --git a/cli/tests/testdata/subdir/no_js_ext b/tests/testdata/subdir/no_js_ext index 8322a106f..8322a106f 100644 --- a/cli/tests/testdata/subdir/no_js_ext +++ b/tests/testdata/subdir/no_js_ext diff --git a/cli/tests/testdata/subdir/polyfill.ts b/tests/testdata/subdir/polyfill.ts index 7af67c4c0..7af67c4c0 100644 --- a/cli/tests/testdata/subdir/polyfill.ts +++ b/tests/testdata/subdir/polyfill.ts diff --git a/cli/tests/testdata/subdir/print_hello.ts b/tests/testdata/subdir/print_hello.ts index b9c0ad527..b9c0ad527 100644 --- a/cli/tests/testdata/subdir/print_hello.ts +++ b/tests/testdata/subdir/print_hello.ts diff --git a/cli/tests/testdata/subdir/redirects/a.ts b/tests/testdata/subdir/redirects/a.ts index 071ee4728..071ee4728 100644 --- a/cli/tests/testdata/subdir/redirects/a.ts +++ b/tests/testdata/subdir/redirects/a.ts diff --git a/cli/tests/testdata/subdir/redirects/b.ts b/tests/testdata/subdir/redirects/b.ts index cdb71eaae..cdb71eaae 100644 --- a/cli/tests/testdata/subdir/redirects/b.ts +++ b/tests/testdata/subdir/redirects/b.ts diff --git a/cli/tests/testdata/subdir/redirects/redirect1.js b/tests/testdata/subdir/redirects/redirect1.js index d674be88c..d674be88c 100644 --- a/cli/tests/testdata/subdir/redirects/redirect1.js +++ b/tests/testdata/subdir/redirects/redirect1.js diff --git a/cli/tests/testdata/subdir/redirects/redirect1.ts b/tests/testdata/subdir/redirects/redirect1.ts index d674be88c..d674be88c 100644 --- a/cli/tests/testdata/subdir/redirects/redirect1.ts +++ b/tests/testdata/subdir/redirects/redirect1.ts diff --git a/cli/tests/testdata/subdir/redirects/redirect2.js b/tests/testdata/subdir/redirects/redirect2.js index e4244f638..e4244f638 100644 --- a/cli/tests/testdata/subdir/redirects/redirect2.js +++ b/tests/testdata/subdir/redirects/redirect2.js diff --git a/cli/tests/testdata/subdir/redirects/redirect3.js b/tests/testdata/subdir/redirects/redirect3.js index e24f2af32..e24f2af32 100644 --- a/cli/tests/testdata/subdir/redirects/redirect3.js +++ b/tests/testdata/subdir/redirects/redirect3.js diff --git a/cli/tests/testdata/subdir/redirects/redirect4.ts b/tests/testdata/subdir/redirects/redirect4.ts index 45c65c5eb..45c65c5eb 100644 --- a/cli/tests/testdata/subdir/redirects/redirect4.ts +++ b/tests/testdata/subdir/redirects/redirect4.ts diff --git a/cli/tests/testdata/subdir/shebang_file.js b/tests/testdata/subdir/shebang_file.js index 1c81be31c..1c81be31c 100644 --- a/cli/tests/testdata/subdir/shebang_file.js +++ b/tests/testdata/subdir/shebang_file.js diff --git a/cli/tests/testdata/subdir/single_module.ts b/tests/testdata/subdir/single_module.ts index 940a3ff0e..940a3ff0e 100644 --- a/cli/tests/testdata/subdir/single_module.ts +++ b/tests/testdata/subdir/single_module.ts diff --git a/cli/tests/testdata/subdir/subdir2/dynamic_import.ts b/tests/testdata/subdir/subdir2/dynamic_import.ts index 59beb64c3..59beb64c3 100644 --- a/cli/tests/testdata/subdir/subdir2/dynamic_import.ts +++ b/tests/testdata/subdir/subdir2/dynamic_import.ts diff --git a/cli/tests/testdata/subdir/subdir2/mod2.ts b/tests/testdata/subdir/subdir2/mod2.ts index 9071d0aeb..9071d0aeb 100644 --- a/cli/tests/testdata/subdir/subdir2/mod2.ts +++ b/tests/testdata/subdir/subdir2/mod2.ts diff --git a/cli/tests/testdata/subdir/test_worker_basic.js b/tests/testdata/subdir/test_worker_basic.js index b960128b4..b960128b4 100644 --- a/cli/tests/testdata/subdir/test_worker_basic.js +++ b/tests/testdata/subdir/test_worker_basic.js diff --git a/cli/tests/testdata/subdir/throws.js b/tests/testdata/subdir/throws.js index abdf29156..abdf29156 100644 --- a/cli/tests/testdata/subdir/throws.js +++ b/tests/testdata/subdir/throws.js diff --git a/cli/tests/testdata/subdir/tla.ts b/tests/testdata/subdir/tla.ts index 713dbfca0..713dbfca0 100644 --- a/cli/tests/testdata/subdir/tla.ts +++ b/tests/testdata/subdir/tla.ts diff --git a/cli/tests/testdata/subdir/type_and_code.ts b/tests/testdata/subdir/type_and_code.ts index b14713419..b14713419 100644 --- a/cli/tests/testdata/subdir/type_and_code.ts +++ b/tests/testdata/subdir/type_and_code.ts diff --git a/cli/tests/testdata/subdir/type_error.ts b/tests/testdata/subdir/type_error.ts index cc3c1d29d..cc3c1d29d 100644 --- a/cli/tests/testdata/subdir/type_error.ts +++ b/tests/testdata/subdir/type_error.ts diff --git a/cli/tests/testdata/subdir/type_reference.d.ts b/tests/testdata/subdir/type_reference.d.ts index f9b8de5ed..f9b8de5ed 100644 --- a/cli/tests/testdata/subdir/type_reference.d.ts +++ b/tests/testdata/subdir/type_reference.d.ts diff --git a/cli/tests/testdata/subdir/type_reference.js b/tests/testdata/subdir/type_reference.js index 917d89198..917d89198 100644 --- a/cli/tests/testdata/subdir/type_reference.js +++ b/tests/testdata/subdir/type_reference.js diff --git a/cli/tests/testdata/subdir/types.d.mts b/tests/testdata/subdir/types.d.mts index 28c282146..28c282146 100644 --- a/cli/tests/testdata/subdir/types.d.mts +++ b/tests/testdata/subdir/types.d.mts diff --git a/cli/tests/testdata/subdir/unknown_ext.deno b/tests/testdata/subdir/unknown_ext.deno index e67d2a017..e67d2a017 100644 --- a/cli/tests/testdata/subdir/unknown_ext.deno +++ b/tests/testdata/subdir/unknown_ext.deno diff --git a/cli/tests/testdata/symlink_to_subdir b/tests/testdata/symlink_to_subdir index fe0c45aa4..fe0c45aa4 120000 --- a/cli/tests/testdata/symlink_to_subdir +++ b/tests/testdata/symlink_to_subdir diff --git a/cli/tests/testdata/task/both/deno.json b/tests/testdata/task/both/deno.json index 1038609a4..1038609a4 100644 --- a/cli/tests/testdata/task/both/deno.json +++ b/tests/testdata/task/both/deno.json diff --git a/cli/tests/testdata/task/both/deno_selected.out b/tests/testdata/task/both/deno_selected.out index f5bbab26d..f5bbab26d 100644 --- a/cli/tests/testdata/task/both/deno_selected.out +++ b/tests/testdata/task/both/deno_selected.out diff --git a/cli/tests/testdata/task/both/echo.out b/tests/testdata/task/both/echo.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/task/both/echo.out +++ b/tests/testdata/task/both/echo.out diff --git a/cli/tests/testdata/task/both/no_args.out b/tests/testdata/task/both/no_args.out index fce690b70..fce690b70 100644 --- a/cli/tests/testdata/task/both/no_args.out +++ b/tests/testdata/task/both/no_args.out diff --git a/cli/tests/testdata/task/both/package.json b/tests/testdata/task/both/package.json index 708ccc6b1..708ccc6b1 100644 --- a/cli/tests/testdata/task/both/package.json +++ b/tests/testdata/task/both/package.json diff --git a/cli/tests/testdata/task/both/package_json_selected.out b/tests/testdata/task/both/package_json_selected.out index 3dd1ecafa..3dd1ecafa 100644 --- a/cli/tests/testdata/task/both/package_json_selected.out +++ b/tests/testdata/task/both/package_json_selected.out diff --git a/cli/tests/testdata/task/both/prefers_deno.out b/tests/testdata/task/both/prefers_deno.out index 391737272..391737272 100644 --- a/cli/tests/testdata/task/both/prefers_deno.out +++ b/tests/testdata/task/both/prefers_deno.out diff --git a/cli/tests/testdata/task/deno_json/deno.json b/tests/testdata/task/deno_json/deno.json index c57426d25..c57426d25 100644 --- a/cli/tests/testdata/task/deno_json/deno.json +++ b/tests/testdata/task/deno_json/deno.json diff --git a/cli/tests/testdata/task/deno_json/task_additional_args.out b/tests/testdata/task/deno_json/task_additional_args.out index 8d04f961a..8d04f961a 100644 --- a/cli/tests/testdata/task/deno_json/task_additional_args.out +++ b/tests/testdata/task/deno_json/task_additional_args.out diff --git a/cli/tests/testdata/task/deno_json/task_additional_args_nested_strings.out b/tests/testdata/task/deno_json/task_additional_args_nested_strings.out index 0e5f35c7f..0e5f35c7f 100644 --- a/cli/tests/testdata/task/deno_json/task_additional_args_nested_strings.out +++ b/tests/testdata/task/deno_json/task_additional_args_nested_strings.out diff --git a/cli/tests/testdata/task/deno_json/task_additional_args_no_logic.out b/tests/testdata/task/deno_json/task_additional_args_no_logic.out index a4886a60d..a4886a60d 100644 --- a/cli/tests/testdata/task/deno_json/task_additional_args_no_logic.out +++ b/tests/testdata/task/deno_json/task_additional_args_no_logic.out diff --git a/cli/tests/testdata/task/deno_json/task_additional_args_no_shell_expansion.out b/tests/testdata/task/deno_json/task_additional_args_no_shell_expansion.out index 826a3aaf1..826a3aaf1 100644 --- a/cli/tests/testdata/task/deno_json/task_additional_args_no_shell_expansion.out +++ b/tests/testdata/task/deno_json/task_additional_args_no_shell_expansion.out diff --git a/cli/tests/testdata/task/deno_json/task_boolean_logic.out b/tests/testdata/task/deno_json/task_boolean_logic.out index 94ebaf900..94ebaf900 100644 --- a/cli/tests/testdata/task/deno_json/task_boolean_logic.out +++ b/tests/testdata/task/deno_json/task_boolean_logic.out diff --git a/cli/tests/testdata/task/deno_json/task_cwd.out b/tests/testdata/task/deno_json/task_cwd.out index bfe3e7b11..bfe3e7b11 100644 --- a/cli/tests/testdata/task/deno_json/task_cwd.out +++ b/tests/testdata/task/deno_json/task_cwd.out diff --git a/cli/tests/testdata/task/deno_json/task_deno_exe_no_env.out b/tests/testdata/task/deno_json/task_deno_exe_no_env.out index 7ed6ff82d..7ed6ff82d 100644 --- a/cli/tests/testdata/task/deno_json/task_deno_exe_no_env.out +++ b/tests/testdata/task/deno_json/task_deno_exe_no_env.out diff --git a/cli/tests/testdata/task/deno_json/task_exit_code_5.out b/tests/testdata/task/deno_json/task_exit_code_5.out index 12d171939..12d171939 100644 --- a/cli/tests/testdata/task/deno_json/task_exit_code_5.out +++ b/tests/testdata/task/deno_json/task_exit_code_5.out diff --git a/cli/tests/testdata/task/deno_json/task_init_cwd.out b/tests/testdata/task/deno_json/task_init_cwd.out index 95ea8a545..95ea8a545 100644 --- a/cli/tests/testdata/task/deno_json/task_init_cwd.out +++ b/tests/testdata/task/deno_json/task_init_cwd.out diff --git a/cli/tests/testdata/task/deno_json/task_init_cwd_already_set.out b/tests/testdata/task/deno_json/task_init_cwd_already_set.out index e427984d4..e427984d4 100644 --- a/cli/tests/testdata/task/deno_json/task_init_cwd_already_set.out +++ b/tests/testdata/task/deno_json/task_init_cwd_already_set.out diff --git a/cli/tests/testdata/task/deno_json/task_no_args.out b/tests/testdata/task/deno_json/task_no_args.out index 18f86fce6..18f86fce6 100644 --- a/cli/tests/testdata/task/deno_json/task_no_args.out +++ b/tests/testdata/task/deno_json/task_no_args.out diff --git a/cli/tests/testdata/task/deno_json/task_non_existent.out b/tests/testdata/task/deno_json/task_non_existent.out index efe3805f6..efe3805f6 100644 --- a/cli/tests/testdata/task/deno_json/task_non_existent.out +++ b/tests/testdata/task/deno_json/task_non_existent.out diff --git a/cli/tests/testdata/task/deno_json/task_piped_stdin.out b/tests/testdata/task/deno_json/task_piped_stdin.out index a0d636f15..a0d636f15 100644 --- a/cli/tests/testdata/task/deno_json/task_piped_stdin.out +++ b/tests/testdata/task/deno_json/task_piped_stdin.out diff --git a/cli/tests/testdata/task/deno_json_pre_post/bin.out b/tests/testdata/task/deno_json_pre_post/bin.out index ad66595f1..ad66595f1 100644 --- a/cli/tests/testdata/task/deno_json_pre_post/bin.out +++ b/tests/testdata/task/deno_json_pre_post/bin.out diff --git a/cli/tests/testdata/task/deno_json_pre_post/deno.json b/tests/testdata/task/deno_json_pre_post/deno.json index 165b92e3a..165b92e3a 100644 --- a/cli/tests/testdata/task/deno_json_pre_post/deno.json +++ b/tests/testdata/task/deno_json_pre_post/deno.json diff --git a/cli/tests/testdata/task/deno_json_pre_post/echo.out b/tests/testdata/task/deno_json_pre_post/echo.out index 573541ac9..573541ac9 100644 --- a/cli/tests/testdata/task/deno_json_pre_post/echo.out +++ b/tests/testdata/task/deno_json_pre_post/echo.out diff --git a/cli/tests/testdata/task/npx/non_existent.out b/tests/testdata/task/npx/non_existent.out index 5df04917e..5df04917e 100644 --- a/cli/tests/testdata/task/npx/non_existent.out +++ b/tests/testdata/task/npx/non_existent.out diff --git a/cli/tests/testdata/task/npx/on_own.out b/tests/testdata/task/npx/on_own.out index 67491f7b0..67491f7b0 100644 --- a/cli/tests/testdata/task/npx/on_own.out +++ b/tests/testdata/task/npx/on_own.out diff --git a/cli/tests/testdata/task/npx/package.json b/tests/testdata/task/npx/package.json index 59602b96f..59602b96f 100644 --- a/cli/tests/testdata/task/npx/package.json +++ b/tests/testdata/task/npx/package.json diff --git a/cli/tests/testdata/task/package_json/bin.out b/tests/testdata/task/package_json/bin.out index bf4693afc..bf4693afc 100644 --- a/cli/tests/testdata/task/package_json/bin.out +++ b/tests/testdata/task/package_json/bin.out diff --git a/cli/tests/testdata/task/package_json/echo.out b/tests/testdata/task/package_json/echo.out index d00491fd7..d00491fd7 100644 --- a/cli/tests/testdata/task/package_json/echo.out +++ b/tests/testdata/task/package_json/echo.out diff --git a/cli/tests/testdata/task/package_json/no_args.out b/tests/testdata/task/package_json/no_args.out index de149ccf9..de149ccf9 100644 --- a/cli/tests/testdata/task/package_json/no_args.out +++ b/tests/testdata/task/package_json/no_args.out diff --git a/cli/tests/testdata/task/package_json/package.json b/tests/testdata/task/package_json/package.json index cedbe2d5b..cedbe2d5b 100644 --- a/cli/tests/testdata/task/package_json/package.json +++ b/tests/testdata/task/package_json/package.json diff --git a/cli/tests/testdata/task/package_json_node_modules_dir_false/bin.out b/tests/testdata/task/package_json_node_modules_dir_false/bin.out index d5d59d551..d5d59d551 100644 --- a/cli/tests/testdata/task/package_json_node_modules_dir_false/bin.out +++ b/tests/testdata/task/package_json_node_modules_dir_false/bin.out diff --git a/cli/tests/testdata/task/package_json_node_modules_dir_false/deno.json b/tests/testdata/task/package_json_node_modules_dir_false/deno.json index 23a325cfc..23a325cfc 100644 --- a/cli/tests/testdata/task/package_json_node_modules_dir_false/deno.json +++ b/tests/testdata/task/package_json_node_modules_dir_false/deno.json diff --git a/cli/tests/testdata/task/package_json_node_modules_dir_false/package.json b/tests/testdata/task/package_json_node_modules_dir_false/package.json index 081e076b9..081e076b9 100644 --- a/cli/tests/testdata/task/package_json_node_modules_dir_false/package.json +++ b/tests/testdata/task/package_json_node_modules_dir_false/package.json diff --git a/cli/tests/testdata/task/package_json_post/bin.out b/tests/testdata/task/package_json_post/bin.out index 96e5ca910..96e5ca910 100644 --- a/cli/tests/testdata/task/package_json_post/bin.out +++ b/tests/testdata/task/package_json_post/bin.out diff --git a/cli/tests/testdata/task/package_json_post/echo.out b/tests/testdata/task/package_json_post/echo.out index 573541ac9..573541ac9 100644 --- a/cli/tests/testdata/task/package_json_post/echo.out +++ b/tests/testdata/task/package_json_post/echo.out diff --git a/cli/tests/testdata/task/package_json_post/package.json b/tests/testdata/task/package_json_post/package.json index 82689f7d4..82689f7d4 100644 --- a/cli/tests/testdata/task/package_json_post/package.json +++ b/tests/testdata/task/package_json_post/package.json diff --git a/cli/tests/testdata/task/package_json_post_only/bin.out b/tests/testdata/task/package_json_post_only/bin.out index 9e7cea091..9e7cea091 100644 --- a/cli/tests/testdata/task/package_json_post_only/bin.out +++ b/tests/testdata/task/package_json_post_only/bin.out diff --git a/cli/tests/testdata/task/package_json_post_only/echo.out b/tests/testdata/task/package_json_post_only/echo.out index 573541ac9..573541ac9 100644 --- a/cli/tests/testdata/task/package_json_post_only/echo.out +++ b/tests/testdata/task/package_json_post_only/echo.out diff --git a/cli/tests/testdata/task/package_json_post_only/package.json b/tests/testdata/task/package_json_post_only/package.json index ce8a6bbd5..ce8a6bbd5 100644 --- a/cli/tests/testdata/task/package_json_post_only/package.json +++ b/tests/testdata/task/package_json_post_only/package.json diff --git a/cli/tests/testdata/task/package_json_pre/bin.out b/tests/testdata/task/package_json_pre/bin.out index f22961832..f22961832 100644 --- a/cli/tests/testdata/task/package_json_pre/bin.out +++ b/tests/testdata/task/package_json_pre/bin.out diff --git a/cli/tests/testdata/task/package_json_pre/echo.out b/tests/testdata/task/package_json_pre/echo.out index 573541ac9..573541ac9 100644 --- a/cli/tests/testdata/task/package_json_pre/echo.out +++ b/tests/testdata/task/package_json_pre/echo.out diff --git a/cli/tests/testdata/task/package_json_pre/package.json b/tests/testdata/task/package_json_pre/package.json index d3eba02a1..d3eba02a1 100644 --- a/cli/tests/testdata/task/package_json_pre/package.json +++ b/tests/testdata/task/package_json_pre/package.json diff --git a/cli/tests/testdata/task/package_json_pre_only/bin.out b/tests/testdata/task/package_json_pre_only/bin.out index e96e8e341..e96e8e341 100644 --- a/cli/tests/testdata/task/package_json_pre_only/bin.out +++ b/tests/testdata/task/package_json_pre_only/bin.out diff --git a/cli/tests/testdata/task/package_json_pre_only/echo.out b/tests/testdata/task/package_json_pre_only/echo.out index d00491fd7..d00491fd7 100644 --- a/cli/tests/testdata/task/package_json_pre_only/echo.out +++ b/tests/testdata/task/package_json_pre_only/echo.out diff --git a/cli/tests/testdata/task/package_json_pre_only/package.json b/tests/testdata/task/package_json_pre_only/package.json index 032a5d4ea..032a5d4ea 100644 --- a/cli/tests/testdata/task/package_json_pre_only/package.json +++ b/tests/testdata/task/package_json_pre_only/package.json diff --git a/cli/tests/testdata/task/package_json_pre_post/bin.out b/tests/testdata/task/package_json_pre_post/bin.out index 8c4abc6be..8c4abc6be 100644 --- a/cli/tests/testdata/task/package_json_pre_post/bin.out +++ b/tests/testdata/task/package_json_pre_post/bin.out diff --git a/cli/tests/testdata/task/package_json_pre_post/echo.out b/tests/testdata/task/package_json_pre_post/echo.out index 573541ac9..573541ac9 100644 --- a/cli/tests/testdata/task/package_json_pre_post/echo.out +++ b/tests/testdata/task/package_json_pre_post/echo.out diff --git a/cli/tests/testdata/task/package_json_pre_post/package.json b/tests/testdata/task/package_json_pre_post/package.json index 24a3ff1ed..24a3ff1ed 100644 --- a/cli/tests/testdata/task/package_json_pre_post/package.json +++ b/tests/testdata/task/package_json_pre_post/package.json diff --git a/cli/tests/testdata/test/aggregate_error.out b/tests/testdata/test/aggregate_error.out index e70bf5963..e70bf5963 100644 --- a/cli/tests/testdata/test/aggregate_error.out +++ b/tests/testdata/test/aggregate_error.out diff --git a/cli/tests/testdata/test/aggregate_error.ts b/tests/testdata/test/aggregate_error.ts index 0661ea249..0661ea249 100644 --- a/cli/tests/testdata/test/aggregate_error.ts +++ b/tests/testdata/test/aggregate_error.ts diff --git a/cli/tests/testdata/test/allow_all.out b/tests/testdata/test/allow_all.out index 8b783b823..8b783b823 100644 --- a/cli/tests/testdata/test/allow_all.out +++ b/tests/testdata/test/allow_all.out diff --git a/tests/testdata/test/allow_all.ts b/tests/testdata/test/allow_all.ts new file mode 100644 index 000000000..e533bc017 --- /dev/null +++ b/tests/testdata/test/allow_all.ts @@ -0,0 +1,43 @@ +import { assertEquals } from "../../../test_util/std/assert/mod.ts"; + +const permissions: Deno.PermissionName[] = [ + "read", + "write", + "net", + "env", + "run", + "ffi", + "hrtime", +]; + +for (const name of permissions) { + Deno.test({ + name: `${name} false`, + permissions: { + [name]: false, + }, + async fn() { + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + assertEquals(status.state, "prompt"); + } + }, + }); + + Deno.test({ + name: `${name} true`, + permissions: { + [name]: true, + }, + async fn() { + for await (const n of permissions) { + const status = await Deno.permissions.query({ name: n }); + if (n === name) { + assertEquals(status.state, "granted"); + } else { + assertEquals(status.state, "prompt"); + } + } + }, + }); +} diff --git a/cli/tests/testdata/test/allow_none.out b/tests/testdata/test/allow_none.out index aaa467344..aaa467344 100644 --- a/cli/tests/testdata/test/allow_none.out +++ b/tests/testdata/test/allow_none.out diff --git a/tests/testdata/test/allow_none.ts b/tests/testdata/test/allow_none.ts new file mode 100644 index 000000000..04c40a093 --- /dev/null +++ b/tests/testdata/test/allow_none.ts @@ -0,0 +1,23 @@ +import { unreachable } from "../../../test_util/std/assert/mod.ts"; + +const permissions: Deno.PermissionName[] = [ + "read", + "write", + "net", + "env", + "run", + "ffi", + "hrtime", +]; + +for (const name of permissions) { + Deno.test({ + name, + permissions: { + [name]: true, + }, + fn() { + unreachable(); + }, + }); +} diff --git a/cli/tests/testdata/test/before_unload_prevent_default.out b/tests/testdata/test/before_unload_prevent_default.out index 09da32ff9..09da32ff9 100644 --- a/cli/tests/testdata/test/before_unload_prevent_default.out +++ b/tests/testdata/test/before_unload_prevent_default.out diff --git a/cli/tests/testdata/test/before_unload_prevent_default.ts b/tests/testdata/test/before_unload_prevent_default.ts index 421ded520..421ded520 100644 --- a/cli/tests/testdata/test/before_unload_prevent_default.ts +++ b/tests/testdata/test/before_unload_prevent_default.ts diff --git a/cli/tests/testdata/test/captured_output.ts b/tests/testdata/test/captured_output.ts index 3eed249a2..3eed249a2 100644 --- a/cli/tests/testdata/test/captured_output.ts +++ b/tests/testdata/test/captured_output.ts diff --git a/cli/tests/testdata/test/captured_output.worker.js b/tests/testdata/test/captured_output.worker.js index f49f26880..f49f26880 100644 --- a/cli/tests/testdata/test/captured_output.worker.js +++ b/tests/testdata/test/captured_output.worker.js diff --git a/cli/tests/testdata/test/check_local_by_default.out b/tests/testdata/test/check_local_by_default.out index 4564f99b8..4564f99b8 100644 --- a/cli/tests/testdata/test/check_local_by_default.out +++ b/tests/testdata/test/check_local_by_default.out diff --git a/cli/tests/testdata/test/check_local_by_default.ts b/tests/testdata/test/check_local_by_default.ts index 2ae8c2692..2ae8c2692 100644 --- a/cli/tests/testdata/test/check_local_by_default.ts +++ b/tests/testdata/test/check_local_by_default.ts diff --git a/cli/tests/testdata/test/check_local_by_default2.out b/tests/testdata/test/check_local_by_default2.out index b933ac483..b933ac483 100644 --- a/cli/tests/testdata/test/check_local_by_default2.out +++ b/tests/testdata/test/check_local_by_default2.out diff --git a/cli/tests/testdata/test/check_local_by_default2.ts b/tests/testdata/test/check_local_by_default2.ts index 5177ff944..5177ff944 100644 --- a/cli/tests/testdata/test/check_local_by_default2.ts +++ b/tests/testdata/test/check_local_by_default2.ts diff --git a/cli/tests/testdata/test/clear_timeout.out b/tests/testdata/test/clear_timeout.out index 4d3ff8862..4d3ff8862 100644 --- a/cli/tests/testdata/test/clear_timeout.out +++ b/tests/testdata/test/clear_timeout.out diff --git a/cli/tests/testdata/test/clear_timeout.ts b/tests/testdata/test/clear_timeout.ts index 00056e853..00056e853 100644 --- a/cli/tests/testdata/test/clear_timeout.ts +++ b/tests/testdata/test/clear_timeout.ts diff --git a/cli/tests/testdata/test/collect.deprecated.out b/tests/testdata/test/collect.deprecated.out index 7db2f276c..7db2f276c 100644 --- a/cli/tests/testdata/test/collect.deprecated.out +++ b/tests/testdata/test/collect.deprecated.out diff --git a/cli/tests/testdata/test/collect.out b/tests/testdata/test/collect.out index 734adbe6b..734adbe6b 100644 --- a/cli/tests/testdata/test/collect.out +++ b/tests/testdata/test/collect.out diff --git a/cli/tests/testdata/test/collect/deno.deprecated.jsonc b/tests/testdata/test/collect/deno.deprecated.jsonc index b8acda27d..b8acda27d 100644 --- a/cli/tests/testdata/test/collect/deno.deprecated.jsonc +++ b/tests/testdata/test/collect/deno.deprecated.jsonc diff --git a/cli/tests/testdata/test/collect/deno.jsonc b/tests/testdata/test/collect/deno.jsonc index e14ce86da..e14ce86da 100644 --- a/cli/tests/testdata/test/collect/deno.jsonc +++ b/tests/testdata/test/collect/deno.jsonc diff --git a/cli/tests/testdata/test/collect/deno.malformed.jsonc b/tests/testdata/test/collect/deno.malformed.jsonc index f2d8cbc65..f2d8cbc65 100644 --- a/cli/tests/testdata/test/collect/deno.malformed.jsonc +++ b/tests/testdata/test/collect/deno.malformed.jsonc diff --git a/cli/tests/testdata/test/collect/deno2.jsonc b/tests/testdata/test/collect/deno2.jsonc index b7af09d1c..b7af09d1c 100644 --- a/cli/tests/testdata/test/collect/deno2.jsonc +++ b/tests/testdata/test/collect/deno2.jsonc diff --git a/cli/tests/testdata/test/collect/ignore/test.ts b/tests/testdata/test/collect/ignore/test.ts index 16fb63ba7..16fb63ba7 100644 --- a/cli/tests/testdata/test/collect/ignore/test.ts +++ b/tests/testdata/test/collect/ignore/test.ts diff --git a/cli/tests/testdata/test/collect/include.ts b/tests/testdata/test/collect/include.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/test/collect/include.ts +++ b/tests/testdata/test/collect/include.ts diff --git a/cli/tests/testdata/test/collect/include/2_test.ts b/tests/testdata/test/collect/include/2_test.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/test/collect/include/2_test.ts +++ b/tests/testdata/test/collect/include/2_test.ts diff --git a/cli/tests/testdata/test/collect/include/test.ts b/tests/testdata/test/collect/include/test.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/test/collect/include/test.ts +++ b/tests/testdata/test/collect/include/test.ts diff --git a/cli/tests/testdata/test/collect/test.ts b/tests/testdata/test/collect/test.ts index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/test/collect/test.ts +++ b/tests/testdata/test/collect/test.ts diff --git a/cli/tests/testdata/test/collect2.out b/tests/testdata/test/collect2.out index 0c00c956a..0c00c956a 100644 --- a/cli/tests/testdata/test/collect2.out +++ b/tests/testdata/test/collect2.out diff --git a/cli/tests/testdata/test/collect_with_malformed_config.out b/tests/testdata/test/collect_with_malformed_config.out index b31b18e6a..b31b18e6a 100644 --- a/cli/tests/testdata/test/collect_with_malformed_config.out +++ b/tests/testdata/test/collect_with_malformed_config.out diff --git a/cli/tests/testdata/test/deno.glob.json b/tests/testdata/test/deno.glob.json index 9deb4d2f2..9deb4d2f2 100644 --- a/cli/tests/testdata/test/deno.glob.json +++ b/tests/testdata/test/deno.glob.json diff --git a/cli/tests/testdata/test/deno_custom_jsx.json b/tests/testdata/test/deno_custom_jsx.json index 7ef04d829..7ef04d829 100644 --- a/cli/tests/testdata/test/deno_custom_jsx.json +++ b/tests/testdata/test/deno_custom_jsx.json diff --git a/cli/tests/testdata/test/doc.out b/tests/testdata/test/doc.out index cd8bbb620..cd8bbb620 100644 --- a/cli/tests/testdata/test/doc.out +++ b/tests/testdata/test/doc.out diff --git a/cli/tests/testdata/test/doc.ts b/tests/testdata/test/doc.ts index 519479fc5..519479fc5 100644 --- a/cli/tests/testdata/test/doc.ts +++ b/tests/testdata/test/doc.ts diff --git a/cli/tests/testdata/test/doc_only.out b/tests/testdata/test/doc_only.out index 2b8b6dc73..2b8b6dc73 100644 --- a/cli/tests/testdata/test/doc_only.out +++ b/tests/testdata/test/doc_only.out diff --git a/cli/tests/testdata/test/doc_only/mod.ts b/tests/testdata/test/doc_only/mod.ts index 467d850a2..467d850a2 100644 --- a/cli/tests/testdata/test/doc_only/mod.ts +++ b/tests/testdata/test/doc_only/mod.ts diff --git a/cli/tests/testdata/test/exit_sanitizer.out b/tests/testdata/test/exit_sanitizer.out index 684001475..684001475 100644 --- a/cli/tests/testdata/test/exit_sanitizer.out +++ b/tests/testdata/test/exit_sanitizer.out diff --git a/cli/tests/testdata/test/exit_sanitizer.ts b/tests/testdata/test/exit_sanitizer.ts index 186406a9d..186406a9d 100644 --- a/cli/tests/testdata/test/exit_sanitizer.ts +++ b/tests/testdata/test/exit_sanitizer.ts diff --git a/cli/tests/testdata/test/fail.out b/tests/testdata/test/fail.out index 3fcf6fd8f..3fcf6fd8f 100644 --- a/cli/tests/testdata/test/fail.out +++ b/tests/testdata/test/fail.out diff --git a/cli/tests/testdata/test/fail.ts b/tests/testdata/test/fail.ts index 9340db556..9340db556 100644 --- a/cli/tests/testdata/test/fail.ts +++ b/tests/testdata/test/fail.ts diff --git a/cli/tests/testdata/test/fail_fast.out b/tests/testdata/test/fail_fast.out index 606d5b345..606d5b345 100644 --- a/cli/tests/testdata/test/fail_fast.out +++ b/tests/testdata/test/fail_fast.out diff --git a/cli/tests/testdata/test/fail_fast.ts b/tests/testdata/test/fail_fast.ts index 637e825ec..637e825ec 100644 --- a/cli/tests/testdata/test/fail_fast.ts +++ b/tests/testdata/test/fail_fast.ts diff --git a/cli/tests/testdata/test/fail_fast_other.ts b/tests/testdata/test/fail_fast_other.ts index 02aa878cf..02aa878cf 100644 --- a/cli/tests/testdata/test/fail_fast_other.ts +++ b/tests/testdata/test/fail_fast_other.ts diff --git a/cli/tests/testdata/test/fail_fast_with_val.out b/tests/testdata/test/fail_fast_with_val.out index a844b05c1..a844b05c1 100644 --- a/cli/tests/testdata/test/fail_fast_with_val.out +++ b/tests/testdata/test/fail_fast_with_val.out diff --git a/cli/tests/testdata/test/fail_fast_with_val.ts b/tests/testdata/test/fail_fast_with_val.ts index 637e825ec..637e825ec 100644 --- a/cli/tests/testdata/test/fail_fast_with_val.ts +++ b/tests/testdata/test/fail_fast_with_val.ts diff --git a/cli/tests/testdata/test/file_protocol.out b/tests/testdata/test/file_protocol.out index 3f9c73f7e..3f9c73f7e 100644 --- a/cli/tests/testdata/test/file_protocol.out +++ b/tests/testdata/test/file_protocol.out diff --git a/cli/tests/testdata/test/file_protocol.ts b/tests/testdata/test/file_protocol.ts index 79128c2b3..79128c2b3 100644 --- a/cli/tests/testdata/test/file_protocol.ts +++ b/tests/testdata/test/file_protocol.ts diff --git a/cli/tests/testdata/test/filter.out b/tests/testdata/test/filter.out index af3e43ab8..af3e43ab8 100644 --- a/cli/tests/testdata/test/filter.out +++ b/tests/testdata/test/filter.out diff --git a/cli/tests/testdata/test/filter/a_test.ts b/tests/testdata/test/filter/a_test.ts index a3f32968a..a3f32968a 100644 --- a/cli/tests/testdata/test/filter/a_test.ts +++ b/tests/testdata/test/filter/a_test.ts diff --git a/cli/tests/testdata/test/filter/b_test.ts b/tests/testdata/test/filter/b_test.ts index a3f32968a..a3f32968a 100644 --- a/cli/tests/testdata/test/filter/b_test.ts +++ b/tests/testdata/test/filter/b_test.ts diff --git a/cli/tests/testdata/test/filter/c_test.ts b/tests/testdata/test/filter/c_test.ts index a3f32968a..a3f32968a 100644 --- a/cli/tests/testdata/test/filter/c_test.ts +++ b/tests/testdata/test/filter/c_test.ts diff --git a/cli/tests/testdata/test/filtered_out_only.out b/tests/testdata/test/filtered_out_only.out index 337893848..337893848 100644 --- a/cli/tests/testdata/test/filtered_out_only.out +++ b/tests/testdata/test/filtered_out_only.out diff --git a/cli/tests/testdata/test/filtered_out_only.ts b/tests/testdata/test/filtered_out_only.ts index bda301a43..bda301a43 100644 --- a/cli/tests/testdata/test/filtered_out_only.ts +++ b/tests/testdata/test/filtered_out_only.ts diff --git a/cli/tests/testdata/test/finally_timeout.out b/tests/testdata/test/finally_timeout.out index 26153da06..26153da06 100644 --- a/cli/tests/testdata/test/finally_timeout.out +++ b/tests/testdata/test/finally_timeout.out diff --git a/cli/tests/testdata/test/finally_timeout.ts b/tests/testdata/test/finally_timeout.ts index dcc0a4d64..dcc0a4d64 100644 --- a/cli/tests/testdata/test/finally_timeout.ts +++ b/tests/testdata/test/finally_timeout.ts diff --git a/cli/tests/testdata/test/glob/data/tes.ts b/tests/testdata/test/glob/data/tes.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/data/tes.ts +++ b/tests/testdata/test/glob/data/tes.ts diff --git a/cli/tests/testdata/test/glob/data/test1.js b/tests/testdata/test/glob/data/test1.js index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/data/test1.js +++ b/tests/testdata/test/glob/data/test1.js diff --git a/cli/tests/testdata/test/glob/data/test1.ts b/tests/testdata/test/glob/data/test1.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/data/test1.ts +++ b/tests/testdata/test/glob/data/test1.ts diff --git a/cli/tests/testdata/test/glob/data/test12.ts b/tests/testdata/test/glob/data/test12.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/data/test12.ts +++ b/tests/testdata/test/glob/data/test12.ts diff --git a/cli/tests/testdata/test/glob/nested/fizz/bar.ts b/tests/testdata/test/glob/nested/fizz/bar.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/fizz/bar.ts +++ b/tests/testdata/test/glob/nested/fizz/bar.ts diff --git a/cli/tests/testdata/test/glob/nested/fizz/bazz.ts b/tests/testdata/test/glob/nested/fizz/bazz.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/fizz/bazz.ts +++ b/tests/testdata/test/glob/nested/fizz/bazz.ts diff --git a/cli/tests/testdata/test/glob/nested/fizz/fizz.ts b/tests/testdata/test/glob/nested/fizz/fizz.ts index 6940729e9..6940729e9 100644 --- a/cli/tests/testdata/test/glob/nested/fizz/fizz.ts +++ b/tests/testdata/test/glob/nested/fizz/fizz.ts diff --git a/cli/tests/testdata/test/glob/nested/fizz/foo.ts b/tests/testdata/test/glob/nested/fizz/foo.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/fizz/foo.ts +++ b/tests/testdata/test/glob/nested/fizz/foo.ts diff --git a/cli/tests/testdata/test/glob/nested/foo/bar.ts b/tests/testdata/test/glob/nested/foo/bar.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/foo/bar.ts +++ b/tests/testdata/test/glob/nested/foo/bar.ts diff --git a/cli/tests/testdata/test/glob/nested/foo/bazz.ts b/tests/testdata/test/glob/nested/foo/bazz.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/foo/bazz.ts +++ b/tests/testdata/test/glob/nested/foo/bazz.ts diff --git a/cli/tests/testdata/test/glob/nested/foo/fizz.ts b/tests/testdata/test/glob/nested/foo/fizz.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/foo/fizz.ts +++ b/tests/testdata/test/glob/nested/foo/fizz.ts diff --git a/cli/tests/testdata/test/glob/nested/foo/foo.ts b/tests/testdata/test/glob/nested/foo/foo.ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/nested/foo/foo.ts +++ b/tests/testdata/test/glob/nested/foo/foo.ts diff --git a/cli/tests/testdata/test/glob/pages/[id].ts b/tests/testdata/test/glob/pages/[id].ts index 26f07fba5..26f07fba5 100644 --- a/cli/tests/testdata/test/glob/pages/[id].ts +++ b/tests/testdata/test/glob/pages/[id].ts diff --git a/cli/tests/testdata/test/hello_world.out b/tests/testdata/test/hello_world.out index aee8a64d4..aee8a64d4 100644 --- a/cli/tests/testdata/test/hello_world.out +++ b/tests/testdata/test/hello_world.out diff --git a/cli/tests/testdata/test/hello_world.ts b/tests/testdata/test/hello_world.ts index 4a1c3463f..4a1c3463f 100644 --- a/cli/tests/testdata/test/hello_world.ts +++ b/tests/testdata/test/hello_world.ts diff --git a/cli/tests/testdata/test/hide_empty_suites.out b/tests/testdata/test/hide_empty_suites.out index d270cb05a..d270cb05a 100644 --- a/cli/tests/testdata/test/hide_empty_suites.out +++ b/tests/testdata/test/hide_empty_suites.out diff --git a/cli/tests/testdata/test/ignore.out b/tests/testdata/test/ignore.out index e67406c63..e67406c63 100644 --- a/cli/tests/testdata/test/ignore.out +++ b/tests/testdata/test/ignore.out diff --git a/cli/tests/testdata/test/ignore.ts b/tests/testdata/test/ignore.ts index 2339835db..2339835db 100644 --- a/cli/tests/testdata/test/ignore.ts +++ b/tests/testdata/test/ignore.ts diff --git a/cli/tests/testdata/test/ignore_permissions.out b/tests/testdata/test/ignore_permissions.out index cc2574da9..cc2574da9 100644 --- a/cli/tests/testdata/test/ignore_permissions.out +++ b/tests/testdata/test/ignore_permissions.out diff --git a/cli/tests/testdata/test/ignore_permissions.ts b/tests/testdata/test/ignore_permissions.ts index ff3084441..ff3084441 100644 --- a/cli/tests/testdata/test/ignore_permissions.ts +++ b/tests/testdata/test/ignore_permissions.ts diff --git a/cli/tests/testdata/test/interval.out b/tests/testdata/test/interval.out index 1d0bc15ac..1d0bc15ac 100644 --- a/cli/tests/testdata/test/interval.out +++ b/tests/testdata/test/interval.out diff --git a/cli/tests/testdata/test/interval.ts b/tests/testdata/test/interval.ts index 7eb588c59..7eb588c59 100644 --- a/cli/tests/testdata/test/interval.ts +++ b/tests/testdata/test/interval.ts diff --git a/cli/tests/testdata/test/load_unload.out b/tests/testdata/test/load_unload.out index aef7531af..aef7531af 100644 --- a/cli/tests/testdata/test/load_unload.out +++ b/tests/testdata/test/load_unload.out diff --git a/cli/tests/testdata/test/load_unload.ts b/tests/testdata/test/load_unload.ts index 2bd04a676..2bd04a676 100644 --- a/cli/tests/testdata/test/load_unload.ts +++ b/tests/testdata/test/load_unload.ts diff --git a/cli/tests/testdata/test/markdown.md b/tests/testdata/test/markdown.md index d18dbd108..d18dbd108 100644 --- a/cli/tests/testdata/test/markdown.md +++ b/tests/testdata/test/markdown.md diff --git a/cli/tests/testdata/test/markdown.out b/tests/testdata/test/markdown.out index 38c9f0349..38c9f0349 100644 --- a/cli/tests/testdata/test/markdown.out +++ b/tests/testdata/test/markdown.out diff --git a/cli/tests/testdata/test/markdown_full_block_names.md b/tests/testdata/test/markdown_full_block_names.md index 4f9e1ea51..4f9e1ea51 100644 --- a/cli/tests/testdata/test/markdown_full_block_names.md +++ b/tests/testdata/test/markdown_full_block_names.md diff --git a/cli/tests/testdata/test/markdown_full_block_names.out b/tests/testdata/test/markdown_full_block_names.out index 13051112e..13051112e 100644 --- a/cli/tests/testdata/test/markdown_full_block_names.out +++ b/tests/testdata/test/markdown_full_block_names.out diff --git a/cli/tests/testdata/test/markdown_windows.md b/tests/testdata/test/markdown_windows.md index d18dbd108..d18dbd108 100644 --- a/cli/tests/testdata/test/markdown_windows.md +++ b/tests/testdata/test/markdown_windows.md diff --git a/cli/tests/testdata/test/markdown_windows.out b/tests/testdata/test/markdown_windows.out index 4810e50cd..4810e50cd 100644 --- a/cli/tests/testdata/test/markdown_windows.out +++ b/tests/testdata/test/markdown_windows.out diff --git a/cli/tests/testdata/test/markdown_with_comment.md b/tests/testdata/test/markdown_with_comment.md index 886e88103..886e88103 100644 --- a/cli/tests/testdata/test/markdown_with_comment.md +++ b/tests/testdata/test/markdown_with_comment.md diff --git a/cli/tests/testdata/test/markdown_with_comment.out b/tests/testdata/test/markdown_with_comment.out index b202919d8..b202919d8 100644 --- a/cli/tests/testdata/test/markdown_with_comment.out +++ b/tests/testdata/test/markdown_with_comment.out diff --git a/cli/tests/testdata/test/meta.out b/tests/testdata/test/meta.out index c46315ece..c46315ece 100644 --- a/cli/tests/testdata/test/meta.out +++ b/tests/testdata/test/meta.out diff --git a/cli/tests/testdata/test/meta.ts b/tests/testdata/test/meta.ts index f2433a96d..f2433a96d 100644 --- a/cli/tests/testdata/test/meta.ts +++ b/tests/testdata/test/meta.ts diff --git a/cli/tests/testdata/test/no_check.out b/tests/testdata/test/no_check.out index 66ad07e26..66ad07e26 100644 --- a/cli/tests/testdata/test/no_check.out +++ b/tests/testdata/test/no_check.out diff --git a/cli/tests/testdata/test/no_check.ts b/tests/testdata/test/no_check.ts index 79d75f989..79d75f989 100644 --- a/cli/tests/testdata/test/no_check.ts +++ b/tests/testdata/test/no_check.ts diff --git a/cli/tests/testdata/test/no_color.ts b/tests/testdata/test/no_color.ts index 38c531ee9..38c531ee9 100644 --- a/cli/tests/testdata/test/no_color.ts +++ b/tests/testdata/test/no_color.ts diff --git a/cli/tests/testdata/test/no_prompt_by_default.out b/tests/testdata/test/no_prompt_by_default.out index a35e3f7ae..a35e3f7ae 100644 --- a/cli/tests/testdata/test/no_prompt_by_default.out +++ b/tests/testdata/test/no_prompt_by_default.out diff --git a/cli/tests/testdata/test/no_prompt_by_default.ts b/tests/testdata/test/no_prompt_by_default.ts index 83837825d..83837825d 100644 --- a/cli/tests/testdata/test/no_prompt_by_default.ts +++ b/tests/testdata/test/no_prompt_by_default.ts diff --git a/cli/tests/testdata/test/no_prompt_with_denied_perms.out b/tests/testdata/test/no_prompt_with_denied_perms.out index 4293ff1bb..4293ff1bb 100644 --- a/cli/tests/testdata/test/no_prompt_with_denied_perms.out +++ b/tests/testdata/test/no_prompt_with_denied_perms.out diff --git a/cli/tests/testdata/test/no_prompt_with_denied_perms.ts b/tests/testdata/test/no_prompt_with_denied_perms.ts index 7fe5577cb..7fe5577cb 100644 --- a/cli/tests/testdata/test/no_prompt_with_denied_perms.ts +++ b/tests/testdata/test/no_prompt_with_denied_perms.ts diff --git a/cli/tests/testdata/test/no_run.out b/tests/testdata/test/no_run.out index 5edf03fe0..5edf03fe0 100644 --- a/cli/tests/testdata/test/no_run.out +++ b/tests/testdata/test/no_run.out diff --git a/cli/tests/testdata/test/no_run.ts b/tests/testdata/test/no_run.ts index b75915753..b75915753 100644 --- a/cli/tests/testdata/test/no_run.ts +++ b/tests/testdata/test/no_run.ts diff --git a/cli/tests/testdata/test/non_error_thrown.out b/tests/testdata/test/non_error_thrown.out index 6755f2905..6755f2905 100644 --- a/cli/tests/testdata/test/non_error_thrown.out +++ b/tests/testdata/test/non_error_thrown.out diff --git a/cli/tests/testdata/test/non_error_thrown.ts b/tests/testdata/test/non_error_thrown.ts index 85dc8d179..85dc8d179 100644 --- a/cli/tests/testdata/test/non_error_thrown.ts +++ b/tests/testdata/test/non_error_thrown.ts diff --git a/cli/tests/testdata/test/only.out b/tests/testdata/test/only.out index 2e66ed22b..2e66ed22b 100644 --- a/cli/tests/testdata/test/only.out +++ b/tests/testdata/test/only.out diff --git a/cli/tests/testdata/test/only.ts b/tests/testdata/test/only.ts index 26b4cd425..26b4cd425 100644 --- a/cli/tests/testdata/test/only.ts +++ b/tests/testdata/test/only.ts diff --git a/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out b/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out new file mode 100644 index 000000000..0a8cc2245 --- /dev/null +++ b/tests/testdata/test/ops_sanitizer_closed_inside_started_before.out @@ -0,0 +1,19 @@ +Check [WILDCARD]test/ops_sanitizer_closed_inside_started_before.ts +running 1 test from ./test/ops_sanitizer_closed_inside_started_before.ts +test 1 ... FAILED [WILDCARD] + + ERRORS + +test 1 => ./test/ops_sanitizer_closed_inside_started_before.ts:[WILDCARD] +error: Leaking async ops: + - 1 async operation to sleep for a duration was started before this test, but was completed during the test. Async operations should not complete in a test if they were not started in that test. This is often caused by not cancelling a `setTimeout` or `setInterval` call. The operation was started here: + at [WILDCARD] + at [WILDCARD]/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts:[WILDCARD] + + FAILURES + +test 1 => ./test/ops_sanitizer_closed_inside_started_before.ts:[WILDCARD] + +FAILED | 0 passed | 1 failed [WILDCARD] + +error: Test failed diff --git a/cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts b/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts index 97d3d72c8..97d3d72c8 100644 --- a/cli/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts +++ b/tests/testdata/test/ops_sanitizer_closed_inside_started_before.ts diff --git a/cli/tests/testdata/test/ops_sanitizer_missing_details.out b/tests/testdata/test/ops_sanitizer_missing_details.out index 36191912a..36191912a 100644 --- a/cli/tests/testdata/test/ops_sanitizer_missing_details.out +++ b/tests/testdata/test/ops_sanitizer_missing_details.out diff --git a/tests/testdata/test/ops_sanitizer_missing_details.ts b/tests/testdata/test/ops_sanitizer_missing_details.ts new file mode 100644 index 000000000..a40240bfc --- /dev/null +++ b/tests/testdata/test/ops_sanitizer_missing_details.ts @@ -0,0 +1,10 @@ +// https://github.com/denoland/deno/issues/13729 +// https://github.com/denoland/deno/issues/13938 +import { writeAll } from "../../../test_util/std/streams/write_all.ts"; + +Deno.test("test 1", { permissions: { write: true, read: true } }, async () => { + const tmpFile = await Deno.makeTempFile(); + const file = await Deno.open(tmpFile, { write: true }); + const buf = new Uint8Array(new Array(1_000_000).fill(1)); + writeAll(file, buf); +}); diff --git a/cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.out b/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.out index d7ccc6a00..d7ccc6a00 100644 --- a/cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.out +++ b/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.out diff --git a/cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.ts b/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.ts index 1f52d481f..1f52d481f 100644 --- a/cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.ts +++ b/tests/testdata/test/ops_sanitizer_multiple_timeout_tests.ts diff --git a/cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests_no_trace.out b/tests/testdata/test/ops_sanitizer_multiple_timeout_tests_no_trace.out index 1655c162f..1655c162f 100644 --- a/cli/tests/testdata/test/ops_sanitizer_multiple_timeout_tests_no_trace.out +++ b/tests/testdata/test/ops_sanitizer_multiple_timeout_tests_no_trace.out diff --git a/cli/tests/testdata/test/ops_sanitizer_nexttick.out b/tests/testdata/test/ops_sanitizer_nexttick.out index 44a8d13d5..44a8d13d5 100644 --- a/cli/tests/testdata/test/ops_sanitizer_nexttick.out +++ b/tests/testdata/test/ops_sanitizer_nexttick.out diff --git a/cli/tests/testdata/test/ops_sanitizer_nexttick.ts b/tests/testdata/test/ops_sanitizer_nexttick.ts index 9ad3a7b28..9ad3a7b28 100644 --- a/cli/tests/testdata/test/ops_sanitizer_nexttick.ts +++ b/tests/testdata/test/ops_sanitizer_nexttick.ts diff --git a/tests/testdata/test/ops_sanitizer_step_leak.out b/tests/testdata/test/ops_sanitizer_step_leak.out new file mode 100644 index 000000000..55c89582a --- /dev/null +++ b/tests/testdata/test/ops_sanitizer_step_leak.out @@ -0,0 +1,10 @@ +Check [WILDCARD]/tests/testdata/test/ops_sanitizer_step_leak.ts +running 1 test from ./tests/testdata/test/ops_sanitizer_step_leak.ts +timeout ... + step ... ok [WILDCARD] +------- output ------- +done +----- output end ----- +timeout ... ok [WILDCARD] + +ok | 1 passed (1 step) | 0 failed [WILDCARD]
\ No newline at end of file diff --git a/cli/tests/testdata/test/ops_sanitizer_step_leak.ts b/tests/testdata/test/ops_sanitizer_step_leak.ts index 3fb9b397e..3fb9b397e 100644 --- a/cli/tests/testdata/test/ops_sanitizer_step_leak.ts +++ b/tests/testdata/test/ops_sanitizer_step_leak.ts diff --git a/cli/tests/testdata/test/ops_sanitizer_timeout_failure.out b/tests/testdata/test/ops_sanitizer_timeout_failure.out index a4fbf0008..a4fbf0008 100644 --- a/cli/tests/testdata/test/ops_sanitizer_timeout_failure.out +++ b/tests/testdata/test/ops_sanitizer_timeout_failure.out diff --git a/cli/tests/testdata/test/ops_sanitizer_timeout_failure.ts b/tests/testdata/test/ops_sanitizer_timeout_failure.ts index d40a5a258..d40a5a258 100644 --- a/cli/tests/testdata/test/ops_sanitizer_timeout_failure.ts +++ b/tests/testdata/test/ops_sanitizer_timeout_failure.ts diff --git a/cli/tests/testdata/test/ops_sanitizer_unstable.out b/tests/testdata/test/ops_sanitizer_unstable.out index a4f47a749..a4f47a749 100644 --- a/cli/tests/testdata/test/ops_sanitizer_unstable.out +++ b/tests/testdata/test/ops_sanitizer_unstable.out diff --git a/cli/tests/testdata/test/ops_sanitizer_unstable.ts b/tests/testdata/test/ops_sanitizer_unstable.ts index d1b554adf..d1b554adf 100644 --- a/cli/tests/testdata/test/ops_sanitizer_unstable.ts +++ b/tests/testdata/test/ops_sanitizer_unstable.ts diff --git a/cli/tests/testdata/test/overloads.out b/tests/testdata/test/overloads.out index 87a3f07cb..87a3f07cb 100644 --- a/cli/tests/testdata/test/overloads.out +++ b/tests/testdata/test/overloads.out diff --git a/cli/tests/testdata/test/overloads.ts b/tests/testdata/test/overloads.ts index eb7b3dccc..eb7b3dccc 100644 --- a/cli/tests/testdata/test/overloads.ts +++ b/tests/testdata/test/overloads.ts diff --git a/cli/tests/testdata/test/parallel_output.out b/tests/testdata/test/parallel_output.out index d3528a6e0..d3528a6e0 100644 --- a/cli/tests/testdata/test/parallel_output.out +++ b/tests/testdata/test/parallel_output.out diff --git a/cli/tests/testdata/test/parallel_output.ts b/tests/testdata/test/parallel_output.ts index 5de733aad..5de733aad 100644 --- a/cli/tests/testdata/test/parallel_output.ts +++ b/tests/testdata/test/parallel_output.ts diff --git a/cli/tests/testdata/test/pass.junit.out b/tests/testdata/test/pass.junit.out index b652dbf85..b652dbf85 100644 --- a/cli/tests/testdata/test/pass.junit.out +++ b/tests/testdata/test/pass.junit.out diff --git a/cli/tests/testdata/test/pass.out b/tests/testdata/test/pass.out index 08b9f5a52..08b9f5a52 100644 --- a/cli/tests/testdata/test/pass.out +++ b/tests/testdata/test/pass.out diff --git a/cli/tests/testdata/test/pass.ts b/tests/testdata/test/pass.ts index c4c0f45dc..c4c0f45dc 100644 --- a/cli/tests/testdata/test/pass.ts +++ b/tests/testdata/test/pass.ts diff --git a/cli/tests/testdata/test/quiet.out b/tests/testdata/test/quiet.out index 83dbe6ba9..83dbe6ba9 100644 --- a/cli/tests/testdata/test/quiet.out +++ b/tests/testdata/test/quiet.out diff --git a/cli/tests/testdata/test/quiet.ts b/tests/testdata/test/quiet.ts index f40805bfb..f40805bfb 100644 --- a/cli/tests/testdata/test/quiet.ts +++ b/tests/testdata/test/quiet.ts diff --git a/cli/tests/testdata/test/recursive_permissions_pledge.js b/tests/testdata/test/recursive_permissions_pledge.js index 9bf320c37..9bf320c37 100644 --- a/cli/tests/testdata/test/recursive_permissions_pledge.js +++ b/tests/testdata/test/recursive_permissions_pledge.js diff --git a/cli/tests/testdata/test/relative_pattern_dot_slash/deno.json b/tests/testdata/test/relative_pattern_dot_slash/deno.json index 7c2c4a5d3..7c2c4a5d3 100644 --- a/cli/tests/testdata/test/relative_pattern_dot_slash/deno.json +++ b/tests/testdata/test/relative_pattern_dot_slash/deno.json diff --git a/cli/tests/testdata/test/relative_pattern_dot_slash/output.out b/tests/testdata/test/relative_pattern_dot_slash/output.out index be2961cff..be2961cff 100644 --- a/cli/tests/testdata/test/relative_pattern_dot_slash/output.out +++ b/tests/testdata/test/relative_pattern_dot_slash/output.out diff --git a/cli/tests/testdata/test/relative_pattern_dot_slash/test/add.mjs b/tests/testdata/test/relative_pattern_dot_slash/test/add.mjs index 7d658310b..7d658310b 100644 --- a/cli/tests/testdata/test/relative_pattern_dot_slash/test/add.mjs +++ b/tests/testdata/test/relative_pattern_dot_slash/test/add.mjs diff --git a/cli/tests/testdata/test/relative_pattern_dot_slash/test/add.test.mjs b/tests/testdata/test/relative_pattern_dot_slash/test/add.test.mjs index 7b21d2fbc..7b21d2fbc 100644 --- a/cli/tests/testdata/test/relative_pattern_dot_slash/test/add.test.mjs +++ b/tests/testdata/test/relative_pattern_dot_slash/test/add.test.mjs diff --git a/cli/tests/testdata/test/replace_timers.js b/tests/testdata/test/replace_timers.js index 692f1d671..692f1d671 100644 --- a/cli/tests/testdata/test/replace_timers.js +++ b/tests/testdata/test/replace_timers.js diff --git a/cli/tests/testdata/test/replace_timers.js.out b/tests/testdata/test/replace_timers.js.out index 81beb5ebe..81beb5ebe 100644 --- a/cli/tests/testdata/test/replace_timers.js.out +++ b/tests/testdata/test/replace_timers.js.out diff --git a/cli/tests/testdata/test/report_error.out b/tests/testdata/test/report_error.out index 698550f97..698550f97 100644 --- a/cli/tests/testdata/test/report_error.out +++ b/tests/testdata/test/report_error.out diff --git a/cli/tests/testdata/test/report_error.ts b/tests/testdata/test/report_error.ts index 56b6db26c..56b6db26c 100644 --- a/cli/tests/testdata/test/report_error.ts +++ b/tests/testdata/test/report_error.ts diff --git a/cli/tests/testdata/test/resource_sanitizer.out b/tests/testdata/test/resource_sanitizer.out index 655dd2a17..655dd2a17 100644 --- a/cli/tests/testdata/test/resource_sanitizer.out +++ b/tests/testdata/test/resource_sanitizer.out diff --git a/cli/tests/testdata/test/resource_sanitizer.ts b/tests/testdata/test/resource_sanitizer.ts index 93c9222c5..93c9222c5 100644 --- a/cli/tests/testdata/test/resource_sanitizer.ts +++ b/tests/testdata/test/resource_sanitizer.ts diff --git a/cli/tests/testdata/test/short-pass-jobs-flag-warning.out b/tests/testdata/test/short-pass-jobs-flag-warning.out index 0d9e1fd9b..0d9e1fd9b 100644 --- a/cli/tests/testdata/test/short-pass-jobs-flag-warning.out +++ b/tests/testdata/test/short-pass-jobs-flag-warning.out diff --git a/cli/tests/testdata/test/short-pass.out b/tests/testdata/test/short-pass.out index 3f239de41..3f239de41 100644 --- a/cli/tests/testdata/test/short-pass.out +++ b/tests/testdata/test/short-pass.out diff --git a/cli/tests/testdata/test/short-pass.ts b/tests/testdata/test/short-pass.ts index 03818ae8d..03818ae8d 100644 --- a/cli/tests/testdata/test/short-pass.ts +++ b/tests/testdata/test/short-pass.ts diff --git a/cli/tests/testdata/test/shuffle.out b/tests/testdata/test/shuffle.out index 9037ff518..9037ff518 100644 --- a/cli/tests/testdata/test/shuffle.out +++ b/tests/testdata/test/shuffle.out diff --git a/cli/tests/testdata/test/shuffle/bar_test.ts b/tests/testdata/test/shuffle/bar_test.ts index ca118dc0d..ca118dc0d 100644 --- a/cli/tests/testdata/test/shuffle/bar_test.ts +++ b/tests/testdata/test/shuffle/bar_test.ts diff --git a/cli/tests/testdata/test/shuffle/baz_test.ts b/tests/testdata/test/shuffle/baz_test.ts index ca118dc0d..ca118dc0d 100644 --- a/cli/tests/testdata/test/shuffle/baz_test.ts +++ b/tests/testdata/test/shuffle/baz_test.ts diff --git a/cli/tests/testdata/test/shuffle/foo_test.ts b/tests/testdata/test/shuffle/foo_test.ts index ca118dc0d..ca118dc0d 100644 --- a/cli/tests/testdata/test/shuffle/foo_test.ts +++ b/tests/testdata/test/shuffle/foo_test.ts diff --git a/cli/tests/testdata/test/sigint_with_hanging_test.out b/tests/testdata/test/sigint_with_hanging_test.out index c590c2192..c590c2192 100644 --- a/cli/tests/testdata/test/sigint_with_hanging_test.out +++ b/tests/testdata/test/sigint_with_hanging_test.out diff --git a/cli/tests/testdata/test/sigint_with_hanging_test.ts b/tests/testdata/test/sigint_with_hanging_test.ts index 07b126e98..07b126e98 100644 --- a/cli/tests/testdata/test/sigint_with_hanging_test.ts +++ b/tests/testdata/test/sigint_with_hanging_test.ts diff --git a/cli/tests/testdata/test/steps/failing_steps.dot.out b/tests/testdata/test/steps/failing_steps.dot.out index f8ba8d8e6..f8ba8d8e6 100644 --- a/cli/tests/testdata/test/steps/failing_steps.dot.out +++ b/tests/testdata/test/steps/failing_steps.dot.out diff --git a/cli/tests/testdata/test/steps/failing_steps.out b/tests/testdata/test/steps/failing_steps.out index 4b717f5cc..4b717f5cc 100644 --- a/cli/tests/testdata/test/steps/failing_steps.out +++ b/tests/testdata/test/steps/failing_steps.out diff --git a/cli/tests/testdata/test/steps/failing_steps.tap.out b/tests/testdata/test/steps/failing_steps.tap.out index 11b289f08..11b289f08 100644 --- a/cli/tests/testdata/test/steps/failing_steps.tap.out +++ b/tests/testdata/test/steps/failing_steps.tap.out diff --git a/cli/tests/testdata/test/steps/failing_steps.ts b/tests/testdata/test/steps/failing_steps.ts index efa18d54e..efa18d54e 100644 --- a/cli/tests/testdata/test/steps/failing_steps.ts +++ b/tests/testdata/test/steps/failing_steps.ts diff --git a/cli/tests/testdata/test/steps/ignored_steps.dot.out b/tests/testdata/test/steps/ignored_steps.dot.out index 442a06c62..442a06c62 100644 --- a/cli/tests/testdata/test/steps/ignored_steps.dot.out +++ b/tests/testdata/test/steps/ignored_steps.dot.out diff --git a/cli/tests/testdata/test/steps/ignored_steps.out b/tests/testdata/test/steps/ignored_steps.out index 2786e1e1a..2786e1e1a 100644 --- a/cli/tests/testdata/test/steps/ignored_steps.out +++ b/tests/testdata/test/steps/ignored_steps.out diff --git a/cli/tests/testdata/test/steps/ignored_steps.tap.out b/tests/testdata/test/steps/ignored_steps.tap.out index b2b2f5070..b2b2f5070 100644 --- a/cli/tests/testdata/test/steps/ignored_steps.tap.out +++ b/tests/testdata/test/steps/ignored_steps.tap.out diff --git a/cli/tests/testdata/test/steps/ignored_steps.ts b/tests/testdata/test/steps/ignored_steps.ts index 102b481fb..102b481fb 100644 --- a/cli/tests/testdata/test/steps/ignored_steps.ts +++ b/tests/testdata/test/steps/ignored_steps.ts diff --git a/cli/tests/testdata/test/steps/invalid_usage.out b/tests/testdata/test/steps/invalid_usage.out index 4b82befae..4b82befae 100644 --- a/cli/tests/testdata/test/steps/invalid_usage.out +++ b/tests/testdata/test/steps/invalid_usage.out diff --git a/cli/tests/testdata/test/steps/invalid_usage.ts b/tests/testdata/test/steps/invalid_usage.ts index 1acfc874c..1acfc874c 100644 --- a/cli/tests/testdata/test/steps/invalid_usage.ts +++ b/tests/testdata/test/steps/invalid_usage.ts diff --git a/cli/tests/testdata/test/steps/output_within.out b/tests/testdata/test/steps/output_within.out index d58722daa..d58722daa 100644 --- a/cli/tests/testdata/test/steps/output_within.out +++ b/tests/testdata/test/steps/output_within.out diff --git a/cli/tests/testdata/test/steps/output_within.ts b/tests/testdata/test/steps/output_within.ts index d3438a8ad..d3438a8ad 100644 --- a/cli/tests/testdata/test/steps/output_within.ts +++ b/tests/testdata/test/steps/output_within.ts diff --git a/cli/tests/testdata/test/steps/passing_steps.dot.out b/tests/testdata/test/steps/passing_steps.dot.out index 243cacd69..243cacd69 100644 --- a/cli/tests/testdata/test/steps/passing_steps.dot.out +++ b/tests/testdata/test/steps/passing_steps.dot.out diff --git a/cli/tests/testdata/test/steps/passing_steps.out b/tests/testdata/test/steps/passing_steps.out index 0757a4ed3..0757a4ed3 100644 --- a/cli/tests/testdata/test/steps/passing_steps.out +++ b/tests/testdata/test/steps/passing_steps.out diff --git a/cli/tests/testdata/test/steps/passing_steps.tap.out b/tests/testdata/test/steps/passing_steps.tap.out index 20a9fa312..20a9fa312 100644 --- a/cli/tests/testdata/test/steps/passing_steps.tap.out +++ b/tests/testdata/test/steps/passing_steps.tap.out diff --git a/cli/tests/testdata/test/steps/passing_steps.ts b/tests/testdata/test/steps/passing_steps.ts index fd145954b..fd145954b 100644 --- a/cli/tests/testdata/test/steps/passing_steps.ts +++ b/tests/testdata/test/steps/passing_steps.ts diff --git a/cli/tests/testdata/test/text.md b/tests/testdata/test/text.md index be89d24bf..be89d24bf 100644 --- a/cli/tests/testdata/test/text.md +++ b/tests/testdata/test/text.md diff --git a/cli/tests/testdata/test/text.out b/tests/testdata/test/text.out index f1b7f7d01..f1b7f7d01 100644 --- a/cli/tests/testdata/test/text.out +++ b/tests/testdata/test/text.out diff --git a/cli/tests/testdata/test/trace_ops_caught_error/main.out b/tests/testdata/test/trace_ops_caught_error/main.out index 192ed3a6d..192ed3a6d 100644 --- a/cli/tests/testdata/test/trace_ops_caught_error/main.out +++ b/tests/testdata/test/trace_ops_caught_error/main.out diff --git a/cli/tests/testdata/test/trace_ops_caught_error/main.ts b/tests/testdata/test/trace_ops_caught_error/main.ts index 8194a8b2a..8194a8b2a 100644 --- a/cli/tests/testdata/test/trace_ops_caught_error/main.ts +++ b/tests/testdata/test/trace_ops_caught_error/main.ts diff --git a/cli/tests/testdata/test/uncaught_errors.out b/tests/testdata/test/uncaught_errors.out index a52f95d57..a52f95d57 100644 --- a/cli/tests/testdata/test/uncaught_errors.out +++ b/tests/testdata/test/uncaught_errors.out diff --git a/cli/tests/testdata/test/uncaught_errors_1.ts b/tests/testdata/test/uncaught_errors_1.ts index 166b23ac3..166b23ac3 100644 --- a/cli/tests/testdata/test/uncaught_errors_1.ts +++ b/tests/testdata/test/uncaught_errors_1.ts diff --git a/cli/tests/testdata/test/uncaught_errors_2.ts b/tests/testdata/test/uncaught_errors_2.ts index 8cafbe291..8cafbe291 100644 --- a/cli/tests/testdata/test/uncaught_errors_2.ts +++ b/tests/testdata/test/uncaught_errors_2.ts diff --git a/cli/tests/testdata/test/uncaught_errors_3.ts b/tests/testdata/test/uncaught_errors_3.ts index cb2a55036..cb2a55036 100644 --- a/cli/tests/testdata/test/uncaught_errors_3.ts +++ b/tests/testdata/test/uncaught_errors_3.ts diff --git a/cli/tests/testdata/test/unhandled_rejection.out b/tests/testdata/test/unhandled_rejection.out index bc8387929..bc8387929 100644 --- a/cli/tests/testdata/test/unhandled_rejection.out +++ b/tests/testdata/test/unhandled_rejection.out diff --git a/cli/tests/testdata/test/unhandled_rejection.ts b/tests/testdata/test/unhandled_rejection.ts index 32f3111ea..32f3111ea 100644 --- a/cli/tests/testdata/test/unhandled_rejection.ts +++ b/tests/testdata/test/unhandled_rejection.ts diff --git a/cli/tests/testdata/test/unresolved_promise.out b/tests/testdata/test/unresolved_promise.out index 88535e171..88535e171 100644 --- a/cli/tests/testdata/test/unresolved_promise.out +++ b/tests/testdata/test/unresolved_promise.out diff --git a/cli/tests/testdata/test/unresolved_promise.ts b/tests/testdata/test/unresolved_promise.ts index 25fe70762..25fe70762 100644 --- a/cli/tests/testdata/test/unresolved_promise.ts +++ b/tests/testdata/test/unresolved_promise.ts diff --git a/cli/tests/testdata/tls/README.md b/tests/testdata/tls/README.md index 19bbaec35..19bbaec35 100644 --- a/cli/tests/testdata/tls/README.md +++ b/tests/testdata/tls/README.md diff --git a/cli/tests/testdata/tls/RootCA.crt b/tests/testdata/tls/RootCA.crt index c2f84ceeb..c2f84ceeb 100644 --- a/cli/tests/testdata/tls/RootCA.crt +++ b/tests/testdata/tls/RootCA.crt diff --git a/cli/tests/testdata/tls/RootCA.key b/tests/testdata/tls/RootCA.key index 98ce53b0b..98ce53b0b 100644 --- a/cli/tests/testdata/tls/RootCA.key +++ b/tests/testdata/tls/RootCA.key diff --git a/cli/tests/testdata/tls/RootCA.pem b/tests/testdata/tls/RootCA.pem index c2f84ceeb..c2f84ceeb 100644 --- a/cli/tests/testdata/tls/RootCA.pem +++ b/tests/testdata/tls/RootCA.pem diff --git a/cli/tests/testdata/tls/domains.txt b/tests/testdata/tls/domains.txt index 0bba95d33..0bba95d33 100644 --- a/cli/tests/testdata/tls/domains.txt +++ b/tests/testdata/tls/domains.txt diff --git a/cli/tests/testdata/tls/invalid.crt b/tests/testdata/tls/invalid.crt index 688e32ede..688e32ede 100644 --- a/cli/tests/testdata/tls/invalid.crt +++ b/tests/testdata/tls/invalid.crt diff --git a/cli/tests/testdata/tls/invalid.key b/tests/testdata/tls/invalid.key index b57bc2f68..b57bc2f68 100644 --- a/cli/tests/testdata/tls/invalid.key +++ b/tests/testdata/tls/invalid.key diff --git a/cli/tests/testdata/tls/localhost.crt b/tests/testdata/tls/localhost.crt index a71ae9050..a71ae9050 100644 --- a/cli/tests/testdata/tls/localhost.crt +++ b/tests/testdata/tls/localhost.crt diff --git a/cli/tests/testdata/tls/localhost.key b/tests/testdata/tls/localhost.key index 42774c977..42774c977 100644 --- a/cli/tests/testdata/tls/localhost.key +++ b/tests/testdata/tls/localhost.key diff --git a/cli/tests/testdata/tsc/a.js b/tests/testdata/tsc/a.js index 5a7b3ff93..5a7b3ff93 100644 --- a/cli/tests/testdata/tsc/a.js +++ b/tests/testdata/tsc/a.js diff --git a/cli/tests/testdata/tsc/d.ts b/tests/testdata/tsc/d.ts index 3c74b8c83..3c74b8c83 100644 --- a/cli/tests/testdata/tsc/d.ts +++ b/tests/testdata/tsc/d.ts diff --git a/cli/tests/testdata/tsc/node_modules/b.js b/tests/testdata/tsc/node_modules/b.js index 191660935..191660935 100644 --- a/cli/tests/testdata/tsc/node_modules/b.js +++ b/tests/testdata/tsc/node_modules/b.js diff --git a/cli/tests/testdata/tsc/node_modules/c.js b/tests/testdata/tsc/node_modules/c.js index cff71c44a..cff71c44a 100644 --- a/cli/tests/testdata/tsc/node_modules/c.js +++ b/tests/testdata/tsc/node_modules/c.js diff --git a/cli/tests/testdata/tsc/test.js b/tests/testdata/tsc/test.js index b7f46b351..b7f46b351 100644 --- a/cli/tests/testdata/tsc/test.js +++ b/tests/testdata/tsc/test.js diff --git a/cli/tests/testdata/tsc2/file_exportc.ts b/tests/testdata/tsc2/file_exportc.ts index efcc5bb46..efcc5bb46 100644 --- a/cli/tests/testdata/tsc2/file_exportc.ts +++ b/tests/testdata/tsc2/file_exportc.ts diff --git a/cli/tests/testdata/tsc2/file_libref.ts b/tests/testdata/tsc2/file_libref.ts index 6f37da139..6f37da139 100644 --- a/cli/tests/testdata/tsc2/file_libref.ts +++ b/tests/testdata/tsc2/file_libref.ts diff --git a/cli/tests/testdata/tsc2/file_main.ts b/tests/testdata/tsc2/file_main.ts index a45477fde..a45477fde 100644 --- a/cli/tests/testdata/tsc2/file_main.ts +++ b/tests/testdata/tsc2/file_main.ts diff --git a/cli/tests/testdata/tsc2/file_reexports.ts b/tests/testdata/tsc2/file_reexports.ts index b26297423..b26297423 100644 --- a/cli/tests/testdata/tsc2/file_reexports.ts +++ b/tests/testdata/tsc2/file_reexports.ts diff --git a/cli/tests/testdata/tsc2/https_deno.land-x-a.ts b/tests/testdata/tsc2/https_deno.land-x-a.ts index 72b3a67bc..72b3a67bc 100644 --- a/cli/tests/testdata/tsc2/https_deno.land-x-a.ts +++ b/tests/testdata/tsc2/https_deno.land-x-a.ts diff --git a/cli/tests/testdata/tsc2/https_deno.land-x-b.ts b/tests/testdata/tsc2/https_deno.land-x-b.ts index 59d168993..59d168993 100644 --- a/cli/tests/testdata/tsc2/https_deno.land-x-b.ts +++ b/tests/testdata/tsc2/https_deno.land-x-b.ts diff --git a/cli/tests/testdata/tsc2/https_deno.land-x-c.d.ts b/tests/testdata/tsc2/https_deno.land-x-c.d.ts index bf3a09240..bf3a09240 100644 --- a/cli/tests/testdata/tsc2/https_deno.land-x-c.d.ts +++ b/tests/testdata/tsc2/https_deno.land-x-c.d.ts diff --git a/cli/tests/testdata/tsc2/https_deno.land-x-c.js b/tests/testdata/tsc2/https_deno.land-x-c.js index 7f2cfac77..7f2cfac77 100644 --- a/cli/tests/testdata/tsc2/https_deno.land-x-c.js +++ b/tests/testdata/tsc2/https_deno.land-x-c.js diff --git a/cli/tests/testdata/tsc2/https_deno.land-x-mod.ts b/tests/testdata/tsc2/https_deno.land-x-mod.ts index a45477fde..a45477fde 100644 --- a/cli/tests/testdata/tsc2/https_deno.land-x-mod.ts +++ b/tests/testdata/tsc2/https_deno.land-x-mod.ts diff --git a/cli/tests/testdata/type_definitions/bar.d.ts b/tests/testdata/type_definitions/bar.d.ts index d43335dbb..d43335dbb 100644 --- a/cli/tests/testdata/type_definitions/bar.d.ts +++ b/tests/testdata/type_definitions/bar.d.ts diff --git a/cli/tests/testdata/type_definitions/bar.js b/tests/testdata/type_definitions/bar.js index e9c2e5193..e9c2e5193 100644 --- a/cli/tests/testdata/type_definitions/bar.js +++ b/tests/testdata/type_definitions/bar.js diff --git a/cli/tests/testdata/type_definitions/fizz.d.ts b/tests/testdata/type_definitions/fizz.d.ts index 34eb41b96..34eb41b96 100644 --- a/cli/tests/testdata/type_definitions/fizz.d.ts +++ b/tests/testdata/type_definitions/fizz.d.ts diff --git a/cli/tests/testdata/type_definitions/fizz.js b/tests/testdata/type_definitions/fizz.js index 852162c94..852162c94 100644 --- a/cli/tests/testdata/type_definitions/fizz.js +++ b/tests/testdata/type_definitions/fizz.js diff --git a/cli/tests/testdata/type_definitions/foo.d.ts b/tests/testdata/type_definitions/foo.d.ts index ce39201e1..ce39201e1 100644 --- a/cli/tests/testdata/type_definitions/foo.d.ts +++ b/tests/testdata/type_definitions/foo.d.ts diff --git a/cli/tests/testdata/type_definitions/foo.js b/tests/testdata/type_definitions/foo.js index 61d366eb2..61d366eb2 100644 --- a/cli/tests/testdata/type_definitions/foo.js +++ b/tests/testdata/type_definitions/foo.js diff --git a/cli/tests/testdata/type_definitions/qat.ts b/tests/testdata/type_definitions/qat.ts index 6196c9d38..6196c9d38 100644 --- a/cli/tests/testdata/type_definitions/qat.ts +++ b/tests/testdata/type_definitions/qat.ts diff --git a/cli/tests/testdata/types/types.out b/tests/testdata/types/types.out index 089a9381f..089a9381f 100644 --- a/cli/tests/testdata/types/types.out +++ b/tests/testdata/types/types.out diff --git a/cli/tests/testdata/vendor/dynamic.ts b/tests/testdata/vendor/dynamic.ts index e2cbb0e59..e2cbb0e59 100644 --- a/cli/tests/testdata/vendor/dynamic.ts +++ b/tests/testdata/vendor/dynamic.ts diff --git a/cli/tests/testdata/vendor/dynamic_non_analyzable.ts b/tests/testdata/vendor/dynamic_non_analyzable.ts index 1847939f6..1847939f6 100644 --- a/cli/tests/testdata/vendor/dynamic_non_analyzable.ts +++ b/tests/testdata/vendor/dynamic_non_analyzable.ts diff --git a/cli/tests/testdata/vendor/dynamic_non_existent.ts b/tests/testdata/vendor/dynamic_non_existent.ts index a48e2accb..a48e2accb 100644 --- a/cli/tests/testdata/vendor/dynamic_non_existent.ts +++ b/tests/testdata/vendor/dynamic_non_existent.ts diff --git a/cli/tests/testdata/vendor/dynamic_non_existent.ts.out b/tests/testdata/vendor/dynamic_non_existent.ts.out index a1b2ade81..a1b2ade81 100644 --- a/cli/tests/testdata/vendor/dynamic_non_existent.ts.out +++ b/tests/testdata/vendor/dynamic_non_existent.ts.out diff --git a/cli/tests/testdata/vendor/logger.ts b/tests/testdata/vendor/logger.ts index 97f603a48..97f603a48 100644 --- a/cli/tests/testdata/vendor/logger.ts +++ b/tests/testdata/vendor/logger.ts diff --git a/cli/tests/testdata/vendor/mod.ts b/tests/testdata/vendor/mod.ts index 8824d1b2a..8824d1b2a 100644 --- a/cli/tests/testdata/vendor/mod.ts +++ b/tests/testdata/vendor/mod.ts diff --git a/cli/tests/testdata/vendor/npm_and_node_specifier.ts b/tests/testdata/vendor/npm_and_node_specifier.ts index 61962e836..61962e836 100644 --- a/cli/tests/testdata/vendor/npm_and_node_specifier.ts +++ b/tests/testdata/vendor/npm_and_node_specifier.ts diff --git a/cli/tests/testdata/vendor/query_reexport.ts b/tests/testdata/vendor/query_reexport.ts index 5dfafb532..5dfafb532 100644 --- a/cli/tests/testdata/vendor/query_reexport.ts +++ b/tests/testdata/vendor/query_reexport.ts diff --git a/cli/tests/testdata/webcrypto/id_rsaEncryption.pem b/tests/testdata/webcrypto/id_rsaEncryption.pem index 2719e5b11..2719e5b11 100644 --- a/cli/tests/testdata/webcrypto/id_rsaEncryption.pem +++ b/tests/testdata/webcrypto/id_rsaEncryption.pem diff --git a/cli/tests/testdata/webcrypto/id_rsassaPss.pem b/tests/testdata/webcrypto/id_rsassaPss.pem index 938b8f7d8..938b8f7d8 100644 --- a/cli/tests/testdata/webcrypto/id_rsassaPss.pem +++ b/tests/testdata/webcrypto/id_rsassaPss.pem diff --git a/cli/tests/testdata/webcrypto/id_rsassaPss_default.pem b/tests/testdata/webcrypto/id_rsassaPss_default.pem index b2b8dee5c..b2b8dee5c 100644 --- a/cli/tests/testdata/webcrypto/id_rsassaPss_default.pem +++ b/tests/testdata/webcrypto/id_rsassaPss_default.pem diff --git a/cli/tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem b/tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem index 3d34cb013..3d34cb013 100644 --- a/cli/tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem +++ b/tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem diff --git a/cli/tests/testdata/webgpu/computepass_shader.wgsl b/tests/testdata/webgpu/computepass_shader.wgsl index 41af4363a..41af4363a 100644 --- a/cli/tests/testdata/webgpu/computepass_shader.wgsl +++ b/tests/testdata/webgpu/computepass_shader.wgsl diff --git a/cli/tests/testdata/webgpu/hellotriangle.out b/tests/testdata/webgpu/hellotriangle.out Binary files differindex 52972ec9e..52972ec9e 100644 --- a/cli/tests/testdata/webgpu/hellotriangle.out +++ b/tests/testdata/webgpu/hellotriangle.out diff --git a/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl b/tests/testdata/webgpu/hellotriangle_shader.wgsl index f84ccfe94..f84ccfe94 100644 --- a/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl +++ b/tests/testdata/webgpu/hellotriangle_shader.wgsl diff --git a/cli/tests/testdata/welcome.ts b/tests/testdata/welcome.ts index f983ca89b..f983ca89b 100644 --- a/cli/tests/testdata/welcome.ts +++ b/tests/testdata/welcome.ts diff --git a/cli/tests/testdata/workers/async_error.ts b/tests/testdata/workers/async_error.ts index 154b957b1..154b957b1 100644 --- a/cli/tests/testdata/workers/async_error.ts +++ b/tests/testdata/workers/async_error.ts diff --git a/cli/tests/testdata/workers/bench_large_message.ts b/tests/testdata/workers/bench_large_message.ts index 4bab9fb5c..4bab9fb5c 100644 --- a/cli/tests/testdata/workers/bench_large_message.ts +++ b/tests/testdata/workers/bench_large_message.ts diff --git a/cli/tests/testdata/workers/bench_round_robin.ts b/tests/testdata/workers/bench_round_robin.ts index 0380d7979..0380d7979 100644 --- a/cli/tests/testdata/workers/bench_round_robin.ts +++ b/tests/testdata/workers/bench_round_robin.ts diff --git a/cli/tests/testdata/workers/bench_startup.ts b/tests/testdata/workers/bench_startup.ts index a4233d34c..a4233d34c 100644 --- a/cli/tests/testdata/workers/bench_startup.ts +++ b/tests/testdata/workers/bench_startup.ts diff --git a/cli/tests/testdata/workers/bench_worker.ts b/tests/testdata/workers/bench_worker.ts index 1edd2750f..1edd2750f 100644 --- a/cli/tests/testdata/workers/bench_worker.ts +++ b/tests/testdata/workers/bench_worker.ts diff --git a/cli/tests/testdata/workers/broadcast_channel.ts b/tests/testdata/workers/broadcast_channel.ts index 5076e9eb7..5076e9eb7 100644 --- a/cli/tests/testdata/workers/broadcast_channel.ts +++ b/tests/testdata/workers/broadcast_channel.ts diff --git a/cli/tests/testdata/workers/busy_worker.js b/tests/testdata/workers/busy_worker.js index 7deba0321..7deba0321 100644 --- a/cli/tests/testdata/workers/busy_worker.js +++ b/tests/testdata/workers/busy_worker.js diff --git a/cli/tests/testdata/workers/close_in_wasm_reactions.js b/tests/testdata/workers/close_in_wasm_reactions.js index abe573108..abe573108 100644 --- a/cli/tests/testdata/workers/close_in_wasm_reactions.js +++ b/tests/testdata/workers/close_in_wasm_reactions.js diff --git a/cli/tests/testdata/workers/close_nested_child.js b/tests/testdata/workers/close_nested_child.js index 97980c689..97980c689 100644 --- a/cli/tests/testdata/workers/close_nested_child.js +++ b/tests/testdata/workers/close_nested_child.js diff --git a/cli/tests/testdata/workers/close_nested_parent.js b/tests/testdata/workers/close_nested_parent.js index d1fe47553..d1fe47553 100644 --- a/cli/tests/testdata/workers/close_nested_parent.js +++ b/tests/testdata/workers/close_nested_parent.js diff --git a/cli/tests/testdata/workers/close_race_worker.js b/tests/testdata/workers/close_race_worker.js index 6964be34a..6964be34a 100644 --- a/cli/tests/testdata/workers/close_race_worker.js +++ b/tests/testdata/workers/close_race_worker.js diff --git a/cli/tests/testdata/workers/custom_inspect/main.out b/tests/testdata/workers/custom_inspect/main.out index 40d9b88ad..40d9b88ad 100644 --- a/cli/tests/testdata/workers/custom_inspect/main.out +++ b/tests/testdata/workers/custom_inspect/main.out diff --git a/cli/tests/testdata/workers/custom_inspect/main.ts b/tests/testdata/workers/custom_inspect/main.ts index 93d4eec2d..93d4eec2d 100644 --- a/cli/tests/testdata/workers/custom_inspect/main.ts +++ b/tests/testdata/workers/custom_inspect/main.ts diff --git a/cli/tests/testdata/workers/custom_inspect/worker.ts b/tests/testdata/workers/custom_inspect/worker.ts index 5be82724e..5be82724e 100644 --- a/cli/tests/testdata/workers/custom_inspect/worker.ts +++ b/tests/testdata/workers/custom_inspect/worker.ts diff --git a/tests/testdata/workers/deno_worker.ts b/tests/testdata/workers/deno_worker.ts new file mode 100644 index 000000000..cbebde94a --- /dev/null +++ b/tests/testdata/workers/deno_worker.ts @@ -0,0 +1,16 @@ +import { assert } from "../../../test_util/std/assert/mod.ts"; + +onmessage = function (e) { + if (typeof self.Deno === "undefined") { + throw new Error("Deno namespace not available in worker"); + } + + assert(!Object.isFrozen(self.Deno)); + + const desc = Object.getOwnPropertyDescriptor(self, "Deno"); + assert(desc); + assert(desc.configurable); + assert(!desc.writable); + + postMessage(e.data); +}; diff --git a/cli/tests/testdata/workers/drop_handle_race.js b/tests/testdata/workers/drop_handle_race.js index 30676a600..30676a600 100644 --- a/cli/tests/testdata/workers/drop_handle_race.js +++ b/tests/testdata/workers/drop_handle_race.js diff --git a/cli/tests/testdata/workers/dynamic_remote.ts b/tests/testdata/workers/dynamic_remote.ts index 54e4a4714..54e4a4714 100644 --- a/cli/tests/testdata/workers/dynamic_remote.ts +++ b/tests/testdata/workers/dynamic_remote.ts diff --git a/cli/tests/testdata/workers/env_read_check_worker.js b/tests/testdata/workers/env_read_check_worker.js index 72ad31df2..72ad31df2 100644 --- a/cli/tests/testdata/workers/env_read_check_worker.js +++ b/tests/testdata/workers/env_read_check_worker.js diff --git a/cli/tests/testdata/workers/error.ts b/tests/testdata/workers/error.ts index 495971090..495971090 100644 --- a/cli/tests/testdata/workers/error.ts +++ b/tests/testdata/workers/error.ts diff --git a/cli/tests/testdata/workers/error_event.ts b/tests/testdata/workers/error_event.ts index 70e7728ab..70e7728ab 100644 --- a/cli/tests/testdata/workers/error_event.ts +++ b/tests/testdata/workers/error_event.ts diff --git a/cli/tests/testdata/workers/error_event.ts.out b/tests/testdata/workers/error_event.ts.out index 833cca8be..833cca8be 100644 --- a/cli/tests/testdata/workers/error_event.ts.out +++ b/tests/testdata/workers/error_event.ts.out diff --git a/cli/tests/testdata/workers/error_worker_permissions_local.ts b/tests/testdata/workers/error_worker_permissions_local.ts index 1a4b4c0a9..1a4b4c0a9 100644 --- a/cli/tests/testdata/workers/error_worker_permissions_local.ts +++ b/tests/testdata/workers/error_worker_permissions_local.ts diff --git a/cli/tests/testdata/workers/error_worker_permissions_local.ts.out b/tests/testdata/workers/error_worker_permissions_local.ts.out index cacc8ae38..cacc8ae38 100644 --- a/cli/tests/testdata/workers/error_worker_permissions_local.ts.out +++ b/tests/testdata/workers/error_worker_permissions_local.ts.out diff --git a/cli/tests/testdata/workers/error_worker_permissions_remote.ts b/tests/testdata/workers/error_worker_permissions_remote.ts index 878c7080a..878c7080a 100644 --- a/cli/tests/testdata/workers/error_worker_permissions_remote.ts +++ b/tests/testdata/workers/error_worker_permissions_remote.ts diff --git a/cli/tests/testdata/workers/error_worker_permissions_remote.ts.out b/tests/testdata/workers/error_worker_permissions_remote.ts.out index afecff0a8..afecff0a8 100644 --- a/cli/tests/testdata/workers/error_worker_permissions_remote.ts.out +++ b/tests/testdata/workers/error_worker_permissions_remote.ts.out diff --git a/cli/tests/testdata/workers/event_worker.js b/tests/testdata/workers/event_worker.js index 849b6026c..849b6026c 100644 --- a/cli/tests/testdata/workers/event_worker.js +++ b/tests/testdata/workers/event_worker.js diff --git a/cli/tests/testdata/workers/event_worker_scope.js b/tests/testdata/workers/event_worker_scope.js index 0381801a8..0381801a8 100644 --- a/cli/tests/testdata/workers/event_worker_scope.js +++ b/tests/testdata/workers/event_worker_scope.js diff --git a/cli/tests/testdata/workers/fetching_worker.js b/tests/testdata/workers/fetching_worker.js index 77ff471d7..77ff471d7 100644 --- a/cli/tests/testdata/workers/fetching_worker.js +++ b/tests/testdata/workers/fetching_worker.js diff --git a/cli/tests/testdata/workers/http_worker.js b/tests/testdata/workers/http_worker.js index 3cd1625ab..3cd1625ab 100644 --- a/cli/tests/testdata/workers/http_worker.js +++ b/tests/testdata/workers/http_worker.js diff --git a/cli/tests/testdata/workers/image_data_worker.ts b/tests/testdata/workers/image_data_worker.ts index bf920d2f3..bf920d2f3 100644 --- a/cli/tests/testdata/workers/image_data_worker.ts +++ b/tests/testdata/workers/image_data_worker.ts diff --git a/cli/tests/testdata/workers/immediately_close_worker.js b/tests/testdata/workers/immediately_close_worker.js index 8fd27343a..8fd27343a 100644 --- a/cli/tests/testdata/workers/immediately_close_worker.js +++ b/tests/testdata/workers/immediately_close_worker.js diff --git a/cli/tests/testdata/workers/message_before_close.js b/tests/testdata/workers/message_before_close.js index 9364b6d82..9364b6d82 100644 --- a/cli/tests/testdata/workers/message_before_close.js +++ b/tests/testdata/workers/message_before_close.js diff --git a/cli/tests/testdata/workers/message_handler_error.ts b/tests/testdata/workers/message_handler_error.ts index 3416faad1..3416faad1 100644 --- a/cli/tests/testdata/workers/message_handler_error.ts +++ b/tests/testdata/workers/message_handler_error.ts diff --git a/cli/tests/testdata/workers/message_port.ts b/tests/testdata/workers/message_port.ts index d78304a39..d78304a39 100644 --- a/cli/tests/testdata/workers/message_port.ts +++ b/tests/testdata/workers/message_port.ts diff --git a/cli/tests/testdata/workers/nested_worker.js b/tests/testdata/workers/nested_worker.js index 2273cdbfa..2273cdbfa 100644 --- a/cli/tests/testdata/workers/nested_worker.js +++ b/tests/testdata/workers/nested_worker.js diff --git a/cli/tests/testdata/workers/no_permissions_worker.js b/tests/testdata/workers/no_permissions_worker.js index f49f690ab..f49f690ab 100644 --- a/cli/tests/testdata/workers/no_permissions_worker.js +++ b/tests/testdata/workers/no_permissions_worker.js diff --git a/cli/tests/testdata/workers/non_deno_worker.js b/tests/testdata/workers/non_deno_worker.js index 773721560..773721560 100644 --- a/cli/tests/testdata/workers/non_deno_worker.js +++ b/tests/testdata/workers/non_deno_worker.js diff --git a/cli/tests/testdata/workers/nonexistent_worker.out b/tests/testdata/workers/nonexistent_worker.out index a624c0b51..a624c0b51 100644 --- a/cli/tests/testdata/workers/nonexistent_worker.out +++ b/tests/testdata/workers/nonexistent_worker.out diff --git a/cli/tests/testdata/workers/nonexistent_worker.ts b/tests/testdata/workers/nonexistent_worker.ts index b30d08636..b30d08636 100644 --- a/cli/tests/testdata/workers/nonexistent_worker.ts +++ b/tests/testdata/workers/nonexistent_worker.ts diff --git a/cli/tests/testdata/workers/parent_read_check_worker.js b/tests/testdata/workers/parent_read_check_worker.js index 3221fc597..3221fc597 100644 --- a/cli/tests/testdata/workers/parent_read_check_worker.js +++ b/tests/testdata/workers/parent_read_check_worker.js diff --git a/cli/tests/testdata/workers/permission_echo.js b/tests/testdata/workers/permission_echo.js index f492a25f2..f492a25f2 100644 --- a/cli/tests/testdata/workers/permission_echo.js +++ b/tests/testdata/workers/permission_echo.js diff --git a/cli/tests/testdata/workers/permissions_blob_local.ts b/tests/testdata/workers/permissions_blob_local.ts index 52f630bd8..52f630bd8 100644 --- a/cli/tests/testdata/workers/permissions_blob_local.ts +++ b/tests/testdata/workers/permissions_blob_local.ts diff --git a/cli/tests/testdata/workers/permissions_blob_local.ts.out b/tests/testdata/workers/permissions_blob_local.ts.out index 0cd581f7b..0cd581f7b 100644 --- a/cli/tests/testdata/workers/permissions_blob_local.ts.out +++ b/tests/testdata/workers/permissions_blob_local.ts.out diff --git a/cli/tests/testdata/workers/permissions_blob_remote.ts b/tests/testdata/workers/permissions_blob_remote.ts index 4808bc57b..4808bc57b 100644 --- a/cli/tests/testdata/workers/permissions_blob_remote.ts +++ b/tests/testdata/workers/permissions_blob_remote.ts diff --git a/cli/tests/testdata/workers/permissions_blob_remote.ts.out b/tests/testdata/workers/permissions_blob_remote.ts.out index 618f552dc..618f552dc 100644 --- a/cli/tests/testdata/workers/permissions_blob_remote.ts.out +++ b/tests/testdata/workers/permissions_blob_remote.ts.out diff --git a/cli/tests/testdata/workers/permissions_data_local.ts b/tests/testdata/workers/permissions_data_local.ts index cda80bed6..cda80bed6 100644 --- a/cli/tests/testdata/workers/permissions_data_local.ts +++ b/tests/testdata/workers/permissions_data_local.ts diff --git a/cli/tests/testdata/workers/permissions_data_local.ts.out b/tests/testdata/workers/permissions_data_local.ts.out index 4e0f72779..4e0f72779 100644 --- a/cli/tests/testdata/workers/permissions_data_local.ts.out +++ b/tests/testdata/workers/permissions_data_local.ts.out diff --git a/cli/tests/testdata/workers/permissions_data_remote.ts b/tests/testdata/workers/permissions_data_remote.ts index b37bd661d..b37bd661d 100644 --- a/cli/tests/testdata/workers/permissions_data_remote.ts +++ b/tests/testdata/workers/permissions_data_remote.ts diff --git a/cli/tests/testdata/workers/permissions_data_remote.ts.out b/tests/testdata/workers/permissions_data_remote.ts.out index 3f7c8cb63..3f7c8cb63 100644 --- a/cli/tests/testdata/workers/permissions_data_remote.ts.out +++ b/tests/testdata/workers/permissions_data_remote.ts.out diff --git a/cli/tests/testdata/workers/permissions_dynamic_remote.ts b/tests/testdata/workers/permissions_dynamic_remote.ts index 54a361bc0..54a361bc0 100644 --- a/cli/tests/testdata/workers/permissions_dynamic_remote.ts +++ b/tests/testdata/workers/permissions_dynamic_remote.ts diff --git a/cli/tests/testdata/workers/permissions_dynamic_remote.ts.out b/tests/testdata/workers/permissions_dynamic_remote.ts.out index 91f3cc6d5..91f3cc6d5 100644 --- a/cli/tests/testdata/workers/permissions_dynamic_remote.ts.out +++ b/tests/testdata/workers/permissions_dynamic_remote.ts.out diff --git a/cli/tests/testdata/workers/permissions_remote_remote.ts b/tests/testdata/workers/permissions_remote_remote.ts index 4df2a8a5d..4df2a8a5d 100644 --- a/cli/tests/testdata/workers/permissions_remote_remote.ts +++ b/tests/testdata/workers/permissions_remote_remote.ts diff --git a/cli/tests/testdata/workers/permissions_remote_remote.ts.out b/tests/testdata/workers/permissions_remote_remote.ts.out index bb065740a..bb065740a 100644 --- a/cli/tests/testdata/workers/permissions_remote_remote.ts.out +++ b/tests/testdata/workers/permissions_remote_remote.ts.out diff --git a/cli/tests/testdata/workers/post_undefined.ts b/tests/testdata/workers/post_undefined.ts index 1b9b8d6ca..1b9b8d6ca 100644 --- a/cli/tests/testdata/workers/post_undefined.ts +++ b/tests/testdata/workers/post_undefined.ts diff --git a/cli/tests/testdata/workers/racy_worker.js b/tests/testdata/workers/racy_worker.js index 0f66c6278..0f66c6278 100644 --- a/cli/tests/testdata/workers/racy_worker.js +++ b/tests/testdata/workers/racy_worker.js diff --git a/cli/tests/testdata/workers/read_check_granular_worker.js b/tests/testdata/workers/read_check_granular_worker.js index d40fac876..d40fac876 100644 --- a/cli/tests/testdata/workers/read_check_granular_worker.js +++ b/tests/testdata/workers/read_check_granular_worker.js diff --git a/cli/tests/testdata/workers/read_check_worker.js b/tests/testdata/workers/read_check_worker.js index 2ad01bf5b..2ad01bf5b 100644 --- a/cli/tests/testdata/workers/read_check_worker.js +++ b/tests/testdata/workers/read_check_worker.js diff --git a/cli/tests/testdata/workers/shared_array_buffer.ts b/tests/testdata/workers/shared_array_buffer.ts index 4af95863a..4af95863a 100644 --- a/cli/tests/testdata/workers/shared_array_buffer.ts +++ b/tests/testdata/workers/shared_array_buffer.ts diff --git a/cli/tests/testdata/workers/sibling_worker.js b/tests/testdata/workers/sibling_worker.js index 99707e5d6..99707e5d6 100644 --- a/cli/tests/testdata/workers/sibling_worker.js +++ b/tests/testdata/workers/sibling_worker.js diff --git a/cli/tests/testdata/workers/static_remote.ts b/tests/testdata/workers/static_remote.ts index 2d6e820fd..2d6e820fd 100644 --- a/cli/tests/testdata/workers/static_remote.ts +++ b/tests/testdata/workers/static_remote.ts diff --git a/cli/tests/testdata/workers/terminate_tla_crash.js b/tests/testdata/workers/terminate_tla_crash.js index f793b8c8e..f793b8c8e 100644 --- a/cli/tests/testdata/workers/terminate_tla_crash.js +++ b/tests/testdata/workers/terminate_tla_crash.js diff --git a/cli/tests/testdata/workers/terminate_tla_crash.js.out b/tests/testdata/workers/terminate_tla_crash.js.out index e69de29bb..e69de29bb 100644 --- a/cli/tests/testdata/workers/terminate_tla_crash.js.out +++ b/tests/testdata/workers/terminate_tla_crash.js.out diff --git a/cli/tests/testdata/workers/test_worker.js b/tests/testdata/workers/test_worker.js index 2b2d1eeec..2b2d1eeec 100644 --- a/cli/tests/testdata/workers/test_worker.js +++ b/tests/testdata/workers/test_worker.js diff --git a/cli/tests/testdata/workers/test_worker.ts b/tests/testdata/workers/test_worker.ts index 996476058..996476058 100644 --- a/cli/tests/testdata/workers/test_worker.ts +++ b/tests/testdata/workers/test_worker.ts diff --git a/cli/tests/testdata/workers/throwing_worker.js b/tests/testdata/workers/throwing_worker.js index 56ee4ff88..56ee4ff88 100644 --- a/cli/tests/testdata/workers/throwing_worker.js +++ b/tests/testdata/workers/throwing_worker.js diff --git a/cli/tests/testdata/workers/worker_async_error.ts b/tests/testdata/workers/worker_async_error.ts index 7941a5bbe..7941a5bbe 100644 --- a/cli/tests/testdata/workers/worker_async_error.ts +++ b/tests/testdata/workers/worker_async_error.ts diff --git a/cli/tests/testdata/workers/worker_async_error.ts.out b/tests/testdata/workers/worker_async_error.ts.out index 8d017859c..8d017859c 100644 --- a/cli/tests/testdata/workers/worker_async_error.ts.out +++ b/tests/testdata/workers/worker_async_error.ts.out diff --git a/cli/tests/testdata/workers/worker_crypto.js b/tests/testdata/workers/worker_crypto.js index 4398ad068..4398ad068 100644 --- a/cli/tests/testdata/workers/worker_crypto.js +++ b/tests/testdata/workers/worker_crypto.js diff --git a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts b/tests/testdata/workers/worker_doest_stall_event_loop.ts index bfddee2ec..bfddee2ec 100644 --- a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts +++ b/tests/testdata/workers/worker_doest_stall_event_loop.ts diff --git a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out b/tests/testdata/workers/worker_doest_stall_event_loop.ts.out index 5ed65b02f..5ed65b02f 100644 --- a/cli/tests/testdata/workers/worker_doest_stall_event_loop.ts.out +++ b/tests/testdata/workers/worker_doest_stall_event_loop.ts.out diff --git a/cli/tests/testdata/workers/worker_error.ts b/tests/testdata/workers/worker_error.ts index 403223d0a..403223d0a 100644 --- a/cli/tests/testdata/workers/worker_error.ts +++ b/tests/testdata/workers/worker_error.ts diff --git a/cli/tests/testdata/workers/worker_error.ts.out b/tests/testdata/workers/worker_error.ts.out index 1dd017770..1dd017770 100644 --- a/cli/tests/testdata/workers/worker_error.ts.out +++ b/tests/testdata/workers/worker_error.ts.out diff --git a/cli/tests/testdata/workers/worker_event_handlers.js b/tests/testdata/workers/worker_event_handlers.js index 5e457cd2e..5e457cd2e 100644 --- a/cli/tests/testdata/workers/worker_event_handlers.js +++ b/tests/testdata/workers/worker_event_handlers.js diff --git a/cli/tests/testdata/workers/worker_globals.ts b/tests/testdata/workers/worker_globals.ts index 90e369e41..90e369e41 100644 --- a/cli/tests/testdata/workers/worker_globals.ts +++ b/tests/testdata/workers/worker_globals.ts diff --git a/cli/tests/testdata/workers/worker_large_message.js b/tests/testdata/workers/worker_large_message.js index a1ddae4f9..a1ddae4f9 100644 --- a/cli/tests/testdata/workers/worker_large_message.js +++ b/tests/testdata/workers/worker_large_message.js diff --git a/cli/tests/testdata/workers/worker_location.ts b/tests/testdata/workers/worker_location.ts index c3c1bb26f..c3c1bb26f 100644 --- a/cli/tests/testdata/workers/worker_location.ts +++ b/tests/testdata/workers/worker_location.ts diff --git a/cli/tests/testdata/workers/worker_message_handler_error.ts b/tests/testdata/workers/worker_message_handler_error.ts index 355d86770..355d86770 100644 --- a/cli/tests/testdata/workers/worker_message_handler_error.ts +++ b/tests/testdata/workers/worker_message_handler_error.ts diff --git a/cli/tests/testdata/workers/worker_message_handler_error.ts.out b/tests/testdata/workers/worker_message_handler_error.ts.out index 0f97e9703..0f97e9703 100644 --- a/cli/tests/testdata/workers/worker_message_handler_error.ts.out +++ b/tests/testdata/workers/worker_message_handler_error.ts.out diff --git a/cli/tests/testdata/workers/worker_navigator.ts b/tests/testdata/workers/worker_navigator.ts index bd364a8f9..bd364a8f9 100644 --- a/cli/tests/testdata/workers/worker_navigator.ts +++ b/tests/testdata/workers/worker_navigator.ts diff --git a/cli/tests/testdata/workers/worker_nested_error.ts b/tests/testdata/workers/worker_nested_error.ts index 48bdea109..48bdea109 100644 --- a/cli/tests/testdata/workers/worker_nested_error.ts +++ b/tests/testdata/workers/worker_nested_error.ts diff --git a/cli/tests/testdata/workers/worker_nested_error.ts.out b/tests/testdata/workers/worker_nested_error.ts.out index 3622acfb3..3622acfb3 100644 --- a/cli/tests/testdata/workers/worker_nested_error.ts.out +++ b/tests/testdata/workers/worker_nested_error.ts.out diff --git a/cli/tests/testdata/workers/worker_structured_cloning.ts b/tests/testdata/workers/worker_structured_cloning.ts index eb1719a9a..eb1719a9a 100644 --- a/cli/tests/testdata/workers/worker_structured_cloning.ts +++ b/tests/testdata/workers/worker_structured_cloning.ts diff --git a/cli/tests/testdata/workers/worker_types.ts b/tests/testdata/workers/worker_types.ts index b67a3b782..b67a3b782 100644 --- a/cli/tests/testdata/workers/worker_types.ts +++ b/tests/testdata/workers/worker_types.ts diff --git a/cli/tests/testdata/workers/worker_unstable.ts b/tests/testdata/workers/worker_unstable.ts index 219f34e7b..219f34e7b 100644 --- a/cli/tests/testdata/workers/worker_unstable.ts +++ b/tests/testdata/workers/worker_unstable.ts diff --git a/cli/tests/testdata/workers/worker_with_top_level_await.ts b/tests/testdata/workers/worker_with_top_level_await.ts index 1d20bb736..1d20bb736 100644 --- a/cli/tests/testdata/workers/worker_with_top_level_await.ts +++ b/tests/testdata/workers/worker_with_top_level_await.ts diff --git a/cli/tests/unit/README.md b/tests/unit/README.md index af31c08fc..af31c08fc 100644 --- a/cli/tests/unit/README.md +++ b/tests/unit/README.md diff --git a/cli/tests/unit/abort_controller_test.ts b/tests/unit/abort_controller_test.ts index 60ea6aa24..60ea6aa24 100644 --- a/cli/tests/unit/abort_controller_test.ts +++ b/tests/unit/abort_controller_test.ts diff --git a/cli/tests/unit/blob_test.ts b/tests/unit/blob_test.ts index e6623a65c..e6623a65c 100644 --- a/cli/tests/unit/blob_test.ts +++ b/tests/unit/blob_test.ts diff --git a/cli/tests/unit/body_test.ts b/tests/unit/body_test.ts index 18cdb22be..18cdb22be 100644 --- a/cli/tests/unit/body_test.ts +++ b/tests/unit/body_test.ts diff --git a/cli/tests/unit/broadcast_channel_test.ts b/tests/unit/broadcast_channel_test.ts index c5d7f7e7f..c5d7f7e7f 100644 --- a/cli/tests/unit/broadcast_channel_test.ts +++ b/tests/unit/broadcast_channel_test.ts diff --git a/cli/tests/unit/buffer_test.ts b/tests/unit/buffer_test.ts index 9d7e51a95..9d7e51a95 100644 --- a/cli/tests/unit/buffer_test.ts +++ b/tests/unit/buffer_test.ts diff --git a/cli/tests/unit/build_test.ts b/tests/unit/build_test.ts index f697b64d3..f697b64d3 100644 --- a/cli/tests/unit/build_test.ts +++ b/tests/unit/build_test.ts diff --git a/cli/tests/unit/cache_api_test.ts b/tests/unit/cache_api_test.ts index 792929870..792929870 100644 --- a/cli/tests/unit/cache_api_test.ts +++ b/tests/unit/cache_api_test.ts diff --git a/cli/tests/unit/chmod_test.ts b/tests/unit/chmod_test.ts index df3771bbc..df3771bbc 100644 --- a/cli/tests/unit/chmod_test.ts +++ b/tests/unit/chmod_test.ts diff --git a/cli/tests/unit/chown_test.ts b/tests/unit/chown_test.ts index 033d4592d..033d4592d 100644 --- a/cli/tests/unit/chown_test.ts +++ b/tests/unit/chown_test.ts diff --git a/cli/tests/unit/command_test.ts b/tests/unit/command_test.ts index cbb1c4921..cbb1c4921 100644 --- a/cli/tests/unit/command_test.ts +++ b/tests/unit/command_test.ts diff --git a/cli/tests/unit/console_test.ts b/tests/unit/console_test.ts index 2f24b2c4e..2f24b2c4e 100644 --- a/cli/tests/unit/console_test.ts +++ b/tests/unit/console_test.ts diff --git a/cli/tests/unit/copy_file_test.ts b/tests/unit/copy_file_test.ts index ad467f510..ad467f510 100644 --- a/cli/tests/unit/copy_file_test.ts +++ b/tests/unit/copy_file_test.ts diff --git a/cli/tests/unit/cron_test.ts b/tests/unit/cron_test.ts index 02573a898..02573a898 100644 --- a/cli/tests/unit/cron_test.ts +++ b/tests/unit/cron_test.ts diff --git a/cli/tests/unit/custom_event_test.ts b/tests/unit/custom_event_test.ts index b72084eb2..b72084eb2 100644 --- a/cli/tests/unit/custom_event_test.ts +++ b/tests/unit/custom_event_test.ts diff --git a/cli/tests/unit/dir_test.ts b/tests/unit/dir_test.ts index 4aaadfb12..4aaadfb12 100644 --- a/cli/tests/unit/dir_test.ts +++ b/tests/unit/dir_test.ts diff --git a/cli/tests/unit/dom_exception_test.ts b/tests/unit/dom_exception_test.ts index de335e105..de335e105 100644 --- a/cli/tests/unit/dom_exception_test.ts +++ b/tests/unit/dom_exception_test.ts diff --git a/cli/tests/unit/error_stack_test.ts b/tests/unit/error_stack_test.ts index 7188b9f53..7188b9f53 100644 --- a/cli/tests/unit/error_stack_test.ts +++ b/tests/unit/error_stack_test.ts diff --git a/cli/tests/unit/error_test.ts b/tests/unit/error_test.ts index 9ba09ce0d..9ba09ce0d 100644 --- a/cli/tests/unit/error_test.ts +++ b/tests/unit/error_test.ts diff --git a/cli/tests/unit/esnext_test.ts b/tests/unit/esnext_test.ts index 6b2334f42..6b2334f42 100644 --- a/cli/tests/unit/esnext_test.ts +++ b/tests/unit/esnext_test.ts diff --git a/cli/tests/unit/event_target_test.ts b/tests/unit/event_target_test.ts index b084eaf90..b084eaf90 100644 --- a/cli/tests/unit/event_target_test.ts +++ b/tests/unit/event_target_test.ts diff --git a/cli/tests/unit/event_test.ts b/tests/unit/event_test.ts index c82873cf6..c82873cf6 100644 --- a/cli/tests/unit/event_test.ts +++ b/tests/unit/event_test.ts diff --git a/tests/unit/fetch_test.ts b/tests/unit/fetch_test.ts new file mode 100644 index 000000000..80837a456 --- /dev/null +++ b/tests/unit/fetch_test.ts @@ -0,0 +1,2071 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertRejects, + assertThrows, + delay, + fail, + unimplemented, +} from "./test_util.ts"; +import { Buffer } from "@test_util/std/io/buffer.ts"; + +const listenPort = 4506; + +Deno.test( + { permissions: { net: true } }, + async function fetchRequiresOneArgument() { + await assertRejects( + fetch as unknown as () => Promise<void>, + TypeError, + ); + }, +); + +Deno.test({ permissions: { net: true } }, async function fetchProtocolError() { + await assertRejects( + async () => { + await fetch("ftp://localhost:21/a/file"); + }, + TypeError, + "not supported", + ); +}); + +function findClosedPortInRange( + minPort: number, + maxPort: number, +): number | never { + let port = minPort; + + // If we hit the return statement of this loop + // that means that we did not throw an + // AddrInUse error when we executed Deno.listen. + while (port < maxPort) { + try { + const listener = Deno.listen({ port }); + listener.close(); + return port; + } catch (_e) { + port++; + } + } + + unimplemented( + `No available ports between ${minPort} and ${maxPort} to test fetch`, + ); +} + +Deno.test( + // TODO(bartlomieju): reenable this test + // https://github.com/denoland/deno/issues/18350 + { ignore: Deno.build.os === "windows", permissions: { net: true } }, + async function fetchConnectionError() { + const port = findClosedPortInRange(4000, 9999); + await assertRejects( + async () => { + await fetch(`http://localhost:${port}`); + }, + TypeError, + "error trying to connect", + ); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchDnsError() { + await assertRejects( + async () => { + await fetch("http://nil/"); + }, + TypeError, + "error trying to connect", + ); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInvalidUriError() { + await assertRejects( + async () => { + await fetch("http://<invalid>/"); + }, + TypeError, + ); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchMalformedUriError() { + await assertRejects( + async () => { + const url = new URL("http://{{google/"); + await fetch(url); + }, + TypeError, + ); + }, +); + +Deno.test({ permissions: { net: true } }, async function fetchJsonSuccess() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + const json = await response.json(); + assertEquals(json.name, "deno"); +}); + +Deno.test({ permissions: { net: false } }, async function fetchPerm() { + await assertRejects(async () => { + await fetch("http://localhost:4545/assets/fixture.json"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { net: true } }, async function fetchUrl() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + assertEquals(response.url, "http://localhost:4545/assets/fixture.json"); + const _json = await response.json(); +}); + +Deno.test({ permissions: { net: true } }, async function fetchURL() { + const response = await fetch( + new URL("http://localhost:4545/assets/fixture.json"), + ); + assertEquals(response.url, "http://localhost:4545/assets/fixture.json"); + const _json = await response.json(); +}); + +Deno.test({ permissions: { net: true } }, async function fetchHeaders() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + const headers = response.headers; + assertEquals(headers.get("Content-Type"), "application/json"); + const _json = await response.json(); +}); + +Deno.test({ permissions: { net: true } }, async function fetchBlob() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + const headers = response.headers; + const blob = await response.blob(); + assertEquals(blob.type, headers.get("Content-Type")); + assertEquals(blob.size, Number(headers.get("Content-Length"))); +}); + +Deno.test( + { permissions: { net: true } }, + async function fetchBodyUsedReader() { + const response = await fetch( + "http://localhost:4545/assets/fixture.json", + ); + assert(response.body !== null); + + const reader = response.body.getReader(); + // Getting a reader should lock the stream but does not consume the body + // so bodyUsed should not be true + assertEquals(response.bodyUsed, false); + reader.releaseLock(); + await response.json(); + assertEquals(response.bodyUsed, true); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchBodyUsedCancelStream() { + const response = await fetch( + "http://localhost:4545/assets/fixture.json", + ); + assert(response.body !== null); + + assertEquals(response.bodyUsed, false); + const promise = response.body.cancel(); + assertEquals(response.bodyUsed, true); + await promise; + }, +); + +Deno.test({ permissions: { net: true } }, async function fetchAsyncIterator() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + const headers = response.headers; + + assert(response.body !== null); + let total = 0; + for await (const chunk of response.body) { + assert(chunk instanceof Uint8Array); + total += chunk.length; + } + + assertEquals(total, Number(headers.get("Content-Length"))); +}); + +Deno.test({ permissions: { net: true } }, async function fetchBodyReader() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + const headers = response.headers; + assert(response.body !== null); + const reader = response.body.getReader(); + let total = 0; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + assert(value); + assert(value instanceof Uint8Array); + total += value.length; + } + + assertEquals(total, Number(headers.get("Content-Length"))); +}); + +Deno.test( + { permissions: { net: true } }, + async function fetchBodyReaderBigBody() { + const data = "a".repeat(10 << 10); // 10mb + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: data, + }); + assert(response.body !== null); + const reader = await response.body.getReader(); + let total = 0; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + assert(value); + total += value.length; + } + + assertEquals(total, data.length); + }, +); + +Deno.test({ permissions: { net: true } }, async function responseClone() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + const response1 = response.clone(); + assert(response !== response1); + assertEquals(response.status, response1.status); + assertEquals(response.statusText, response1.statusText); + const u8a = new Uint8Array(await response.arrayBuffer()); + const u8a1 = new Uint8Array(await response1.arrayBuffer()); + for (let i = 0; i < u8a.byteLength; i++) { + assertEquals(u8a[i], u8a1[i]); + } +}); + +Deno.test( + { permissions: { net: true } }, + async function fetchMultipartFormDataSuccess() { + const response = await fetch( + "http://localhost:4545/multipart_form_data.txt", + ); + const formData = await response.formData(); + assert(formData.has("field_1")); + assertEquals(formData.get("field_1")!.toString(), "value_1 \r\n"); + assert(formData.has("field_2")); + const file = formData.get("field_2") as File; + assertEquals(file.name, "file.js"); + + assertEquals(await file.text(), `console.log("Hi")`); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchMultipartFormBadContentType() { + const response = await fetch( + "http://localhost:4545/multipart_form_bad_content_type", + ); + assert(response.body !== null); + + await assertRejects( + async () => { + await response.formData(); + }, + TypeError, + "Body can not be decoded as form data", + ); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchURLEncodedFormDataSuccess() { + const response = await fetch( + "http://localhost:4545/subdir/form_urlencoded.txt", + ); + const formData = await response.formData(); + assert(formData.has("field_1")); + assertEquals(formData.get("field_1")!.toString(), "Hi"); + assert(formData.has("field_2")); + assertEquals(formData.get("field_2")!.toString(), "<Deno>"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitFormDataBinaryFileBody() { + // Some random bytes + // deno-fmt-ignore + const binaryFile = new Uint8Array([108,2,0,0,145,22,162,61,157,227,166,77,138,75,180,56,119,188,177,183]); + const response = await fetch("http://localhost:4545/echo_multipart_file", { + method: "POST", + body: binaryFile, + }); + const resultForm = await response.formData(); + const resultFile = resultForm.get("file") as File; + + assertEquals(resultFile.type, "application/octet-stream"); + assertEquals(resultFile.name, "file.bin"); + assertEquals(new Uint8Array(await resultFile.arrayBuffer()), binaryFile); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitFormDataMultipleFilesBody() { + const files = [ + { + // deno-fmt-ignore + content: new Uint8Array([137,80,78,71,13,10,26,10, 137, 1, 25]), + type: "image/png", + name: "image", + fileName: "some-image.png", + }, + { + // deno-fmt-ignore + content: new Uint8Array([108,2,0,0,145,22,162,61,157,227,166,77,138,75,180,56,119,188,177,183]), + name: "file", + fileName: "file.bin", + expectedType: "application/octet-stream", + }, + { + content: new TextEncoder().encode("deno land"), + type: "text/plain", + name: "text", + fileName: "deno.txt", + }, + ]; + const form = new FormData(); + form.append("field", "value"); + for (const file of files) { + form.append( + file.name, + new Blob([file.content], { type: file.type }), + file.fileName, + ); + } + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: form, + }); + const resultForm = await response.formData(); + assertEquals(form.get("field"), resultForm.get("field")); + for (const file of files) { + const inputFile = form.get(file.name) as File; + const resultFile = resultForm.get(file.name) as File; + assertEquals(inputFile.size, resultFile.size); + assertEquals(inputFile.name, resultFile.name); + assertEquals(file.expectedType || file.type, resultFile.type); + assertEquals( + new Uint8Array(await resultFile.arrayBuffer()), + file.content, + ); + } + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithRedirection() { + const response = await fetch("http://localhost:4546/assets/hello.txt"); + assertEquals(response.status, 200); + assertEquals(response.statusText, "OK"); + assertEquals(response.url, "http://localhost:4545/assets/hello.txt"); + const body = await response.text(); + assert(body.includes("Hello world!")); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithRelativeRedirection() { + const response = await fetch( + "http://localhost:4545/run/001_hello.js", + ); + assertEquals(response.status, 200); + assertEquals(response.statusText, "OK"); + const body = await response.text(); + assert(body.includes("Hello")); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithRelativeRedirectionUrl() { + const cases = [ + ["end", "http://localhost:4550/a/b/end"], + ["/end", "http://localhost:4550/end"], + ]; + for (const [loc, redUrl] of cases) { + const response = await fetch("http://localhost:4550/a/b/c", { + headers: new Headers([["x-location", loc]]), + }); + assertEquals(response.url, redUrl); + assertEquals(response.redirected, true); + assertEquals(response.status, 404); + assertEquals(await response.text(), ""); + } + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithInfRedirection() { + await assertRejects( + () => fetch("http://localhost:4549"), + TypeError, + "redirect", + ); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitStringBody() { + const data = "Hello World"; + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: data, + }); + const text = await response.text(); + assertEquals(text, data); + assert(response.headers.get("content-type")!.startsWith("text/plain")); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchRequestInitStringBody() { + const data = "Hello World"; + const req = new Request("http://localhost:4545/echo_server", { + method: "POST", + body: data, + }); + const response = await fetch(req); + const text = await response.text(); + assertEquals(text, data); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchSeparateInit() { + // related to: https://github.com/denoland/deno/issues/10396 + const req = new Request("http://localhost:4545/run/001_hello.js"); + const init = { + method: "GET", + }; + req.headers.set("foo", "bar"); + const res = await fetch(req, init); + assertEquals(res.status, 200); + await res.text(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitTypedArrayBody() { + const data = "Hello World"; + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: new TextEncoder().encode(data), + }); + const text = await response.text(); + assertEquals(text, data); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitArrayBufferBody() { + const data = "Hello World"; + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: new TextEncoder().encode(data).buffer, + }); + const text = await response.text(); + assertEquals(text, data); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitURLSearchParamsBody() { + const data = "param1=value1¶m2=value2"; + const params = new URLSearchParams(data); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: params, + }); + const text = await response.text(); + assertEquals(text, data); + assert( + response.headers + .get("content-type")! + .startsWith("application/x-www-form-urlencoded"), + ); + }, +); + +Deno.test({ permissions: { net: true } }, async function fetchInitBlobBody() { + const data = "const a = 1 🦕"; + const blob = new Blob([data], { + type: "text/javascript", + }); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: blob, + }); + const text = await response.text(); + assertEquals(text, data); + assert(response.headers.get("content-type")!.startsWith("text/javascript")); +}); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitFormDataBody() { + const form = new FormData(); + form.append("field", "value"); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: form, + }); + const resultForm = await response.formData(); + assertEquals(form.get("field"), resultForm.get("field")); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitFormDataBlobFilenameBody() { + const form = new FormData(); + form.append("field", "value"); + form.append( + "file", + new Blob([new TextEncoder().encode("deno")]), + "file name", + ); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: form, + }); + const resultForm = await response.formData(); + assertEquals(form.get("field"), resultForm.get("field")); + const file = resultForm.get("file"); + assert(file instanceof File); + assertEquals(file.name, "file name"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitFormDataFileFilenameBody() { + const form = new FormData(); + form.append("field", "value"); + form.append( + "file", + new File([new Blob([new TextEncoder().encode("deno")])], "file name"), + ); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: form, + }); + const resultForm = await response.formData(); + assertEquals(form.get("field"), resultForm.get("field")); + const file = resultForm.get("file"); + assert(file instanceof File); + assertEquals(file.name, "file name"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchInitFormDataTextFileBody() { + const fileContent = "deno land"; + const form = new FormData(); + form.append("field", "value"); + form.append( + "file", + new Blob([new TextEncoder().encode(fileContent)], { + type: "text/plain", + }), + "deno.txt", + ); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: form, + }); + const resultForm = await response.formData(); + assertEquals(form.get("field"), resultForm.get("field")); + + const file = form.get("file") as File; + const resultFile = resultForm.get("file") as File; + + assertEquals(file.size, resultFile.size); + assertEquals(file.name, resultFile.name); + assertEquals(file.type, resultFile.type); + assertEquals(await file.text(), await resultFile.text()); + }, +); + +Deno.test({ permissions: { net: true } }, async function fetchUserAgent() { + const data = "Hello World"; + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: new TextEncoder().encode(data), + }); + assertEquals(response.headers.get("user-agent"), `Deno/${Deno.version.deno}`); + await response.text(); +}); + +function bufferServer(addr: string): Promise<Buffer> { + const [hostname, port] = addr.split(":"); + const listener = Deno.listen({ + hostname, + port: Number(port), + }) as Deno.Listener; + return listener.accept().then(async (conn: Deno.Conn) => { + const buf = new Buffer(); + const p1 = buf.readFrom(conn); + const p2 = conn.write( + new TextEncoder().encode( + "HTTP/1.0 404 Not Found\r\nContent-Length: 2\r\n\r\nNF", + ), + ); + // Wait for both an EOF on the read side of the socket and for the write to + // complete before closing it. Due to keep-alive, the EOF won't be sent + // until the Connection close (HTTP/1.0) response, so readFrom() can't + // proceed write. Conversely, if readFrom() is async, waiting for the + // write() to complete is not a guarantee that we've read the incoming + // request. + await Promise.all([p1, p2]); + conn.close(); + listener.close(); + return buf; + }); +} + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchRequest() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Hello", "World"], + ["Foo", "Bar"], + ], + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "content-length: 0\r\n", + "hello: World\r\n", + "foo: Bar\r\n", + "accept: */*\r\n", + "accept-language: *\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n", + `host: ${addr}\r\n\r\n`, + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchRequestAcceptHeaders() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Accept", "text/html"], + ["Accept-Language", "en-US"], + ], + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "content-length: 0\r\n", + "accept: text/html\r\n", + "accept-language: en-US\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n", + `host: ${addr}\r\n\r\n`, + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchPostBodyString() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const body = "hello world"; + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Hello", "World"], + ["Foo", "Bar"], + ], + body, + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "hello: World\r\n", + "foo: Bar\r\n", + "content-type: text/plain;charset=UTF-8\r\n", + "accept: */*\r\n", + "accept-language: *\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n", + `host: ${addr}\r\n`, + `content-length: ${body.length}\r\n\r\n`, + body, + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchPostBodyTypedArray() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const bodyStr = "hello world"; + const body = new TextEncoder().encode(bodyStr); + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Hello", "World"], + ["Foo", "Bar"], + ], + body, + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "hello: World\r\n", + "foo: Bar\r\n", + "accept: */*\r\n", + "accept-language: *\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n", + `host: ${addr}\r\n`, + `content-length: ${body.byteLength}\r\n\r\n`, + bodyStr, + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchUserSetContentLength() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Content-Length", "10"], + ], + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "content-length: 0\r\n", + "accept: */*\r\n", + "accept-language: *\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n", + `host: ${addr}\r\n\r\n`, + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchUserSetTransferEncoding() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Transfer-Encoding", "chunked"], + ], + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "content-length: 0\r\n", + `host: ${addr}\r\n`, + "accept: */*\r\n", + "accept-language: *\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n\r\n", + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithNonAsciiRedirection() { + const response = await fetch("http://localhost:4545/non_ascii_redirect", { + redirect: "manual", + }); + assertEquals(response.status, 301); + assertEquals(response.headers.get("location"), "/redirect®"); + await response.text(); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithManualRedirection() { + const response = await fetch("http://localhost:4546/", { + redirect: "manual", + }); // will redirect to http://localhost:4545/ + assertEquals(response.status, 301); + assertEquals(response.url, "http://localhost:4546/"); + assertEquals(response.type, "basic"); + assertEquals(response.headers.get("Location"), "http://localhost:4545/"); + await response.body!.cancel(); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchWithErrorRedirection() { + await assertRejects( + () => + fetch("http://localhost:4546/", { + redirect: "error", + }), + TypeError, + "redirect", + ); + }, +); + +Deno.test(function responseRedirect() { + const redir = Response.redirect("http://example.com/newLocation", 301); + assertEquals(redir.status, 301); + assertEquals(redir.statusText, ""); + assertEquals(redir.url, ""); + assertEquals( + redir.headers.get("Location"), + "http://example.com/newLocation", + ); + assertEquals(redir.type, "default"); +}); + +Deno.test(function responseRedirectTakeURLObjectAsParameter() { + const redir = Response.redirect(new URL("https://example.com/")); + assertEquals( + redir.headers.get("Location"), + "https://example.com/", + ); +}); + +Deno.test(async function responseWithoutBody() { + const response = new Response(); + assertEquals(await response.arrayBuffer(), new ArrayBuffer(0)); + const blob = await response.blob(); + assertEquals(blob.size, 0); + assertEquals(await blob.arrayBuffer(), new ArrayBuffer(0)); + assertEquals(await response.text(), ""); + await assertRejects(async () => { + await response.json(); + }); +}); + +Deno.test({ permissions: { net: true } }, async function fetchBodyReadTwice() { + const response = await fetch("http://localhost:4545/assets/fixture.json"); + + // Read body + const _json = await response.json(); + assert(_json); + + // All calls after the body was consumed, should fail + const methods = ["json", "text", "formData", "arrayBuffer"] as const; + for (const method of methods) { + try { + await response[method](); + fail( + "Reading body multiple times should failed, the stream should've been locked.", + ); + } catch { + // pass + } + } +}); + +Deno.test( + { permissions: { net: true } }, + async function fetchBodyReaderAfterRead() { + const response = await fetch( + "http://localhost:4545/assets/fixture.json", + ); + assert(response.body !== null); + const reader = await response.body.getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) break; + assert(value); + } + + try { + response.body.getReader(); + fail("The stream should've been locked."); + } catch { + // pass + } + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchBodyReaderWithCancelAndNewReader() { + const data = "a".repeat(1 << 10); + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: data, + }); + assert(response.body !== null); + const firstReader = await response.body.getReader(); + + // Acquire reader without reading & release + await firstReader.releaseLock(); + + const reader = await response.body.getReader(); + + let total = 0; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + assert(value); + total += value.length; + } + + assertEquals(total, data.length); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchBodyReaderWithReadCancelAndNewReader() { + const data = "a".repeat(1 << 10); + + const response = await fetch("http://localhost:4545/echo_server", { + method: "POST", + body: data, + }); + assert(response.body !== null); + const firstReader = await response.body.getReader(); + + // Do one single read with first reader + const { value: firstValue } = await firstReader.read(); + assert(firstValue); + await firstReader.releaseLock(); + + // Continue read with second reader + const reader = await response.body.getReader(); + let total = firstValue.length || 0; + while (true) { + const { done, value } = await reader.read(); + if (done) break; + assert(value); + total += value.length; + } + assertEquals(total, data.length); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchResourceCloseAfterStreamCancel() { + const res = await fetch("http://localhost:4545/assets/fixture.json"); + assert(res.body !== null); + + // After ReadableStream.cancel is called, resource handle must be closed + // The test should not fail with: Test case is leaking resources + await res.body.cancel(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchNullBodyStatus() { + const nullBodyStatus = [101, 204, 205, 304]; + + for (const status of nullBodyStatus) { + const headers = new Headers([["x-status", String(status)]]); + const res = await fetch("http://localhost:4545/echo_server", { + body: "deno", + method: "POST", + headers, + }); + assertEquals(res.body, null); + assertEquals(res.status, status); + } + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchResponseContentLength() { + const body = new Uint8Array(2 ** 16); + const headers = new Headers([["content-type", "application/octet-stream"]]); + const res = await fetch("http://localhost:4545/echo_server", { + body: body, + method: "POST", + headers, + }); + assertEquals(Number(res.headers.get("content-length")), body.byteLength); + + const blob = await res.blob(); + // Make sure Body content-type is correctly set + assertEquals(blob.type, "application/octet-stream"); + assertEquals(blob.size, body.byteLength); + }, +); + +Deno.test(function fetchResponseConstructorNullBody() { + const nullBodyStatus = [204, 205, 304]; + + for (const status of nullBodyStatus) { + try { + new Response("deno", { status }); + fail("Response with null body status cannot have body"); + } catch (e) { + assert(e instanceof TypeError); + assertEquals( + e.message, + "Response with null body status cannot have body", + ); + } + } +}); + +Deno.test(function fetchResponseConstructorInvalidStatus() { + const invalidStatus = [100, 600, 199, null, "", NaN]; + + for (const status of invalidStatus) { + try { + // deno-lint-ignore ban-ts-comment + // @ts-ignore + new Response("deno", { status }); + fail(`Invalid status: ${status}`); + } catch (e) { + assert(e instanceof RangeError); + assert( + e.message.endsWith( + "is not equal to 101 and outside the range [200, 599].", + ), + ); + } + } +}); + +Deno.test(function fetchResponseEmptyConstructor() { + const response = new Response(); + assertEquals(response.status, 200); + assertEquals(response.body, null); + assertEquals(response.type, "default"); + assertEquals(response.url, ""); + assertEquals(response.redirected, false); + assertEquals(response.ok, true); + assertEquals(response.bodyUsed, false); + assertEquals([...response.headers], []); +}); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchCustomHttpClientParamCertificateSuccess(): Promise< + void + > { + const caCert = Deno.readTextFileSync("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const response = await fetch("https://localhost:5545/assets/fixture.json", { + client, + }); + const json = await response.json(); + assertEquals(json.name, "deno"); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + function createHttpClientAcceptPoolIdleTimeout() { + const client = Deno.createHttpClient({ + poolIdleTimeout: 1000, + }); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchCustomClientUserAgent(): Promise< + void + > { + const data = "Hello World"; + const client = Deno.createHttpClient({}); + const response = await fetch("http://localhost:4545/echo_server", { + client, + method: "POST", + body: new TextEncoder().encode(data), + }); + assertEquals( + response.headers.get("user-agent"), + `Deno/${Deno.version.deno}`, + ); + await response.text(); + client.close(); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function fetchPostBodyReadableStream() { + const addr = `127.0.0.1:${listenPort}`; + const bufPromise = bufferServer(addr); + const stream = new TransformStream(); + const writer = stream.writable.getWriter(); + // transformer writes don't resolve until they are read, so awaiting these + // will cause the transformer to hang, as the suspend the transformer, it + // is also illogical to await for the reads, as that is the whole point of + // streams is to have a "queue" which gets drained... + writer.write(new TextEncoder().encode("hello ")); + writer.write(new TextEncoder().encode("world")); + writer.close(); + const response = await fetch(`http://${addr}/blah`, { + method: "POST", + headers: [ + ["Hello", "World"], + ["Foo", "Bar"], + ], + body: stream.readable, + }); + await response.arrayBuffer(); + assertEquals(response.status, 404); + assertEquals(response.headers.get("Content-Length"), "2"); + + const actual = new TextDecoder().decode((await bufPromise).bytes()); + const expected = [ + "POST /blah HTTP/1.1\r\n", + "hello: World\r\n", + "foo: Bar\r\n", + "accept: */*\r\n", + "accept-language: *\r\n", + `user-agent: Deno/${Deno.version.deno}\r\n`, + "accept-encoding: gzip, br\r\n", + `host: ${addr}\r\n`, + `transfer-encoding: chunked\r\n\r\n`, + "B\r\n", + "hello world\r\n", + "0\r\n\r\n", + ].join(""); + assertEquals(actual, expected); + }, +); + +Deno.test({}, function fetchWritableRespProps() { + const original = new Response("https://deno.land", { + status: 404, + headers: { "x-deno": "foo" }, + }); + const new_ = new Response("https://deno.land", original); + assertEquals(original.status, new_.status); + assertEquals(new_.headers.get("x-deno"), "foo"); +}); + +Deno.test( + { permissions: { net: true } }, + async function fetchFilterOutCustomHostHeader(): Promise< + void + > { + const addr = `127.0.0.1:${listenPort}`; + const [hostname, port] = addr.split(":"); + const listener = Deno.listen({ + hostname, + port: Number(port), + }) as Deno.Listener; + + let httpConn: Deno.HttpConn; + listener.accept().then(async (conn: Deno.Conn) => { + httpConn = Deno.serveHttp(conn); + + await httpConn.nextRequest() + .then(async (requestEvent: Deno.RequestEvent | null) => { + const hostHeader = requestEvent?.request.headers.get("Host"); + const headersToReturn = hostHeader + ? { "Host": hostHeader } + : undefined; + + await requestEvent?.respondWith( + new Response("", { + status: 200, + headers: headersToReturn, + }), + ); + }); + }); + + const response = await fetch(`http://${addr}/`, { + headers: { "Host": "example.com" }, + }); + await response.text(); + listener.close(); + httpConn!.close(); + + assertEquals(response.headers.get("Host"), addr); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchNoServerReadableStreamBody() { + const completed = Promise.withResolvers<void>(); + const failed = Promise.withResolvers<void>(); + const body = new ReadableStream({ + start(controller) { + controller.enqueue(new Uint8Array([1])); + setTimeout(async () => { + // This is technically a race. If the fetch has failed by this point, the enqueue will + // throw. If not, it will succeed. Windows appears to take a while to time out the fetch, + // so we will just wait for that here before we attempt to enqueue so it's consistent + // across platforms. + await failed.promise; + assertThrows(() => controller.enqueue(new Uint8Array([2]))); + completed.resolve(); + }, 1000); + }, + }); + const nonExistentHostname = "http://localhost:47582"; + await assertRejects(async () => { + await fetch(nonExistentHostname, { body, method: "POST" }); + }, TypeError); + failed.resolve(); + await completed.promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchHeadRespBody() { + const res = await fetch("http://localhost:4545/echo_server", { + method: "HEAD", + }); + assertEquals(res.body, null); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function fetchClientCertWrongPrivateKey(): Promise<void> { + await assertRejects(async () => { + const client = Deno.createHttpClient({ + certChain: "bad data", + privateKey: await Deno.readTextFile( + "tests/testdata/tls/localhost.key", + ), + }); + await fetch("https://localhost:5552/assets/fixture.json", { + client, + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function fetchClientCertBadPrivateKey(): Promise<void> { + await assertRejects(async () => { + const client = Deno.createHttpClient({ + certChain: await Deno.readTextFile( + "tests/testdata/tls/localhost.crt", + ), + privateKey: "bad data", + }); + await fetch("https://localhost:5552/assets/fixture.json", { + client, + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function fetchClientCertNotPrivateKey(): Promise<void> { + await assertRejects(async () => { + const client = Deno.createHttpClient({ + certChain: await Deno.readTextFile( + "tests/testdata/tls/localhost.crt", + ), + privateKey: "", + }); + await fetch("https://localhost:5552/assets/fixture.json", { + client, + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function fetchCustomClientPrivateKey(): Promise< + void + > { + const data = "Hello World"; + const caCert = await Deno.readTextFile("tests/testdata/tls/RootCA.crt"); + const client = Deno.createHttpClient({ + certChain: await Deno.readTextFile( + "tests/testdata/tls/localhost.crt", + ), + privateKey: await Deno.readTextFile( + "tests/testdata/tls/localhost.key", + ), + caCerts: [caCert], + }); + const response = await fetch("https://localhost:5552/echo_server", { + client, + method: "POST", + body: new TextEncoder().encode(data), + }); + assertEquals( + response.headers.get("user-agent"), + `Deno/${Deno.version.deno}`, + ); + await response.text(); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchAbortWhileUploadStreaming(): Promise<void> { + const abortController = new AbortController(); + try { + await fetch( + "http://localhost:5552/echo_server", + { + method: "POST", + body: new ReadableStream({ + pull(controller) { + abortController.abort(); + controller.enqueue(new Uint8Array([1, 2, 3, 4])); + }, + }), + signal: abortController.signal, + }, + ); + fail("Fetch didn't reject."); + } catch (error) { + assert(error instanceof DOMException); + assertEquals(error.name, "AbortError"); + assertEquals(error.message, "The signal has been aborted"); + } + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchAbortWhileUploadStreamingWithReason(): Promise<void> { + const abortController = new AbortController(); + const abortReason = new Error(); + try { + await fetch( + "http://localhost:5552/echo_server", + { + method: "POST", + body: new ReadableStream({ + pull(controller) { + abortController.abort(abortReason); + controller.enqueue(new Uint8Array([1, 2, 3, 4])); + }, + }), + signal: abortController.signal, + }, + ); + fail("Fetch didn't reject."); + } catch (error) { + assertEquals(error, abortReason); + } + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchAbortWhileUploadStreamingWithPrimitiveReason(): Promise< + void + > { + const abortController = new AbortController(); + try { + await fetch( + "http://localhost:5552/echo_server", + { + method: "POST", + body: new ReadableStream({ + pull(controller) { + abortController.abort("Abort reason"); + controller.enqueue(new Uint8Array([1, 2, 3, 4])); + }, + }), + signal: abortController.signal, + }, + ); + fail("Fetch didn't reject."); + } catch (error) { + assertEquals(error, "Abort reason"); + } + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchHeaderValueShouldNotPanic() { + for (let i = 0; i < 0x21; i++) { + if (i === 0x09 || i === 0x0A || i === 0x0D || i === 0x20) { + continue; // these header value will be normalized, will not cause an error. + } + // ensure there will be an error instead of panic. + await assertRejects(() => + fetch("http://localhost:4545/echo_server", { + method: "HEAD", + headers: { "val": String.fromCharCode(i) }, + }), TypeError); + } + await assertRejects(() => + fetch("http://localhost:4545/echo_server", { + method: "HEAD", + headers: { "val": String.fromCharCode(127) }, + }), TypeError); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchHeaderNameShouldNotPanic() { + const validTokens = + "!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUWVXYZ^_`abcdefghijklmnopqrstuvwxyz|~" + .split(""); + for (let i = 0; i <= 255; i++) { + const token = String.fromCharCode(i); + if (validTokens.includes(token)) { + continue; + } + // ensure there will be an error instead of panic. + await assertRejects(() => + fetch("http://localhost:4545/echo_server", { + method: "HEAD", + headers: { [token]: "value" }, + }), TypeError); + } + await assertRejects(() => + fetch("http://localhost:4545/echo_server", { + method: "HEAD", + headers: { "": "value" }, + }), TypeError); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchSupportsHttpsOverIpAddress() { + const caCert = await Deno.readTextFile("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const res = await fetch("https://localhost:5546/http_version", { client }); + assert(res.ok); + assertEquals(await res.text(), "HTTP/1.1"); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchSupportsHttp1Only() { + const caCert = await Deno.readTextFile("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const res = await fetch("https://localhost:5546/http_version", { client }); + assert(res.ok); + assertEquals(await res.text(), "HTTP/1.1"); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchSupportsHttp2() { + const caCert = await Deno.readTextFile("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const res = await fetch("https://localhost:5547/http_version", { client }); + assert(res.ok); + assertEquals(await res.text(), "HTTP/2.0"); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchForceHttp1OnHttp2Server() { + const client = Deno.createHttpClient({ http2: false, http1: true }); + await assertRejects( + () => fetch("http://localhost:5549/http_version", { client }), + TypeError, + ); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchForceHttp2OnHttp1Server() { + const client = Deno.createHttpClient({ http2: true, http1: false }); + await assertRejects( + () => fetch("http://localhost:5548/http_version", { client }), + TypeError, + ); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function fetchPrefersHttp2() { + const caCert = await Deno.readTextFile("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const res = await fetch("https://localhost:5545/http_version", { client }); + assert(res.ok); + assertEquals(await res.text(), "HTTP/2.0"); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + async function createHttpClientAllowHost() { + const client = Deno.createHttpClient({ + allowHost: true, + }); + const res = await fetch("http://localhost:4545/echo_server", { + headers: { + "host": "example.com", + }, + client, + }); + assert(res.ok); + assertEquals(res.headers.get("host"), "example.com"); + await res.body?.cancel(); + client.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function createHttpClientExplicitResourceManagement() { + using client = Deno.createHttpClient({}); + const response = await fetch("http://localhost:4545/assets/fixture.json", { + client, + }); + const json = await response.json(); + assertEquals(json.name, "deno"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function createHttpClientExplicitResourceManagementDoubleClose() { + using client = Deno.createHttpClient({}); + const response = await fetch("http://localhost:4545/assets/fixture.json", { + client, + }); + const json = await response.json(); + assertEquals(json.name, "deno"); + // Close the client even though we declared it with `using` to confirm that + // the cleanup done as per `Symbol.dispose` will not throw any errors. + client.close(); + }, +); + +Deno.test({ permissions: { read: false } }, async function fetchFilePerm() { + await assertRejects(async () => { + await fetch(import.meta.resolve("../testdata/subdir/json_1.json")); + }, Deno.errors.PermissionDenied); +}); + +Deno.test( + { permissions: { read: false } }, + async function fetchFilePermDoesNotExist() { + await assertRejects(async () => { + await fetch(import.meta.resolve("./bad.json")); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function fetchFileBadMethod() { + await assertRejects( + async () => { + await fetch( + import.meta.resolve("../testdata/subdir/json_1.json"), + { + method: "POST", + }, + ); + }, + TypeError, + "Fetching files only supports the GET method. Received POST.", + ); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function fetchFileDoesNotExist() { + await assertRejects( + async () => { + await fetch(import.meta.resolve("./bad.json")); + }, + TypeError, + ); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function fetchFile() { + const res = await fetch( + import.meta.resolve("../testdata/subdir/json_1.json"), + ); + assert(res.ok); + const fixture = await Deno.readTextFile( + "tests/testdata/subdir/json_1.json", + ); + assertEquals(await res.text(), fixture); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchContentLengthPost() { + const response = await fetch("http://localhost:4545/content_length", { + method: "POST", + }); + const length = await response.text(); + assertEquals(length, 'Some("0")'); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchContentLengthPut() { + const response = await fetch("http://localhost:4545/content_length", { + method: "PUT", + }); + const length = await response.text(); + assertEquals(length, 'Some("0")'); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchContentLengthPatch() { + const response = await fetch("http://localhost:4545/content_length", { + method: "PATCH", + }); + const length = await response.text(); + assertEquals(length, "None"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchContentLengthPostWithStringBody() { + const response = await fetch("http://localhost:4545/content_length", { + method: "POST", + body: "Hey!", + }); + const length = await response.text(); + assertEquals(length, 'Some("4")'); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchContentLengthPostWithBufferBody() { + const response = await fetch("http://localhost:4545/content_length", { + method: "POST", + body: new TextEncoder().encode("Hey!"), + }); + const length = await response.text(); + assertEquals(length, 'Some("4")'); + }, +); + +Deno.test(async function staticResponseJson() { + const data = { hello: "world" }; + const resp = Response.json(data); + assertEquals(resp.status, 200); + assertEquals(resp.headers.get("content-type"), "application/json"); + const res = await resp.json(); + assertEquals(res, data); +}); + +function invalidServer(addr: string, body: Uint8Array): Deno.Listener { + const [hostname, port] = addr.split(":"); + const listener = Deno.listen({ + hostname, + port: Number(port), + }) as Deno.Listener; + + (async () => { + for await (const conn of listener) { + const p1 = conn.read(new Uint8Array(2 ** 14)); + const p2 = conn.write(body); + + await Promise.all([p1, p2]); + conn.close(); + } + })(); + + return listener; +} + +Deno.test( + { permissions: { net: true } }, + async function fetchWithInvalidContentLengthAndTransferEncoding(): Promise< + void + > { + const addr = `127.0.0.1:${listenPort}`; + const data = "a".repeat(10 << 10); + + const body = new TextEncoder().encode( + `HTTP/1.1 200 OK\r\nContent-Length: ${ + Math.round(data.length * 2) + }\r\nTransfer-Encoding: chunked\r\n\r\n${ + data.length.toString(16) + }\r\n${data}\r\n0\r\n\r\n`, + ); + + // if transfer-encoding is sent, content-length is ignored + // even if it has an invalid value (content-length > totalLength) + const listener = invalidServer(addr, body); + const response = await fetch(`http://${addr}/`); + + const res = await response.arrayBuffer(); + const buf = new TextEncoder().encode(data); + assertEquals(res.byteLength, buf.byteLength); + assertEquals(new Uint8Array(res), buf); + + listener.close(); + }, +); + +Deno.test( + // TODO(bartlomieju): reenable this test + // https://github.com/denoland/deno/issues/18350 + { ignore: Deno.build.os === "windows", permissions: { net: true } }, + async function fetchWithInvalidContentLength(): Promise< + void + > { + const addr = `127.0.0.1:${listenPort}`; + const data = "a".repeat(10 << 10); + + const body = new TextEncoder().encode( + `HTTP/1.1 200 OK\r\nContent-Length: ${ + Math.round(data.length / 2) + }\r\nContent-Length: ${data.length}\r\n\r\n${data}`, + ); + + // It should fail if multiple content-length headers with different values are sent + const listener = invalidServer(addr, body); + await assertRejects( + async () => { + await fetch(`http://${addr}/`); + }, + TypeError, + "invalid content-length parsed", + ); + + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchWithInvalidContentLength2(): Promise< + void + > { + const addr = `127.0.0.1:${listenPort}`; + const data = "a".repeat(10 << 10); + + const contentLength = data.length / 2; + const body = new TextEncoder().encode( + `HTTP/1.1 200 OK\r\nContent-Length: ${contentLength}\r\n\r\n${data}`, + ); + + const listener = invalidServer(addr, body); + const response = await fetch(`http://${addr}/`); + + // If content-length < totalLength, a maximum of content-length bytes + // should be returned. + const res = await response.arrayBuffer(); + const buf = new TextEncoder().encode(data); + assertEquals(res.byteLength, contentLength); + assertEquals(new Uint8Array(res), buf.subarray(contentLength)); + + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchWithInvalidContentLength3(): Promise< + void + > { + const addr = `127.0.0.1:${listenPort}`; + const data = "a".repeat(10 << 10); + + const contentLength = data.length * 2; + const body = new TextEncoder().encode( + `HTTP/1.1 200 OK\r\nContent-Length: ${contentLength}\r\n\r\n${data}`, + ); + + const listener = invalidServer(addr, body); + const response = await fetch(`http://${addr}/`); + // If content-length > totalLength, a maximum of content-length bytes + // should be returned. + await assertRejects( + async () => { + await response.arrayBuffer(); + }, + Error, + "end of file before message length reached", + ); + + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchBlobUrl(): Promise<void> { + const blob = new Blob(["ok"], { type: "text/plain" }); + const url = URL.createObjectURL(blob); + assert(url.startsWith("blob:"), `URL was ${url}`); + const res = await fetch(url); + assertEquals(res.url, url); + assertEquals(res.status, 200); + assertEquals(res.headers.get("content-length"), "2"); + assertEquals(res.headers.get("content-type"), "text/plain"); + assertEquals(await res.text(), "ok"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchResponseStreamIsLockedWhileReading() { + const response = await fetch("http://localhost:4545/echo_server", { + body: new Uint8Array(5000), + method: "POST", + }); + + assertEquals(response.body!.locked, false); + const promise = response.arrayBuffer(); + assertEquals(response.body!.locked, true); + + await promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchConstructorClones() { + const req = new Request("https://example.com", { + method: "POST", + body: "foo", + }); + assertEquals(await req.text(), "foo"); + await assertRejects(() => req.text()); + + const req2 = new Request(req, { method: "PUT", body: "bar" }); // should not have any impact on req + await assertRejects(() => req.text()); + assertEquals(await req2.text(), "bar"); + + assertEquals(req.method, "POST"); + assertEquals(req2.method, "PUT"); + + assertEquals(req.headers.get("x-foo"), null); + assertEquals(req2.headers.get("x-foo"), null); + req2.headers.set("x-foo", "bar"); // should not have any impact on req + assertEquals(req.headers.get("x-foo"), null); + assertEquals(req2.headers.get("x-foo"), "bar"); + }, +); + +Deno.test( + // TODO(bartlomieju): reenable this test + // https://github.com/denoland/deno/issues/18350 + { ignore: Deno.build.os === "windows", permissions: { net: true } }, + async function fetchRequestBodyErrorCatchable() { + const listener = Deno.listen({ hostname: "127.0.0.1", port: listenPort }); + const server = (async () => { + const conn = await listener.accept(); + listener.close(); + const buf = new Uint8Array(256); + const n = await conn.read(buf); + const data = new TextDecoder().decode(buf.subarray(0, n!)); // this is the request headers + first body chunk + assert(data.startsWith("POST / HTTP/1.1\r\n")); + assert(data.endsWith("1\r\na\r\n")); + const n2 = await conn.read(buf); + assertEquals(n2, 6); // this is the second body chunk + const n3 = await conn.read(buf); + assertEquals(n3, null); // the connection now abruptly closes because the client has errored + conn.close(); + })(); + + const stream = new ReadableStream({ + async start(controller) { + controller.enqueue(new TextEncoder().encode("a")); + await delay(1000); + controller.enqueue(new TextEncoder().encode("b")); + await delay(1000); + controller.error(new Error("foo")); + }, + }); + + const err = await assertRejects(() => + fetch(`http://localhost:${listenPort}/`, { + body: stream, + method: "POST", + }) + ); + + assert(err instanceof TypeError, `err was not a TypeError ${err}`); + assert(err.cause, `err.cause was null ${err}`); + assert( + err.cause instanceof Error, + `err.cause was not an Error ${err.cause}`, + ); + assertEquals(err.cause.message, "foo"); + + await server; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function fetchRequestBodyEmptyStream() { + const body = new ReadableStream({ + start(controller) { + controller.enqueue(new Uint8Array([])); + controller.close(); + }, + }); + + await assertRejects( + async () => { + const controller = new AbortController(); + const promise = fetch("http://localhost:4545/echo_server", { + body, + method: "POST", + signal: controller.signal, + }); + try { + controller.abort(); + } catch (e) { + console.log(e); + fail("abort should not throw"); + } + await promise; + }, + DOMException, + "The signal has been aborted", + ); + }, +); + +Deno.test("Request with subarray TypedArray body", async () => { + const body = new Uint8Array([1, 2, 3, 4, 5]).subarray(1); + const req = new Request("https://example.com", { method: "POST", body }); + const actual = new Uint8Array(await req.arrayBuffer()); + const expected = new Uint8Array([2, 3, 4, 5]); + assertEquals(actual, expected); +}); + +Deno.test("Response with subarray TypedArray body", async () => { + const body = new Uint8Array([1, 2, 3, 4, 5]).subarray(1); + const req = new Response(body); + const actual = new Uint8Array(await req.arrayBuffer()); + const expected = new Uint8Array([2, 3, 4, 5]); + assertEquals(actual, expected); +}); diff --git a/cli/tests/unit/ffi_test.ts b/tests/unit/ffi_test.ts index 2b56a8db1..2b56a8db1 100644 --- a/cli/tests/unit/ffi_test.ts +++ b/tests/unit/ffi_test.ts diff --git a/cli/tests/unit/file_test.ts b/tests/unit/file_test.ts index 1af3a3f84..1af3a3f84 100644 --- a/cli/tests/unit/file_test.ts +++ b/tests/unit/file_test.ts diff --git a/cli/tests/unit/filereader_test.ts b/tests/unit/filereader_test.ts index 158cf5383..158cf5383 100644 --- a/cli/tests/unit/filereader_test.ts +++ b/tests/unit/filereader_test.ts diff --git a/tests/unit/files_test.ts b/tests/unit/files_test.ts new file mode 100644 index 000000000..c29092963 --- /dev/null +++ b/tests/unit/files_test.ts @@ -0,0 +1,1095 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +// deno-lint-ignore-file no-deprecated-deno-api + +import { + assert, + assertEquals, + assertRejects, + assertThrows, +} from "./test_util.ts"; +import { copy } from "@test_util/std/streams/copy.ts"; + +Deno.test(function filesStdioFileDescriptors() { + assertEquals(Deno.stdin.rid, 0); + assertEquals(Deno.stdout.rid, 1); + assertEquals(Deno.stderr.rid, 2); +}); + +Deno.test({ permissions: { read: true } }, async function filesCopyToStdout() { + const filename = "tests/testdata/assets/fixture.json"; + using file = await Deno.open(filename); + assert(file instanceof Deno.File); + assert(file instanceof Deno.FsFile); + assert(file.rid > 2); + const bytesWritten = await copy(file, Deno.stdout); + const fileSize = Deno.statSync(filename).size; + assertEquals(bytesWritten, fileSize); +}); + +Deno.test({ permissions: { read: true } }, async function filesIter() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + + let totalSize = 0; + for await (const buf of Deno.iter(file)) { + totalSize += buf.byteLength; + } + + assertEquals(totalSize, 12); +}); + +Deno.test( + { permissions: { read: true } }, + async function filesIterCustomBufSize() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + + let totalSize = 0; + let iterations = 0; + for await (const buf of Deno.iter(file, { bufSize: 6 })) { + totalSize += buf.byteLength; + iterations += 1; + } + + assertEquals(totalSize, 12); + assertEquals(iterations, 2); + }, +); + +Deno.test({ permissions: { read: true } }, function filesIterSync() { + const filename = "tests/testdata/assets/hello.txt"; + using file = Deno.openSync(filename); + + let totalSize = 0; + for (const buf of Deno.iterSync(file)) { + totalSize += buf.byteLength; + } + + assertEquals(totalSize, 12); +}); + +Deno.test( + { permissions: { read: true } }, + function filesIterSyncCustomBufSize() { + const filename = "tests/testdata/assets/hello.txt"; + using file = Deno.openSync(filename); + + let totalSize = 0; + let iterations = 0; + for (const buf of Deno.iterSync(file, { bufSize: 6 })) { + totalSize += buf.byteLength; + iterations += 1; + } + + assertEquals(totalSize, 12); + assertEquals(iterations, 2); + }, +); + +Deno.test(async function readerIter() { + // ref: https://github.com/denoland/deno/issues/2330 + const encoder = new TextEncoder(); + + class TestReader implements Deno.Reader { + #offset = 0; + #buf: Uint8Array; + + constructor(s: string) { + this.#buf = new Uint8Array(encoder.encode(s)); + } + + read(p: Uint8Array): Promise<number | null> { + const n = Math.min(p.byteLength, this.#buf.byteLength - this.#offset); + p.set(this.#buf.slice(this.#offset, this.#offset + n)); + this.#offset += n; + + if (n === 0) { + return Promise.resolve(null); + } + + return Promise.resolve(n); + } + } + + const reader = new TestReader("hello world!"); + + let totalSize = 0; + for await (const buf of Deno.iter(reader)) { + totalSize += buf.byteLength; + } + + assertEquals(totalSize, 12); +}); + +Deno.test(async function readerIterSync() { + // ref: https://github.com/denoland/deno/issues/2330 + const encoder = new TextEncoder(); + + class TestReader implements Deno.ReaderSync { + #offset = 0; + #buf: Uint8Array; + + constructor(s: string) { + this.#buf = new Uint8Array(encoder.encode(s)); + } + + readSync(p: Uint8Array): number | null { + const n = Math.min(p.byteLength, this.#buf.byteLength - this.#offset); + p.set(this.#buf.slice(this.#offset, this.#offset + n)); + this.#offset += n; + + if (n === 0) { + return null; + } + + return n; + } + } + + const reader = new TestReader("hello world!"); + + let totalSize = 0; + for await (const buf of Deno.iterSync(reader)) { + totalSize += buf.byteLength; + } + + assertEquals(totalSize, 12); +}); + +Deno.test( + { + permissions: { read: true, write: true }, + }, + function openSyncMode() { + const path = Deno.makeTempDirSync() + "/test_openSync.txt"; + using _file = Deno.openSync(path, { + write: true, + createNew: true, + mode: 0o626, + }); + const pathInfo = Deno.statSync(path); + if (Deno.build.os !== "windows") { + assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); + } + }, +); + +Deno.test( + { + permissions: { read: true, write: true }, + }, + async function openMode() { + const path = (await Deno.makeTempDir()) + "/test_open.txt"; + using _file = await Deno.open(path, { + write: true, + createNew: true, + mode: 0o626, + }); + const pathInfo = Deno.statSync(path); + if (Deno.build.os !== "windows") { + assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); + } + }, +); + +Deno.test( + { + permissions: { read: true, write: true }, + }, + function openSyncUrl() { + const tempDir = Deno.makeTempDirSync(); + const fileUrl = new URL( + `file://${ + Deno.build.os === "windows" ? "/" : "" + }${tempDir}/test_open.txt`, + ); + using _file = Deno.openSync(fileUrl, { + write: true, + createNew: true, + mode: 0o626, + }); + const pathInfo = Deno.statSync(fileUrl); + if (Deno.build.os !== "windows") { + assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); + } + + Deno.removeSync(tempDir, { recursive: true }); + }, +); + +Deno.test( + { + permissions: { read: true, write: true }, + }, + async function openUrl() { + const tempDir = await Deno.makeTempDir(); + const fileUrl = new URL( + `file://${ + Deno.build.os === "windows" ? "/" : "" + }${tempDir}/test_open.txt`, + ); + using _file = await Deno.open(fileUrl, { + write: true, + createNew: true, + mode: 0o626, + }); + const pathInfo = Deno.statSync(fileUrl); + if (Deno.build.os !== "windows") { + assertEquals(pathInfo.mode! & 0o777, 0o626 & ~Deno.umask()); + } + + Deno.removeSync(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { write: false } }, + async function writePermFailure() { + const filename = "tests/hello.txt"; + const openOptions: Deno.OpenOptions[] = [{ write: true }, { append: true }]; + for (const options of openOptions) { + await assertRejects(async () => { + await Deno.open(filename, options); + }, Deno.errors.PermissionDenied); + } + }, +); + +Deno.test(async function openOptions() { + const filename = "tests/testdata/assets/fixture.json"; + await assertRejects( + async () => { + await Deno.open(filename, { write: false }); + }, + Error, + "OpenOptions requires at least one option to be true", + ); + + await assertRejects( + async () => { + await Deno.open(filename, { truncate: true, write: false }); + }, + Error, + "'truncate' option requires 'write' option", + ); + + await assertRejects( + async () => { + await Deno.open(filename, { create: true, write: false }); + }, + Error, + "'create' or 'createNew' options require 'write' or 'append' option", + ); + + await assertRejects( + async () => { + await Deno.open(filename, { createNew: true, append: false }); + }, + Error, + "'create' or 'createNew' options require 'write' or 'append' option", + ); +}); + +Deno.test({ permissions: { read: false } }, async function readPermFailure() { + await assertRejects(async () => { + await Deno.open("package.json", { read: true }); + }, Deno.errors.PermissionDenied); +}); + +Deno.test( + { permissions: { write: true } }, + async function writeNullBufferFailure() { + const tempDir = Deno.makeTempDirSync(); + const filename = tempDir + "hello.txt"; + const w = { + write: true, + truncate: true, + create: true, + }; + using file = await Deno.open(filename, w); + + // writing null should throw an error + await assertRejects( + async () => { + // deno-lint-ignore no-explicit-any + await file.write(null as any); + }, + ); // TODO(bartlomieju): Check error kind when dispatch_minimal pipes errors properly + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { write: true, read: true } }, + async function readNullBufferFailure() { + const tempDir = Deno.makeTempDirSync(); + const filename = tempDir + "hello.txt"; + using file = await Deno.open(filename, { + read: true, + write: true, + truncate: true, + create: true, + }); + + // reading into an empty buffer should return 0 immediately + const bytesRead = await file.read(new Uint8Array(0)); + assert(bytesRead === 0); + + // reading file into null buffer should throw an error + await assertRejects(async () => { + // deno-lint-ignore no-explicit-any + await file.read(null as any); + }, TypeError); + // TODO(bartlomieju): Check error kind when dispatch_minimal pipes errors properly + + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { write: false, read: false } }, + async function readWritePermFailure() { + const filename = "tests/hello.txt"; + await assertRejects(async () => { + await Deno.open(filename, { read: true }); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + { permissions: { write: true, read: true } }, + async function openNotFound() { + await assertRejects( + async () => { + await Deno.open("bad_file_name"); + }, + Deno.errors.NotFound, + `open 'bad_file_name'`, + ); + }, +); + +Deno.test( + { permissions: { write: true, read: true } }, + function openSyncNotFound() { + assertThrows( + () => { + Deno.openSync("bad_file_name"); + }, + Deno.errors.NotFound, + `open 'bad_file_name'`, + ); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function createFile() { + const tempDir = await Deno.makeTempDir(); + const filename = tempDir + "/test.txt"; + const f = await Deno.create(filename); + let fileInfo = Deno.statSync(filename); + assert(fileInfo.isFile); + assert(fileInfo.size === 0); + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + await f.write(data); + fileInfo = Deno.statSync(filename); + assert(fileInfo.size === 5); + f.close(); + + // TODO(bartlomieju): test different modes + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function createFileWithUrl() { + const tempDir = await Deno.makeTempDir(); + const fileUrl = new URL( + `file://${Deno.build.os === "windows" ? "/" : ""}${tempDir}/test.txt`, + ); + const f = await Deno.create(fileUrl); + let fileInfo = Deno.statSync(fileUrl); + assert(fileInfo.isFile); + assert(fileInfo.size === 0); + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + await f.write(data); + fileInfo = Deno.statSync(fileUrl); + assert(fileInfo.size === 5); + f.close(); + + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function createSyncFile() { + const tempDir = await Deno.makeTempDir(); + const filename = tempDir + "/test.txt"; + const f = Deno.createSync(filename); + let fileInfo = Deno.statSync(filename); + assert(fileInfo.isFile); + assert(fileInfo.size === 0); + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + await f.write(data); + fileInfo = Deno.statSync(filename); + assert(fileInfo.size === 5); + f.close(); + + // TODO(bartlomieju): test different modes + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function createSyncFileWithUrl() { + const tempDir = await Deno.makeTempDir(); + const fileUrl = new URL( + `file://${Deno.build.os === "windows" ? "/" : ""}${tempDir}/test.txt`, + ); + const f = Deno.createSync(fileUrl); + let fileInfo = Deno.statSync(fileUrl); + assert(fileInfo.isFile); + assert(fileInfo.size === 0); + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + await f.write(data); + fileInfo = Deno.statSync(fileUrl); + assert(fileInfo.size === 5); + f.close(); + + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function openModeWrite() { + const tempDir = Deno.makeTempDirSync(); + const encoder = new TextEncoder(); + const filename = tempDir + "hello.txt"; + const data = encoder.encode("Hello world!\n"); + let file = await Deno.open(filename, { + create: true, + write: true, + truncate: true, + }); + // assert file was created + let fileInfo = Deno.statSync(filename); + assert(fileInfo.isFile); + assertEquals(fileInfo.size, 0); + // write some data + await file.write(data); + fileInfo = Deno.statSync(filename); + assertEquals(fileInfo.size, 13); + // assert we can't read from file + let thrown = false; + try { + const buf = new Uint8Array(20); + await file.read(buf); + } catch (_e) { + thrown = true; + } finally { + assert(thrown, "'w' mode shouldn't allow to read file"); + } + file.close(); + // assert that existing file is truncated on open + file = await Deno.open(filename, { + write: true, + truncate: true, + }); + file.close(); + const fileSize = Deno.statSync(filename).size; + assertEquals(fileSize, 0); + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function openModeWriteRead() { + const tempDir = Deno.makeTempDirSync(); + const encoder = new TextEncoder(); + const filename = tempDir + "hello.txt"; + const data = encoder.encode("Hello world!\n"); + + using file = await Deno.open(filename, { + write: true, + truncate: true, + create: true, + read: true, + }); + const seekPosition = 0; + // assert file was created + let fileInfo = Deno.statSync(filename); + assert(fileInfo.isFile); + assertEquals(fileInfo.size, 0); + // write some data + await file.write(data); + fileInfo = Deno.statSync(filename); + assertEquals(fileInfo.size, 13); + + const buf = new Uint8Array(20); + // seeking from beginning of a file + const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Start); + assertEquals(seekPosition, cursorPosition); + const result = await file.read(buf); + assertEquals(result, 13); + + await Deno.remove(tempDir, { recursive: true }); + }, +); + +Deno.test({ permissions: { read: true } }, async function seekStart() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + const seekPosition = 6; + // Deliberately move 1 step forward + await file.read(new Uint8Array(1)); // "H" + // Skipping "Hello " + // seeking from beginning of a file plus seekPosition + const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Start); + assertEquals(seekPosition, cursorPosition); + const buf = new Uint8Array(6); + await file.read(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, async function seekStartBigInt() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + const seekPosition = 6n; + // Deliberately move 1 step forward + await file.read(new Uint8Array(1)); // "H" + // Skipping "Hello " + // seeking from beginning of a file plus seekPosition + const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Start); + assertEquals(seekPosition, BigInt(cursorPosition)); + const buf = new Uint8Array(6); + await file.read(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, function seekSyncStart() { + const filename = "tests/testdata/assets/hello.txt"; + using file = Deno.openSync(filename); + const seekPosition = 6; + // Deliberately move 1 step forward + file.readSync(new Uint8Array(1)); // "H" + // Skipping "Hello " + // seeking from beginning of a file plus seekPosition + const cursorPosition = file.seekSync(seekPosition, Deno.SeekMode.Start); + assertEquals(seekPosition, cursorPosition); + const buf = new Uint8Array(6); + file.readSync(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, async function seekCurrent() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + // Deliberately move 1 step forward + await file.read(new Uint8Array(1)); // "H" + // Skipping "ello " + const seekPosition = 5; + // seekPosition is relative to current cursor position after read + const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.Current); + assertEquals(seekPosition + 1, cursorPosition); + const buf = new Uint8Array(6); + await file.read(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, function seekSyncCurrent() { + const filename = "tests/testdata/assets/hello.txt"; + using file = Deno.openSync(filename); + // Deliberately move 1 step forward + file.readSync(new Uint8Array(1)); // "H" + // Skipping "ello " + const seekPosition = 5; + // seekPosition is relative to current cursor position after read + const cursorPosition = file.seekSync(seekPosition, Deno.SeekMode.Current); + assertEquals(seekPosition + 1, cursorPosition); + const buf = new Uint8Array(6); + file.readSync(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, async function seekEnd() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + const seekPosition = -6; + // seek from end of file that has 12 chars, 12 - 6 = 6 + const cursorPosition = await file.seek(seekPosition, Deno.SeekMode.End); + assertEquals(6, cursorPosition); + const buf = new Uint8Array(6); + await file.read(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, function seekSyncEnd() { + const filename = "tests/testdata/assets/hello.txt"; + using file = Deno.openSync(filename); + const seekPosition = -6; + // seek from end of file that has 12 chars, 12 - 6 = 6 + const cursorPosition = file.seekSync(seekPosition, Deno.SeekMode.End); + assertEquals(6, cursorPosition); + const buf = new Uint8Array(6); + file.readSync(buf); + const decoded = new TextDecoder().decode(buf); + assertEquals(decoded, "world!"); +}); + +Deno.test({ permissions: { read: true } }, async function seekMode() { + const filename = "tests/testdata/assets/hello.txt"; + using file = await Deno.open(filename); + await assertRejects( + async () => { + await file.seek(1, -1 as unknown as Deno.SeekMode); + }, + TypeError, + "Invalid seek mode", + ); + + // We should still be able to read the file + // since it is still open. + const buf = new Uint8Array(1); + await file.read(buf); // "H" + assertEquals(new TextDecoder().decode(buf), "H"); +}); + +Deno.test( + { permissions: { read: true, write: true } }, + function fileTruncateSyncSuccess() { + const filename = Deno.makeTempDirSync() + "/test_fileTruncateSync.txt"; + using file = Deno.openSync(filename, { + create: true, + read: true, + write: true, + }); + + file.truncateSync(20); + assertEquals(Deno.readFileSync(filename).byteLength, 20); + file.truncateSync(5); + assertEquals(Deno.readFileSync(filename).byteLength, 5); + file.truncateSync(-5); + assertEquals(Deno.readFileSync(filename).byteLength, 0); + + Deno.removeSync(filename); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function fileTruncateSuccess() { + const filename = Deno.makeTempDirSync() + "/test_fileTruncate.txt"; + using file = await Deno.open(filename, { + create: true, + read: true, + write: true, + }); + + await file.truncate(20); + assertEquals((await Deno.readFile(filename)).byteLength, 20); + await file.truncate(5); + assertEquals((await Deno.readFile(filename)).byteLength, 5); + await file.truncate(-5); + assertEquals((await Deno.readFile(filename)).byteLength, 0); + + await Deno.remove(filename); + }, +); + +Deno.test({ permissions: { read: true } }, function fileStatSyncSuccess() { + using file = Deno.openSync("README.md"); + const fileInfo = file.statSync(); + assert(fileInfo.isFile); + assert(!fileInfo.isSymlink); + assert(!fileInfo.isDirectory); + assert(fileInfo.size); + assert(fileInfo.atime); + assert(fileInfo.mtime); + // The `birthtime` field is not available on Linux before kernel version 4.11. + assert(fileInfo.birthtime || Deno.build.os === "linux"); +}); + +Deno.test(async function fileStatSuccess() { + using file = await Deno.open("README.md"); + const fileInfo = await file.stat(); + assert(fileInfo.isFile); + assert(!fileInfo.isSymlink); + assert(!fileInfo.isDirectory); + assert(fileInfo.size); + assert(fileInfo.atime); + assert(fileInfo.mtime); + // The `birthtime` field is not available on Linux before kernel version 4.11. + assert(fileInfo.birthtime || Deno.build.os === "linux"); +}); + +Deno.test({ permissions: { read: true } }, async function readableStream() { + const filename = "tests/testdata/assets/hello.txt"; + const file = await Deno.open(filename); + assert(file.readable instanceof ReadableStream); + const chunks = []; + for await (const chunk of file.readable) { + chunks.push(chunk); + } + assertEquals(chunks.length, 1); + assertEquals(chunks[0].byteLength, 12); +}); + +Deno.test( + { permissions: { read: true } }, + async function readableStreamTextEncoderPipe() { + const filename = "tests/testdata/assets/hello.txt"; + const file = await Deno.open(filename); + const readable = file.readable.pipeThrough(new TextDecoderStream()); + const chunks = []; + for await (const chunk of readable) { + chunks.push(chunk); + } + assertEquals(chunks.length, 1); + assertEquals(chunks[0].length, 12); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function writableStream() { + const path = await Deno.makeTempFile(); + const file = await Deno.open(path, { write: true }); + assert(file.writable instanceof WritableStream); + const readable = new ReadableStream({ + start(controller) { + controller.enqueue(new TextEncoder().encode("hello ")); + controller.enqueue(new TextEncoder().encode("world!")); + controller.close(); + }, + }); + await readable.pipeTo(file.writable); + const res = await Deno.readTextFile(path); + assertEquals(res, "hello world!"); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function readTextFileNonUtf8() { + const path = await Deno.makeTempFile(); + using file = await Deno.open(path, { write: true }); + await file.write(new TextEncoder().encode("hello ")); + await file.write(new Uint8Array([0xC0])); + + const res = await Deno.readTextFile(path); + const resSync = Deno.readTextFileSync(path); + assertEquals(res, resSync); + assertEquals(res, "hello \uFFFD"); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function fsFileExplicitResourceManagement() { + let file2: Deno.FsFile; + + { + using file = await Deno.open("tests/testdata/assets/hello.txt"); + file2 = file; + + const stat = file.statSync(); + assert(stat.isFile); + } + + assertThrows(() => file2.statSync(), Deno.errors.BadResource); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function fsFileExplicitResourceManagementManualClose() { + using file = await Deno.open("tests/testdata/assets/hello.txt"); + file.close(); + assertThrows(() => file.statSync(), Deno.errors.BadResource); // definitely closed + // calling [Symbol.dispose] after manual close is a no-op + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + function fsFileDatasyncSyncSuccess() { + const filename = Deno.makeTempDirSync() + "/test_fdatasyncSync.txt"; + const file = Deno.openSync(filename, { + read: true, + write: true, + create: true, + }); + const data = new Uint8Array(64); + file.writeSync(data); + file.syncDataSync(); + assertEquals(Deno.readFileSync(filename), data); + file.close(); + Deno.removeSync(filename); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function fsFileDatasyncSuccess() { + const filename = (await Deno.makeTempDir()) + "/test_fdatasync.txt"; + const file = await Deno.open(filename, { + read: true, + write: true, + create: true, + }); + const data = new Uint8Array(64); + await file.write(data); + await file.syncData(); + assertEquals(await Deno.readFile(filename), data); + file.close(); + await Deno.remove(filename); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + function fsFileSyncSyncSuccess() { + const filename = Deno.makeTempDirSync() + "/test_fsyncSync.txt"; + const file = Deno.openSync(filename, { + read: true, + write: true, + create: true, + }); + const size = 64; + file.truncateSync(size); + file.syncSync(); + assertEquals(file.statSync().size, size); + file.close(); + Deno.removeSync(filename); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function fsFileSyncSuccess() { + const filename = (await Deno.makeTempDir()) + "/test_fsync.txt"; + const file = await Deno.open(filename, { + read: true, + write: true, + create: true, + }); + const size = 64; + await file.truncate(size); + await file.sync(); + assertEquals((await file.stat()).size, size); + file.close(); + await Deno.remove(filename); + }, +); + +Deno.test( + { permissions: { read: true, run: true, hrtime: true } }, + async function fsFileLockFileSync() { + await runFlockTests({ sync: true }); + }, +); + +Deno.test( + { permissions: { read: true, run: true, hrtime: true } }, + async function fsFileLockFileAsync() { + await runFlockTests({ sync: false }); + }, +); + +async function runFlockTests(opts: { sync: boolean }) { + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: true, + secondExclusive: false, + sync: opts.sync, + }), + true, + "exclusive blocks shared", + ); + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: false, + secondExclusive: true, + sync: opts.sync, + }), + true, + "shared blocks exclusive", + ); + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: true, + secondExclusive: true, + sync: opts.sync, + }), + true, + "exclusive blocks exclusive", + ); + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: false, + secondExclusive: false, + sync: opts.sync, + // need to wait for both to enter the lock to prevent the case where the + // first process enters and exits the lock before the second even enters + waitBothEnteredLock: true, + }), + false, + "shared does not block shared", + ); +} + +async function checkFirstBlocksSecond(opts: { + firstExclusive: boolean; + secondExclusive: boolean; + sync: boolean; + waitBothEnteredLock?: boolean; +}) { + const firstProcess = runFlockTestProcess({ + exclusive: opts.firstExclusive, + sync: opts.sync, + }); + const secondProcess = runFlockTestProcess({ + exclusive: opts.secondExclusive, + sync: opts.sync, + }); + try { + const sleep = (time: number) => new Promise((r) => setTimeout(r, time)); + + await Promise.all([ + firstProcess.waitStartup(), + secondProcess.waitStartup(), + ]); + + await firstProcess.enterLock(); + await firstProcess.waitEnterLock(); + + await secondProcess.enterLock(); + await sleep(100); + + if (!opts.waitBothEnteredLock) { + await firstProcess.exitLock(); + } + + await secondProcess.waitEnterLock(); + + if (opts.waitBothEnteredLock) { + await firstProcess.exitLock(); + } + + await secondProcess.exitLock(); + + // collect the final output + const firstPsTimes = await firstProcess.getTimes(); + const secondPsTimes = await secondProcess.getTimes(); + return firstPsTimes.exitTime < secondPsTimes.enterTime; + } finally { + await firstProcess.close(); + await secondProcess.close(); + } +} + +function runFlockTestProcess(opts: { exclusive: boolean; sync: boolean }) { + const path = "tests/testdata/assets/lock_target.txt"; + const scriptText = ` + const file = Deno.openSync("${path}"); + + // ready signal + Deno.stdout.writeSync(new Uint8Array(1)); + // wait for enter lock signal + Deno.stdin.readSync(new Uint8Array(1)); + + // entering signal + Deno.stdout.writeSync(new Uint8Array(1)); + // lock and record the entry time + ${ + opts.sync + ? `file.lockSync(${opts.exclusive ? "true" : "false"});` + : `await file.lock(${opts.exclusive ? "true" : "false"});` + } + const enterTime = new Date().getTime(); + // entered signal + Deno.stdout.writeSync(new Uint8Array(1)); + + // wait for exit lock signal + Deno.stdin.readSync(new Uint8Array(1)); + + // record the exit time and wait a little bit before releasing + // the lock so that the enter time of the next process doesn't + // occur at the same time as this exit time + const exitTime = new Date().getTime(); + await new Promise(resolve => setTimeout(resolve, 100)); + + // release the lock + ${opts.sync ? "file.unlockSync();" : "await file.unlock();"} + + // exited signal + Deno.stdout.writeSync(new Uint8Array(1)); + + // output the enter and exit time + console.log(JSON.stringify({ enterTime, exitTime })); +`; + + const process = new Deno.Command(Deno.execPath(), { + args: ["eval", "--unstable", scriptText], + stdin: "piped", + stdout: "piped", + stderr: "null", + }).spawn(); + + const waitSignal = async () => { + const reader = process.stdout.getReader({ mode: "byob" }); + await reader.read(new Uint8Array(1)); + reader.releaseLock(); + }; + const signal = async () => { + const writer = process.stdin.getWriter(); + await writer.write(new Uint8Array(1)); + writer.releaseLock(); + }; + + return { + async waitStartup() { + await waitSignal(); + }, + async enterLock() { + await signal(); + await waitSignal(); // entering signal + }, + async waitEnterLock() { + await waitSignal(); + }, + async exitLock() { + await signal(); + await waitSignal(); + }, + getTimes: async () => { + const { stdout } = await process.output(); + const text = new TextDecoder().decode(stdout); + return JSON.parse(text) as { + enterTime: number; + exitTime: number; + }; + }, + close: async () => { + await process.status; + await process.stdin.close(); + }, + }; +} diff --git a/tests/unit/flock_test.ts b/tests/unit/flock_test.ts new file mode 100644 index 000000000..4b194ce55 --- /dev/null +++ b/tests/unit/flock_test.ts @@ -0,0 +1,197 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { assertEquals } from "./test_util.ts"; + +Deno.test( + { permissions: { read: true, run: true, hrtime: true } }, + async function flockFileSync() { + await runFlockTests({ sync: true }); + }, +); + +Deno.test( + { permissions: { read: true, run: true, hrtime: true } }, + async function flockFileAsync() { + await runFlockTests({ sync: false }); + }, +); + +async function runFlockTests(opts: { sync: boolean }) { + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: true, + secondExclusive: false, + sync: opts.sync, + }), + true, + "exclusive blocks shared", + ); + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: false, + secondExclusive: true, + sync: opts.sync, + }), + true, + "shared blocks exclusive", + ); + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: true, + secondExclusive: true, + sync: opts.sync, + }), + true, + "exclusive blocks exclusive", + ); + assertEquals( + await checkFirstBlocksSecond({ + firstExclusive: false, + secondExclusive: false, + sync: opts.sync, + // need to wait for both to enter the lock to prevent the case where the + // first process enters and exits the lock before the second even enters + waitBothEnteredLock: true, + }), + false, + "shared does not block shared", + ); +} + +async function checkFirstBlocksSecond(opts: { + firstExclusive: boolean; + secondExclusive: boolean; + sync: boolean; + waitBothEnteredLock?: boolean; +}) { + const firstProcess = runFlockTestProcess({ + exclusive: opts.firstExclusive, + sync: opts.sync, + }); + const secondProcess = runFlockTestProcess({ + exclusive: opts.secondExclusive, + sync: opts.sync, + }); + try { + const sleep = (time: number) => new Promise((r) => setTimeout(r, time)); + + await Promise.all([ + firstProcess.waitStartup(), + secondProcess.waitStartup(), + ]); + + await firstProcess.enterLock(); + await firstProcess.waitEnterLock(); + + await secondProcess.enterLock(); + await sleep(100); + + if (!opts.waitBothEnteredLock) { + await firstProcess.exitLock(); + } + + await secondProcess.waitEnterLock(); + + if (opts.waitBothEnteredLock) { + await firstProcess.exitLock(); + } + + await secondProcess.exitLock(); + + // collect the final output + const firstPsTimes = await firstProcess.getTimes(); + const secondPsTimes = await secondProcess.getTimes(); + return firstPsTimes.exitTime < secondPsTimes.enterTime; + } finally { + await firstProcess.close(); + await secondProcess.close(); + } +} + +function runFlockTestProcess(opts: { exclusive: boolean; sync: boolean }) { + const path = "tests/testdata/assets/lock_target.txt"; + const scriptText = ` + const { rid } = Deno.openSync("${path}"); + + // ready signal + Deno.stdout.writeSync(new Uint8Array(1)); + // wait for enter lock signal + Deno.stdin.readSync(new Uint8Array(1)); + + // entering signal + Deno.stdout.writeSync(new Uint8Array(1)); + // lock and record the entry time + ${ + opts.sync + ? `Deno.flockSync(rid, ${opts.exclusive ? "true" : "false"});` + : `await Deno.flock(rid, ${opts.exclusive ? "true" : "false"});` + } + const enterTime = new Date().getTime(); + // entered signal + Deno.stdout.writeSync(new Uint8Array(1)); + + // wait for exit lock signal + Deno.stdin.readSync(new Uint8Array(1)); + + // record the exit time and wait a little bit before releasing + // the lock so that the enter time of the next process doesn't + // occur at the same time as this exit time + const exitTime = new Date().getTime(); + await new Promise(resolve => setTimeout(resolve, 100)); + + // release the lock + ${opts.sync ? "Deno.funlockSync(rid);" : "await Deno.funlock(rid);"} + + // exited signal + Deno.stdout.writeSync(new Uint8Array(1)); + + // output the enter and exit time + console.log(JSON.stringify({ enterTime, exitTime })); +`; + + const process = new Deno.Command(Deno.execPath(), { + args: ["eval", "--unstable", scriptText], + stdin: "piped", + stdout: "piped", + stderr: "null", + }).spawn(); + + const waitSignal = async () => { + const reader = process.stdout.getReader({ mode: "byob" }); + await reader.read(new Uint8Array(1)); + reader.releaseLock(); + }; + const signal = async () => { + const writer = process.stdin.getWriter(); + await writer.write(new Uint8Array(1)); + writer.releaseLock(); + }; + + return { + async waitStartup() { + await waitSignal(); + }, + async enterLock() { + await signal(); + await waitSignal(); // entering signal + }, + async waitEnterLock() { + await waitSignal(); + }, + async exitLock() { + await signal(); + await waitSignal(); + }, + getTimes: async () => { + const { stdout } = await process.output(); + const text = new TextDecoder().decode(stdout); + return JSON.parse(text) as { + enterTime: number; + exitTime: number; + }; + }, + close: async () => { + await process.status; + await process.stdin.close(); + }, + }; +} diff --git a/cli/tests/unit/fs_events_test.ts b/tests/unit/fs_events_test.ts index 4f7cdc4d5..4f7cdc4d5 100644 --- a/cli/tests/unit/fs_events_test.ts +++ b/tests/unit/fs_events_test.ts diff --git a/cli/tests/unit/get_random_values_test.ts b/tests/unit/get_random_values_test.ts index 75aaf4c1b..75aaf4c1b 100644 --- a/cli/tests/unit/get_random_values_test.ts +++ b/tests/unit/get_random_values_test.ts diff --git a/cli/tests/unit/globals_test.ts b/tests/unit/globals_test.ts index 00be3f451..00be3f451 100644 --- a/cli/tests/unit/globals_test.ts +++ b/tests/unit/globals_test.ts diff --git a/cli/tests/unit/headers_test.ts b/tests/unit/headers_test.ts index ad453b67f..ad453b67f 100644 --- a/cli/tests/unit/headers_test.ts +++ b/tests/unit/headers_test.ts diff --git a/tests/unit/http_test.ts b/tests/unit/http_test.ts new file mode 100644 index 000000000..17023004e --- /dev/null +++ b/tests/unit/http_test.ts @@ -0,0 +1,2801 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { Buffer, BufReader, BufWriter } from "@test_util/std/io/mod.ts"; +import { TextProtoReader } from "../testdata/run/textproto.ts"; +import { + assert, + assertEquals, + assertRejects, + assertStrictEquals, + assertThrows, + delay, + fail, +} from "./test_util.ts"; +import { join } from "@test_util/std/path/mod.ts"; + +const listenPort = 4507; +const listenPort2 = 4508; + +const { + buildCaseInsensitiveCommaValueFinder, + // @ts-expect-error TypeScript (as of 3.7) does not support indexing namespaces by symbol +} = Deno[Deno.internal]; + +async function writeRequestAndReadResponse(conn: Deno.Conn): Promise<string> { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const w = new BufWriter(conn); + const r = new BufReader(conn); + const body = `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\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); + const headers = await tpr.readMimeHeader(); + assert(headers !== null); + + const chunkedReader = chunkedBodyReader(headers, r); + const buf = new Uint8Array(5); + const dest = new Buffer(); + let result: number | null; + while ((result = await chunkedReader.read(buf)) !== null) { + const len = Math.min(buf.byteLength, result); + await dest.write(buf.subarray(0, len)); + } + return decoder.decode(dest.bytes()); +} + +Deno.test({ permissions: { net: true } }, async function httpServerBasic() { + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + assertEquals(new URL(request.url).href, `http://127.0.0.1:${listenPort}/`); + assertEquals(await request.text(), ""); + await respondWith( + new Response("Hello World", { headers: { "foo": "bar" } }), + ); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + headers: { "connection": "close" }, + }); + const clone = resp.clone(); + const text = await resp.text(); + assertEquals(text, "Hello World"); + assertEquals(resp.headers.get("foo"), "bar"); + const cloneText = await clone.text(); + assertEquals(cloneText, "Hello World"); + await promise; + + httpConn!.close(); +}); + +// https://github.com/denoland/deno/issues/15107 +Deno.test( + { permissions: { net: true } }, + async function httpLazyHeadersIssue15107() { + let headers: Headers; + const promise = (async () => { + const listener = Deno.listen({ port: 2333 }); + const conn = await listener.accept(); + listener.close(); + const httpConn = Deno.serveHttp(conn); + const e = await httpConn.nextRequest(); + assert(e); + const { request } = e; + request.text(); + headers = request.headers; + httpConn!.close(); + })(); + + const conn = await Deno.connect({ port: 2333 }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await promise; + conn.close(); + assertEquals(headers!.get("content-length"), "5"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpReadHeadersAfterClose() { + const promise = (async () => { + const listener = Deno.listen({ port: 2334 }); + const conn = await listener.accept(); + listener.close(); + const httpConn = Deno.serveHttp(conn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + + await request.text(); // Read body + await respondWith(new Response("Hello World")); // Closes request + + assertThrows(() => request.headers, TypeError, "request closed"); + httpConn!.close(); + })(); + + const conn = await Deno.connect({ port: 2334 }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await promise; + conn.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerGetRequestBody() { + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.body, null); + await respondWith(new Response("", { headers: {} })); + })(); + + const conn = await Deno.connect({ port: listenPort }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\r\nContent-Length: 5\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + const resp = new Uint8Array(200); + const readResult = await conn.read(resp); + assertEquals(readResult, 138); + + conn.close(); + + await promise; + httpConn!.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerStreamResponse() { + const stream = new TransformStream(); + const writer = stream.writable.getWriter(); + writer.write(new TextEncoder().encode("hello ")); + writer.write(new TextEncoder().encode("world")); + writer.close(); + + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + httpConn = Deno.serveHttp(conn); + const evt = await httpConn.nextRequest(); + assert(evt); + const { request, respondWith } = evt; + assert(!request.body); + await respondWith(new Response(stream.readable)); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`); + const respBody = await resp.text(); + assertEquals("hello world", respBody); + await promise; + httpConn!.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerStreamRequest() { + const stream = new TransformStream(); + const writer = stream.writable.getWriter(); + writer.write(new TextEncoder().encode("hello ")); + writer.write(new TextEncoder().encode("world")); + writer.close(); + + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const evt = await httpConn.nextRequest(); + assert(evt); + const { request, respondWith } = evt; + const reqBody = await request.text(); + assertEquals("hello world", reqBody); + await respondWith(new Response("")); + + // TODO(ry) If we don't call httpConn.nextRequest() here we get "error sending + // request for url (https://localhost:${listenPort}/): connection closed before + // message completed". + assertEquals(await httpConn.nextRequest(), null); + + listener.close(); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + body: stream.readable, + method: "POST", + headers: { "connection": "close" }, + }); + + await resp.arrayBuffer(); + await promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerStreamDuplex() { + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + httpConn = Deno.serveHttp(conn); + const evt = await httpConn.nextRequest(); + assert(evt); + const { request, respondWith } = evt; + assert(request.body); + await respondWith(new Response(request.body)); + })(); + + const ts = new TransformStream(); + const writable = ts.writable.getWriter(); + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + method: "POST", + body: ts.readable, + }); + assert(resp.body); + const reader = resp.body.getReader(); + await writable.write(new Uint8Array([1])); + const chunk1 = await reader.read(); + assert(!chunk1.done); + assertEquals(chunk1.value, new Uint8Array([1])); + await writable.write(new Uint8Array([2])); + const chunk2 = await reader.read(); + assert(!chunk2.done); + assertEquals(chunk2.value, new Uint8Array([2])); + + await writable.close(); + const chunk3 = await reader.read(); + assert(chunk3.done); + await promise; + httpConn!.close(); + listener.close(); + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerClose() { + const listener = Deno.listen({ port: listenPort }); + const client = await Deno.connect({ port: listenPort }); + const httpConn = Deno.serveHttp(await listener.accept()); + client.close(); + const evt = await httpConn.nextRequest(); + assertEquals(evt, null); + // Note httpConn is automatically closed when "done" is reached. + listener.close(); +}); + +Deno.test( + { permissions: { net: true } }, + async function httpServerInvalidMethod() { + const listener = Deno.listen({ port: listenPort }); + const client = await Deno.connect({ port: listenPort }); + const httpConn = Deno.serveHttp(await listener.accept()); + await client.write(new Uint8Array([1, 2, 3])); + await assertRejects( + async () => { + await httpConn.nextRequest(); + }, + Deno.errors.Http, + "invalid HTTP method parsed", + ); + // Note httpConn is automatically closed when it errors. + client.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function httpServerWithTls() { + const hostname = "localhost"; + const port = listenPort; + + const promise = (async () => { + const listener = Deno.listenTls({ + hostname, + port, + cert: Deno.readTextFileSync("tests/testdata/tls/localhost.crt"), + key: Deno.readTextFileSync("tests/testdata/tls/localhost.key"), + }); + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const evt = await httpConn.nextRequest(); + assert(evt); + const { respondWith } = evt; + await respondWith(new Response("Hello World")); + + // TODO(ry) If we don't call httpConn.nextRequest() here we get "error sending + // request for url (https://localhost:${listenPort}/): connection closed before + // message completed". + assertEquals(await httpConn.nextRequest(), null); + + listener.close(); + })(); + + const caCert = Deno.readTextFileSync("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const resp = await fetch(`https://${hostname}:${port}/`, { + headers: { "connection": "close" }, + client, + }); + client.close(); + const respBody = await resp.text(); + assertEquals("Hello World", respBody); + await promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerRegressionHang() { + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + httpConn = Deno.serveHttp(conn); + const event = await httpConn.nextRequest(); + assert(event); + const { request, respondWith } = event; + const reqBody = await request.text(); + assertEquals("request", reqBody); + await respondWith(new Response("response")); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + method: "POST", + body: "request", + }); + const respBody = await resp.text(); + assertEquals("response", respBody); + await promise; + + httpConn!.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerCancelBodyOnResponseFailure() { + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const event = await httpConn.nextRequest(); + assert(event); + const { respondWith } = event; + let cancelReason: string; + await assertRejects( + async () => { + let interval = 0; + await respondWith( + new Response( + new ReadableStream({ + start(controller) { + interval = setInterval(() => { + const message = `data: ${Date.now()}\n\n`; + controller.enqueue(new TextEncoder().encode(message)); + }, 200); + }, + cancel(reason) { + cancelReason = reason; + clearInterval(interval); + }, + }), + ), + ); + }, + Deno.errors.Http, + cancelReason!, + ); + assert(cancelReason!); + httpConn!.close(); + listener.close(); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`); + await resp.body!.cancel(); + await promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerNextRequestErrorExposedInResponse() { + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const event = await httpConn.nextRequest(); + assert(event); + // Start polling for the next request before awaiting response. + const nextRequestPromise = httpConn.nextRequest(); + const { respondWith } = event; + await assertRejects( + async () => { + let interval = 0; + await respondWith( + new Response( + new ReadableStream({ + start(controller) { + interval = setInterval(() => { + const message = `data: ${Date.now()}\n\n`; + controller.enqueue(new TextEncoder().encode(message)); + }, 200); + }, + cancel() { + clearInterval(interval); + }, + }), + ), + ); + }, + Deno.errors.Http, + "connection closed", + ); + // The error from `op_http_accept` reroutes to `respondWith()`. + assertEquals(await nextRequestPromise, null); + listener.close(); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`); + await resp.body!.cancel(); + await promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerEmptyBlobResponse() { + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + httpConn = Deno.serveHttp(conn); + const event = await httpConn.nextRequest(); + assert(event); + const { respondWith } = event; + await respondWith(new Response(new Blob([]))); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`); + const respBody = await resp.text(); + assertEquals("", respBody); + await promise; + httpConn!.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerNextRequestResolvesOnClose() { + const httpConnList: Deno.HttpConn[] = []; + + async function serve(l: Deno.Listener) { + for await (const conn of l) { + (async () => { + const c = Deno.serveHttp(conn); + httpConnList.push(c); + for await (const { respondWith } of c) { + respondWith(new Response("hello")); + } + })(); + } + } + + const l = Deno.listen({ port: listenPort }); + serve(l); + + await delay(300); + const res = await fetch(`http://localhost:${listenPort}/`); + const _text = await res.text(); + + // Close connection and listener. + httpConnList.forEach((conn) => conn.close()); + l.close(); + + await delay(300); + }, +); + +Deno.test( + { permissions: { net: true } }, + // Issue: https://github.com/denoland/deno/issues/10870 + async function httpServerHang() { + // Quick and dirty way to make a readable stream from a string. Alternatively, + // `readableStreamFromReader(file)` could be used. + function stream(s: string): ReadableStream<Uint8Array> { + return new Response(s).body!; + } + + const httpConns: Deno.HttpConn[] = []; + const promise = (async () => { + let count = 0; + const listener = Deno.listen({ port: listenPort }); + for await (const conn of listener) { + (async () => { + const httpConn = Deno.serveHttp(conn); + httpConns.push(httpConn); + for await (const { respondWith } of httpConn) { + respondWith(new Response(stream("hello"))); + + count++; + if (count >= 2) { + listener.close(); + } + } + })(); + } + })(); + + const clientConn = await Deno.connect({ port: listenPort }); + + const r1 = await writeRequestAndReadResponse(clientConn); + assertEquals(r1, "hello"); + + const r2 = await writeRequestAndReadResponse(clientConn); + assertEquals(r2, "hello"); + + clientConn.close(); + await promise; + for (const conn of httpConns) { + conn.close(); + } + }, +); + +Deno.test( + { permissions: { net: true } }, + // Issue: https://github.com/denoland/deno/issues/10930 + async function httpServerStreamingResponse() { + // This test enqueues a single chunk for readable + // stream and waits for client to read that chunk and signal + // it before enqueueing subsequent chunk. Issue linked above + // presented a situation where enqueued chunks were not + // written to the HTTP connection until the next chunk was enqueued. + + let counter = 0; + + const deferreds = [ + Promise.withResolvers<void>(), + Promise.withResolvers<void>(), + Promise.withResolvers<void>(), + ]; + + async function writeRequest(conn: Deno.Conn) { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const w = new BufWriter(conn); + const r = new BufReader(conn); + const body = `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\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); + const headers = await tpr.readMimeHeader(); + assert(headers !== null); + + const chunkedReader = chunkedBodyReader(headers, r); + const buf = new Uint8Array(5); + const dest = new Buffer(); + let result: number | null; + while ((result = await chunkedReader.read(buf)) !== null) { + const len = Math.min(buf.byteLength, result); + await dest.write(buf.subarray(0, len)); + // Resolve a deferred - this will make response stream to + // enqueue next chunk. + deferreds[counter - 1].resolve(); + } + return decoder.decode(dest.bytes()); + } + + function periodicStream() { + return new ReadableStream({ + start(controller) { + controller.enqueue(`${counter}\n`); + counter++; + }, + + async pull(controller) { + if (counter >= 3) { + return controller.close(); + } + + await deferreds[counter - 1].promise; + + controller.enqueue(`${counter}\n`); + counter++; + }, + }).pipeThrough(new TextEncoderStream()); + } + + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const finished = (async () => { + const conn = await listener.accept(); + httpConn = Deno.serveHttp(conn); + const requestEvent = await httpConn.nextRequest(); + const { respondWith } = requestEvent!; + await respondWith(new Response(periodicStream())); + })(); + + // start a client + const clientConn = await Deno.connect({ port: listenPort }); + + const r1 = await writeRequest(clientConn); + assertEquals(r1, "0\n1\n2\n"); + + await finished; + clientConn.close(); + + httpConn!.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpRequestLatin1Headers() { + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + assertEquals(request.headers.get("X-Header-Test"), "á"); + await respondWith( + new Response("", { headers: { "X-Header-Test": "Æ" } }), + ); + })(); + + const clientConn = await Deno.connect({ port: listenPort }); + const requestText = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\r\nX-Header-Test: á\r\n\r\n`; + const requestBytes = new Uint8Array(requestText.length); + for (let i = 0; i < requestText.length; i++) { + requestBytes[i] = requestText.charCodeAt(i); + } + let written = 0; + while (written < requestBytes.byteLength) { + written += await clientConn.write(requestBytes.slice(written)); + } + + let responseText = ""; + const buf = new Uint8Array(1024); + let read; + + while ((read = await clientConn.read(buf)) !== null) { + httpConn!.close(); + for (let i = 0; i < read; i++) { + responseText += String.fromCharCode(buf[i]); + } + } + + clientConn.close(); + + assert(/\r\n[Xx]-[Hh]eader-[Tt]est: Æ\r\n/.test(responseText)); + + await promise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerRequestWithoutPath() { + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + assertEquals( + new URL(request.url).href, + `http://127.0.0.1:${listenPort}/`, + ); + assertEquals(await request.text(), ""); + await respondWith(new Response()); + })(); + + const clientConn = await Deno.connect({ port: listenPort }); + + async function writeRequest(conn: Deno.Conn) { + const encoder = new TextEncoder(); + + const w = new BufWriter(conn); + const r = new BufReader(conn); + const body = + `CONNECT 127.0.0.1:${listenPort} HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\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); + const m = statusLine.match(/^(.+?) (.+?) (.+?)$/); + assert(m !== null, "must be matched"); + const [_, _proto, status, _ok] = m; + assertEquals(status, "200"); + const headers = await tpr.readMimeHeader(); + assert(headers !== null); + } + + await writeRequest(clientConn); + clientConn.close(); + await promise; + httpConn!.close(); + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerWebSocket() { + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + const httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + socket.onerror = () => fail(); + socket.onmessage = (m) => { + socket.send(m.data); + socket.close(1001); + }; + const close = new Promise<void>((resolve) => { + socket.onclose = () => resolve(); + }); + await respondWith(response); + await close; + })(); + + const def = Promise.withResolvers<void>(); + const ws = new WebSocket(`ws://localhost:${listenPort}`); + ws.onmessage = (m) => assertEquals(m.data, "foo"); + ws.onerror = () => fail(); + ws.onclose = () => def.resolve(); + ws.onopen = () => ws.send("foo"); + await def.promise; + await promise; +}); + +Deno.test(function httpUpgradeWebSocket() { + const request = new Request("https://deno.land/", { + headers: { + connection: "Upgrade", + upgrade: "websocket", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + const { response } = Deno.upgradeWebSocket(request); + assertEquals(response.status, 101); + assertEquals(response.headers.get("connection"), "Upgrade"); + assertEquals(response.headers.get("upgrade"), "websocket"); + assertEquals( + response.headers.get("sec-websocket-accept"), + "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", + ); +}); + +Deno.test(function httpUpgradeWebSocketMultipleConnectionOptions() { + const request = new Request("https://deno.land/", { + headers: { + connection: "keep-alive, upgrade", + upgrade: "websocket", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + const { response } = Deno.upgradeWebSocket(request); + assertEquals(response.status, 101); +}); + +Deno.test(function httpUpgradeWebSocketMultipleUpgradeOptions() { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + upgrade: "websocket, foo", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + const { response } = Deno.upgradeWebSocket(request); + assertEquals(response.status, 101); +}); + +Deno.test(function httpUpgradeWebSocketCaseInsensitiveUpgradeHeader() { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + upgrade: "Websocket", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + const { response } = Deno.upgradeWebSocket(request); + assertEquals(response.status, 101); +}); + +Deno.test(function httpUpgradeWebSocketInvalidUpgradeHeader() { + assertThrows( + () => { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + upgrade: "invalid", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + Deno.upgradeWebSocket(request); + }, + TypeError, + "Invalid Header: 'upgrade' header must contain 'websocket'", + ); +}); + +Deno.test(function httpUpgradeWebSocketWithoutUpgradeHeader() { + assertThrows( + () => { + const request = new Request("https://deno.land/", { + headers: { + connection: "upgrade", + "sec-websocket-key": "dGhlIHNhbXBsZSBub25jZQ==", + }, + }); + Deno.upgradeWebSocket(request); + }, + TypeError, + "Invalid Header: 'upgrade' header must contain 'websocket'", + ); +}); + +Deno.test( + { permissions: { net: true } }, + async function httpCookieConcatenation() { + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + assertEquals( + new URL(request.url).href, + `http://127.0.0.1:${listenPort}/`, + ); + assertEquals(await request.text(), ""); + assertEquals(request.headers.get("cookie"), "foo=bar; bar=foo"); + await respondWith(new Response("ok")); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + headers: [ + ["connection", "close"], + ["cookie", "foo=bar"], + ["cookie", "bar=foo"], + ], + }); + const text = await resp.text(); + assertEquals(text, "ok"); + await promise; + httpConn!.close(); + }, +); + +// https://github.com/denoland/deno/issues/11651 +Deno.test({ permissions: { net: true } }, async function httpServerPanic() { + const listener = Deno.listen({ port: listenPort }); + const client = await Deno.connect({ port: listenPort }); + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + + // This message is incomplete on purpose, we'll forcefully close client connection + // after it's flushed to cause connection to error out on the server side. + const encoder = new TextEncoder(); + await client.write(encoder.encode("GET / HTTP/1.1")); + + httpConn.nextRequest(); + await client.write(encoder.encode("\r\n\r\n")); + httpConn!.close(); + + client.close(); + listener.close(); +}); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerCorrectSizeResponse() { + const tmpFile = await Deno.makeTempFile(); + using file = await Deno.open(tmpFile, { write: true, read: true }); + await file.write(new Uint8Array(70 * 1024).fill(1)); // 70kb sent in 64kb + 6kb chunks + + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + httpConn = Deno.serveHttp(conn); + const ev = await httpConn.nextRequest(); + const { respondWith } = ev!; + const f = await Deno.open(tmpFile, { read: true }); + await respondWith(new Response(f.readable, { status: 200 })); + })(); + const resp = await fetch(`http://127.0.0.1:${listenPort}/`); + const body = await resp.arrayBuffer(); + assertEquals(body.byteLength, 70 * 1024); + await promise; + httpConn!.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerClosedStream() { + const listener = Deno.listen({ port: listenPort }); + + const client = await Deno.connect({ port: listenPort }); + await client.write(new TextEncoder().encode( + `GET / HTTP/1.0\r\n\r\n`, + )); + + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const ev = await httpConn.nextRequest(); + const { respondWith } = ev!; + + const tmpFile = await Deno.makeTempFile(); + const file = await Deno.open(tmpFile, { write: true, read: true }); + await file.write(new TextEncoder().encode("hello")); + + const reader = await file.readable.getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) break; + assert(value); + } + + let didThrow = false; + try { + await respondWith(new Response(file.readable)); + } catch { + // pass + didThrow = true; + } + + assert(didThrow); + httpConn!.close(); + listener.close(); + client.close(); + }, +); + +// https://github.com/denoland/deno/issues/11595 +Deno.test( + { permissions: { net: true } }, + async function httpServerIncompleteMessage() { + const listener = Deno.listen({ port: listenPort }); + + const client = await Deno.connect({ port: listenPort }); + await client.write(new TextEncoder().encode( + `GET / HTTP/1.0\r\n\r\n`, + )); + + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const ev = await httpConn.nextRequest(); + const { respondWith } = ev!; + + const errors: Error[] = []; + + const readable = new ReadableStream({ + async pull(controller) { + client.close(); + await delay(1000); + controller.enqueue(new TextEncoder().encode( + "written to the writable side of a TransformStream", + )); + controller.close(); + }, + cancel(error) { + errors.push(error); + }, + }); + + const res = new Response(readable); + + await respondWith(res).catch((error: Error) => errors.push(error)); + + httpConn!.close(); + listener.close(); + + assert(errors.length >= 1); + for (const error of errors) { + assertEquals(error.name, "Http"); + assert(error.message.includes("connection")); + } + }, +); + +// https://github.com/denoland/deno/issues/11743 +Deno.test( + { permissions: { net: true } }, + async function httpServerDoesntLeakResources() { + const listener = Deno.listen({ port: listenPort }); + const [conn, clientConn] = await Promise.all([ + listener.accept(), + Deno.connect({ port: listenPort }), + ]); + const httpConn = Deno.serveHttp(conn); + + await Promise.all([ + httpConn.nextRequest(), + clientConn.write(new TextEncoder().encode( + `GET / HTTP/1.1\r\nHost: 127.0.0.1:${listenPort}\r\n\r\n`, + )), + ]); + + httpConn!.close(); + listener.close(); + clientConn.close(); + }, +); + +// https://github.com/denoland/deno/issues/11926 +// verify that the only new resource is "httpConnection", to make +// sure "request" resource is closed even if its body was not read +// by server handler +Deno.test( + { permissions: { net: true } }, + async function httpServerDoesntLeakResources2() { + let listener: Deno.Listener; + let httpConn: Deno.HttpConn; + + const promise = (async () => { + listener = Deno.listen({ port: listenPort }); + for await (const conn of listener) { + httpConn = Deno.serveHttp(conn); + for await (const { request, respondWith } of httpConn) { + assertEquals( + new URL(request.url).href, + `http://127.0.0.1:${listenPort}/`, + ); + // not reading request body on purpose + respondWith(new Response("ok")); + } + } + })(); + + const response = await fetch(`http://127.0.0.1:${listenPort}`, { + method: "POST", + body: "hello world", + }); + await response.text(); + + listener!.close(); + httpConn!.close(); + await promise; + }, +); + +// https://github.com/denoland/deno/pull/12216 +Deno.test( + { permissions: { net: true } }, + async function droppedConnSenderNoPanic() { + async function server() { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + const http = Deno.serveHttp(conn); + const evt = await http.nextRequest(); + http.close(); + try { + await evt!.respondWith(new Response("boom")); + } catch { + // Ignore error. + } + listener.close(); + } + + async function client() { + try { + const resp = await fetch(`http://127.0.0.1:${listenPort}/`); + await resp.body?.cancel(); + } catch { + // Ignore error + } + } + + await Promise.all([server(), client()]); + }, +); + +// https://github.com/denoland/deno/issues/12193 +Deno.test( + { permissions: { net: true } }, + async function httpConnConcurrentNextRequestCalls() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ hostname, port }); + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const promises = new Array(10).fill(null).map(async (_, i) => { + const event = await httpConn.nextRequest(); + assert(event); + const { pathname } = new URL(event.request.url); + assertStrictEquals(pathname, `/${i}`); + const response = new Response(`Response #${i}`); + await event.respondWith(response); + }); + await Promise.all(promises); + } + + async function client() { + for (let i = 0; i < 10; i++) { + const response = await fetch(`http://${hostname}:${port}/${i}`); + const body = await response.text(); + assertStrictEquals(body, `Response #${i}`); + } + } + + await Promise.all([server(), delay(100).then(client)]); + httpConn!.close(); + listener.close(); + }, +); + +// https://github.com/denoland/deno/pull/12704 +// https://github.com/denoland/deno/pull/12732 +Deno.test( + { permissions: { net: true } }, + async function httpConnAutoCloseDelayedOnUpgrade() { + const hostname = "localhost"; + const port = listenPort; + + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + const httpConn = Deno.serveHttp(tcpConn); + + const event1 = await httpConn.nextRequest() as Deno.RequestEvent; + const event2Promise = httpConn.nextRequest(); + + const { socket, response } = Deno.upgradeWebSocket(event1.request); + socket.onmessage = (event) => socket.send(event.data); + const socketClosed = new Promise<void>((resolve) => { + socket.onclose = () => resolve(); + }); + event1.respondWith(response); + + const event2 = await event2Promise; + assertStrictEquals(event2, null); + + listener.close(); + await socketClosed; + } + + async function client() { + const socket = new WebSocket(`ws://${hostname}:${port}/`); + socket.onopen = () => socket.send("bla bla"); + const closed = new Promise<void>((resolve) => { + socket.onclose = () => resolve(); + }); + const { data } = await new Promise<MessageEvent<string>>((res) => + socket.onmessage = res + ); + assertStrictEquals(data, "bla bla"); + socket.close(); + await closed; + } + + await Promise.all([server(), client()]); + }, +); + +// https://github.com/denoland/deno/issues/12741 +// https://github.com/denoland/deno/pull/12746 +// https://github.com/denoland/deno/pull/12798 +Deno.test( + { permissions: { net: true, run: true } }, + async function httpServerDeleteRequestHasBody() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ hostname, port }); + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const event = await httpConn.nextRequest() as Deno.RequestEvent; + assert(event.request.body); + const response = new Response(); + await event.respondWith(response); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = ["-X", "DELETE", url]; + const { success } = await new Deno.Command("curl", { + args, + stdout: "null", + stderr: "null", + }).output(); + assert(success); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerRespondNonAsciiUint8Array() { + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.body, null); + await respondWith( + new Response(new Uint8Array([128]), {}), + ); + })(); + + const resp = await fetch(`http://localhost:${listenPort}/`); + assertEquals(resp.status, 200); + const body = await resp.arrayBuffer(); + assertEquals(new Uint8Array(body), new Uint8Array([128])); + + await promise; + httpConn!.close(); + }, +); + +function tmpUnixSocketPath(): string { + const folder = Deno.makeTempDirSync(); + return join(folder, "socket"); +} + +// https://github.com/denoland/deno/pull/13628 +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function httpServerOnUnixSocket() { + const filePath = tmpUnixSocketPath(); + + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ path: filePath, transport: "unix" }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + const url = new URL(request.url); + assertEquals(url.protocol, "http+unix:"); + assertEquals(decodeURIComponent(url.host), filePath); + assertEquals(url.pathname, "/path/name"); + await respondWith(new Response("", { headers: {} })); + })(); + + // fetch() does not supports unix domain sockets yet https://github.com/denoland/deno/issues/8821 + const conn = await Deno.connect({ path: filePath, transport: "unix" }); + const encoder = new TextEncoder(); + // The Host header must be present and empty if it is not a Internet host name (RFC2616, Section 14.23) + const body = `GET /path/name HTTP/1.1\r\nHost:\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + const resp = new Uint8Array(200); + const readResult = await conn.read(resp); + assertEquals(readResult, 138); + + conn.close(); + + await promise; + httpConn!.close(); + }, +); + +/* Automatic Body Compression */ + +const decoder = new TextDecoder(); + +Deno.test({ + name: "http server compresses body - check headers", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + const listener = Deno.listen({ hostname, port }); + + const data = { hello: "deno", now: "with", compressed: "body" }; + + let httpConn: Deno.HttpConn; + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response(JSON.stringify(data), { + headers: { "content-type": "application/json" }, + }); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(output.includes("content-encoding: gzip\r\n")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server compresses body - check body", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + const listener = Deno.listen({ hostname, port }); + + const data = { hello: "deno", now: "with", compressed: "body" }; + + let httpConn: Deno.HttpConn; + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response(JSON.stringify(data), { + headers: { "content-type": "application/json" }, + }); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const proc = new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).spawn(); + const status = await proc.status; + assert(status.success); + const stdout = proc.stdout + .pipeThrough(new DecompressionStream("gzip")) + .pipeThrough(new TextDecoderStream()); + let body = ""; + for await (const chunk of stdout) { + body += chunk; + } + assertEquals(JSON.parse(body), data); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server doesn't compress small body", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response( + JSON.stringify({ hello: "deno" }), + { + headers: { "content-type": "application/json" }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout).toLocaleLowerCase(); + assert(output.includes("vary: accept-encoding\r\n")); + assert(!output.includes("content-encoding: ")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server respects accept-encoding weights", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals( + request.headers.get("Accept-Encoding"), + "gzip;q=0.8, br;q=1.0, *;q=0.1", + ); + const response = new Response( + JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), + { + headers: { "content-type": "application/json" }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip;q=0.8, br;q=1.0, *;q=0.1", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(output.includes("content-encoding: br\r\n")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server augments vary header", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response( + JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), + { + headers: { "content-type": "application/json", vary: "Accept" }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding, Accept\r\n")); + assert(output.includes("content-encoding: gzip\r\n")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server weakens etag header", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response( + JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), + { + headers: { + "content-type": "application/json", + etag: "33a64df551425fcc55e4d42a148795d9f25f89d4", + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "curl", + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert( + output.includes("etag: W/33a64df551425fcc55e4d42a148795d9f25f89d4\r\n"), + ); + assert(output.includes("content-encoding: gzip\r\n")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server passes through weak etag header", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response( + JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), + { + headers: { + "content-type": "application/json", + etag: "W/33a64df551425fcc55e4d42a148795d9f25f89d4", + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert( + output.includes("etag: W/33a64df551425fcc55e4d42a148795d9f25f89d4\r\n"), + ); + assert(output.includes("content-encoding: gzip\r\n")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server doesn't compress body when no-transform is set", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response( + JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), + { + headers: { + "content-type": "application/json", + "cache-control": "no-transform", + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(!output.includes("content-encoding: ")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server doesn't compress body when content-range is set", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const response = new Response( + JSON.stringify({ hello: "deno", now: "with", compressed: "body" }), + { + headers: { + "content-type": "application/json", + "content-range": "bytes 200-100/67589", + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(!output.includes("content-encoding: ")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server compresses streamed bodies - check headers", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + const encoder = new TextEncoder(); + const listener = Deno.listen({ hostname, port }); + + const data = { hello: "deno", now: "with", compressed: "body" }; + + let httpConn: Deno.HttpConn; + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const bodyInit = new ReadableStream({ + start(controller) { + controller.enqueue(encoder.encode(JSON.stringify(data))); + controller.close(); + }, + }); + const response = new Response( + bodyInit, + { headers: { "content-type": "application/json" } }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "curl", + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(output.includes("content-encoding: gzip\r\n")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server compresses streamed bodies - check body", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + const encoder = new TextEncoder(); + const listener = Deno.listen({ hostname, port }); + + const data = { hello: "deno", now: "with", compressed: "body" }; + + let httpConn: Deno.HttpConn; + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const bodyInit = new ReadableStream({ + start(controller) { + controller.enqueue(encoder.encode(JSON.stringify(data))); + controller.close(); + }, + }); + const response = new Response( + bodyInit, + { headers: { "content-type": "application/json" } }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const proc = new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).spawn(); + const status = await proc.status; + assert(status.success); + const stdout = proc.stdout + .pipeThrough(new DecompressionStream("gzip")) + .pipeThrough(new TextDecoderStream()); + let body = ""; + for await (const chunk of stdout) { + body += chunk; + } + assertEquals(JSON.parse(body), data); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server updates content-length header if compression is applied", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + let contentLength: string; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const body = JSON.stringify({ + hello: "deno", + now: "with", + compressed: "body", + }); + contentLength = String(body.length); + const response = new Response( + body, + { + headers: { + "content-type": "application/json", + "content-length": contentLength, + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "-i", + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + ]; + const { success, stdout } = await new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).output(); + assert(success); + const output = decoder.decode(stdout); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(output.includes("content-encoding: gzip\r\n")); + // Ensure the content-length header is updated (but don't check the exact length). + assert(!output.includes(`content-length: ${contentLength}\r\n`)); + assert(output.includes("content-length: ")); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server compresses when accept-encoding is deflate, gzip", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + let contentLength: string; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "deflate, gzip"); + const body = "x".repeat(10000); + contentLength = String(body.length); + const response = new Response( + body, + { + headers: { + "content-length": contentLength, + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const cmd = [ + "curl", + "-i", + "--request", + "GET", + "--url", + url, + // "--compressed", // Windows curl does not support --compressed + "--header", + "Accept-Encoding: deflate, gzip", + ]; + // deno-lint-ignore no-deprecated-deno-api + const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" }); + const status = await proc.status(); + assert(status.success); + const output = decoder.decode(await proc.output()); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(output.includes("content-encoding: gzip\r\n")); + // Ensure the content-length header is updated. + assert(!output.includes(`content-length: ${contentLength}\r\n`)); + assert(output.includes("content-length: ")); + proc.close(); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test({ + name: "http server custom content-encoding is left untouched", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + let contentLength: string; + + let httpConn: Deno.HttpConn; + async function server() { + const listener = Deno.listen({ hostname, port }); + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "deflate, gzip"); + const body = new Uint8Array([3, 1, 4, 1]); + contentLength = String(body.length); + const response = new Response( + body, + { + headers: { + "content-length": contentLength, + "content-encoding": "arbitrary", + }, + }, + ); + await respondWith(response); + listener.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const cmd = [ + "curl", + "-i", + "--request", + "GET", + "--url", + url, + // "--compressed", // Windows curl does not support --compressed + "--header", + "Accept-Encoding: deflate, gzip", + ]; + // deno-lint-ignore no-deprecated-deno-api + const proc = Deno.run({ cmd, stdout: "piped", stderr: "null" }); + const status = await proc.status(); + assert(status.success); + const output = decoder.decode(await proc.output()); + assert(output.includes("vary: Accept-Encoding\r\n")); + assert(output.includes("content-encoding: arbitrary\r\n")); + proc.close(); + } + + await Promise.all([server(), client()]); + httpConn!.close(); + }, +}); + +Deno.test( + { permissions: { net: true } }, + async function httpServerReadLargeBodyWithContentLength() { + const TLS_PACKET_SIZE = 16 * 1024 + 256; + // We want the body to be read in multiple packets + const body = "aa\n" + "deno.land large body\n".repeat(TLS_PACKET_SIZE) + + "zz"; + + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + assertEquals(await request.text(), body); + await respondWith(new Response(body)); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + method: "POST", + headers: { "connection": "close" }, + body, + }); + const text = await resp.text(); + assertEquals(text, body); + await promise; + + httpConn!.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerReadLargeBodyWithTransferChunked() { + const TLS_PACKET_SIZE = 16 * 1024 + 256; + + // We want the body to be read in multiple packets + const chunks = [ + "aa\n", + "deno.land large body\n".repeat(TLS_PACKET_SIZE), + "zz", + ]; + + const body = chunks.join(""); + + const stream = new TransformStream(); + const writer = stream.writable.getWriter(); + for (const chunk of chunks) { + writer.write(new TextEncoder().encode(chunk)); + } + writer.close(); + + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + assertEquals(await request.text(), body); + await respondWith(new Response(body)); + })(); + + const resp = await fetch(`http://127.0.0.1:${listenPort}/`, { + method: "POST", + headers: { "connection": "close" }, + body: stream.readable, + }); + const text = await resp.text(); + assertEquals(text, body); + await promise; + + httpConn!.close(); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function httpServerWithoutExclusiveAccessToTcp() { + const port = listenPort; + const listener = Deno.listen({ port }); + + const [clientConn, serverConn] = await Promise.all([ + Deno.connect({ port }), + listener.accept(), + ]); + + const buf = new Uint8Array(128); + const readPromise = serverConn.read(buf); + assertThrows(() => Deno.serveHttp(serverConn), Deno.errors.BadResource); + + clientConn.close(); + listener.close(); + await readPromise; + }, +); + +Deno.test( + { + permissions: { net: true, read: true }, + }, + async function httpServerWithoutExclusiveAccessToTls() { + const hostname = "localhost"; + const port = listenPort; + const listener = Deno.listenTls({ + hostname, + port, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/tls/localhost.key"), + }); + + const caCerts = [ + await Deno.readTextFile("tests/testdata/tls/RootCA.pem"), + ]; + const [clientConn, serverConn] = await Promise.all([ + Deno.connectTls({ hostname, port, caCerts }), + listener.accept(), + ]); + await Promise.all([clientConn.handshake(), serverConn.handshake()]); + + const buf = new Uint8Array(128); + const readPromise = serverConn.read(buf); + assertThrows(() => Deno.serveHttp(serverConn), Deno.errors.BadResource); + + clientConn.close(); + listener.close(); + await readPromise; + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function httpServerWithoutExclusiveAccessToUnixSocket() { + const filePath = tmpUnixSocketPath(); + const listener = Deno.listen({ path: filePath, transport: "unix" }); + + const [clientConn, serverConn] = await Promise.all([ + Deno.connect({ path: filePath, transport: "unix" }), + listener.accept(), + ]); + + const buf = new Uint8Array(128); + const readPromise = serverConn.read(buf); + assertThrows(() => Deno.serveHttp(serverConn), Deno.errors.BadResource); + + clientConn.close(); + listener.close(); + await readPromise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerRequestResponseClone() { + const body = "deno".repeat(64 * 1024); + let httpConn: Deno.HttpConn; + const listener = Deno.listen({ port: listenPort }); + const promise = (async () => { + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const reqEvent = await httpConn.nextRequest(); + assert(reqEvent); + const { request, respondWith } = reqEvent; + const clone = request.clone(); + const reader = clone.body!.getReader(); + + // get first chunk from branch2 + const clonedChunks = []; + const { value, done } = await reader.read(); + assert(!done); + clonedChunks.push(value); + + // consume request after first chunk single read + // readAll should read correctly the rest of the body. + // firstChunk should be in the stream internal buffer + const body1 = await request.text(); + + while (true) { + const { value, done } = await reader.read(); + if (done) break; + clonedChunks.push(value); + } + let offset = 0; + const body2 = new Uint8Array(body.length); + for (const chunk of clonedChunks) { + body2.set(chunk, offset); + offset += chunk.byteLength; + } + + assertEquals(body1, body); + assertEquals(body1, new TextDecoder().decode(body2)); + await respondWith(new Response(body)); + })(); + + const response = await fetch(`http://localhost:${listenPort}`, { + body, + method: "POST", + }); + const clone = response.clone(); + assertEquals(await response.text(), await clone.text()); + + await promise; + httpConn!.close(); + }, +); + +Deno.test({ + name: "http server compresses and flushes each chunk of a streamed resource", + permissions: { net: true, run: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + const port2 = listenPort2; + + const encoder = new TextEncoder(); + const listener = Deno.listen({ hostname, port }); + const listener2 = Deno.listen({ hostname, port: port2 }); + + let httpConn: Deno.HttpConn; + async function server() { + const tcpConn = await listener.accept(); + httpConn = Deno.serveHttp(tcpConn); + const e = await httpConn.nextRequest(); + assert(e); + const { request, respondWith } = e; + assertEquals(request.headers.get("Accept-Encoding"), "gzip, deflate, br"); + const resp = await fetch(`http://${hostname}:${port2}/`); + await respondWith(resp); + listener.close(); + } + + const ts = new TransformStream(); + const writer = ts.writable.getWriter(); + writer.write(encoder.encode("hello")); + + let httpConn2: Deno.HttpConn; + async function server2() { + const tcpConn = await listener2.accept(); + httpConn2 = Deno.serveHttp(tcpConn); + const e = await httpConn2.nextRequest(); + assert(e); + await e.respondWith( + new Response(ts.readable, { + headers: { "Content-Type": "text/plain" }, + }), + ); + listener2.close(); + } + + async function client() { + const url = `http://${hostname}:${port}/`; + const args = [ + "--request", + "GET", + "--url", + url, + "--header", + "Accept-Encoding: gzip, deflate, br", + "--no-buffer", + ]; + const proc = new Deno.Command("curl", { + args, + stderr: "null", + stdout: "piped", + }).spawn(); + const stdout = proc.stdout + .pipeThrough(new DecompressionStream("gzip")) + .pipeThrough(new TextDecoderStream()); + let body = ""; + for await (const chunk of stdout) { + body += chunk; + if (body === "hello") { + writer.write(encoder.encode(" world")); + writer.close(); + } + } + assertEquals(body, "hello world"); + const status = await proc.status; + assert(status.success); + } + + await Promise.all([server(), server2(), client()]); + httpConn!.close(); + httpConn2!.close(); + }, +}); + +Deno.test("case insensitive comma value finder", async (t) => { + const cases = /** @type {[string, boolean][]} */ ([ + ["websocket", true], + ["wEbSOcKET", true], + [",wEbSOcKET", true], + [",wEbSOcKET,", true], + [", wEbSOcKET ,", true], + ["test, wEbSOcKET ,", true], + ["test ,\twEbSOcKET\t\t ,", true], + ["test , wEbSOcKET", true], + ["test, asdf,web,wEbSOcKET", true], + ["test, asdf,web,wEbSOcKETs", false], + ["test, asdf,awebsocket,wEbSOcKETs", false], + ]); + + const findValue = buildCaseInsensitiveCommaValueFinder("websocket"); + for (const [input, expected] of cases) { + await t.step(input.toString(), () => { + const actual = findValue(input); + assertEquals(actual, expected); + }); + } +}); + +async function httpServerWithErrorBody( + listener: Deno.Listener, + compression: boolean, +): Promise<Deno.HttpConn> { + const conn = await listener.accept(); + listener.close(); + const httpConn = Deno.serveHttp(conn); + const e = await httpConn.nextRequest(); + assert(e); + const { respondWith } = e; + const originalErr = new Error("boom"); + const rs = new ReadableStream({ + async start(controller) { + controller.enqueue(new Uint8Array([65])); + await delay(1000); + controller.error(originalErr); + }, + }); + const init = compression ? { headers: { "content-type": "text/plain" } } : {}; + const response = new Response(rs, init); + const err = await assertRejects(() => respondWith(response)); + assert(err === originalErr); + return httpConn; +} + +for (const compression of [true, false]) { + Deno.test({ + name: `http server errors stream if response body errors (http/1.1${ + compression ? " + compression" : "" + })`, + permissions: { net: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + const listener = Deno.listen({ hostname, port }); + const server = httpServerWithErrorBody(listener, compression); + + const conn = await Deno.connect({ hostname, port }); + const msg = new TextEncoder().encode( + `GET / HTTP/1.1\r\nHost: ${hostname}:${port}\r\n\r\n`, + ); + const nwritten = await conn.write(msg); + assertEquals(nwritten, msg.byteLength); + + const buf = new Uint8Array(1024); + const nread = await conn.read(buf); + assert(nread); + const data = new TextDecoder().decode(buf.subarray(0, nread)); + assert(data.endsWith("1\r\nA\r\n")); + const nread2 = await conn.read(buf); // connection should be closed now because the stream errored + assertEquals(nread2, null); + conn.close(); + + const httpConn = await server; + httpConn.close(); + }, + }); + + Deno.test({ + name: `http server errors stream if response body errors (http/1.1 + fetch${ + compression ? " + compression" : "" + })`, + permissions: { net: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + const listener = Deno.listen({ hostname, port }); + const server = httpServerWithErrorBody(listener, compression); + + const resp = await fetch(`http://${hostname}:${port}/`); + assert(resp.body); + const reader = resp.body.getReader(); + const result = await reader.read(); + assert(!result.done); + assertEquals(result.value, new Uint8Array([65])); + const err = await assertRejects(() => reader.read()); + assert(err instanceof TypeError); + assert(err.message.includes("unexpected EOF")); + + const httpConn = await server; + httpConn.close(); + }, + }); + + Deno.test({ + name: `http server errors stream if response body errors (http/2 + fetch${ + compression ? " + compression" : "" + }))`, + permissions: { net: true, read: true }, + async fn() { + const hostname = "localhost"; + const port = listenPort; + + const listener = Deno.listenTls({ + hostname, + port, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/tls/localhost.key"), + alpnProtocols: ["h2"], + }); + const server = httpServerWithErrorBody(listener, compression); + + const caCert = Deno.readTextFileSync("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const resp = await fetch(`https://${hostname}:${port}/`, { client }); + client.close(); + assert(resp.body); + const reader = resp.body.getReader(); + const result = await reader.read(); + assert(!result.done); + assertEquals(result.value, new Uint8Array([65])); + const err = await assertRejects(() => reader.read()); + assert(err instanceof TypeError); + assert(err.message.includes("unexpected internal error encountered")); + + const httpConn = await server; + httpConn.close(); + }, + }); +} + +Deno.test({ + name: "request signal is aborted when response errors", + permissions: { net: true }, + async fn() { + let httpConn: Deno.HttpConn; + const promise = (async () => { + const listener = Deno.listen({ port: listenPort }); + const conn = await listener.accept(); + listener.close(); + httpConn = Deno.serveHttp(conn); + const ev = await httpConn.nextRequest(); + const { request, respondWith } = ev!; + + await delay(300); + await assertRejects(() => respondWith(new Response("Hello World"))); + assert(request.signal.aborted); + })(); + + const abortController = new AbortController(); + + fetch(`http://127.0.0.1:${listenPort}/`, { + signal: abortController.signal, + }).catch(() => { + // ignore + }); + + await delay(100); + abortController.abort(); + await promise; + httpConn!.close(); + }, +}); + +Deno.test( + async function httpConnExplicitResourceManagement() { + let promise; + + { + const listen = Deno.listen({ port: listenPort }); + promise = fetch(`http://localhost:${listenPort}/`).catch(() => null); + const serverConn = await listen.accept(); + listen.close(); + + using _httpConn = Deno.serveHttp(serverConn); + } + + const response = await promise; + assertEquals(response, null); + }, +); + +function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { + // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 + const tp = new TextProtoReader(r); + let finished = false; + const chunks: Array<{ + offset: number; + data: Uint8Array; + }> = []; + async function read(buf: Uint8Array): Promise<number | null> { + if (finished) return null; + const [chunk] = chunks; + if (chunk) { + const chunkRemaining = chunk.data.byteLength - chunk.offset; + const readLength = Math.min(chunkRemaining, buf.byteLength); + for (let i = 0; i < readLength; i++) { + buf[i] = chunk.data[chunk.offset + i]; + } + chunk.offset += readLength; + if (chunk.offset === chunk.data.byteLength) { + chunks.shift(); + // Consume \r\n; + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + } + return readLength; + } + const line = await tp.readLine(); + if (line === null) throw new Deno.errors.UnexpectedEof(); + // TODO(bartlomieju): handle chunk extension + const [chunkSizeString] = line.split(";"); + const chunkSize = parseInt(chunkSizeString, 16); + if (Number.isNaN(chunkSize) || chunkSize < 0) { + throw new Deno.errors.InvalidData("Invalid chunk size"); + } + if (chunkSize > 0) { + if (chunkSize > buf.byteLength) { + let eof = await r.readFull(buf); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + const restChunk = new Uint8Array(chunkSize - buf.byteLength); + eof = await r.readFull(restChunk); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } else { + chunks.push({ + offset: 0, + data: restChunk, + }); + } + return buf.byteLength; + } else { + const bufToFill = buf.subarray(0, chunkSize); + const eof = await r.readFull(bufToFill); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + // Consume \r\n + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + return chunkSize; + } + } else { + assert(chunkSize === 0); + // Consume \r\n + if ((await r.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + await readTrailers(h, r); + finished = true; + return null; + } + } + return { read }; +} + +async function readTrailers( + headers: Headers, + r: BufReader, +) { + const trailers = parseTrailer(headers.get("trailer")); + if (trailers == null) return; + const trailerNames = [...trailers.keys()]; + const tp = new TextProtoReader(r); + const result = await tp.readMimeHeader(); + if (result == null) { + throw new Deno.errors.InvalidData("Missing trailer header."); + } + const undeclared = [...result.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new Deno.errors.InvalidData( + `Undeclared trailers: ${Deno.inspect(undeclared)}.`, + ); + } + for (const [k, v] of result) { + headers.append(k, v); + } + const missingTrailers = trailerNames.filter((k) => !result.has(k)); + if (missingTrailers.length > 0) { + throw new Deno.errors.InvalidData( + `Missing trailers: ${Deno.inspect(missingTrailers)}.`, + ); + } + headers.delete("trailer"); +} + +function parseTrailer(field: string | null): Headers | undefined { + if (field == null) { + return undefined; + } + const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); + if (trailerNames.length === 0) { + throw new Deno.errors.InvalidData("Empty trailer header."); + } + const prohibited = trailerNames.filter((k) => isProhibitedForTrailer(k)); + if (prohibited.length > 0) { + throw new Deno.errors.InvalidData( + `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, + ); + } + return new Headers(trailerNames.map((key) => [key, ""])); +} + +function isProhibitedForTrailer(key: string): boolean { + const s = new Set(["transfer-encoding", "content-length", "trailer"]); + return s.has(key.toLowerCase()); +} diff --git a/cli/tests/unit/image_bitmap_test.ts b/tests/unit/image_bitmap_test.ts index 364f2a167..364f2a167 100644 --- a/cli/tests/unit/image_bitmap_test.ts +++ b/tests/unit/image_bitmap_test.ts diff --git a/cli/tests/unit/image_data_test.ts b/tests/unit/image_data_test.ts index 7156301a0..7156301a0 100644 --- a/cli/tests/unit/image_data_test.ts +++ b/tests/unit/image_data_test.ts diff --git a/cli/tests/unit/internals_test.ts b/tests/unit/internals_test.ts index bb4c21793..bb4c21793 100644 --- a/cli/tests/unit/internals_test.ts +++ b/tests/unit/internals_test.ts diff --git a/cli/tests/unit/intl_test.ts b/tests/unit/intl_test.ts index 6e4de378c..6e4de378c 100644 --- a/cli/tests/unit/intl_test.ts +++ b/tests/unit/intl_test.ts diff --git a/cli/tests/unit/io_test.ts b/tests/unit/io_test.ts index 04c9dab4b..04c9dab4b 100644 --- a/cli/tests/unit/io_test.ts +++ b/tests/unit/io_test.ts diff --git a/cli/tests/unit/jupyter_test.ts b/tests/unit/jupyter_test.ts index 07defe230..07defe230 100644 --- a/cli/tests/unit/jupyter_test.ts +++ b/tests/unit/jupyter_test.ts diff --git a/cli/tests/unit/kv_queue_test.ts b/tests/unit/kv_queue_test.ts index e052dcbf7..e052dcbf7 100644 --- a/cli/tests/unit/kv_queue_test.ts +++ b/tests/unit/kv_queue_test.ts diff --git a/cli/tests/unit/kv_queue_test_no_db_close.ts b/tests/unit/kv_queue_test_no_db_close.ts index 947e1c5e6..947e1c5e6 100644 --- a/cli/tests/unit/kv_queue_test_no_db_close.ts +++ b/tests/unit/kv_queue_test_no_db_close.ts diff --git a/cli/tests/unit/kv_queue_undelivered_test.ts b/tests/unit/kv_queue_undelivered_test.ts index 1fcefe7e2..1fcefe7e2 100644 --- a/cli/tests/unit/kv_queue_undelivered_test.ts +++ b/tests/unit/kv_queue_undelivered_test.ts diff --git a/cli/tests/unit/kv_test.ts b/tests/unit/kv_test.ts index 5780d9900..5780d9900 100644 --- a/cli/tests/unit/kv_test.ts +++ b/tests/unit/kv_test.ts diff --git a/cli/tests/unit/link_test.ts b/tests/unit/link_test.ts index 6048b8add..6048b8add 100644 --- a/cli/tests/unit/link_test.ts +++ b/tests/unit/link_test.ts diff --git a/cli/tests/unit/make_temp_test.ts b/tests/unit/make_temp_test.ts index cbbae8dfe..cbbae8dfe 100644 --- a/cli/tests/unit/make_temp_test.ts +++ b/tests/unit/make_temp_test.ts diff --git a/cli/tests/unit/message_channel_test.ts b/tests/unit/message_channel_test.ts index 88fb1ba11..88fb1ba11 100644 --- a/cli/tests/unit/message_channel_test.ts +++ b/tests/unit/message_channel_test.ts diff --git a/cli/tests/unit/mkdir_test.ts b/tests/unit/mkdir_test.ts index 0948a1a84..0948a1a84 100644 --- a/cli/tests/unit/mkdir_test.ts +++ b/tests/unit/mkdir_test.ts diff --git a/cli/tests/unit/navigator_test.ts b/tests/unit/navigator_test.ts index 5dcc423fa..5dcc423fa 100644 --- a/cli/tests/unit/navigator_test.ts +++ b/tests/unit/navigator_test.ts diff --git a/tests/unit/net_test.ts b/tests/unit/net_test.ts new file mode 100644 index 000000000..eae1ae533 --- /dev/null +++ b/tests/unit/net_test.ts @@ -0,0 +1,1274 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertNotEquals, + assertRejects, + assertThrows, + delay, + execCode, + execCode2, + tmpUnixSocketPath, +} from "./test_util.ts"; + +// Since these tests may run in parallel, ensure this port is unique to this file +const listenPort = 4503; +const listenPort2 = 4504; + +let isCI: boolean; +try { + isCI = Deno.env.get("CI") !== undefined; +} catch { + isCI = true; +} + +Deno.test({ permissions: { net: true } }, function netTcpListenClose() { + const listener = Deno.listen({ hostname: "127.0.0.1", port: listenPort }); + assert(listener.addr.transport === "tcp"); + assertEquals(listener.addr.hostname, "127.0.0.1"); + assertEquals(listener.addr.port, listenPort); + assertNotEquals(listener.rid, 0); + listener.close(); +}); + +Deno.test( + { + permissions: { net: true }, + }, + function netUdpListenClose() { + const socket = Deno.listenDatagram({ + hostname: "127.0.0.1", + port: listenPort, + transport: "udp", + }); + assert(socket.addr.transport === "udp"); + assertEquals(socket.addr.hostname, "127.0.0.1"); + assertEquals(socket.addr.port, listenPort); + socket.close(); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + function netUnixListenClose() { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listen({ + path: filePath, + transport: "unix", + }); + assert(socket.addr.transport === "unix"); + assertEquals(socket.addr.path, filePath); + socket.close(); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + function netUnixPacketListenClose() { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listenDatagram({ + path: filePath, + transport: "unixpacket", + }); + assert(socket.addr.transport === "unixpacket"); + assertEquals(socket.addr.path, filePath); + socket.close(); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: false }, + }, + function netUnixListenWritePermission() { + assertThrows(() => { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listen({ + path: filePath, + transport: "unix", + }); + assert(socket.addr.transport === "unix"); + assertEquals(socket.addr.path, filePath); + socket.close(); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: false }, + }, + function netUnixPacketListenWritePermission() { + assertThrows(() => { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listenDatagram({ + path: filePath, + transport: "unixpacket", + }); + assert(socket.addr.transport === "unixpacket"); + assertEquals(socket.addr.path, filePath); + socket.close(); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function netTcpCloseWhileAccept() { + const listener = Deno.listen({ port: listenPort }); + const p = listener.accept(); + listener.close(); + // TODO(piscisaureus): the error type should be `Interrupted` here, which + // gets thrown, but then ext/net catches it and rethrows `BadResource`. + await assertRejects( + () => p, + Deno.errors.BadResource, + "Listener has been closed", + ); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function netUnixCloseWhileAccept() { + const filePath = tmpUnixSocketPath(); + const listener = Deno.listen({ + path: filePath, + transport: "unix", + }); + const p = listener.accept(); + listener.close(); + await assertRejects( + () => p, + Deno.errors.BadResource, + "Listener has been closed", + ); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netTcpConcurrentAccept() { + const listener = Deno.listen({ port: 4510 }); + let acceptErrCount = 0; + const checkErr = (e: Error) => { + if (e.message === "Listener has been closed") { + assertEquals(acceptErrCount, 1); + } else if (e.message === "Another accept task is ongoing") { + acceptErrCount++; + } else { + throw new Error("Unexpected error message"); + } + }; + const p = listener.accept().catch(checkErr); + const p1 = listener.accept().catch(checkErr); + await Promise.race([p, p1]); + listener.close(); + await Promise.all([p, p1]); + assertEquals(acceptErrCount, 1); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function netUnixConcurrentAccept() { + const filePath = tmpUnixSocketPath(); + const listener = Deno.listen({ transport: "unix", path: filePath }); + let acceptErrCount = 0; + const checkErr = (e: Error) => { + if (e.message === "Listener has been closed") { + assertEquals(acceptErrCount, 1); + } else if (e instanceof Deno.errors.Busy) { // "Listener already in use" + acceptErrCount++; + } else { + throw e; + } + }; + const p = listener.accept().catch(checkErr); + const p1 = listener.accept().catch(checkErr); + await Promise.race([p, p1]); + listener.close(); + await Promise.all([p, p1]); + assertEquals(acceptErrCount, 1); + }, +); + +Deno.test({ permissions: { net: true } }, async function netTcpDialListen() { + const listener = Deno.listen({ port: listenPort }); + listener.accept().then( + async (conn) => { + assert(conn.remoteAddr != null); + assert(conn.localAddr.transport === "tcp"); + assertEquals(conn.localAddr.hostname, "127.0.0.1"); + assertEquals(conn.localAddr.port, listenPort); + await conn.write(new Uint8Array([1, 2, 3])); + conn.close(); + }, + ); + + const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); + assert(conn.remoteAddr.transport === "tcp"); + assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); + assertEquals(conn.remoteAddr.port, listenPort); + assert(conn.localAddr != null); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + assert(conn.rid > 0); + + assert(readResult !== null); + + const readResult2 = await conn.read(buf); + assertEquals(readResult2, null); + + listener.close(); + conn.close(); +}); + +Deno.test({ permissions: { net: true } }, async function netTcpSetNoDelay() { + const listener = Deno.listen({ port: listenPort }); + listener.accept().then( + async (conn) => { + assert(conn.remoteAddr != null); + assert(conn.localAddr.transport === "tcp"); + assertEquals(conn.localAddr.hostname, "127.0.0.1"); + assertEquals(conn.localAddr.port, listenPort); + await conn.write(new Uint8Array([1, 2, 3])); + conn.close(); + }, + ); + + const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); + conn.setNoDelay(true); + assert(conn.remoteAddr.transport === "tcp"); + assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); + assertEquals(conn.remoteAddr.port, listenPort); + assert(conn.localAddr != null); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + assert(conn.rid > 0); + + assert(readResult !== null); + + const readResult2 = await conn.read(buf); + assertEquals(readResult2, null); + + listener.close(); + conn.close(); +}); + +Deno.test({ permissions: { net: true } }, async function netTcpSetKeepAlive() { + const listener = Deno.listen({ port: listenPort }); + listener.accept().then( + async (conn) => { + assert(conn.remoteAddr != null); + assert(conn.localAddr.transport === "tcp"); + assertEquals(conn.localAddr.hostname, "127.0.0.1"); + assertEquals(conn.localAddr.port, listenPort); + await conn.write(new Uint8Array([1, 2, 3])); + conn.close(); + }, + ); + + const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); + conn.setKeepAlive(true); + assert(conn.remoteAddr.transport === "tcp"); + assertEquals(conn.remoteAddr.hostname, "127.0.0.1"); + assertEquals(conn.remoteAddr.port, listenPort); + assert(conn.localAddr != null); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + assert(conn.rid > 0); + + assert(readResult !== null); + + const readResult2 = await conn.read(buf); + assertEquals(readResult2, null); + + listener.close(); + conn.close(); +}); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function netUnixDialListen() { + const filePath = tmpUnixSocketPath(); + const listener = Deno.listen({ path: filePath, transport: "unix" }); + listener.accept().then( + async (conn) => { + assert(conn.remoteAddr != null); + assert(conn.localAddr.transport === "unix"); + assertEquals(conn.localAddr.path, filePath); + await conn.write(new Uint8Array([1, 2, 3])); + conn.close(); + }, + ); + const conn = await Deno.connect({ path: filePath, transport: "unix" }); + assert(conn.remoteAddr.transport === "unix"); + assertEquals(conn.remoteAddr.path, filePath); + assert(conn.remoteAddr != null); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + assert(conn.rid > 0); + + assert(readResult !== null); + + const readResult2 = await conn.read(buf); + assertEquals(readResult2, null); + + listener.close(); + conn.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netUdpSendReceive() { + const alice = Deno.listenDatagram({ port: listenPort, transport: "udp" }); + assert(alice.addr.transport === "udp"); + assertEquals(alice.addr.port, listenPort); + assertEquals(alice.addr.hostname, "127.0.0.1"); + + const bob = Deno.listenDatagram({ port: listenPort2, transport: "udp" }); + assert(bob.addr.transport === "udp"); + assertEquals(bob.addr.port, listenPort2); + assertEquals(bob.addr.hostname, "127.0.0.1"); + + const sent = new Uint8Array([1, 2, 3]); + const byteLength = await alice.send(sent, bob.addr); + + assertEquals(byteLength, 3); + + const [recvd, remote] = await bob.receive(); + assert(remote.transport === "udp"); + assertEquals(remote.port, listenPort); + assertEquals(recvd.length, 3); + assertEquals(1, recvd[0]); + assertEquals(2, recvd[1]); + assertEquals(3, recvd[2]); + alice.close(); + bob.close(); + }, +); + +Deno.test( + { permissions: { net: true }, ignore: true }, + async function netUdpSendReceiveBroadcast() { + // Must bind sender to an address that can send to the broadcast address on MacOS. + // Macos will give us error 49 when sending the broadcast packet if we omit hostname here. + const alice = Deno.listenDatagram({ + port: listenPort, + transport: "udp", + hostname: "0.0.0.0", + }); + + const bob = Deno.listenDatagram({ + port: listenPort, + transport: "udp", + hostname: "0.0.0.0", + }); + assert(bob.addr.transport === "udp"); + assertEquals(bob.addr.port, listenPort); + assertEquals(bob.addr.hostname, "0.0.0.0"); + + const broadcastAddr = { ...bob.addr, hostname: "255.255.255.255" }; + + const sent = new Uint8Array([1, 2, 3]); + const byteLength = await alice.send(sent, broadcastAddr); + + assertEquals(byteLength, 3); + const [recvd, remote] = await bob.receive(); + assert(remote.transport === "udp"); + assertEquals(remote.port, listenPort); + assertEquals(recvd.length, 3); + assertEquals(1, recvd[0]); + assertEquals(2, recvd[1]); + assertEquals(3, recvd[2]); + alice.close(); + bob.close(); + }, +); + +Deno.test( + { permissions: { net: true }, ignore: true }, + async function netUdpMulticastV4() { + const listener = Deno.listenDatagram({ + hostname: "0.0.0.0", + port: 5353, + transport: "udp", + reuseAddress: true, + }); + + const membership = await listener.joinMulticastV4( + "224.0.0.251", + "127.0.0.1", + ); + + membership.setLoopback(true); + membership.setLoopback(false); + membership.setTTL(50); + membership.leave(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true }, ignore: true }, + async function netUdpMulticastV6() { + const listener = Deno.listenDatagram({ + hostname: "::", + port: 5353, + transport: "udp", + reuseAddress: true, + }); + + const membership = await listener.joinMulticastV6( + "ff02::fb", + 1, + ); + + membership.setLoopback(true); + membership.setLoopback(false); + membership.leave(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true }, ignore: true }, + async function netUdpSendReceiveMulticastv4() { + const alice = Deno.listenDatagram({ + hostname: "0.0.0.0", + port: 5353, + transport: "udp", + reuseAddress: true, + loopback: true, + }); + + const bob = Deno.listenDatagram({ + hostname: "0.0.0.0", + port: 5353, + transport: "udp", + reuseAddress: true, + }); + + const aliceMembership = await alice.joinMulticastV4( + "224.0.0.1", + "0.0.0.0", + ); + + const bobMembership = await bob.joinMulticastV4("224.0.0.1", "0.0.0.0"); + + const sent = new Uint8Array([1, 2, 3]); + + await alice.send(sent, { + hostname: "224.0.0.1", + port: 5353, + transport: "udp", + }); + + const [recvd, remote] = await bob.receive(); + + assert(remote.transport === "udp"); + assertEquals(remote.port, 5353); + assertEquals(recvd.length, 3); + assertEquals(1, recvd[0]); + assertEquals(2, recvd[1]); + assertEquals(3, recvd[2]); + + aliceMembership.leave(); + bobMembership.leave(); + + alice.close(); + bob.close(); + }, +); + +Deno.test( + { permissions: { net: true }, ignore: true }, + async function netUdpMulticastLoopbackOption() { + // Must bind sender to an address that can send to the broadcast address on MacOS. + // Macos will give us error 49 when sending the broadcast packet if we omit hostname here. + const listener = Deno.listenDatagram({ + port: 5353, + transport: "udp", + hostname: "0.0.0.0", + loopback: true, + reuseAddress: true, + }); + + const membership = await listener.joinMulticastV4( + "224.0.0.1", + "0.0.0.0", + ); + + // await membership.setLoopback(true); + + const sent = new Uint8Array([1, 2, 3]); + const byteLength = await listener.send(sent, { + hostname: "224.0.0.1", + port: 5353, + transport: "udp", + }); + + assertEquals(byteLength, 3); + const [recvd, remote] = await listener.receive(); + assert(remote.transport === "udp"); + assertEquals(remote.port, 5353); + assertEquals(recvd.length, 3); + assertEquals(1, recvd[0]); + assertEquals(2, recvd[1]); + assertEquals(3, recvd[2]); + membership.leave(); + listener.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netUdpConcurrentSendReceive() { + const socket = Deno.listenDatagram({ port: listenPort, transport: "udp" }); + assert(socket.addr.transport === "udp"); + assertEquals(socket.addr.port, listenPort); + assertEquals(socket.addr.hostname, "127.0.0.1"); + + const recvPromise = socket.receive(); + + const sendBuf = new Uint8Array([1, 2, 3]); + const sendLen = await socket.send(sendBuf, socket.addr); + assertEquals(sendLen, 3); + + const [recvBuf, _recvAddr] = await recvPromise; + assertEquals(recvBuf.length, 3); + assertEquals(1, recvBuf[0]); + assertEquals(2, recvBuf[1]); + assertEquals(3, recvBuf[2]); + + socket.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netUdpBorrowMutError() { + const socket = Deno.listenDatagram({ + port: listenPort, + transport: "udp", + }); + // Panic happened on second send: BorrowMutError + const a = socket.send(new Uint8Array(), socket.addr); + const b = socket.send(new Uint8Array(), socket.addr); + await Promise.all([a, b]); + socket.close(); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function netUnixPacketSendReceive() { + const aliceFilePath = tmpUnixSocketPath(); + const alice = Deno.listenDatagram({ + path: aliceFilePath, + transport: "unixpacket", + }); + assert(alice.addr.transport === "unixpacket"); + assertEquals(alice.addr.path, aliceFilePath); + + const bobFilePath = tmpUnixSocketPath(); + const bob = Deno.listenDatagram({ + path: bobFilePath, + transport: "unixpacket", + }); + assert(bob.addr.transport === "unixpacket"); + assertEquals(bob.addr.path, bobFilePath); + + const sent = new Uint8Array([1, 2, 3]); + const byteLength = await alice.send(sent, bob.addr); + assertEquals(byteLength, 3); + + const [recvd, remote] = await bob.receive(); + assert(remote.transport === "unixpacket"); + assertEquals(remote.path, aliceFilePath); + assertEquals(recvd.length, 3); + assertEquals(1, recvd[0]); + assertEquals(2, recvd[1]); + assertEquals(3, recvd[2]); + alice.close(); + bob.close(); + }, +); + +// TODO(lucacasonato): support concurrent reads and writes on unixpacket sockets +Deno.test( + { ignore: true, permissions: { read: true, write: true } }, + async function netUnixPacketConcurrentSendReceive() { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listenDatagram({ + path: filePath, + transport: "unixpacket", + }); + assert(socket.addr.transport === "unixpacket"); + assertEquals(socket.addr.path, filePath); + + const recvPromise = socket.receive(); + + const sendBuf = new Uint8Array([1, 2, 3]); + const sendLen = await socket.send(sendBuf, socket.addr); + assertEquals(sendLen, 3); + + const [recvBuf, _recvAddr] = await recvPromise; + assertEquals(recvBuf.length, 3); + assertEquals(1, recvBuf[0]); + assertEquals(2, recvBuf[1]); + assertEquals(3, recvBuf[2]); + + socket.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netTcpListenIteratorBreakClosesResource() { + async function iterate(listener: Deno.Listener) { + let i = 0; + + for await (const conn of listener) { + conn.close(); + i++; + + if (i > 1) { + break; + } + } + } + + const addr = { hostname: "127.0.0.1", port: 8888 }; + const listener = Deno.listen(addr); + const iteratePromise = iterate(listener); + + await delay(100); + const conn1 = await Deno.connect(addr); + conn1.close(); + const conn2 = await Deno.connect(addr); + conn2.close(); + + await iteratePromise; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netTcpListenCloseWhileIterating() { + const listener = Deno.listen({ port: 8001 }); + const nextWhileClosing = listener[Symbol.asyncIterator]().next(); + listener.close(); + assertEquals(await nextWhileClosing, { value: undefined, done: true }); + + const nextAfterClosing = listener[Symbol.asyncIterator]().next(); + assertEquals(await nextAfterClosing, { value: undefined, done: true }); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netUdpListenCloseWhileIterating() { + const socket = Deno.listenDatagram({ port: 8000, transport: "udp" }); + const nextWhileClosing = socket[Symbol.asyncIterator]().next(); + socket.close(); + assertEquals(await nextWhileClosing, { value: undefined, done: true }); + + const nextAfterClosing = socket[Symbol.asyncIterator]().next(); + assertEquals(await nextAfterClosing, { value: undefined, done: true }); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function netUnixListenCloseWhileIterating() { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listen({ path: filePath, transport: "unix" }); + const nextWhileClosing = socket[Symbol.asyncIterator]().next(); + socket.close(); + assertEquals(await nextWhileClosing, { value: undefined, done: true }); + + const nextAfterClosing = socket[Symbol.asyncIterator]().next(); + assertEquals(await nextAfterClosing, { value: undefined, done: true }); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + async function netUnixPacketListenCloseWhileIterating() { + const filePath = tmpUnixSocketPath(); + const socket = Deno.listenDatagram({ + path: filePath, + transport: "unixpacket", + }); + const nextWhileClosing = socket[Symbol.asyncIterator]().next(); + socket.close(); + assertEquals(await nextWhileClosing, { value: undefined, done: true }); + + const nextAfterClosing = socket[Symbol.asyncIterator]().next(); + assertEquals(await nextAfterClosing, { value: undefined, done: true }); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netListenAsyncIterator() { + const addr = { hostname: "127.0.0.1", port: listenPort }; + const listener = Deno.listen(addr); + const runAsyncIterator = async () => { + for await (const conn of listener) { + await conn.write(new Uint8Array([1, 2, 3])); + conn.close(); + } + }; + runAsyncIterator(); + const conn = await Deno.connect(addr); + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + assert(conn.rid > 0); + + assert(readResult !== null); + + const readResult2 = await conn.read(buf); + assertEquals(readResult2, null); + + listener.close(); + conn.close(); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + async function netCloseWriteSuccess() { + const addr = { hostname: "127.0.0.1", port: listenPort }; + const listener = Deno.listen(addr); + const { promise: closePromise, resolve } = Promise.withResolvers<void>(); + listener.accept().then(async (conn) => { + await conn.write(new Uint8Array([1, 2, 3])); + await closePromise; + conn.close(); + }); + const conn = await Deno.connect(addr); + conn.closeWrite(); // closing write + const buf = new Uint8Array(1024); + // Check read not impacted + const readResult = await conn.read(buf); + assertEquals(3, readResult); + assertEquals(1, buf[0]); + assertEquals(2, buf[1]); + assertEquals(3, buf[2]); + // Verify that the write end of the socket is closed. + // TODO(piscisaureus): assert that thrown error is of a specific type. + await assertRejects(async () => { + await conn.write(new Uint8Array([1, 2, 3])); + }); + resolve(); + listener.close(); + conn.close(); + }, +); + +Deno.test( + { + // https://github.com/denoland/deno/issues/11580 + ignore: Deno.build.os === "darwin" && isCI, + permissions: { net: true }, + }, + async function netHangsOnClose() { + let acceptedConn: Deno.Conn; + + async function iteratorReq(listener: Deno.Listener) { + const p = new Uint8Array(10); + const conn = await listener.accept(); + acceptedConn = conn; + + try { + while (true) { + const nread = await conn.read(p); + if (nread === null) { + break; + } + await conn.write(new Uint8Array([1, 2, 3])); + } + } catch (err) { + assert(err); + assert(err instanceof Deno.errors.Interrupted); + } + } + + const addr = { hostname: "127.0.0.1", port: listenPort }; + const listener = Deno.listen(addr); + const listenerPromise = iteratorReq(listener); + const connectionPromise = (async () => { + const conn = await Deno.connect(addr); + await conn.write(new Uint8Array([1, 2, 3, 4])); + const buf = new Uint8Array(10); + await conn.read(buf); + conn!.close(); + acceptedConn!.close(); + listener.close(); + })(); + + await Promise.all([ + listenerPromise, + connectionPromise, + ]); + }, +); + +Deno.test( + { + permissions: { net: true }, + }, + function netExplicitUndefinedHostname() { + const listener = Deno.listen({ hostname: undefined, port: 8080 }); + assertEquals((listener.addr as Deno.NetAddr).hostname, "0.0.0.0"); + listener.close(); + }, +); + +Deno.test( + { + ignore: Deno.build.os !== "linux", + permissions: { read: true, write: true }, + }, + function netUnixAbstractPathShouldNotPanic() { + const listener = Deno.listen({ + path: "\0aaa", + transport: "unix", + }); + assert("not panic"); + listener.close(); + }, +); + +Deno.test({ permissions: { net: true } }, async function whatwgStreams() { + const server = (async () => { + const listener = Deno.listen({ hostname: "127.0.0.1", port: listenPort }); + const conn = await listener.accept(); + await conn.readable.pipeTo(conn.writable); + listener.close(); + })(); + + const conn = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); + const reader = conn.readable.getReader(); + const writer = conn.writable.getWriter(); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + const data = encoder.encode("Hello World"); + + await writer.write(data); + const { value, done } = await reader.read(); + assert(!done); + assertEquals(decoder.decode(value), "Hello World"); + await reader.cancel(); + await server; +}); + +Deno.test( + { permissions: { read: true } }, + async function readableStreamTextEncoderPipe() { + const filename = "tests/testdata/assets/hello.txt"; + const file = await Deno.open(filename); + const readable = file.readable.pipeThrough(new TextDecoderStream()); + const chunks = []; + for await (const chunk of readable) { + chunks.push(chunk); + } + assertEquals(chunks.length, 1); + assertEquals(chunks[0].length, 12); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function writableStream() { + const path = await Deno.makeTempFile(); + const file = await Deno.open(path, { write: true }); + assert(file.writable instanceof WritableStream); + const readable = new ReadableStream({ + start(controller) { + controller.enqueue(new TextEncoder().encode("hello ")); + controller.enqueue(new TextEncoder().encode("world!")); + controller.close(); + }, + }); + await readable.pipeTo(file.writable); + const res = await Deno.readTextFile(path); + assertEquals(res, "hello world!"); + }, +); + +Deno.test( + { permissions: { read: true, run: true } }, + async function netListenUnref() { + const [statusCode, _output] = await execCode(` + async function main() { + const listener = Deno.listen({ port: ${listenPort} }); + listener.unref(); + await listener.accept(); // This doesn't block the program from exiting + } + main(); + `); + assertEquals(statusCode, 0); + }, +); + +Deno.test( + { permissions: { read: true, run: true } }, + async function netListenUnref2() { + const [statusCode, _output] = await execCode(` + async function main() { + const listener = Deno.listen({ port: ${listenPort} }); + await listener.accept(); + listener.unref(); + await listener.accept(); // The program exits here + throw new Error(); // The program doesn't reach here + } + main(); + const conn = await Deno.connect({ port: ${listenPort} }); + conn.close(); + `); + assertEquals(statusCode, 0); + }, +); + +Deno.test( + { permissions: { read: true, run: true, net: true } }, + async function netListenUnrefAndRef() { + const p = execCode2(` + async function main() { + const listener = Deno.listen({ port: ${listenPort} }); + listener.unref(); + listener.ref(); // This restores 'ref' state of listener + console.log("started"); + await listener.accept(); + console.log("accepted") + } + main(); + `); + await p.waitStdoutText("started"); + const conn = await Deno.connect({ port: listenPort }); + conn.close(); + const [statusCode, output] = await p.finished(); + assertEquals(statusCode, 0); + assertEquals(output.trim(), "started\naccepted"); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function netListenUnrefConcurrentAccept() { + const timer = setTimeout(() => {}, 1000); + const listener = Deno.listen({ port: listenPort }); + listener.accept().catch(() => {}); + listener.unref(); + // Unref'd listener still causes Busy error + // on concurrent accept calls. + await assertRejects(async () => { + await listener.accept(); // The program exits here + }, Deno.errors.Busy); + listener.close(); + clearTimeout(timer); + }, +); + +Deno.test({ + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, +}, function netUnixListenAddrAlreadyInUse() { + const filePath = tmpUnixSocketPath(); + const listener = Deno.listen({ path: filePath, transport: "unix" }); + assertThrows( + () => { + Deno.listen({ path: filePath, transport: "unix" }); + }, + Deno.errors.AddrInUse, + ); + listener.close(); +}); + +Deno.test( + { permissions: { net: true, read: true, run: true } }, + async function netConnUnref() { + const listener = Deno.listen({ port: listenPort }); + const intervalId = setInterval(() => {}); // This keeps event loop alive. + + const program = execCode(` + async function main() { + const conn = await Deno.connect({ port: ${listenPort} }); + conn.unref(); + await conn.read(new Uint8Array(10)); // The program exits here + throw new Error(); // The program doesn't reach here + } + main(); + `); + const conn = await listener.accept(); + const [statusCode, _output] = await program; + conn.close(); + listener.close(); + clearInterval(intervalId); + assertEquals(statusCode, 0); + }, +); + +Deno.test( + { permissions: { net: true, read: true, run: true } }, + async function netConnUnrefReadable() { + const listener = Deno.listen({ port: listenPort }); + const intervalId = setInterval(() => {}); // This keeps event loop alive. + + const program = execCode(` + async function main() { + const conn = await Deno.connect({ port: ${listenPort} }); + conn.unref(); + const reader = conn.readable.getReader(); + await reader.read(); // The program exits here + throw new Error(); // The program doesn't reach here + } + main(); + `); + const conn = await listener.accept(); + const [statusCode, _output] = await program; + conn.close(); + listener.close(); + clearInterval(intervalId); + assertEquals(statusCode, 0); + }, +); + +Deno.test({ permissions: { net: true } }, async function netTcpReuseAddr() { + const listener1 = Deno.listen({ + hostname: "127.0.0.1", + port: listenPort, + }); + listener1.accept().then( + (conn) => { + conn.close(); + }, + ); + + const conn1 = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); + const buf1 = new Uint8Array(1024); + await conn1.read(buf1); + listener1.close(); + conn1.close(); + + const listener2 = Deno.listen({ + hostname: "127.0.0.1", + port: listenPort, + }); + + listener2.accept().then( + (conn) => { + conn.close(); + }, + ); + + const conn2 = await Deno.connect({ hostname: "127.0.0.1", port: listenPort }); + const buf2 = new Uint8Array(1024); + await conn2.read(buf2); + + listener2.close(); + conn2.close(); +}); + +Deno.test( + { permissions: { net: true } }, + async function netUdpReuseAddr() { + const sender = Deno.listenDatagram({ + port: 4002, + transport: "udp", + }); + const listener1 = Deno.listenDatagram({ + port: 4000, + transport: "udp", + reuseAddress: true, + }); + const listener2 = Deno.listenDatagram({ + port: 4000, + transport: "udp", + reuseAddress: true, + }); + + const sent = new Uint8Array([1, 2, 3]); + await sender.send(sent, listener1.addr); + await Promise.any([listener1.receive(), listener2.receive()]).then( + ([recvd, remote]) => { + assert(remote.transport === "udp"); + assertEquals(recvd.length, 3); + assertEquals(1, recvd[0]); + assertEquals(2, recvd[1]); + assertEquals(3, recvd[2]); + }, + ); + sender.close(); + listener1.close(); + listener2.close(); + }, +); + +Deno.test( + { permissions: { net: true } }, + function netUdpNoReuseAddr() { + let listener1; + try { + listener1 = Deno.listenDatagram({ + port: 4001, + transport: "udp", + reuseAddress: false, + }); + } catch (err) { + assert(err); + assert(err instanceof Deno.errors.AddrInUse); // AddrInUse from previous test + } + + assertThrows(() => { + Deno.listenDatagram({ + port: 4001, + transport: "udp", + reuseAddress: false, + }); + }, Deno.errors.AddrInUse); + if (typeof listener1 !== "undefined") { + listener1.close(); + } + }, +); + +Deno.test({ + ignore: Deno.build.os !== "linux", + permissions: { net: true }, +}, async function netTcpListenReusePort() { + const port = 4003; + const listener1 = Deno.listen({ port, reusePort: true }); + const listener2 = Deno.listen({ port, reusePort: true }); + let p1; + let p2; + let listener1Recv = false; + let listener2Recv = false; + while (!listener1Recv || !listener2Recv) { + if (!p1) { + p1 = listener1.accept().then((conn) => { + conn.close(); + listener1Recv = true; + p1 = undefined; + }).catch(() => {}); + } + if (!p2) { + p2 = listener2.accept().then((conn) => { + conn.close(); + listener2Recv = true; + p2 = undefined; + }).catch(() => {}); + } + const conn = await Deno.connect({ port }); + conn.close(); + await Promise.race([p1, p2]); + } + listener1.close(); + listener2.close(); +}); + +Deno.test({ + ignore: Deno.build.os === "linux", + permissions: { net: true }, +}, function netTcpListenReusePortDoesNothing() { + const listener1 = Deno.listen({ port: 4003, reusePort: true }); + assertThrows(() => { + Deno.listen({ port: 4003, reusePort: true }); + }, Deno.errors.AddrInUse); + listener1.close(); +}); + +Deno.test({ + permissions: { net: true }, +}, function netTcpListenDoesNotThrowOnStringPort() { + // @ts-ignore String port is not allowed by typing, but it shouldn't throw + // for backwards compatibility. + const listener = Deno.listen({ hostname: "localhost", port: "0" }); + listener.close(); +}); + +Deno.test( + { permissions: { net: true } }, + async function listenerExplicitResourceManagement() { + let done: Promise<Deno.errors.BadResource>; + + { + using listener = Deno.listen({ port: listenPort }); + + done = assertRejects( + () => listener.accept(), + Deno.errors.BadResource, + ); + } + + await done; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function listenerExplicitResourceManagementManualClose() { + using listener = Deno.listen({ port: listenPort }); + listener.close(); + await assertRejects( // definitely closed + () => listener.accept(), + Deno.errors.BadResource, + ); + // calling [Symbol.dispose] after manual close is a no-op + }, +); diff --git a/cli/tests/unit/network_interfaces_test.ts b/tests/unit/network_interfaces_test.ts index 160efbfe6..160efbfe6 100644 --- a/cli/tests/unit/network_interfaces_test.ts +++ b/tests/unit/network_interfaces_test.ts diff --git a/cli/tests/unit/ops_test.ts b/tests/unit/ops_test.ts index 4a0daa0a5..4a0daa0a5 100644 --- a/cli/tests/unit/ops_test.ts +++ b/tests/unit/ops_test.ts diff --git a/cli/tests/unit/os_test.ts b/tests/unit/os_test.ts index e24494854..e24494854 100644 --- a/cli/tests/unit/os_test.ts +++ b/tests/unit/os_test.ts diff --git a/cli/tests/unit/path_from_url_test.ts b/tests/unit/path_from_url_test.ts index b3a6406bc..b3a6406bc 100644 --- a/cli/tests/unit/path_from_url_test.ts +++ b/tests/unit/path_from_url_test.ts diff --git a/cli/tests/unit/performance_test.ts b/tests/unit/performance_test.ts index 0c9ed21df..0c9ed21df 100644 --- a/cli/tests/unit/performance_test.ts +++ b/tests/unit/performance_test.ts diff --git a/cli/tests/unit/permissions_test.ts b/tests/unit/permissions_test.ts index 4dab0696a..4dab0696a 100644 --- a/cli/tests/unit/permissions_test.ts +++ b/tests/unit/permissions_test.ts diff --git a/cli/tests/unit/process_test.ts b/tests/unit/process_test.ts index 0cc4e99aa..0cc4e99aa 100644 --- a/cli/tests/unit/process_test.ts +++ b/tests/unit/process_test.ts diff --git a/cli/tests/unit/progressevent_test.ts b/tests/unit/progressevent_test.ts index 809c2ad39..809c2ad39 100644 --- a/cli/tests/unit/progressevent_test.ts +++ b/tests/unit/progressevent_test.ts diff --git a/cli/tests/unit/promise_hooks_test.ts b/tests/unit/promise_hooks_test.ts index f7c44155d..f7c44155d 100644 --- a/cli/tests/unit/promise_hooks_test.ts +++ b/tests/unit/promise_hooks_test.ts diff --git a/tests/unit/read_dir_test.ts b/tests/unit/read_dir_test.ts new file mode 100644 index 000000000..cba9647e5 --- /dev/null +++ b/tests/unit/read_dir_test.ts @@ -0,0 +1,113 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertRejects, + assertThrows, + pathToAbsoluteFileUrl, +} from "./test_util.ts"; + +function assertSameContent(files: Deno.DirEntry[]) { + let counter = 0; + + for (const entry of files) { + if (entry.name === "subdir") { + assert(entry.isDirectory); + counter++; + } + } + + assertEquals(counter, 1); +} + +Deno.test({ permissions: { read: true } }, function readDirSyncSuccess() { + const files = [...Deno.readDirSync("tests/testdata")]; + assertSameContent(files); +}); + +Deno.test({ permissions: { read: true } }, function readDirSyncWithUrl() { + const files = [ + ...Deno.readDirSync(pathToAbsoluteFileUrl("tests/testdata")), + ]; + assertSameContent(files); +}); + +Deno.test({ permissions: { read: false } }, function readDirSyncPerm() { + assertThrows(() => { + Deno.readDirSync("tests/"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function readDirSyncNotDir() { + assertThrows( + () => { + Deno.readDirSync("tests/testdata/assets/fixture.json"); + }, + Error, + `readdir 'tests/testdata/assets/fixture.json'`, + ); +}); + +Deno.test({ permissions: { read: true } }, function readDirSyncNotFound() { + assertThrows( + () => { + Deno.readDirSync("bad_dir_name"); + }, + Deno.errors.NotFound, + `readdir 'bad_dir_name'`, + ); +}); + +Deno.test({ permissions: { read: true } }, async function readDirSuccess() { + const files = []; + for await (const dirEntry of Deno.readDir("tests/testdata")) { + files.push(dirEntry); + } + assertSameContent(files); +}); + +Deno.test({ permissions: { read: true } }, async function readDirWithUrl() { + const files = []; + for await ( + const dirEntry of Deno.readDir(pathToAbsoluteFileUrl("tests/testdata")) + ) { + files.push(dirEntry); + } + assertSameContent(files); +}); + +Deno.test({ permissions: { read: false } }, async function readDirPerm() { + await assertRejects(async () => { + await Deno.readDir("tests/")[Symbol.asyncIterator]().next(); + }, Deno.errors.PermissionDenied); +}); + +Deno.test( + { permissions: { read: true }, ignore: Deno.build.os == "windows" }, + async function readDirDevFd(): Promise< + void + > { + for await (const _ of Deno.readDir("/dev/fd")) { + // We don't actually care whats in here; just that we don't panic on non regular entries + } + }, +); + +Deno.test( + { permissions: { read: true }, ignore: Deno.build.os == "windows" }, + function readDirDevFdSync() { + for (const _ of Deno.readDirSync("/dev/fd")) { + // We don't actually care whats in here; just that we don't panic on non regular file entries + } + }, +); + +Deno.test({ permissions: { read: true } }, async function readDirNotFound() { + await assertRejects( + async () => { + await Deno.readDir("bad_dir_name")[Symbol.asyncIterator]().next(); + }, + Deno.errors.NotFound, + `readdir 'bad_dir_name'`, + ); +}); diff --git a/tests/unit/read_file_test.ts b/tests/unit/read_file_test.ts new file mode 100644 index 000000000..bfb3b5085 --- /dev/null +++ b/tests/unit/read_file_test.ts @@ -0,0 +1,182 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertRejects, + assertThrows, + pathToAbsoluteFileUrl, + unreachable, +} from "./test_util.ts"; + +Deno.test({ permissions: { read: true } }, function readFileSyncSuccess() { + const data = Deno.readFileSync("tests/testdata/assets/fixture.json"); + assert(data.byteLength > 0); + const decoder = new TextDecoder("utf-8"); + const json = decoder.decode(data); + const pkg = JSON.parse(json); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: true } }, function readFileSyncUrl() { + const data = Deno.readFileSync( + pathToAbsoluteFileUrl("tests/testdata/assets/fixture.json"), + ); + assert(data.byteLength > 0); + const decoder = new TextDecoder("utf-8"); + const json = decoder.decode(data); + const pkg = JSON.parse(json); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: false } }, function readFileSyncPerm() { + assertThrows(() => { + Deno.readFileSync("tests/testdata/assets/fixture.json"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function readFileSyncNotFound() { + assertThrows(() => { + Deno.readFileSync("bad_filename"); + }, Deno.errors.NotFound); +}); + +Deno.test({ permissions: { read: true } }, async function readFileUrl() { + const data = await Deno.readFile( + pathToAbsoluteFileUrl("tests/testdata/assets/fixture.json"), + ); + assert(data.byteLength > 0); + const decoder = new TextDecoder("utf-8"); + const json = decoder.decode(data); + const pkg = JSON.parse(json); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: true } }, async function readFileSuccess() { + const data = await Deno.readFile("tests/testdata/assets/fixture.json"); + assert(data.byteLength > 0); + const decoder = new TextDecoder("utf-8"); + const json = decoder.decode(data); + const pkg = JSON.parse(json); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: false } }, async function readFilePerm() { + await assertRejects(async () => { + await Deno.readFile("tests/testdata/assets/fixture.json"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function readFileSyncLoop() { + for (let i = 0; i < 256; i++) { + Deno.readFileSync("tests/testdata/assets/fixture.json"); + } +}); + +Deno.test( + { permissions: { read: true } }, + async function readFileDoesNotLeakResources() { + await assertRejects(async () => await Deno.readFile("cli")); + }, +); + +Deno.test( + { permissions: { read: true } }, + function readFileSyncDoesNotLeakResources() { + assertThrows(() => Deno.readFileSync("cli")); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readFileWithAbortSignal() { + const ac = new AbortController(); + queueMicrotask(() => ac.abort()); + const error = await assertRejects( + async () => { + await Deno.readFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + }, + ); + assert(error instanceof DOMException); + assertEquals(error.name, "AbortError"); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readFileWithAbortSignalReason() { + const ac = new AbortController(); + const abortReason = new Error(); + queueMicrotask(() => ac.abort(abortReason)); + const error = await assertRejects( + async () => { + await Deno.readFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + }, + ); + assertEquals(error, abortReason); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readFileWithAbortSignalPrimitiveReason() { + const ac = new AbortController(); + queueMicrotask(() => ac.abort("Some string")); + try { + await Deno.readFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + unreachable(); + } catch (e) { + assertEquals(e, "Some string"); + } + }, +); + +// Test that AbortController's cancel handle is cleaned-up correctly, and do not leak resources. +Deno.test( + { permissions: { read: true } }, + async function readFileWithAbortSignalNotCalled() { + const ac = new AbortController(); + await Deno.readFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + }, +); + +Deno.test( + { permissions: { read: true }, ignore: Deno.build.os !== "linux" }, + async function readFileProcFs() { + const data = await Deno.readFile("/proc/self/stat"); + assert(data.byteLength > 0); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readFileNotFoundErrorCode() { + try { + await Deno.readFile("definitely-not-found.json"); + } catch (e) { + assertEquals(e.code, "ENOENT"); + } + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readFileIsDirectoryErrorCode() { + try { + await Deno.readFile("tests/testdata/assets/"); + } catch (e) { + if (Deno.build.os === "windows") { + assertEquals(e.code, "ENOENT"); + } else { + assertEquals(e.code, "EISDIR"); + } + } + }, +); diff --git a/cli/tests/unit/read_link_test.ts b/tests/unit/read_link_test.ts index 3ed1817bb..3ed1817bb 100644 --- a/cli/tests/unit/read_link_test.ts +++ b/tests/unit/read_link_test.ts diff --git a/tests/unit/read_text_file_test.ts b/tests/unit/read_text_file_test.ts new file mode 100644 index 000000000..94aa5f0a8 --- /dev/null +++ b/tests/unit/read_text_file_test.ts @@ -0,0 +1,208 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { + assert, + assertEquals, + assertRejects, + assertThrows, + pathToAbsoluteFileUrl, + unreachable, +} from "./test_util.ts"; + +Deno.test({ permissions: { read: true } }, function readTextFileSyncSuccess() { + const data = Deno.readTextFileSync("tests/testdata/assets/fixture.json"); + assert(data.length > 0); + const pkg = JSON.parse(data); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: true } }, function readTextFileSyncByUrl() { + const data = Deno.readTextFileSync( + pathToAbsoluteFileUrl("tests/testdata/assets/fixture.json"), + ); + assert(data.length > 0); + const pkg = JSON.parse(data); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: false } }, function readTextFileSyncPerm() { + assertThrows(() => { + Deno.readTextFileSync("tests/testdata/assets/fixture.json"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function readTextFileSyncNotFound() { + assertThrows(() => { + Deno.readTextFileSync("bad_filename"); + }, Deno.errors.NotFound); +}); + +Deno.test( + { permissions: { read: true } }, + async function readTextFileSuccess() { + const data = await Deno.readTextFile( + "tests/testdata/assets/fixture.json", + ); + assert(data.length > 0); + const pkg = JSON.parse(data); + assertEquals(pkg.name, "deno"); + }, +); + +Deno.test({ permissions: { read: true } }, async function readTextFileByUrl() { + const data = await Deno.readTextFile( + pathToAbsoluteFileUrl("tests/testdata/assets/fixture.json"), + ); + assert(data.length > 0); + const pkg = JSON.parse(data); + assertEquals(pkg.name, "deno"); +}); + +Deno.test({ permissions: { read: false } }, async function readTextFilePerm() { + await assertRejects(async () => { + await Deno.readTextFile("tests/testdata/assets/fixture.json"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function readTextFileSyncLoop() { + for (let i = 0; i < 256; i++) { + Deno.readTextFileSync("tests/testdata/assets/fixture.json"); + } +}); + +Deno.test( + { permissions: { read: true } }, + async function readTextFileDoesNotLeakResources() { + await assertRejects(async () => await Deno.readTextFile("cli")); + }, +); + +Deno.test( + { permissions: { read: true } }, + function readTextFileSyncDoesNotLeakResources() { + assertThrows(() => Deno.readTextFileSync("cli")); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readTextFileWithAbortSignal() { + const ac = new AbortController(); + queueMicrotask(() => ac.abort()); + const error = await assertRejects( + async () => { + await Deno.readTextFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + }, + ); + assert(error instanceof DOMException); + assertEquals(error.name, "AbortError"); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readTextFileWithAbortSignalReason() { + const ac = new AbortController(); + const abortReason = new Error(); + queueMicrotask(() => ac.abort(abortReason)); + const error = await assertRejects( + async () => { + await Deno.readTextFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + }, + ); + assertEquals(error, abortReason); + }, +); + +Deno.test( + { permissions: { read: true } }, + async function readTextFileWithAbortSignalPrimitiveReason() { + const ac = new AbortController(); + queueMicrotask(() => ac.abort("Some string")); + try { + await Deno.readTextFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + unreachable(); + } catch (e) { + assertEquals(e, "Some string"); + } + }, +); + +// Test that AbortController's cancel handle is cleaned-up correctly, and do not leak resources. +Deno.test( + { permissions: { read: true } }, + async function readTextFileWithAbortSignalNotCalled() { + const ac = new AbortController(); + await Deno.readTextFile("tests/testdata/assets/fixture.json", { + signal: ac.signal, + }); + }, +); + +Deno.test( + { permissions: { read: true }, ignore: Deno.build.os !== "linux" }, + async function readTextFileProcFs() { + const data = await Deno.readTextFile("/proc/self/stat"); + assert(data.length > 0); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + function readTextFileSyncV8LimitError() { + const kStringMaxLengthPlusOne = 536870888 + 1; + const bytes = new Uint8Array(kStringMaxLengthPlusOne); + const filePath = "tests/testdata/too_big_a_file.txt"; + + try { + Deno.writeFileSync(filePath, bytes); + } catch { + // NOTE(bartlomieju): writing a 0.5Gb file might be too much for CI, + // so skip running if writing fails. + return; + } + + assertThrows( + () => { + Deno.readTextFileSync(filePath); + }, + TypeError, + "buffer exceeds maximum length", + ); + + Deno.removeSync(filePath); + }, +); + +Deno.test( + { permissions: { read: true, write: true } }, + async function readTextFileV8LimitError() { + const kStringMaxLengthPlusOne = 536870888 + 1; + const bytes = new Uint8Array(kStringMaxLengthPlusOne); + const filePath = "tests/testdata/too_big_a_file_2.txt"; + + try { + await Deno.writeFile(filePath, bytes); + } catch { + // NOTE(bartlomieju): writing a 0.5Gb file might be too much for CI, + // so skip running if writing fails. + return; + } + + await assertRejects( + async () => { + await Deno.readTextFile(filePath); + }, + TypeError, + "buffer exceeds maximum length", + ); + + await Deno.remove(filePath); + }, +); diff --git a/tests/unit/real_path_test.ts b/tests/unit/real_path_test.ts new file mode 100644 index 000000000..b3656a927 --- /dev/null +++ b/tests/unit/real_path_test.ts @@ -0,0 +1,114 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertMatch, + assertRejects, + assertThrows, + pathToAbsoluteFileUrl, +} from "./test_util.ts"; + +Deno.test({ permissions: { read: true } }, function realPathSyncSuccess() { + const relative = "tests/testdata/assets/fixture.json"; + const realPath = Deno.realPathSync(relative); + if (Deno.build.os !== "windows") { + assert(realPath.startsWith("/")); + assert(realPath.endsWith(relative)); + } else { + assertMatch(realPath, /^[A-Z]:\\/); + assert(realPath.endsWith(relative.replace(/\//g, "\\"))); + } +}); + +Deno.test({ permissions: { read: true } }, function realPathSyncUrl() { + const relative = "tests/testdata/assets/fixture.json"; + const url = pathToAbsoluteFileUrl(relative); + assertEquals(Deno.realPathSync(relative), Deno.realPathSync(url)); +}); + +Deno.test( + { + permissions: { read: true, write: true }, + }, + function realPathSyncSymlink() { + const testDir = Deno.makeTempDirSync(); + const target = testDir + "/target"; + const symlink = testDir + "/symln"; + Deno.mkdirSync(target); + Deno.symlinkSync(target, symlink); + const realPath = Deno.realPathSync(symlink); + if (Deno.build.os !== "windows") { + assert(realPath.startsWith("/")); + assert(realPath.endsWith("/target")); + } else { + assertMatch(realPath, /^[A-Z]:\\/); + assert(realPath.endsWith("\\target")); + } + }, +); + +Deno.test({ permissions: { read: false } }, function realPathSyncPerm() { + assertThrows(() => { + Deno.realPathSync("some_file"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function realPathSyncNotFound() { + assertThrows(() => { + Deno.realPathSync("bad_filename"); + }, Deno.errors.NotFound); +}); + +Deno.test({ permissions: { read: true } }, async function realPathSuccess() { + const relativePath = "tests/testdata/assets/fixture.json"; + const realPath = await Deno.realPath(relativePath); + if (Deno.build.os !== "windows") { + assert(realPath.startsWith("/")); + assert(realPath.endsWith(relativePath)); + } else { + assertMatch(realPath, /^[A-Z]:\\/); + assert(realPath.endsWith(relativePath.replace(/\//g, "\\"))); + } +}); + +Deno.test( + { permissions: { read: true } }, + async function realPathUrl() { + const relative = "tests/testdata/assets/fixture.json"; + const url = pathToAbsoluteFileUrl(relative); + assertEquals(await Deno.realPath(relative), await Deno.realPath(url)); + }, +); + +Deno.test( + { + permissions: { read: true, write: true }, + }, + async function realPathSymlink() { + const testDir = Deno.makeTempDirSync(); + const target = testDir + "/target"; + const symlink = testDir + "/symln"; + Deno.mkdirSync(target); + Deno.symlinkSync(target, symlink); + const realPath = await Deno.realPath(symlink); + if (Deno.build.os !== "windows") { + assert(realPath.startsWith("/")); + assert(realPath.endsWith("/target")); + } else { + assertMatch(realPath, /^[A-Z]:\\/); + assert(realPath.endsWith("\\target")); + } + }, +); + +Deno.test({ permissions: { read: false } }, async function realPathPerm() { + await assertRejects(async () => { + await Deno.realPath("some_file"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, async function realPathNotFound() { + await assertRejects(async () => { + await Deno.realPath("bad_filename"); + }, Deno.errors.NotFound); +}); diff --git a/cli/tests/unit/ref_unref_test.ts b/tests/unit/ref_unref_test.ts index 6f5bcf0a7..6f5bcf0a7 100644 --- a/cli/tests/unit/ref_unref_test.ts +++ b/tests/unit/ref_unref_test.ts diff --git a/cli/tests/unit/remove_test.ts b/tests/unit/remove_test.ts index f4e54dc52..f4e54dc52 100644 --- a/cli/tests/unit/remove_test.ts +++ b/tests/unit/remove_test.ts diff --git a/cli/tests/unit/rename_test.ts b/tests/unit/rename_test.ts index 4f6bb09cf..4f6bb09cf 100644 --- a/cli/tests/unit/rename_test.ts +++ b/tests/unit/rename_test.ts diff --git a/cli/tests/unit/request_test.ts b/tests/unit/request_test.ts index fe34c20a5..fe34c20a5 100644 --- a/cli/tests/unit/request_test.ts +++ b/tests/unit/request_test.ts diff --git a/tests/unit/resources_test.ts b/tests/unit/resources_test.ts new file mode 100644 index 000000000..bb0b9f2f8 --- /dev/null +++ b/tests/unit/resources_test.ts @@ -0,0 +1,55 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { assert, assertEquals, assertThrows } from "./test_util.ts"; + +const listenPort = 4505; + +Deno.test(function resourcesCloseBadArgs() { + assertThrows(() => { + Deno.close((null as unknown) as number); + }, TypeError); +}); + +Deno.test(function resourcesStdio() { + const res = Deno.resources(); + + assertEquals(res[0], "stdin"); + assertEquals(res[1], "stdout"); + assertEquals(res[2], "stderr"); +}); + +Deno.test({ permissions: { net: true } }, async function resourcesNet() { + const listener = Deno.listen({ port: listenPort }); + const dialerConn = await Deno.connect({ port: listenPort }); + const listenerConn = await listener.accept(); + + const res = Deno.resources(); + assertEquals( + Object.values(res).filter((r): boolean => r === "tcpListener").length, + 1, + ); + const tcpStreams = Object.values(res).filter( + (r): boolean => r === "tcpStream", + ); + assert(tcpStreams.length >= 2); + + listenerConn.close(); + dialerConn.close(); + listener.close(); +}); + +Deno.test({ permissions: { read: true } }, async function resourcesFile() { + const resourcesBefore = Deno.resources(); + const f = await Deno.open("tests/testdata/assets/hello.txt"); + const resourcesAfter = Deno.resources(); + f.close(); + + // check that exactly one new resource (file) was added + assertEquals( + Object.keys(resourcesAfter).length, + Object.keys(resourcesBefore).length + 1, + ); + const newRid = +Object.keys(resourcesAfter).find((rid): boolean => { + return !Object.prototype.hasOwnProperty.call(resourcesBefore, rid); + })!; + assertEquals(resourcesAfter[newRid], "fsFile"); +}); diff --git a/cli/tests/unit/response_test.ts b/tests/unit/response_test.ts index bbdd5f481..bbdd5f481 100644 --- a/cli/tests/unit/response_test.ts +++ b/tests/unit/response_test.ts diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts new file mode 100644 index 000000000..e972b36cd --- /dev/null +++ b/tests/unit/serve_test.ts @@ -0,0 +1,3932 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { assertMatch, assertRejects } from "@test_util/std/assert/mod.ts"; +import { Buffer, BufReader, BufWriter } from "@test_util/std/io/mod.ts"; +import { TextProtoReader } from "../testdata/run/textproto.ts"; +import { + assert, + assertEquals, + assertStringIncludes, + assertThrows, + execCode, + fail, + tmpUnixSocketPath, +} from "./test_util.ts"; + +// Since these tests may run in parallel, ensure this port is unique to this file +const servePort = 4502; + +const { + upgradeHttpRaw, + addTrailers, + serveHttpOnListener, + serveHttpOnConnection, + // @ts-expect-error TypeScript (as of 3.7) does not support indexing namespaces by symbol +} = Deno[Deno.internal]; + +function createOnErrorCb(ac: AbortController): (err: unknown) => Response { + return (err) => { + console.error(err); + ac.abort(); + return new Response("Internal server error", { status: 500 }); + }; +} + +function onListen( + resolve: (value: void | PromiseLike<void>) => void, +): ({ hostname, port }: { hostname: string; port: number }) => void { + return () => { + resolve(); + }; +} + +async function makeServer( + handler: (req: Request) => Response | Promise<Response>, +): Promise< + { + finished: Promise<void>; + abort: () => void; + shutdown: () => Promise<void>; + [Symbol.asyncDispose](): PromiseLike<void>; + } +> { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + }); + + await promise; + return { + finished: server.finished, + abort() { + ac.abort(); + }, + async shutdown() { + await server.shutdown(); + }, + [Symbol.asyncDispose]() { + return server[Symbol.asyncDispose](); + }, + }; +} + +Deno.test(async function httpServerShutsDownPortBeforeResolving() { + const { finished, abort } = await makeServer((_req) => new Response("ok")); + assertThrows(() => Deno.listen({ port: servePort })); + abort(); + await finished; + + const listener = Deno.listen({ port: servePort }); + listener!.close(); +}); + +// When shutting down abruptly, we require that all in-progress connections are aborted, +// no new connections are allowed, and no new transactions are allowed on existing connections. +Deno.test( + { permissions: { net: true } }, + async function httpServerShutdownAbruptGuaranteeHttp11() { + const deferredQueue: { + input: ReturnType<typeof Promise.withResolvers<string>>; + out: ReturnType<typeof Promise.withResolvers<void>>; + }[] = []; + const { finished, abort } = await makeServer((_req) => { + const { input, out } = deferredQueue.shift()!; + return new Response( + new ReadableStream({ + async start(controller) { + controller.enqueue(new Uint8Array([46])); + out.resolve(); + controller.enqueue(encoder.encode(await input.promise)); + controller.close(); + }, + }), + ); + }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + const conn = await Deno.connect({ port: servePort }); + const w = conn.writable.getWriter(); + const r = conn.readable.getReader(); + + const deferred1 = { + input: Promise.withResolvers<string>(), + out: Promise.withResolvers<void>(), + }; + deferredQueue.push(deferred1); + const deferred2 = { + input: Promise.withResolvers<string>(), + out: Promise.withResolvers<void>(), + }; + deferredQueue.push(deferred2); + const deferred3 = { + input: Promise.withResolvers<string>(), + out: Promise.withResolvers<void>(), + }; + deferredQueue.push(deferred3); + deferred1.input.resolve("#"); + deferred2.input.resolve("$"); + await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); + await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); + + // Fully read two responses + let text = ""; + while (!text.includes("$\r\n")) { + text += decoder.decode((await r.read()).value); + } + + await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); + await deferred3.out.promise; + + // This is half served, so wait for the chunk that has the first '.' + text = ""; + while (!text.includes("1\r\n.\r\n")) { + text += decoder.decode((await r.read()).value); + } + + abort(); + + // This doesn't actually write anything, but we release it after aborting + deferred3.input.resolve("!"); + + // Guarantee: can't connect to an aborted server (though this may not happen immediately) + let failed = false; + for (let i = 0; i < 10; i++) { + try { + const conn = await Deno.connect({ port: servePort }); + conn.close(); + // Give the runtime a few ticks to settle (required for Windows) + await new Promise((r) => setTimeout(r, 2 ** i)); + continue; + } catch (_) { + failed = true; + break; + } + } + assert(failed, "The Deno.serve listener was not disabled promptly"); + + // Guarantee: the pipeline is closed abruptly + assert((await r.read()).done); + + try { + conn.close(); + } catch (_) { + // Ignore + } + await finished; + }, +); + +// When shutting down abruptly, we require that all in-progress connections are aborted, +// no new connections are allowed, and no new transactions are allowed on existing connections. +Deno.test( + { permissions: { net: true } }, + async function httpServerShutdownGracefulGuaranteeHttp11() { + const deferredQueue: { + input: ReturnType<typeof Promise.withResolvers<string>>; + out: ReturnType<typeof Promise.withResolvers<void>>; + }[] = []; + const { finished, shutdown } = await makeServer((_req) => { + const { input, out } = deferredQueue.shift()!; + return new Response( + new ReadableStream({ + async start(controller) { + controller.enqueue(new Uint8Array([46])); + out.resolve(); + controller.enqueue(encoder.encode(await input.promise)); + controller.close(); + }, + }), + ); + }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + const conn = await Deno.connect({ port: servePort }); + const w = conn.writable.getWriter(); + const r = conn.readable.getReader(); + + const deferred1 = { + input: Promise.withResolvers<string>(), + out: Promise.withResolvers<void>(), + }; + deferredQueue.push(deferred1); + const deferred2 = { + input: Promise.withResolvers<string>(), + out: Promise.withResolvers<void>(), + }; + deferredQueue.push(deferred2); + const deferred3 = { + input: Promise.withResolvers<string>(), + out: Promise.withResolvers<void>(), + }; + deferredQueue.push(deferred3); + deferred1.input.resolve("#"); + deferred2.input.resolve("$"); + await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); + await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); + + // Fully read two responses + let text = ""; + while (!text.includes("$\r\n")) { + text += decoder.decode((await r.read()).value); + } + + await w.write(encoder.encode(`GET / HTTP/1.1\nConnection: keep-alive\n\n`)); + await deferred3.out.promise; + + // This is half served, so wait for the chunk that has the first '.' + text = ""; + while (!text.includes("1\r\n.\r\n")) { + text += decoder.decode((await r.read()).value); + } + + const shutdownPromise = shutdown(); + + // Release the final response _after_ we shut down + deferred3.input.resolve("!"); + + // Guarantee: can't connect to an aborted server (though this may not happen immediately) + let failed = false; + for (let i = 0; i < 10; i++) { + try { + const conn = await Deno.connect({ port: servePort }); + conn.close(); + // Give the runtime a few ticks to settle (required for Windows) + await new Promise((r) => setTimeout(r, 2 ** i)); + continue; + } catch (_) { + failed = true; + break; + } + } + assert(failed, "The Deno.serve listener was not disabled promptly"); + + // Guarantee: existing connections fully drain + while (!text.includes("!\r\n")) { + text += decoder.decode((await r.read()).value); + } + + await shutdownPromise; + + try { + conn.close(); + } catch (_) { + // Ignore + } + await finished; + }, +); + +// Ensure that resources don't leak during a graceful shutdown +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerShutdownGracefulResources() { + const { promise, resolve } = Promise.withResolvers<void>(); + const { finished, shutdown } = await makeServer(async (_req) => { + resolve(); + await new Promise((r) => setTimeout(r, 10)); + return new Response((await makeTempFile(1024 * 1024)).readable); + }); + + const f = fetch(`http://localhost:${servePort}`); + await promise; + assertEquals((await (await f).text()).length, 1048576); + await shutdown(); + await finished; + }, +); + +// Ensure that resources don't leak during a graceful shutdown +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerShutdownGracefulResources2() { + const waitForAbort = Promise.withResolvers<void>(); + const waitForRequest = Promise.withResolvers<void>(); + const { finished, shutdown } = await makeServer(async (_req) => { + waitForRequest.resolve(); + await waitForAbort.promise; + await new Promise((r) => setTimeout(r, 10)); + return new Response((await makeTempFile(1024 * 1024)).readable); + }); + + const f = fetch(`http://localhost:${servePort}`); + await waitForRequest.promise; + const s = shutdown(); + waitForAbort.resolve(); + assertEquals((await (await f).text()).length, 1048576); + await s; + await finished; + }, +); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerExplicitResourceManagement() { + let dataPromise; + + { + await using _server = await makeServer(async (_req) => { + return new Response((await makeTempFile(1024 * 1024)).readable); + }); + + const resp = await fetch(`http://localhost:${servePort}`); + dataPromise = resp.arrayBuffer(); + } + + assertEquals((await dataPromise).byteLength, 1048576); + }, +); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerExplicitResourceManagementManualClose() { + await using server = await makeServer(async (_req) => { + return new Response((await makeTempFile(1024 * 1024)).readable); + }); + + const resp = await fetch(`http://localhost:${servePort}`); + + const [_, data] = await Promise.all([ + server.shutdown(), + resp.arrayBuffer(), + ]); + + assertEquals(data.byteLength, 1048576); + }, +); + +Deno.test( + { permissions: { read: true, run: true } }, + async function httpServerUnref() { + const [statusCode, _output] = await execCode(` + async function main() { + const server = Deno.serve({ port: ${servePort}, handler: () => null }); + server.unref(); + await server.finished; // This doesn't block the program from exiting + } + main(); + `); + assertEquals(statusCode, 0); + }, +); + +Deno.test(async function httpServerCanResolveHostnames() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (_req) => new Response("ok"), + hostname: "localhost", + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + const resp = await fetch(`http://localhost:${servePort}/`, { + headers: { "connection": "close" }, + }); + const text = await resp.text(); + assertEquals(text, "ok"); + ac.abort(); + await server.finished; +}); + +Deno.test(async function httpServerRejectsOnAddrInUse() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (_req) => new Response("ok"), + hostname: "localhost", + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + await promise; + + assertThrows( + () => + Deno.serve({ + handler: (_req) => new Response("ok"), + hostname: "localhost", + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }), + Deno.errors.AddrInUse, + ); + ac.abort(); + await server.finished; +}); + +Deno.test({ permissions: { net: true } }, async function httpServerBasic() { + const ac = new AbortController(); + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: async (request, { remoteAddr }) => { + // FIXME(bartlomieju): + // make sure that request can be inspected + console.log(request); + assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); + assertEquals(await request.text(), ""); + assertEquals(remoteAddr.hostname, "127.0.0.1"); + deferred.resolve(); + return new Response("Hello World", { headers: { "foo": "bar" } }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + await deferred.promise; + const clone = resp.clone(); + const text = await resp.text(); + assertEquals(text, "Hello World"); + assertEquals(resp.headers.get("foo"), "bar"); + const cloneText = await clone.text(); + assertEquals(cloneText, "Hello World"); + ac.abort(); + await server.finished; +}); + +// Test serving of HTTP on an arbitrary listener. +Deno.test( + { permissions: { net: true } }, + async function httpServerOnListener() { + const ac = new AbortController(); + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const listener = Deno.listen({ port: servePort }); + const server = serveHttpOnListener( + listener, + ac.signal, + async ( + request: Request, + { remoteAddr }: { remoteAddr: { hostname: string } }, + ) => { + assertEquals( + new URL(request.url).href, + `http://127.0.0.1:${servePort}/`, + ); + assertEquals(await request.text(), ""); + assertEquals(remoteAddr.hostname, "127.0.0.1"); + deferred.resolve(); + return new Response("Hello World", { headers: { "foo": "bar" } }); + }, + createOnErrorCb(ac), + onListen(listeningDeferred.resolve), + ); + + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + await listeningDeferred.promise; + const clone = resp.clone(); + const text = await resp.text(); + assertEquals(text, "Hello World"); + assertEquals(resp.headers.get("foo"), "bar"); + const cloneText = await clone.text(); + assertEquals(cloneText, "Hello World"); + ac.abort(); + await server.finished; + }, +); + +// Test serving of HTTP on an arbitrary connection. +Deno.test( + { permissions: { net: true } }, + async function httpServerOnConnection() { + const ac = new AbortController(); + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const listener = Deno.listen({ port: servePort }); + const acceptPromise = listener.accept(); + const fetchPromise = fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + + const server = serveHttpOnConnection( + await acceptPromise, + ac.signal, + async ( + request: Request, + { remoteAddr }: { remoteAddr: { hostname: string } }, + ) => { + assertEquals( + new URL(request.url).href, + `http://127.0.0.1:${servePort}/`, + ); + assertEquals(await request.text(), ""); + assertEquals(remoteAddr.hostname, "127.0.0.1"); + deferred.resolve(); + return new Response("Hello World", { headers: { "foo": "bar" } }); + }, + createOnErrorCb(ac), + onListen(listeningDeferred.resolve), + ); + + const resp = await fetchPromise; + await deferred.promise; + const clone = resp.clone(); + const text = await resp.text(); + assertEquals(text, "Hello World"); + assertEquals(resp.headers.get("foo"), "bar"); + const cloneText = await clone.text(); + assertEquals(cloneText, "Hello World"); + // Note that we don't need to abort this server -- it closes when the connection does + // ac.abort(); + await server.finished; + listener.close(); + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerOnError() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + let requestStash: Request | null; + + const server = Deno.serve({ + handler: async (request: Request) => { + requestStash = request; + await new Promise((r) => setTimeout(r, 100)); + throw "fail"; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: () => { + return new Response("failed: " + requestStash!.url, { status: 500 }); + }, + }); + + await promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + const text = await resp.text(); + ac.abort(); + await server.finished; + + assertEquals(text, `failed: http://127.0.0.1:${servePort}/`); +}); + +Deno.test( + { permissions: { net: true } }, + async function httpServerOnErrorFails() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + // NOTE(bartlomieju): deno lint doesn't know that it's actually used later, + // but TypeScript can't see that either ¯\_(ツ)_/¯ + // deno-lint-ignore no-unused-vars + let requestStash: Request | null; + + const server = Deno.serve({ + handler: async (request: Request) => { + requestStash = request; + await new Promise((r) => setTimeout(r, 100)); + throw "fail"; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: () => { + throw "again"; + }, + }); + + await promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + const text = await resp.text(); + ac.abort(); + await server.finished; + + assertEquals(text, "Internal Server Error"); + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerOverload1() { + const ac = new AbortController(); + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }, async (request) => { + // FIXME(bartlomieju): + // make sure that request can be inspected + console.log(request); + assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); + assertEquals(await request.text(), ""); + deferred.resolve(); + return new Response("Hello World", { headers: { "foo": "bar" } }); + }); + + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + await deferred.promise; + const clone = resp.clone(); + const text = await resp.text(); + assertEquals(text, "Hello World"); + assertEquals(resp.headers.get("foo"), "bar"); + const cloneText = await clone.text(); + assertEquals(cloneText, "Hello World"); + ac.abort(); + await server.finished; +}); + +Deno.test({ permissions: { net: true } }, async function httpServerOverload2() { + const ac = new AbortController(); + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }, async (request) => { + // FIXME(bartlomieju): + // make sure that request can be inspected + console.log(request); + assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); + assertEquals(await request.text(), ""); + deferred.resolve(); + return new Response("Hello World", { headers: { "foo": "bar" } }); + }); + + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: { "connection": "close" }, + }); + await deferred.promise; + const clone = resp.clone(); + const text = await resp.text(); + assertEquals(text, "Hello World"); + assertEquals(resp.headers.get("foo"), "bar"); + const cloneText = await clone.text(); + assertEquals(cloneText, "Hello World"); + ac.abort(); + await server.finished; +}); + +Deno.test( + { permissions: { net: true } }, + function httpServerErrorOverloadMissingHandler() { + // @ts-ignore - testing invalid overload + assertThrows(() => Deno.serve(), TypeError, "handler"); + // @ts-ignore - testing invalid overload + assertThrows(() => Deno.serve({}), TypeError, "handler"); + assertThrows( + // @ts-ignore - testing invalid overload + () => Deno.serve({ handler: undefined }), + TypeError, + "handler", + ); + assertThrows( + // @ts-ignore - testing invalid overload + () => Deno.serve(undefined, { handler: () => {} }), + TypeError, + "handler", + ); + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerPort0() { + const ac = new AbortController(); + + const server = Deno.serve({ + handler() { + return new Response("Hello World"); + }, + port: 0, + signal: ac.signal, + onListen({ port }) { + assert(port > 0 && port < 65536); + ac.abort(); + }, + }); + await server.finished; +}); + +Deno.test( + { permissions: { net: true } }, + async function httpServerDefaultOnListenCallback() { + const ac = new AbortController(); + + const consoleLog = console.log; + console.log = (msg) => { + try { + const match = msg.match(/Listening on http:\/\/localhost:(\d+)\//); + assert(!!match, `Didn't match ${msg}`); + const port = +match[1]; + assert(port > 0 && port < 65536); + } finally { + ac.abort(); + } + }; + + try { + const server = Deno.serve({ + handler() { + return new Response("Hello World"); + }, + hostname: "0.0.0.0", + port: 0, + signal: ac.signal, + }); + + await server.finished; + } finally { + console.log = consoleLog; + } + }, +); + +// https://github.com/denoland/deno/issues/15107 +Deno.test( + { permissions: { net: true } }, + async function httpLazyHeadersIssue15107() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + let headers: Headers; + const server = Deno.serve({ + handler: async (request) => { + await request.text(); + headers = request.headers; + deferred.resolve(); + return new Response(""); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + conn.close(); + assertEquals(headers!.get("content-length"), "5"); + ac.abort(); + await server.finished; + }, +); + +function createUrlTest( + name: string, + methodAndPath: string, + host: string | null, + expected: string, +) { + Deno.test(`httpServerUrl${name}`, async () => { + const listeningDeferred = Promise.withResolvers<number>(); + const urlDeferred = Promise.withResolvers<string>(); + const ac = new AbortController(); + const server = Deno.serve({ + handler: (request: Request) => { + urlDeferred.resolve(request.url); + return new Response(""); + }, + port: 0, + signal: ac.signal, + onListen: ({ port }: { port: number }) => { + listeningDeferred.resolve(port); + }, + onError: createOnErrorCb(ac), + }); + + const port = await listeningDeferred.promise; + const conn = await Deno.connect({ port }); + + const encoder = new TextEncoder(); + const body = `${methodAndPath} HTTP/1.1\r\n${ + host ? ("Host: " + host + "\r\n") : "" + }Content-Length: 5\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + try { + const expectedResult = expected.replace("HOST", "localhost").replace( + "PORT", + `${port}`, + ); + assertEquals(await urlDeferred.promise, expectedResult); + } finally { + ac.abort(); + await server.finished; + conn.close(); + } + }); +} + +createUrlTest("WithPath", "GET /path", null, "http://HOST:PORT/path"); +createUrlTest( + "WithPathAndHost", + "GET /path", + "deno.land", + "http://deno.land/path", +); +createUrlTest( + "WithAbsolutePath", + "GET http://localhost/path", + null, + "http://localhost/path", +); +createUrlTest( + "WithAbsolutePathAndHost", + "GET http://localhost/path", + "deno.land", + "http://localhost/path", +); +createUrlTest( + "WithPortAbsolutePath", + "GET http://localhost:1234/path", + null, + "http://localhost:1234/path", +); +createUrlTest( + "WithPortAbsolutePathAndHost", + "GET http://localhost:1234/path", + "deno.land", + "http://localhost:1234/path", +); +createUrlTest( + "WithPortAbsolutePathAndHostWithPort", + "GET http://localhost:1234/path", + "deno.land:9999", + "http://localhost:1234/path", +); + +createUrlTest("WithAsterisk", "OPTIONS *", null, "*"); +createUrlTest( + "WithAuthorityForm", + "CONNECT deno.land:80", + null, + "deno.land:80", +); + +// TODO(mmastrac): These should probably be 400 errors +createUrlTest("WithInvalidAsterisk", "GET *", null, "*"); +createUrlTest("WithInvalidNakedPath", "GET path", null, "path"); +createUrlTest( + "WithInvalidNakedAuthority", + "GET deno.land:1234", + null, + "deno.land:1234", +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerGetRequestBody() { + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (request) => { + assertEquals(request.body, null); + deferred.resolve(); + return new Response("", { headers: {} }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\r\nContent-Length: 5\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + const resp = new Uint8Array(200); + const readResult = await conn.read(resp); + assert(readResult); + assert(readResult > 0); + + conn.close(); + await deferred.promise; + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerAbortedRequestBody() { + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: async (request) => { + await assertRejects(async () => { + await request.text(); + }); + deferred.resolve(); + // Not actually used + return new Response(); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + // Send POST request with a body + content-length, but don't send it all + const encoder = new TextEncoder(); + const body = + `POST / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\r\nContent-Length: 10\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + conn.close(); + await deferred.promise; + ac.abort(); + await server.finished; + }, +); + +function createStreamTest(count: number, delay: number, action: string) { + function doAction(controller: ReadableStreamDefaultController, i: number) { + if (i == count) { + if (action == "Throw") { + controller.error(new Error("Expected error!")); + } else { + controller.close(); + } + } else { + controller.enqueue(`a${i}`); + + if (delay == 0) { + doAction(controller, i + 1); + } else { + setTimeout(() => doAction(controller, i + 1), delay); + } + } + } + + function makeStream(_count: number, delay: number): ReadableStream { + return new ReadableStream({ + start(controller) { + if (delay == 0) { + doAction(controller, 0); + } else { + setTimeout(() => doAction(controller, 0), delay); + } + }, + }).pipeThrough(new TextEncoderStream()); + } + + Deno.test(`httpServerStreamCount${count}Delay${delay}${action}`, async () => { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: (_request) => { + return new Response(makeStream(count, delay)); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + try { + await promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`); + if (action == "Throw") { + await assertRejects(async () => { + await resp.text(); + }); + } else { + const text = await resp.text(); + + let expected = ""; + for (let i = 0; i < count; i++) { + expected += `a${i}`; + } + + assertEquals(text, expected); + } + } finally { + ac.abort(); + await server.shutdown(); + } + }); +} + +for (const count of [0, 1, 2, 3]) { + for (const delay of [0, 1, 25]) { + // Creating a stream that errors in start will throw + if (delay > 0) { + createStreamTest(count, delay, "Throw"); + } + createStreamTest(count, delay, "Close"); + } +} + +Deno.test( + { permissions: { net: true } }, + async function httpServerStreamRequest() { + const stream = new TransformStream(); + const writer = stream.writable.getWriter(); + writer.write(new TextEncoder().encode("hello ")); + writer.write(new TextEncoder().encode("world")); + writer.close(); + const { promise, resolve } = Promise.withResolvers<void>(); + const ac = new AbortController(); + const server = Deno.serve({ + handler: async (request) => { + const reqBody = await request.text(); + assertEquals("hello world", reqBody); + return new Response("yo"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + body: stream.readable, + method: "POST", + headers: { "connection": "close" }, + }); + + assertEquals(await resp.text(), "yo"); + ac.abort(); + await server.finished; + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerClose() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: () => new Response("ok"), + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + await promise; + const client = await Deno.connect({ port: servePort }); + client.close(); + ac.abort(); + await server.finished; +}); + +// https://github.com/denoland/deno/issues/15427 +Deno.test({ permissions: { net: true } }, async function httpServerCloseGet() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + const requestDeferred = Promise.withResolvers<void>(); + const responseDeferred = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: async () => { + requestDeferred.resolve(); + await new Promise((r) => setTimeout(r, 500)); + responseDeferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await requestDeferred.promise; + conn.close(); + await responseDeferred.promise; + ac.abort(); + await server.finished; +}); + +// FIXME: +Deno.test( + { permissions: { net: true } }, + async function httpServerEmptyBlobResponse() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: () => new Response(new Blob([])), + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`); + const respBody = await resp.text(); + + assertEquals("", respBody); + ac.abort(); + await server.finished; + }, +); + +// https://github.com/denoland/deno/issues/17291 +Deno.test( + { permissions: { net: true } }, + async function httpServerIncorrectChunkedResponse() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + const errorDeferred = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: () => { + const body = new ReadableStream({ + start(controller) { + // Non-encoded string is not a valid readable chunk. + // @ts-ignore we're testing that input is invalid + controller.enqueue("wat"); + }, + type: "bytes", + }); + return new Response(body); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: (err) => { + const errResp = new Response( + `Internal server error: ${(err as Error).message}`, + { status: 500 }, + ); + errorDeferred.resolve(); + return errResp; + }, + }); + + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`); + // Incorrectly implemented reader ReadableStream should reject. + assertStringIncludes(await resp.text(), "Failed to execute 'enqueue'"); + await errorDeferred.promise; + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerCorrectLengthForUnicodeString() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: () => new Response("韓國".repeat(10)), + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const body = + `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + + conn.close(); + + ac.abort(); + await server.finished; + assert(msg.includes("content-length: 60")); + }, +); + +Deno.test({ permissions: { net: true } }, async function httpServerWebSocket() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + const doneDeferred = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: (request) => { + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + socket.onerror = (e) => { + console.error(e); + fail(); + }; + socket.onmessage = (m) => { + socket.send(m.data); + socket.close(1001); + }; + socket.onclose = () => doneDeferred.resolve(); + return response; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const def = Promise.withResolvers<void>(); + const ws = new WebSocket(`ws://localhost:${servePort}`); + ws.onmessage = (m) => assertEquals(m.data, "foo"); + ws.onerror = (e) => { + console.error(e); + fail(); + }; + ws.onclose = () => def.resolve(); + ws.onopen = () => ws.send("foo"); + + await def.promise; + await doneDeferred.promise; + ac.abort(); + await server.finished; +}); + +Deno.test( + { permissions: { net: true } }, + async function httpServerWebSocketRaw() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: async (request) => { + const { conn, response } = upgradeHttpRaw(request); + const buf = new Uint8Array(1024); + let read; + + // Write our fake HTTP upgrade + await conn.write( + new TextEncoder().encode( + "HTTP/1.1 101 Switching Protocols\r\nConnection: Upgraded\r\n\r\nExtra", + ), + ); + + // Upgrade data + read = await conn.read(buf); + assertEquals( + new TextDecoder().decode(buf.subarray(0, read!)), + "Upgrade data", + ); + // Read the packet to echo + read = await conn.read(buf); + // Echo + await conn.write(buf.subarray(0, read!)); + + conn.close(); + return response; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + + const conn = await Deno.connect({ port: servePort }); + await conn.write( + new TextEncoder().encode( + "GET / HTTP/1.1\r\nConnection: Upgrade\r\nUpgrade: websocket\r\n\r\nUpgrade data", + ), + ); + const buf = new Uint8Array(1024); + let len; + + // Headers + let headers = ""; + for (let i = 0; i < 2; i++) { + len = await conn.read(buf); + headers += new TextDecoder().decode(buf.subarray(0, len!)); + if (headers.endsWith("Extra")) { + break; + } + } + assertMatch( + headers, + /HTTP\/1\.1 101 Switching Protocols[ ,.A-Za-z:0-9\r\n]*Extra/im, + ); + + // Data to echo + await conn.write(new TextEncoder().encode("buffer data")); + + // Echo + len = await conn.read(buf); + assertEquals( + new TextDecoder().decode(buf.subarray(0, len!)), + "buffer data", + ); + + conn.close(); + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerWebSocketUpgradeTwice() { + const ac = new AbortController(); + const done = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: (request) => { + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + assertThrows( + () => { + Deno.upgradeWebSocket(request); + }, + Deno.errors.Http, + "already upgraded", + ); + socket.onerror = (e) => { + console.error(e); + fail(); + }; + socket.onmessage = (m) => { + socket.send(m.data); + socket.close(1001); + }; + socket.onclose = () => done.resolve(); + return response; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const def = Promise.withResolvers<void>(); + const ws = new WebSocket(`ws://localhost:${servePort}`); + ws.onmessage = (m) => assertEquals(m.data, "foo"); + ws.onerror = (e) => { + console.error(e); + fail(); + }; + ws.onclose = () => def.resolve(); + ws.onopen = () => ws.send("foo"); + + await def.promise; + await done.promise; + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerWebSocketCloseFast() { + const ac = new AbortController(); + const done = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: (request) => { + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + socket.onopen = () => socket.close(); + socket.onclose = () => done.resolve(); + return response; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const def = Promise.withResolvers<void>(); + const ws = new WebSocket(`ws://localhost:${servePort}`); + ws.onerror = (e) => { + console.error(e); + fail(); + }; + ws.onclose = () => def.resolve(); + + await def.promise; + await done.promise; + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerWebSocketCanAccessRequest() { + const ac = new AbortController(); + const done = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: (request) => { + const { + response, + socket, + } = Deno.upgradeWebSocket(request); + socket.onerror = (e) => { + console.error(e); + fail(); + }; + socket.onmessage = (_m) => { + socket.send(request.url.toString()); + socket.close(1001); + }; + socket.onclose = () => done.resolve(); + return response; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const def = Promise.withResolvers<void>(); + const ws = new WebSocket(`ws://localhost:${servePort}`); + ws.onmessage = (m) => + assertEquals(m.data, `http://localhost:${servePort}/`); + ws.onerror = (e) => { + console.error(e); + fail(); + }; + ws.onclose = () => def.resolve(); + ws.onopen = () => ws.send("foo"); + + await def.promise; + await done.promise; + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpVeryLargeRequest() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + let headers: Headers; + const server = Deno.serve({ + handler: (request) => { + headers = request.headers; + deferred.resolve(); + return new Response(""); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const smthElse = "x".repeat(16 * 1024 + 256); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: 5\r\nSomething-Else: ${smthElse}\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + conn.close(); + assertEquals(headers!.get("content-length"), "5"); + assertEquals(headers!.get("something-else"), smthElse); + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpVeryLargeRequestAndBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + let headers: Headers; + let text: string; + const server = Deno.serve({ + handler: async (request) => { + headers = request.headers; + text = await request.text(); + deferred.resolve(); + return new Response(""); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + // Send GET request with a body + content-length. + const encoder = new TextEncoder(); + const smthElse = "x".repeat(16 * 1024 + 256); + const reqBody = "hello world".repeat(1024); + let body = + `PUT / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nContent-Length: ${reqBody.length}\r\nSomething-Else: ${smthElse}\r\n\r\n${reqBody}`; + + while (body.length > 0) { + const writeResult = await conn.write(encoder.encode(body)); + body = body.slice(writeResult); + } + + await deferred.promise; + conn.close(); + + assertEquals(headers!.get("content-length"), `${reqBody.length}`); + assertEquals(headers!.get("something-else"), smthElse); + assertEquals(text!, reqBody); + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpConnectionClose() { + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: () => { + deferred.resolve(); + return new Response(""); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + // Send GET request with a body + connection: close. + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:2333\r\nConnection: Close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + await deferred.promise; + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +async function testDuplex( + reader: ReadableStreamDefaultReader<Uint8Array>, + writable: WritableStreamDefaultWriter<Uint8Array>, +) { + await writable.write(new Uint8Array([1])); + const chunk1 = await reader.read(); + assert(!chunk1.done); + assertEquals(chunk1.value, new Uint8Array([1])); + await writable.write(new Uint8Array([2])); + const chunk2 = await reader.read(); + assert(!chunk2.done); + assertEquals(chunk2.value, new Uint8Array([2])); + await writable.close(); + const chunk3 = await reader.read(); + assert(chunk3.done); +} + +Deno.test( + { permissions: { net: true } }, + async function httpServerStreamDuplexDirect() { + const { promise, resolve } = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve( + { port: servePort, signal: ac.signal }, + (request: Request) => { + assert(request.body); + resolve(); + return new Response(request.body); + }, + ); + + const { readable, writable } = new TransformStream(); + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + method: "POST", + body: readable, + }); + + await promise; + assert(resp.body); + await testDuplex(resp.body.getReader(), writable.getWriter()); + ac.abort(); + await server.finished; + }, +); + +// Test that a duplex stream passing through JavaScript also works (ie: that the request body resource +// is still alive). https://github.com/denoland/deno/pull/20206 +Deno.test( + { permissions: { net: true } }, + async function httpServerStreamDuplexJavascript() { + const { promise, resolve } = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve( + { port: servePort, signal: ac.signal }, + (request: Request) => { + assert(request.body); + resolve(); + const reader = request.body.getReader(); + return new Response( + new ReadableStream({ + async pull(controller) { + await new Promise((r) => setTimeout(r, 100)); + const { done, value } = await reader.read(); + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + }), + ); + }, + ); + + const { readable, writable } = new TransformStream(); + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + method: "POST", + body: readable, + }); + + await promise; + assert(resp.body); + await testDuplex(resp.body.getReader(), writable.getWriter()); + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + // Issue: https://github.com/denoland/deno/issues/10930 + async function httpServerStreamingResponse() { + // This test enqueues a single chunk for readable + // stream and waits for client to read that chunk and signal + // it before enqueueing subsequent chunk. Issue linked above + // presented a situation where enqueued chunks were not + // written to the HTTP connection until the next chunk was enqueued. + const listeningDeferred = Promise.withResolvers<void>(); + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + let counter = 0; + + const deferreds = [ + Promise.withResolvers<void>(), + Promise.withResolvers<void>(), + Promise.withResolvers<void>(), + ]; + + async function writeRequest(conn: Deno.Conn) { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const w = new BufWriter(conn); + const r = new BufReader(conn); + const body = `GET / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\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); + const headers = await tpr.readMimeHeader(); + assert(headers !== null); + + const chunkedReader = chunkedBodyReader(headers, r); + + const buf = new Uint8Array(5); + const dest = new Buffer(); + + let result: number | null; + + try { + while ((result = await chunkedReader.read(buf)) !== null) { + const len = Math.min(buf.byteLength, result); + + await dest.write(buf.subarray(0, len)); + + // Resolve a deferred - this will make response stream to + // enqueue next chunk. + deferreds[counter - 1].resolve(); + } + return decoder.decode(dest.bytes()); + } catch (e) { + console.error(e); + } + } + + function periodicStream() { + return new ReadableStream({ + start(controller) { + controller.enqueue(`${counter}\n`); + counter++; + }, + + async pull(controller) { + if (counter >= 3) { + return controller.close(); + } + + await deferreds[counter - 1].promise; + + controller.enqueue(`${counter}\n`); + counter++; + }, + }).pipeThrough(new TextEncoderStream()); + } + + const server = Deno.serve({ + handler: () => { + deferred.resolve(); + return new Response(periodicStream()); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + // start a client + const clientConn = await Deno.connect({ port: servePort }); + + const r1 = await writeRequest(clientConn); + assertEquals(r1, "0\n1\n2\n"); + + ac.abort(); + await deferred.promise; + await server.finished; + clientConn.close(); + }, +); + +// Make sure that the chunks of a large response aren't repeated or corrupted in some other way by +// scatterning sentinels throughout. +// https://github.com/denoland/fresh/issues/1699 +Deno.test( + { permissions: { net: true } }, + async function httpLargeReadableStreamChunk() { + const ac = new AbortController(); + const server = Deno.serve({ + handler() { + return new Response( + new ReadableStream({ + start(controller) { + const buffer = new Uint8Array(1024 * 1024); + // Mark the buffer with sentinels + for (let i = 0; i < 256; i++) { + buffer[i * 4096] = i; + } + controller.enqueue(buffer); + controller.close(); + }, + }), + ); + }, + port: servePort, + signal: ac.signal, + }); + const response = await fetch(`http://localhost:${servePort}/`); + const body = await response.arrayBuffer(); + assertEquals(1024 * 1024, body.byteLength); + const buffer = new Uint8Array(body); + for (let i = 0; i < 256; i++) { + assertEquals( + i, + buffer[i * 4096], + `sentinel mismatch at index ${i * 4096}`, + ); + } + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpRequestLatin1Headers() { + const listeningDeferred = Promise.withResolvers<void>(); + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const server = Deno.serve({ + handler: (request) => { + assertEquals(request.headers.get("X-Header-Test"), "á"); + deferred.resolve(); + return new Response("hello", { headers: { "X-Header-Test": "Æ" } }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const clientConn = await Deno.connect({ port: servePort }); + const requestText = + `GET / HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\r\nX-Header-Test: á\r\n\r\n`; + const requestBytes = new Uint8Array(requestText.length); + for (let i = 0; i < requestText.length; i++) { + requestBytes[i] = requestText.charCodeAt(i); + } + let written = 0; + while (written < requestBytes.byteLength) { + written += await clientConn.write(requestBytes.slice(written)); + } + + const buf = new Uint8Array(1024); + await clientConn.read(buf); + + await deferred.promise; + const responseText = new TextDecoder("iso-8859-1").decode(buf); + clientConn.close(); + + ac.abort(); + await server.finished; + + assertMatch(responseText, /\r\n[Xx]-[Hh]eader-[Tt]est: Æ\r\n/); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerRequestWithoutPath() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + // FIXME: + // assertEquals(new URL(request.url).href, `http://127.0.0.1:${servePort}/`); + assertEquals(await request.text(), ""); + deferred.resolve(); + return new Response("11"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const clientConn = await Deno.connect({ port: servePort }); + + async function writeRequest(conn: Deno.Conn) { + const encoder = new TextEncoder(); + + const w = new BufWriter(conn); + const r = new BufReader(conn); + const body = + `CONNECT 127.0.0.1:${servePort} HTTP/1.1\r\nHost: 127.0.0.1:${servePort}\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); + const m = statusLine.match(/^(.+?) (.+?) (.+?)$/); + assert(m !== null, "must be matched"); + const [_, _proto, status, _ok] = m; + assertEquals(status, "200"); + const headers = await tpr.readMimeHeader(); + assert(headers !== null); + } + + await writeRequest(clientConn); + clientConn.close(); + await deferred.promise; + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpCookieConcatenation() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + assertEquals(await request.text(), ""); + assertEquals(request.headers.get("cookie"), "foo=bar; bar=foo"); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + reusePort: true, + }); + + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: [ + ["connection", "close"], + ["cookie", "foo=bar"], + ["cookie", "bar=foo"], + ], + }); + await deferred.promise; + + const text = await resp.text(); + assertEquals(text, "ok"); + + ac.abort(); + await server.finished; + }, +); + +// https://github.com/denoland/deno/issues/12741 +// https://github.com/denoland/deno/pull/12746 +// https://github.com/denoland/deno/pull/12798 +Deno.test( + { permissions: { net: true, run: true } }, + async function httpServerDeleteRequestHasBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const hostname = "localhost"; + + const server = Deno.serve({ + handler: () => { + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const url = `http://${hostname}:${servePort}/`; + const args = ["-X", "DELETE", url]; + const { success } = await new Deno.Command("curl", { + args, + stdout: "null", + stderr: "null", + }).output(); + assert(success); + await deferred.promise; + ac.abort(); + + await server.finished; + }, +); + +// FIXME: +Deno.test( + { permissions: { net: true } }, + async function httpServerRespondNonAsciiUint8Array() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: (request) => { + assertEquals(request.body, null); + deferred.resolve(); + return new Response(new Uint8Array([128])); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + await listeningDeferred.resolve; + const resp = await fetch(`http://localhost:${servePort}/`); + + await deferred.promise; + + assertEquals(resp.status, 200); + const body = await resp.arrayBuffer(); + assertEquals(new Uint8Array(body), new Uint8Array([128])); + + ac.abort(); + await server.finished; + }, +); + +// Some of these tests are ported from Hyper +// https://github.com/hyperium/hyper/blob/889fa2d87252108eb7668b8bf034ffcc30985117/src/proto/h1/role.rs +// https://github.com/hyperium/hyper/blob/889fa2d87252108eb7668b8bf034ffcc30985117/tests/server.rs + +Deno.test( + { permissions: { net: true } }, + async function httpServerParseRequest() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: (request) => { + assertEquals(request.method, "GET"); + assertEquals(request.headers.get("host"), "deno.land"); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const body = `GET /echo HTTP/1.1\r\nHost: deno.land\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerParseHeaderHtabs() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: (request) => { + assertEquals(request.method, "GET"); + assertEquals(request.headers.get("server"), "hello\tworld"); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const body = `GET / HTTP/1.1\r\nserver: hello\tworld\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerGetShouldIgnoreBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + assertEquals(request.method, "GET"); + assertEquals(await request.text(), ""); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + // Connection: close = don't try to parse the body as a new request + const body = + `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\nI shouldn't be read.\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerPostWithBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + assertEquals(request.method, "POST"); + assertEquals(await request.text(), "I'm a good request."); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 19\r\n\r\nI'm a good request.`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +type TestCase = { + headers?: Record<string, string>; + // deno-lint-ignore no-explicit-any + body: any; + expectsChunked?: boolean; + expectsConnLen?: boolean; +}; + +function hasHeader(msg: string, name: string): boolean { + const n = msg.indexOf("\r\n\r\n") || msg.length; + return msg.slice(0, n).includes(name); +} + +function createServerLengthTest(name: string, testCase: TestCase) { + Deno.test(name, async function () { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: (request) => { + assertEquals(request.method, "GET"); + deferred.resolve(); + return new Response(testCase.body, testCase.headers ?? {}); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const body = + `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + + const decoder = new TextDecoder(); + let msg = ""; + while (true) { + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + if (!readResult) { + break; + } + msg += decoder.decode(buf.subarray(0, readResult)); + try { + assert( + testCase.expectsChunked == hasHeader(msg, "Transfer-Encoding:"), + ); + assert(testCase.expectsChunked == hasHeader(msg, "chunked")); + assert(testCase.expectsConnLen == hasHeader(msg, "Content-Length:")); + + const n = msg.indexOf("\r\n\r\n") + 4; + + if (testCase.expectsChunked) { + assertEquals(msg.slice(n + 1, n + 3), "\r\n"); + assertEquals(msg.slice(msg.length - 7), "\r\n0\r\n\r\n"); + } + + if (testCase.expectsConnLen && typeof testCase.body === "string") { + assertEquals(msg.slice(n), testCase.body); + } + break; + } catch { + continue; + } + } + + conn.close(); + + ac.abort(); + await server.finished; + }); +} + +// Quick and dirty way to make a readable stream from a string. Alternatively, +// `readableStreamFromReader(file)` could be used. +function stream(s: string): ReadableStream<Uint8Array> { + return new Response(s).body!; +} + +createServerLengthTest("fixedResponseKnown", { + headers: { "content-length": "11" }, + body: "foo bar baz", + expectsChunked: false, + expectsConnLen: true, +}); + +createServerLengthTest("fixedResponseUnknown", { + headers: { "content-length": "11" }, + body: stream("foo bar baz"), + expectsChunked: true, + expectsConnLen: false, +}); + +createServerLengthTest("fixedResponseKnownEmpty", { + headers: { "content-length": "0" }, + body: "", + expectsChunked: false, + expectsConnLen: true, +}); + +createServerLengthTest("chunkedRespondKnown", { + headers: { "transfer-encoding": "chunked" }, + body: "foo bar baz", + expectsChunked: false, + expectsConnLen: true, +}); + +createServerLengthTest("chunkedRespondUnknown", { + headers: { "transfer-encoding": "chunked" }, + body: stream("foo bar baz"), + expectsChunked: true, + expectsConnLen: false, +}); + +createServerLengthTest("autoResponseWithKnownLength", { + body: "foo bar baz", + expectsChunked: false, + expectsConnLen: true, +}); + +createServerLengthTest("autoResponseWithUnknownLength", { + body: stream("foo bar baz"), + expectsChunked: true, + expectsConnLen: false, +}); + +createServerLengthTest("autoResponseWithKnownLengthEmpty", { + body: "", + expectsChunked: false, + expectsConnLen: true, +}); + +createServerLengthTest("autoResponseWithUnknownLengthEmpty", { + body: stream(""), + expectsChunked: true, + expectsConnLen: false, +}); + +Deno.test( + { permissions: { net: true } }, + async function httpServerPostWithContentLengthBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + assertEquals(request.method, "POST"); + assertEquals(request.headers.get("content-length"), "5"); + assertEquals(await request.text(), "hello"); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 5\r\n\r\nhello`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerPostWithInvalidPrefixContentLength() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: () => { + throw new Error("unreachable"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: +5\r\n\r\nhello`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + assert(msg.includes("HTTP/1.1 400 Bad Request")); + + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerPostWithChunkedBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + assertEquals(request.method, "POST"); + assertEquals(await request.text(), "qwert"); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nTransfer-Encoding: chunked\r\n\r\n1\r\nq\r\n2\r\nwe\r\n2\r\nrt\r\n0\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerPostWithIncompleteBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (r) => { + deferred.resolve(); + assertEquals(await r.text(), "12345"); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 10\r\n\r\n12345`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + await deferred.promise; + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerHeadResponseDoesntSendBody() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: () => { + deferred.resolve(); + return new Response("NaN".repeat(100)); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const body = + `HEAD / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + await deferred.promise; + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + + assert(msg.includes("content-length: 300\r\n")); + + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +function makeTempData(size: number) { + return new Uint8Array(size).fill(1); +} + +async function makeTempFile(size: number) { + const tmpFile = await Deno.makeTempFile(); + using file = await Deno.open(tmpFile, { write: true, read: true }); + const data = makeTempData(size); + await file.write(data); + + return await Deno.open(tmpFile, { write: true, read: true }); +} + +const compressionTestCases = [ + { name: "Empty", length: 0, in: {}, out: {}, expect: null }, + { + name: "EmptyAcceptGzip", + length: 0, + in: { "Accept-Encoding": "gzip" }, + out: {}, + expect: null, + }, + // This technically would be compressible if not for the size, however the size_hint is not implemented + // for FileResource and we don't currently peek ahead on resources. + // { + // name: "EmptyAcceptGzip2", + // length: 0, + // in: { "Accept-Encoding": "gzip" }, + // out: { "Content-Type": "text/plain" }, + // expect: null, + // }, + { name: "Incompressible", length: 1024, in: {}, out: {}, expect: null }, + { + name: "IncompressibleAcceptGzip", + length: 1024, + in: { "Accept-Encoding": "gzip" }, + out: {}, + expect: null, + }, + { + name: "IncompressibleType", + length: 1024, + in: { "Accept-Encoding": "gzip" }, + out: { "Content-Type": "text/fake" }, + expect: null, + }, + { + name: "CompressibleType", + length: 1024, + in: { "Accept-Encoding": "gzip" }, + out: { "Content-Type": "text/plain" }, + expect: "gzip", + }, + { + name: "CompressibleType2", + length: 1024, + in: { "Accept-Encoding": "gzip, deflate, br" }, + out: { "Content-Type": "text/plain" }, + expect: "gzip", + }, + { + name: "CompressibleType3", + length: 1024, + in: { "Accept-Encoding": "br" }, + out: { "Content-Type": "text/plain" }, + expect: "br", + }, + { + name: "IncompressibleRange", + length: 1024, + in: { "Accept-Encoding": "gzip" }, + out: { "Content-Type": "text/plain", "Content-Range": "1" }, + expect: null, + }, + { + name: "IncompressibleCE", + length: 1024, + in: { "Accept-Encoding": "gzip" }, + out: { "Content-Type": "text/plain", "Content-Encoding": "random" }, + expect: null, + }, + { + name: "IncompressibleCC", + length: 1024, + in: { "Accept-Encoding": "gzip" }, + out: { "Content-Type": "text/plain", "Cache-Control": "no-transform" }, + expect: null, + }, + { + name: "BadHeader", + length: 1024, + in: { "Accept-Encoding": "\x81" }, + out: { "Content-Type": "text/plain", "Cache-Control": "no-transform" }, + expect: null, + }, +]; + +for (const testCase of compressionTestCases) { + const name = `httpServerCompression${testCase.name}`; + Deno.test( + { permissions: { net: true, write: true, read: true } }, + { + [name]: async function () { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const server = Deno.serve({ + handler: async (_request) => { + const f = await makeTempFile(testCase.length); + deferred.resolve(); + // deno-lint-ignore no-explicit-any + const headers = testCase.out as any; + headers["Content-Length"] = testCase.length.toString(); + return new Response(f.readable, { + headers: headers as HeadersInit, + }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + try { + await listeningDeferred.promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + headers: testCase.in as HeadersInit, + }); + await deferred.promise; + const body = await resp.arrayBuffer(); + if (testCase.expect == null) { + assertEquals(body.byteLength, testCase.length); + assertEquals( + resp.headers.get("content-length"), + testCase.length.toString(), + ); + assertEquals( + resp.headers.get("content-encoding"), + testCase.out["Content-Encoding"] || null, + ); + } else if (testCase.expect == "gzip") { + // Note the fetch will transparently decompress this response, BUT we can detect that a response + // was compressed by the lack of a content length. + assertEquals(body.byteLength, testCase.length); + assertEquals(resp.headers.get("content-encoding"), null); + assertEquals(resp.headers.get("content-length"), null); + } + } finally { + ac.abort(); + await server.finished; + } + }, + }[name], + ); +} + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerPostFile() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (request) => { + assertEquals( + new Uint8Array(await request.arrayBuffer()), + makeTempData(70 * 1024), + ); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const f = await makeTempFile(70 * 1024); + const response = await fetch(`http://localhost:${servePort}/`, { + method: "POST", + body: f.readable, + }); + + await deferred.promise; + + assertEquals(response.status, 200); + assertEquals(await response.text(), "ok"); + + ac.abort(); + await server.finished; + }, +); + +for (const delay of ["delay", "nodelay"]) { + for (const url of ["text", "file", "stream"]) { + // Ensure that we don't panic when the incoming TCP request was dropped + // https://github.com/denoland/deno/issues/20315 and that we correctly + // close/cancel the response + Deno.test({ + permissions: { read: true, write: true, net: true }, + name: `httpServerTcpCancellation_${url}_${delay}`, + fn: async function () { + const ac = new AbortController(); + const streamCancelled = url == "stream" + ? Promise.withResolvers<void>() + : undefined; + const listeningDeferred = Promise.withResolvers<void>(); + const waitForAbort = Promise.withResolvers<void>(); + const waitForRequest = Promise.withResolvers<void>(); + const server = Deno.serve({ + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + handler: async (req: Request) => { + let respBody = null; + if (req.url.includes("/text")) { + respBody = "text"; + } else if (req.url.includes("/file")) { + respBody = (await makeTempFile(1024)).readable; + } else if (req.url.includes("/stream")) { + respBody = new ReadableStream({ + start(controller) { + controller.enqueue(new Uint8Array([1])); + }, + cancel(reason) { + streamCancelled!.resolve(reason); + }, + }); + } else { + fail(); + } + waitForRequest.resolve(); + await waitForAbort.promise; + + if (delay == "delay") { + await new Promise((r) => setTimeout(r, 1000)); + } + // Allocate the request body + req.body; + return new Response(respBody); + }, + }); + + await listeningDeferred.promise; + + // Create a POST request and drop it once the server has received it + const conn = await Deno.connect({ port: servePort }); + const writer = conn.writable.getWriter(); + await writer.write( + new TextEncoder().encode(`POST /${url} HTTP/1.0\n\n`), + ); + await waitForRequest.promise; + await writer.close(); + + waitForAbort.resolve(); + + // Wait for cancellation before we shut the server down + if (streamCancelled !== undefined) { + await streamCancelled; + } + + // Since the handler has a chance of creating resources or running async + // ops, we need to use a graceful shutdown here to ensure they have fully + // drained. + await server.shutdown(); + + await server.finished; + }, + }); + } +} + +Deno.test( + { permissions: { net: true } }, + async function httpServerCancelFetch() { + const request2 = Promise.withResolvers<void>(); + const request2Aborted = Promise.withResolvers<string>(); + const { finished, abort } = await makeServer(async (req) => { + if (req.url.endsWith("/1")) { + const fetchRecursive = await fetch(`http://localhost:${servePort}/2`); + return new Response(fetchRecursive.body); + } else if (req.url.endsWith("/2")) { + request2.resolve(); + return new Response( + new ReadableStream({ + start(_controller) {/* just hang */}, + cancel(reason) { + request2Aborted.resolve(reason); + }, + }), + ); + } + fail(); + }); + const fetchAbort = new AbortController(); + const fetchPromise = await fetch(`http://localhost:${servePort}/1`, { + signal: fetchAbort.signal, + }); + await fetchPromise; + await request2.promise; + fetchAbort.abort(); + assertEquals("resource closed", await request2Aborted.promise); + + abort(); + await finished; + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function httpServerWithTls() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const hostname = "127.0.0.1"; + + const server = Deno.serve({ + handler: () => new Response("Hello World"), + hostname, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + cert: Deno.readTextFileSync("tests/testdata/tls/localhost.crt"), + key: Deno.readTextFileSync("tests/testdata/tls/localhost.key"), + }); + + await promise; + const caCert = Deno.readTextFileSync("tests/testdata/tls/RootCA.pem"); + const client = Deno.createHttpClient({ caCerts: [caCert] }); + const resp = await fetch(`https://localhost:${servePort}/`, { + client, + headers: { "connection": "close" }, + }); + + const respBody = await resp.text(); + assertEquals("Hello World", respBody); + + client.close(); + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerRequestCLTE() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + const deferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: async (req) => { + assertEquals(await req.text(), ""); + deferred.resolve(); + return new Response("ok"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nContent-Length: 13\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\nEXTRA`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + await deferred.promise; + + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, + async function httpServerRequestTETE() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: () => { + throw new Error("oops"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const variations = [ + "Transfer-Encoding : chunked", + "Transfer-Encoding: xchunked", + "Transfer-Encoding: chunkedx", + "Transfer-Encoding\n: chunked", + ]; + + await promise; + for (const teHeader of variations) { + const conn = await Deno.connect({ port: servePort }); + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\n${teHeader}\r\n\r\n0\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + assert(msg.includes("HTTP/1.1 400 Bad Request\r\n")); + + conn.close(); + } + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServer204ResponseDoesntSendContentLength() { + const { promise, resolve } = Promise.withResolvers<void>(); + const ac = new AbortController(); + const server = Deno.serve({ + handler: (_request) => new Response(null, { status: 204 }), + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + try { + await promise; + const resp = await fetch(`http://127.0.0.1:${servePort}/`, { + method: "GET", + headers: { "connection": "close" }, + }); + assertEquals(resp.status, 204); + assertEquals(resp.headers.get("Content-Length"), null); + } finally { + ac.abort(); + await server.finished; + } + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServer304ResponseDoesntSendBody() { + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: () => { + deferred.resolve(); + return new Response(null, { status: 304 }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + const body = + `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + + await deferred.promise; + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + + assert(msg.startsWith("HTTP/1.1 304 Not Modified")); + assert(msg.endsWith("\r\n\r\n")); + + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerExpectContinue() { + const deferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: async (req) => { + deferred.resolve(); + assertEquals(await req.text(), "hello"); + return new Response(null, { status: 304 }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + { + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nExpect: 100-continue\r\nContent-Length: 5\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + } + + await deferred.promise; + + { + const msgExpected = "HTTP/1.1 100 Continue\r\n\r\n"; + const buf = new Uint8Array(encoder.encode(msgExpected).byteLength); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + assert(msg.startsWith(msgExpected)); + } + + { + const body = "hello"; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + } + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + + assert(msg.startsWith("HTTP/1.1 304 Not Modified")); + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function httpServerExpectContinueButNoBodyLOL() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve({ + handler: async (req) => { + deferred.resolve(); + assertEquals(await req.text(), ""); + return new Response(null, { status: 304 }); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(listeningDeferred.resolve), + onError: createOnErrorCb(ac), + }); + + await listeningDeferred.promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + { + // // no content-length or transfer-encoding means no body! + const body = + `POST / HTTP/1.1\r\nHost: example.domain\r\nExpect: 100-continue\r\nConnection: close\r\n\r\n`; + const writeResult = await conn.write(encoder.encode(body)); + assertEquals(body.length, writeResult); + } + + await deferred.promise; + + const buf = new Uint8Array(1024); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + + assert(msg.startsWith("HTTP/1.1 304 Not Modified")); + conn.close(); + + ac.abort(); + await server.finished; + }, +); + +const badRequests = [ + ["weirdMethodName", "GE T / HTTP/1.1\r\n\r\n"], + ["illegalRequestLength", "POST / HTTP/1.1\r\nContent-Length: foo\r\n\r\n"], + ["illegalRequestLength2", "POST / HTTP/1.1\r\nContent-Length: -1\r\n\r\n"], + ["illegalRequestLength3", "POST / HTTP/1.1\r\nContent-Length: 1.1\r\n\r\n"], + ["illegalRequestLength4", "POST / HTTP/1.1\r\nContent-Length: 1.\r\n\r\n"], +]; + +for (const [name, req] of badRequests) { + const testFn = { + [name]: async () => { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: () => { + throw new Error("oops"); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + await promise; + const conn = await Deno.connect({ port: servePort }); + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + + { + const writeResult = await conn.write(encoder.encode(req)); + assertEquals(req.length, writeResult); + } + + const buf = new Uint8Array(100); + const readResult = await conn.read(buf); + assert(readResult); + const msg = decoder.decode(buf.subarray(0, readResult)); + + assert(msg.startsWith("HTTP/1.1 400 ")); + conn.close(); + + ac.abort(); + await server.finished; + }, + }[name]; + + Deno.test( + { permissions: { net: true } }, + testFn, + ); +} + +Deno.test( + { permissions: { net: true } }, + async function httpServerConcurrentRequests() { + const ac = new AbortController(); + const { resolve } = Promise.withResolvers<void>(); + + let reqCount = -1; + let timerId: number | undefined; + const server = Deno.serve({ + handler: (_req) => { + reqCount++; + if (reqCount === 0) { + const msg = new TextEncoder().encode("data: hello\r\n\r\n"); + // SSE + const body = new ReadableStream({ + start(controller) { + timerId = setInterval(() => { + controller.enqueue(msg); + }, 1000); + }, + cancel() { + if (typeof timerId === "number") { + clearInterval(timerId); + } + }, + }); + return new Response(body, { + headers: { + "Content-Type": "text/event-stream", + }, + }); + } + + return new Response(`hello ${reqCount}`); + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + const sseRequest = await fetch(`http://localhost:${servePort}/`); + + const decoder = new TextDecoder(); + const stream = sseRequest.body!.getReader(); + { + const { done, value } = await stream.read(); + assert(!done); + assertEquals(decoder.decode(value), "data: hello\r\n\r\n"); + } + + const helloRequest = await fetch(`http://localhost:${servePort}/`); + assertEquals(helloRequest.status, 200); + assertEquals(await helloRequest.text(), "hello 1"); + + { + const { done, value } = await stream.read(); + assert(!done); + assertEquals(decoder.decode(value), "data: hello\r\n\r\n"); + } + + await stream.cancel(); + clearInterval(timerId); + ac.abort(); + await server.finished; + }, +); + +Deno.test( + { permissions: { net: true } }, + async function serveWithPrototypePollution() { + const originalThen = Promise.prototype.then; + const originalSymbolIterator = Array.prototype[Symbol.iterator]; + try { + Promise.prototype.then = Array.prototype[Symbol.iterator] = () => { + throw new Error(); + }; + const ac = new AbortController(); + const { resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + handler: (_req) => new Response("ok"), + hostname: "localhost", + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + ac.abort(); + await server.finished; + } finally { + Promise.prototype.then = originalThen; + Array.prototype[Symbol.iterator] = originalSymbolIterator; + } + }, +); + +// https://github.com/denoland/deno/issues/15549 +Deno.test( + { permissions: { net: true } }, + async function testIssue15549() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + let count = 0; + const server = Deno.serve({ + async onListen({ port }: { port: number }) { + const res1 = await fetch(`http://localhost:${port}/`); + assertEquals(await res1.text(), "hello world 1"); + + const res2 = await fetch(`http://localhost:${port}/`); + assertEquals(await res2.text(), "hello world 2"); + + resolve(); + ac.abort(); + }, + signal: ac.signal, + }, () => { + count++; + return new Response(`hello world ${count}`); + }); + + await promise; + await server.finished; + }, +); + +// https://github.com/denoland/deno/issues/15858 +Deno.test( + "Clone should work", + { permissions: { net: true } }, + async function httpServerCanCloneRequest() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<number>(); + + const server = Deno.serve({ + handler: async (req) => { + const cloned = req.clone(); + assertEquals(req.headers, cloned.headers); + + assertEquals(cloned.url, req.url); + assertEquals(cloned.cache, req.cache); + assertEquals(cloned.destination, req.destination); + assertEquals(cloned.headers, req.headers); + assertEquals(cloned.integrity, req.integrity); + assertEquals(cloned.isHistoryNavigation, req.isHistoryNavigation); + assertEquals(cloned.isReloadNavigation, req.isReloadNavigation); + assertEquals(cloned.keepalive, req.keepalive); + assertEquals(cloned.method, req.method); + assertEquals(cloned.mode, req.mode); + assertEquals(cloned.redirect, req.redirect); + assertEquals(cloned.referrer, req.referrer); + assertEquals(cloned.referrerPolicy, req.referrerPolicy); + + // both requests can read body + await req.text(); + await cloned.json(); + + return new Response("ok"); + }, + signal: ac.signal, + onListen: ({ port }: { port: number }) => resolve(port), + onError: createOnErrorCb(ac), + }); + + try { + const port = await promise; + const resp = await fetch(`http://localhost:${port}/`, { + headers: { connection: "close" }, + method: "POST", + body: '{"sus":true}', + }); + const text = await resp.text(); + assertEquals(text, "ok"); + } finally { + ac.abort(); + await server.finished; + } + }, +); + +// https://fetch.spec.whatwg.org/#dom-request-clone +Deno.test( + "Throw if disturbed", + { permissions: { net: true } }, + async function shouldThrowIfBodyIsUnusableDisturbed() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<number>(); + + const server = Deno.serve({ + handler: async (req) => { + await req.text(); + + try { + req.clone(); + fail(); + } catch (cloneError) { + assert(cloneError instanceof TypeError); + assert( + cloneError.message.endsWith("Body is unusable."), + ); + + ac.abort(); + await server.finished; + } + + return new Response("ok"); + }, + signal: ac.signal, + onListen: ({ port }: { port: number }) => resolve(port), + }); + + try { + const port = await promise; + await fetch(`http://localhost:${port}/`, { + headers: { connection: "close" }, + method: "POST", + body: '{"bar":true}', + }); + fail(); + } catch (clientError) { + assert(clientError instanceof TypeError); + assert( + clientError.message.endsWith( + "connection closed before message completed", + ), + ); + } finally { + ac.abort(); + await server.finished; + } + }, +); + +// https://fetch.spec.whatwg.org/#dom-request-clone +Deno.test({ + name: "Throw if locked", + permissions: { net: true }, + fn: async function shouldThrowIfBodyIsUnusableLocked() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<number>(); + + const server = Deno.serve({ + handler: async (req) => { + const _reader = req.body?.getReader(); + + try { + req.clone(); + fail(); + } catch (cloneError) { + assert(cloneError instanceof TypeError); + assert( + cloneError.message.endsWith("Body is unusable."), + ); + + ac.abort(); + await server.finished; + } + return new Response("ok"); + }, + signal: ac.signal, + onListen: ({ port }: { port: number }) => resolve(port), + }); + + try { + const port = await promise; + await fetch(`http://localhost:${port}/`, { + headers: { connection: "close" }, + method: "POST", + body: '{"bar":true}', + }); + fail(); + } catch (clientError) { + assert(clientError instanceof TypeError); + assert( + clientError.message.endsWith( + "connection closed before message completed", + ), + ); + } finally { + ac.abort(); + await server.finished; + } + }, +}); + +// Checks large streaming response +// https://github.com/denoland/deno/issues/16567 +Deno.test( + { permissions: { net: true } }, + async function testIssue16567() { + const ac = new AbortController(); + const { promise, resolve } = Promise.withResolvers<void>(); + const server = Deno.serve({ + async onListen({ port }) { + const res1 = await fetch(`http://localhost:${port}/`); + assertEquals((await res1.text()).length, 40 * 50_000); + + resolve(); + ac.abort(); + }, + signal: ac.signal, + }, () => + new Response( + new ReadableStream({ + start(c) { + // 2MB "a...a" response with 40 chunks + for (const _ of Array(40)) { + c.enqueue(new Uint8Array(50_000).fill(97)); + } + c.close(); + }, + }), + )); + + await promise; + await server.finished; + }, +); + +function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader { + // Based on https://tools.ietf.org/html/rfc2616#section-19.4.6 + const tp = new TextProtoReader(r); + let finished = false; + const chunks: Array<{ + offset: number; + data: Uint8Array; + }> = []; + async function read(buf: Uint8Array): Promise<number | null> { + if (finished) return null; + const [chunk] = chunks; + if (chunk) { + const chunkRemaining = chunk.data.byteLength - chunk.offset; + const readLength = Math.min(chunkRemaining, buf.byteLength); + for (let i = 0; i < readLength; i++) { + buf[i] = chunk.data[chunk.offset + i]; + } + chunk.offset += readLength; + if (chunk.offset === chunk.data.byteLength) { + chunks.shift(); + // Consume \r\n; + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + } + return readLength; + } + const line = await tp.readLine(); + if (line === null) throw new Deno.errors.UnexpectedEof(); + // TODO(bartlomieju): handle chunk extension + const [chunkSizeString] = line.split(";"); + const chunkSize = parseInt(chunkSizeString, 16); + if (Number.isNaN(chunkSize) || chunkSize < 0) { + throw new Deno.errors.InvalidData("Invalid chunk size"); + } + if (chunkSize > 0) { + if (chunkSize > buf.byteLength) { + let eof = await r.readFull(buf); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + const restChunk = new Uint8Array(chunkSize - buf.byteLength); + eof = await r.readFull(restChunk); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } else { + chunks.push({ + offset: 0, + data: restChunk, + }); + } + return buf.byteLength; + } else { + const bufToFill = buf.subarray(0, chunkSize); + const eof = await r.readFull(bufToFill); + if (eof === null) { + throw new Deno.errors.UnexpectedEof(); + } + // Consume \r\n + if ((await tp.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + return chunkSize; + } + } else { + assert(chunkSize === 0); + // Consume \r\n + if ((await r.readLine()) === null) { + throw new Deno.errors.UnexpectedEof(); + } + await readTrailers(h, r); + finished = true; + return null; + } + } + return { read }; +} + +async function readTrailers( + headers: Headers, + r: BufReader, +) { + const trailers = parseTrailer(headers.get("trailer")); + if (trailers == null) return; + const trailerNames = [...trailers.keys()]; + const tp = new TextProtoReader(r); + const result = await tp.readMimeHeader(); + if (result == null) { + throw new Deno.errors.InvalidData("Missing trailer header."); + } + const undeclared = [...result.keys()].filter( + (k) => !trailerNames.includes(k), + ); + if (undeclared.length > 0) { + throw new Deno.errors.InvalidData( + `Undeclared trailers: ${Deno.inspect(undeclared)}.`, + ); + } + for (const [k, v] of result) { + headers.append(k, v); + } + const missingTrailers = trailerNames.filter((k) => !result.has(k)); + if (missingTrailers.length > 0) { + throw new Deno.errors.InvalidData( + `Missing trailers: ${Deno.inspect(missingTrailers)}.`, + ); + } + headers.delete("trailer"); +} + +function parseTrailer(field: string | null): Headers | undefined { + if (field == null) { + return undefined; + } + const trailerNames = field.split(",").map((v) => v.trim().toLowerCase()); + if (trailerNames.length === 0) { + throw new Deno.errors.InvalidData("Empty trailer header."); + } + const prohibited = trailerNames.filter((k) => isProhibitedForTrailer(k)); + if (prohibited.length > 0) { + throw new Deno.errors.InvalidData( + `Prohibited trailer names: ${Deno.inspect(prohibited)}.`, + ); + } + return new Headers(trailerNames.map((key) => [key, ""])); +} + +function isProhibitedForTrailer(key: string): boolean { + const s = new Set(["transfer-encoding", "content-length", "trailer"]); + return s.has(key.toLowerCase()); +} + +// TODO(mmastrac): curl on Windows CI stopped supporting --http2? +Deno.test( + { + permissions: { net: true, run: true }, + ignore: Deno.build.os === "windows", + }, + async function httpServeCurlH2C() { + const ac = new AbortController(); + const server = Deno.serve( + { port: servePort, signal: ac.signal }, + () => new Response("hello world!"), + ); + + assertEquals( + "hello world!", + await curlRequest([`http://localhost:${servePort}/path`]), + ); + assertEquals( + "hello world!", + await curlRequest([`http://localhost:${servePort}/path`, "--http2"]), + ); + assertEquals( + "hello world!", + await curlRequest([ + `http://localhost:${servePort}/path`, + "--http2", + "--http2-prior-knowledge", + ]), + ); + + ac.abort(); + await server.finished; + }, +); + +// TODO(mmastrac): This test should eventually use fetch, when we support trailers there. +// This test is ignored because it's flaky and relies on cURL's verbose output. +Deno.test( + { permissions: { net: true, run: true, read: true }, ignore: true }, + async function httpServerTrailers() { + const ac = new AbortController(); + const { resolve } = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: () => { + const response = new Response("Hello World", { + headers: { + "trailer": "baz", + "transfer-encoding": "chunked", + "foo": "bar", + }, + }); + addTrailers(response, [["baz", "why"]]); + return response; + }, + port: servePort, + signal: ac.signal, + onListen: onListen(resolve), + onError: createOnErrorCb(ac), + }); + + // We don't have a great way to access this right now, so just fetch the trailers with cURL + const [_, stderr] = await curlRequestWithStdErr([ + `http://localhost:${servePort}/path`, + "-v", + "--http2", + "--http2-prior-knowledge", + ]); + assertMatch(stderr, /baz: why/); + ac.abort(); + await server.finished; + }, +); + +// TODO(mmastrac): curl on CI stopped supporting --http2? +Deno.test( + { + permissions: { + net: true, + run: true, + read: true, + }, + ignore: Deno.build.os === "windows", + }, + async function httpsServeCurlH2C() { + const ac = new AbortController(); + const server = Deno.serve( + { + signal: ac.signal, + port: servePort, + cert: Deno.readTextFileSync("tests/testdata/tls/localhost.crt"), + key: Deno.readTextFileSync("tests/testdata/tls/localhost.key"), + }, + () => new Response("hello world!"), + ); + + assertEquals( + "hello world!", + await curlRequest([`https://localhost:${servePort}/path`, "-k"]), + ); + assertEquals( + "hello world!", + await curlRequest([ + `https://localhost:${servePort}/path`, + "-k", + "--http2", + ]), + ); + assertEquals( + "hello world!", + await curlRequest([ + `https://localhost:${servePort}/path`, + "-k", + "--http2", + "--http2-prior-knowledge", + ]), + ); + + ac.abort(); + await server.finished; + }, +); + +async function curlRequest(args: string[]) { + const { success, stdout, stderr } = await new Deno.Command("curl", { + args, + stdout: "piped", + stderr: "piped", + }).output(); + assert( + success, + `Failed to cURL ${args}: stdout\n\n${stdout}\n\nstderr:\n\n${stderr}`, + ); + return new TextDecoder().decode(stdout); +} + +async function curlRequestWithStdErr(args: string[]) { + const { success, stdout, stderr } = await new Deno.Command("curl", { + args, + stdout: "piped", + stderr: "piped", + }).output(); + assert( + success, + `Failed to cURL ${args}: stdout\n\n${stdout}\n\nstderr:\n\n${stderr}`, + ); + return [new TextDecoder().decode(stdout), new TextDecoder().decode(stderr)]; +} + +Deno.test("Deno.HttpServer is not thenable", async () => { + // deno-lint-ignore require-await + async function serveTest() { + const server = Deno.serve({ port: servePort }, (_) => new Response("")); + assert(!("then" in server)); + return server; + } + const server = await serveTest(); + await server.shutdown(); +}); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { run: true, read: true, write: true }, + }, + async function httpServerUnixDomainSocket() { + const { promise, resolve } = Promise.withResolvers<{ path: string }>(); + const ac = new AbortController(); + const filePath = tmpUnixSocketPath(); + const server = Deno.serve( + { + signal: ac.signal, + path: filePath, + onListen(info) { + resolve(info); + }, + onError: createOnErrorCb(ac), + }, + (_req, { remoteAddr }) => { + assertEquals(remoteAddr, { path: filePath, transport: "unix" }); + return new Response("hello world!"); + }, + ); + + assertEquals(await promise, { path: filePath }); + assertEquals( + "hello world!", + await curlRequest(["--unix-socket", filePath, "http://localhost"]), + ); + ac.abort(); + await server.finished; + }, +); + +// serve Handler must return Response class or promise that resolves Response class +Deno.test( + { permissions: { net: true, run: true } }, + async function handleServeCallbackReturn() { + const deferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve( + { + port: servePort, + onListen: onListen(listeningDeferred.resolve), + signal: ac.signal, + onError: (error) => { + assert(error instanceof TypeError); + assert( + error.message === + "Return value from serve handler must be a response or a promise resolving to a response", + ); + deferred.resolve(); + return new Response("Customized Internal Error from onError"); + }, + }, + () => { + // Trick the typechecker + return <Response> <unknown> undefined; + }, + ); + await listeningDeferred.promise; + const respText = await curlRequest([`http://localhost:${servePort}`]); + await deferred.promise; + ac.abort(); + await server.finished; + assert(respText === "Customized Internal Error from onError"); + }, +); + +// onError Handler must return Response class or promise that resolves Response class +Deno.test( + { permissions: { net: true, run: true } }, + async function handleServeErrorCallbackReturn() { + const { promise, resolve } = Promise.withResolvers<void>(); + const ac = new AbortController(); + + const server = Deno.serve( + { + port: servePort, + onListen: onListen(resolve), + signal: ac.signal, + onError: () => { + // Trick the typechecker + return <Response> <unknown> undefined; + }, + }, + () => { + // Trick the typechecker + return <Response> <unknown> undefined; + }, + ); + await promise; + const respText = await curlRequest([`http://localhost:${servePort}`]); + ac.abort(); + await server.finished; + assert(respText === "Internal Server Error"); + }, +); diff --git a/cli/tests/unit/signal_test.ts b/tests/unit/signal_test.ts index 2ba2ffb15..2ba2ffb15 100644 --- a/cli/tests/unit/signal_test.ts +++ b/tests/unit/signal_test.ts diff --git a/tests/unit/stat_test.ts b/tests/unit/stat_test.ts new file mode 100644 index 000000000..6882edf25 --- /dev/null +++ b/tests/unit/stat_test.ts @@ -0,0 +1,342 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertRejects, + assertThrows, + pathToAbsoluteFileUrl, +} from "./test_util.ts"; + +Deno.test({ permissions: { read: true } }, function fstatSyncSuccess() { + using file = Deno.openSync("README.md"); + const fileInfo = Deno.fstatSync(file.rid); + assert(fileInfo.isFile); + assert(!fileInfo.isSymlink); + assert(!fileInfo.isDirectory); + assert(fileInfo.size); + assert(fileInfo.atime); + assert(fileInfo.mtime); + // The `birthtime` field is not available on Linux before kernel version 4.11. + assert(fileInfo.birthtime || Deno.build.os === "linux"); +}); + +Deno.test({ permissions: { read: true } }, async function fstatSuccess() { + using file = await Deno.open("README.md"); + const fileInfo = await Deno.fstat(file.rid); + assert(fileInfo.isFile); + assert(!fileInfo.isSymlink); + assert(!fileInfo.isDirectory); + assert(fileInfo.size); + assert(fileInfo.atime); + assert(fileInfo.mtime); + // The `birthtime` field is not available on Linux before kernel version 4.11. + assert(fileInfo.birthtime || Deno.build.os === "linux"); +}); + +Deno.test( + { permissions: { read: true, write: true } }, + function statSyncSuccess() { + const readmeInfo = Deno.statSync("README.md"); + assert(readmeInfo.isFile); + assert(!readmeInfo.isSymlink); + + const modulesInfo = Deno.statSync("tests/testdata/symlink_to_subdir"); + assert(modulesInfo.isDirectory); + assert(!modulesInfo.isSymlink); + + const testsInfo = Deno.statSync("tests"); + assert(testsInfo.isDirectory); + assert(!testsInfo.isSymlink); + + const tempFile = Deno.makeTempFileSync(); + const tempInfo = Deno.statSync(tempFile); + let now = Date.now(); + assert(tempInfo.atime !== null && now - tempInfo.atime.valueOf() < 1000); + assert(tempInfo.mtime !== null && now - tempInfo.mtime.valueOf() < 1000); + assert( + tempInfo.birthtime === null || now - tempInfo.birthtime.valueOf() < 1000, + ); + + const readmeInfoByUrl = Deno.statSync(pathToAbsoluteFileUrl("README.md")); + assert(readmeInfoByUrl.isFile); + assert(!readmeInfoByUrl.isSymlink); + + const modulesInfoByUrl = Deno.statSync( + pathToAbsoluteFileUrl("tests/testdata/symlink_to_subdir"), + ); + assert(modulesInfoByUrl.isDirectory); + assert(!modulesInfoByUrl.isSymlink); + + const testsInfoByUrl = Deno.statSync(pathToAbsoluteFileUrl("tests")); + assert(testsInfoByUrl.isDirectory); + assert(!testsInfoByUrl.isSymlink); + + const tempFileForUrl = Deno.makeTempFileSync(); + const tempInfoByUrl = Deno.statSync( + new URL( + `file://${Deno.build.os === "windows" ? "/" : ""}${tempFileForUrl}`, + ), + ); + now = Date.now(); + assert( + tempInfoByUrl.atime !== null && + now - tempInfoByUrl.atime.valueOf() < 1000, + ); + assert( + tempInfoByUrl.mtime !== null && + now - tempInfoByUrl.mtime.valueOf() < 1000, + ); + assert( + tempInfoByUrl.birthtime === null || + now - tempInfoByUrl.birthtime.valueOf() < 1000, + ); + + Deno.removeSync(tempFile, { recursive: true }); + Deno.removeSync(tempFileForUrl, { recursive: true }); + }, +); + +Deno.test({ permissions: { read: false } }, function statSyncPerm() { + assertThrows(() => { + Deno.statSync("README.md"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function statSyncNotFound() { + assertThrows( + () => { + Deno.statSync("bad_file_name"); + }, + Deno.errors.NotFound, + `stat 'bad_file_name'`, + ); +}); + +Deno.test({ permissions: { read: true } }, function lstatSyncSuccess() { + const packageInfo = Deno.lstatSync("README.md"); + assert(packageInfo.isFile); + assert(!packageInfo.isSymlink); + + const packageInfoByUrl = Deno.lstatSync(pathToAbsoluteFileUrl("README.md")); + assert(packageInfoByUrl.isFile); + assert(!packageInfoByUrl.isSymlink); + + const modulesInfo = Deno.lstatSync("tests/testdata/symlink_to_subdir"); + assert(!modulesInfo.isDirectory); + assert(modulesInfo.isSymlink); + + const modulesInfoByUrl = Deno.lstatSync( + pathToAbsoluteFileUrl("tests/testdata/symlink_to_subdir"), + ); + assert(!modulesInfoByUrl.isDirectory); + assert(modulesInfoByUrl.isSymlink); + + const coreInfo = Deno.lstatSync("cli"); + assert(coreInfo.isDirectory); + assert(!coreInfo.isSymlink); + + const coreInfoByUrl = Deno.lstatSync(pathToAbsoluteFileUrl("cli")); + assert(coreInfoByUrl.isDirectory); + assert(!coreInfoByUrl.isSymlink); +}); + +Deno.test({ permissions: { read: false } }, function lstatSyncPerm() { + assertThrows(() => { + Deno.lstatSync("assets/hello.txt"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, function lstatSyncNotFound() { + assertThrows( + () => { + Deno.lstatSync("bad_file_name"); + }, + Deno.errors.NotFound, + `stat 'bad_file_name'`, + ); +}); + +Deno.test( + { permissions: { read: true, write: true } }, + async function statSuccess() { + const readmeInfo = await Deno.stat("README.md"); + assert(readmeInfo.isFile); + assert(!readmeInfo.isSymlink); + + const readmeInfoByUrl = await Deno.stat( + pathToAbsoluteFileUrl("README.md"), + ); + assert(readmeInfoByUrl.isFile); + assert(!readmeInfoByUrl.isSymlink); + + const modulesInfo = await Deno.stat("tests/testdata/symlink_to_subdir"); + assert(modulesInfo.isDirectory); + assert(!modulesInfo.isSymlink); + + const modulesInfoByUrl = await Deno.stat( + pathToAbsoluteFileUrl("tests/testdata/symlink_to_subdir"), + ); + assert(modulesInfoByUrl.isDirectory); + assert(!modulesInfoByUrl.isSymlink); + + const testsInfo = await Deno.stat("tests"); + assert(testsInfo.isDirectory); + assert(!testsInfo.isSymlink); + + const testsInfoByUrl = await Deno.stat(pathToAbsoluteFileUrl("tests")); + assert(testsInfoByUrl.isDirectory); + assert(!testsInfoByUrl.isSymlink); + + const tempFile = await Deno.makeTempFile(); + const tempInfo = await Deno.stat(tempFile); + let now = Date.now(); + assert(tempInfo.atime !== null && now - tempInfo.atime.valueOf() < 1000); + assert(tempInfo.mtime !== null && now - tempInfo.mtime.valueOf() < 1000); + + assert( + tempInfo.birthtime === null || now - tempInfo.birthtime.valueOf() < 1000, + ); + + const tempFileForUrl = await Deno.makeTempFile(); + const tempInfoByUrl = await Deno.stat( + new URL( + `file://${Deno.build.os === "windows" ? "/" : ""}${tempFileForUrl}`, + ), + ); + now = Date.now(); + assert( + tempInfoByUrl.atime !== null && + now - tempInfoByUrl.atime.valueOf() < 1000, + ); + assert( + tempInfoByUrl.mtime !== null && + now - tempInfoByUrl.mtime.valueOf() < 1000, + ); + assert( + tempInfoByUrl.birthtime === null || + now - tempInfoByUrl.birthtime.valueOf() < 1000, + ); + + Deno.removeSync(tempFile, { recursive: true }); + Deno.removeSync(tempFileForUrl, { recursive: true }); + }, +); + +Deno.test({ permissions: { read: false } }, async function statPerm() { + await assertRejects(async () => { + await Deno.stat("README.md"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, async function statNotFound() { + await assertRejects( + async () => { + await Deno.stat("bad_file_name"); + }, + Deno.errors.NotFound, + `stat 'bad_file_name'`, + ); +}); + +Deno.test({ permissions: { read: true } }, async function lstatSuccess() { + const readmeInfo = await Deno.lstat("README.md"); + assert(readmeInfo.isFile); + assert(!readmeInfo.isSymlink); + + const readmeInfoByUrl = await Deno.lstat(pathToAbsoluteFileUrl("README.md")); + assert(readmeInfoByUrl.isFile); + assert(!readmeInfoByUrl.isSymlink); + + const modulesInfo = await Deno.lstat("tests/testdata/symlink_to_subdir"); + assert(!modulesInfo.isDirectory); + assert(modulesInfo.isSymlink); + + const modulesInfoByUrl = await Deno.lstat( + pathToAbsoluteFileUrl("tests/testdata/symlink_to_subdir"), + ); + assert(!modulesInfoByUrl.isDirectory); + assert(modulesInfoByUrl.isSymlink); + + const coreInfo = await Deno.lstat("cli"); + assert(coreInfo.isDirectory); + assert(!coreInfo.isSymlink); + + const coreInfoByUrl = await Deno.lstat(pathToAbsoluteFileUrl("cli")); + assert(coreInfoByUrl.isDirectory); + assert(!coreInfoByUrl.isSymlink); +}); + +Deno.test({ permissions: { read: false } }, async function lstatPerm() { + await assertRejects(async () => { + await Deno.lstat("README.md"); + }, Deno.errors.PermissionDenied); +}); + +Deno.test({ permissions: { read: true } }, async function lstatNotFound() { + await assertRejects( + async () => { + await Deno.lstat("bad_file_name"); + }, + Deno.errors.NotFound, + `stat 'bad_file_name'`, + ); +}); + +Deno.test( + { + ignore: Deno.build.os !== "windows", + permissions: { read: true, write: true }, + }, + function statNoUnixFields() { + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + const tempDir = Deno.makeTempDirSync(); + const filename = tempDir + "/test.txt"; + Deno.writeFileSync(filename, data, { mode: 0o666 }); + const s = Deno.statSync(filename); + assert(s.dev !== 0); + assert(s.ino === null); + assert(s.mode === null); + assert(s.nlink === null); + assert(s.uid === null); + assert(s.gid === null); + assert(s.rdev === null); + assert(s.blksize === null); + assert(s.blocks === null); + assert(s.isBlockDevice === null); + assert(s.isCharDevice === null); + assert(s.isFifo === null); + assert(s.isSocket === null); + }, +); + +Deno.test( + { + ignore: Deno.build.os === "windows", + permissions: { read: true, write: true }, + }, + function statUnixFields() { + const enc = new TextEncoder(); + const data = enc.encode("Hello"); + const tempDir = Deno.makeTempDirSync(); + const filename = tempDir + "/test.txt"; + const filename2 = tempDir + "/test2.txt"; + Deno.writeFileSync(filename, data, { mode: 0o666 }); + // Create a link + Deno.linkSync(filename, filename2); + const s = Deno.statSync(filename); + assert(s.dev !== null); + assert(s.ino !== null); + assertEquals(s.mode! & 0o666, 0o666); + assertEquals(s.nlink, 2); + assert(s.uid !== null); + assert(s.gid !== null); + assert(s.rdev !== null); + assert(s.blksize !== null); + assert(s.blocks !== null); + assert(!s.isBlockDevice); + assert(!s.isCharDevice); + assert(!s.isFifo); + assert(!s.isSocket); + }, +); diff --git a/cli/tests/unit/stdio_test.ts b/tests/unit/stdio_test.ts index d24fdc8ef..d24fdc8ef 100644 --- a/cli/tests/unit/stdio_test.ts +++ b/tests/unit/stdio_test.ts diff --git a/cli/tests/unit/streams_test.ts b/tests/unit/streams_test.ts index 6db9f666c..6db9f666c 100644 --- a/cli/tests/unit/streams_test.ts +++ b/tests/unit/streams_test.ts diff --git a/cli/tests/unit/structured_clone_test.ts b/tests/unit/structured_clone_test.ts index 314a276dd..314a276dd 100644 --- a/cli/tests/unit/structured_clone_test.ts +++ b/tests/unit/structured_clone_test.ts diff --git a/cli/tests/unit/symbol_test.ts b/tests/unit/symbol_test.ts index 54db7f5ba..54db7f5ba 100644 --- a/cli/tests/unit/symbol_test.ts +++ b/tests/unit/symbol_test.ts diff --git a/cli/tests/unit/symlink_test.ts b/tests/unit/symlink_test.ts index 310c36930..310c36930 100644 --- a/cli/tests/unit/symlink_test.ts +++ b/tests/unit/symlink_test.ts diff --git a/cli/tests/unit/sync_test.ts b/tests/unit/sync_test.ts index 40a8054c0..40a8054c0 100644 --- a/cli/tests/unit/sync_test.ts +++ b/tests/unit/sync_test.ts diff --git a/cli/tests/unit/test_util.ts b/tests/unit/test_util.ts index 2f2730794..2f2730794 100644 --- a/cli/tests/unit/test_util.ts +++ b/tests/unit/test_util.ts diff --git a/cli/tests/unit/testing_test.ts b/tests/unit/testing_test.ts index e04ab921c..e04ab921c 100644 --- a/cli/tests/unit/testing_test.ts +++ b/tests/unit/testing_test.ts diff --git a/cli/tests/unit/text_encoding_test.ts b/tests/unit/text_encoding_test.ts index 719e5907e..719e5907e 100644 --- a/cli/tests/unit/text_encoding_test.ts +++ b/tests/unit/text_encoding_test.ts diff --git a/cli/tests/unit/timers_test.ts b/tests/unit/timers_test.ts index 17b137231..17b137231 100644 --- a/cli/tests/unit/timers_test.ts +++ b/tests/unit/timers_test.ts diff --git a/tests/unit/tls_test.ts b/tests/unit/tls_test.ts new file mode 100644 index 000000000..2bd7768bb --- /dev/null +++ b/tests/unit/tls_test.ts @@ -0,0 +1,1546 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { + assert, + assertEquals, + assertNotEquals, + assertRejects, + assertStrictEquals, + assertThrows, +} from "./test_util.ts"; +import { BufReader, BufWriter } from "@test_util/std/io/mod.ts"; +import { readAll } from "@test_util/std/streams/read_all.ts"; +import { writeAll } from "@test_util/std/streams/write_all.ts"; +import { TextProtoReader } from "../testdata/run/textproto.ts"; + +const encoder = new TextEncoder(); +const decoder = new TextDecoder(); +const cert = await Deno.readTextFile("tests/testdata/tls/localhost.crt"); +const key = await Deno.readTextFile("tests/testdata/tls/localhost.key"); +const caCerts = [await Deno.readTextFile("tests/testdata/tls/RootCA.pem")]; + +async function sleep(msec: number) { + await new Promise((res, _rej) => setTimeout(res, msec)); +} + +function unreachable(): never { + throw new Error("Unreachable code reached"); +} + +Deno.test({ permissions: { net: false } }, async function connectTLSNoPerm() { + await assertRejects(async () => { + await Deno.connectTls({ hostname: "deno.land", port: 443 }); + }, Deno.errors.PermissionDenied); +}); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectTLSInvalidHost() { + await assertRejects(async () => { + await Deno.connectTls({ hostname: "256.0.0.0", port: 3567 }); + }, TypeError); + }, +); + +Deno.test( + { permissions: { net: true, read: false } }, + async function connectTLSCertFileNoReadPerm() { + await assertRejects(async () => { + await Deno.connectTls({ + hostname: "deno.land", + port: 443, + certFile: "tests/testdata/tls/RootCA.crt", + }); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + function listenTLSNonExistentCertKeyFiles() { + const options = { + hostname: "localhost", + port: 3500, + certFile: "tests/testdata/tls/localhost.crt", + keyFile: "tests/testdata/tls/localhost.key", + }; + + assertThrows(() => { + Deno.listenTls({ + ...options, + certFile: "./non/existent/file", + }); + }, Deno.errors.NotFound); + + assertThrows(() => { + Deno.listenTls({ + ...options, + keyFile: "./non/existent/file", + }); + }, Deno.errors.NotFound); + }, +); + +Deno.test( + { permissions: { net: true, read: false } }, + function listenTLSNoReadPerm() { + assertThrows(() => { + Deno.listenTls({ + hostname: "localhost", + port: 3500, + certFile: "tests/testdata/tls/localhost.crt", + keyFile: "tests/testdata/tls/localhost.key", + }); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + { + permissions: { read: true, write: true, net: true }, + }, + function listenTLSEmptyKeyFile() { + const options = { + hostname: "localhost", + port: 3500, + certFile: "tests/testdata/tls/localhost.crt", + keyFile: "tests/testdata/tls/localhost.key", + }; + + const testDir = Deno.makeTempDirSync(); + const keyFilename = testDir + "/key.pem"; + Deno.writeFileSync(keyFilename, new Uint8Array([]), { + mode: 0o666, + }); + + assertThrows(() => { + Deno.listenTls({ + ...options, + keyFile: keyFilename, + }); + }, Error); + }, +); + +Deno.test( + { permissions: { read: true, write: true, net: true } }, + function listenTLSEmptyCertFile() { + const options = { + hostname: "localhost", + port: 3500, + certFile: "tests/testdata/tls/localhost.crt", + keyFile: "tests/testdata/tls/localhost.key", + }; + + const testDir = Deno.makeTempDirSync(); + const certFilename = testDir + "/cert.crt"; + Deno.writeFileSync(certFilename, new Uint8Array([]), { + mode: 0o666, + }); + + assertThrows(() => { + Deno.listenTls({ + ...options, + certFile: certFilename, + }); + }, Error); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function startTlsWithoutExclusiveAccessToTcpConn() { + const hostname = "localhost"; + const port = getPort(); + + const tcpListener = Deno.listen({ hostname, port }); + const [serverConn, clientConn] = await Promise.all([ + tcpListener.accept(), + Deno.connect({ hostname, port }), + ]); + + const buf = new Uint8Array(128); + const readPromise = clientConn.read(buf); + // `clientConn` is being used by a pending promise (`readPromise`) so + // `Deno.startTls` cannot consume the connection. + await assertRejects( + () => Deno.startTls(clientConn, { hostname }), + Deno.errors.BadResource, + ); + + serverConn.close(); + tcpListener.close(); + await readPromise; + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function dialAndListenTLS() { + const { promise, resolve } = Promise.withResolvers<void>(); + const hostname = "localhost"; + const port = 3500; + + const listener = Deno.listenTls({ + hostname, + port, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/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, caCerts }); + assert(conn.rid > 0); + 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; + }, +); +Deno.test( + { permissions: { read: false, net: true } }, + async function listenTlsWithCertAndKey() { + const { promise, resolve } = Promise.withResolvers<void>(); + const hostname = "localhost"; + const port = 3500; + + const listener = Deno.listenTls({ hostname, port, cert, 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); + setTimeout(() => { + conn.close(); + resolve(); + }, 0); + }, + ); + + const conn = await Deno.connectTls({ hostname, port, caCerts }); + assert(conn.rid > 0); + 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; + }, +); + +let nextPort = 3501; +function getPort() { + return nextPort++; +} + +async function tlsPair(): Promise<[Deno.Conn, Deno.Conn]> { + const port = getPort(); + const listener = Deno.listenTls({ + hostname: "localhost", + port, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/tls/localhost.key"), + }); + + const acceptPromise = listener.accept(); + const connectPromise = Deno.connectTls({ + hostname: "localhost", + port, + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }); + const endpoints = await Promise.all([acceptPromise, connectPromise]); + + listener.close(); + + return endpoints; +} + +async function tlsAlpn( + useStartTls: boolean, +): Promise<[Deno.TlsConn, Deno.TlsConn]> { + const port = getPort(); + const listener = Deno.listenTls({ + hostname: "localhost", + port, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/tls/localhost.key"), + alpnProtocols: ["deno", "rocks"], + }); + + const acceptPromise = listener.accept(); + + const caCerts = [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")]; + const clientAlpnProtocols = ["rocks", "rises"]; + let endpoints: [Deno.TlsConn, Deno.TlsConn]; + + if (!useStartTls) { + const connectPromise = Deno.connectTls({ + hostname: "localhost", + port, + caCerts, + alpnProtocols: clientAlpnProtocols, + }); + endpoints = await Promise.all([acceptPromise, connectPromise]); + } else { + const client = await Deno.connect({ + hostname: "localhost", + port, + }); + const connectPromise = Deno.startTls(client, { + hostname: "localhost", + caCerts, + alpnProtocols: clientAlpnProtocols, + }); + endpoints = await Promise.all([acceptPromise, connectPromise]); + } + + listener.close(); + return endpoints; +} + +async function sendThenCloseWriteThenReceive( + conn: Deno.Conn, + chunkCount: number, + chunkSize: number, +) { + const byteCount = chunkCount * chunkSize; + const buf = new Uint8Array(chunkSize); // Note: buf is size of _chunk_. + let n: number; + + // Slowly send 42s. + buf.fill(42); + for (let remaining = byteCount; remaining > 0; remaining -= n) { + n = await conn.write(buf.subarray(0, remaining)); + assert(n >= 1); + await sleep(10); + } + + // Send EOF. + await conn.closeWrite(); + + // Receive 69s. + for (let remaining = byteCount; remaining > 0; remaining -= n) { + buf.fill(0); + n = await conn.read(buf) as number; + assert(n >= 1); + assertStrictEquals(buf[0], 69); + assertStrictEquals(buf[n - 1], 69); + } + + conn.close(); +} + +async function receiveThenSend( + conn: Deno.Conn, + chunkCount: number, + chunkSize: number, +) { + const byteCount = chunkCount * chunkSize; + const buf = new Uint8Array(byteCount); // Note: buf size equals `byteCount`. + let n: number; + + // Receive 42s. + for (let remaining = byteCount; remaining > 0; remaining -= n) { + buf.fill(0); + n = await conn.read(buf) as number; + assert(n >= 1); + assertStrictEquals(buf[0], 42); + assertStrictEquals(buf[n - 1], 42); + } + + // Slowly send 69s. + buf.fill(69); + for (let remaining = byteCount; remaining > 0; remaining -= n) { + n = await conn.write(buf.subarray(0, remaining)); + assert(n >= 1); + await sleep(10); + } + + conn.close(); +} + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerAlpnListenConnect() { + const [serverConn, clientConn] = await tlsAlpn(false); + const [serverHS, clientHS] = await Promise.all([ + serverConn.handshake(), + clientConn.handshake(), + ]); + assertStrictEquals(serverHS.alpnProtocol, "rocks"); + assertStrictEquals(clientHS.alpnProtocol, "rocks"); + + serverConn.close(); + clientConn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerAlpnListenStartTls() { + const [serverConn, clientConn] = await tlsAlpn(true); + const [serverHS, clientHS] = await Promise.all([ + serverConn.handshake(), + clientConn.handshake(), + ]); + assertStrictEquals(serverHS.alpnProtocol, "rocks"); + assertStrictEquals(clientHS.alpnProtocol, "rocks"); + + serverConn.close(); + clientConn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerStreamHalfCloseSendOneByte() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(serverConn, 1, 1), + receiveThenSend(clientConn, 1, 1), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientStreamHalfCloseSendOneByte() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(clientConn, 1, 1), + receiveThenSend(serverConn, 1, 1), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerStreamHalfCloseSendOneChunk() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(serverConn, 1, 1 << 20 /* 1 MB */), + receiveThenSend(clientConn, 1, 1 << 20 /* 1 MB */), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientStreamHalfCloseSendOneChunk() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(clientConn, 1, 1 << 20 /* 1 MB */), + receiveThenSend(serverConn, 1, 1 << 20 /* 1 MB */), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerStreamHalfCloseSendManyBytes() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(serverConn, 100, 1), + receiveThenSend(clientConn, 100, 1), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientStreamHalfCloseSendManyBytes() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(clientConn, 100, 1), + receiveThenSend(serverConn, 100, 1), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerStreamHalfCloseSendManyChunks() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(serverConn, 100, 1 << 16 /* 64 kB */), + receiveThenSend(clientConn, 100, 1 << 16 /* 64 kB */), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientStreamHalfCloseSendManyChunks() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendThenCloseWriteThenReceive(clientConn, 100, 1 << 16 /* 64 kB */), + receiveThenSend(serverConn, 100, 1 << 16 /* 64 kB */), + ]); + }, +); + +const largeAmount = 1 << 20 /* 1 MB */; + +async function sendAlotReceiveNothing(conn: Deno.Conn) { + // Start receive op. + const readBuf = new Uint8Array(1024); + const readPromise = conn.read(readBuf); + + const timeout = setTimeout(() => { + throw new Error("Failed to send buffer in a reasonable amount of time"); + }, 10_000); + + // Send 1 MB of data. + const writeBuf = new Uint8Array(largeAmount); + writeBuf.fill(42); + await writeAll(conn, writeBuf); + + clearTimeout(timeout); + + // Send EOF. + await conn.closeWrite(); + + // Close the connection. + conn.close(); + + // Read op should be canceled. + await assertRejects( + async () => await readPromise, + Deno.errors.Interrupted, + ); +} + +async function receiveAlotSendNothing(conn: Deno.Conn) { + const readBuf = new Uint8Array(1024); + let n: number | null; + let nread = 0; + + const timeout = setTimeout(() => { + throw new Error( + `Failed to read buffer in a reasonable amount of time (got ${nread}/${largeAmount})`, + ); + }, 10_000); + + // Receive 1 MB of data. + try { + for (; nread < largeAmount; nread += n!) { + n = await conn.read(readBuf); + assertStrictEquals(typeof n, "number"); + assert(n! > 0); + assertStrictEquals(readBuf[0], 42); + } + } catch (e) { + throw new Error( + `Got an error (${e.message}) after reading ${nread}/${largeAmount} bytes`, + { cause: e }, + ); + } + clearTimeout(timeout); + + // Close the connection, without sending anything at all. + conn.close(); +} + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerStreamCancelRead() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendAlotReceiveNothing(serverConn), + receiveAlotSendNothing(clientConn), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientStreamCancelRead() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendAlotReceiveNothing(clientConn), + receiveAlotSendNothing(serverConn), + ]); + }, +); + +async function sendReceiveEmptyBuf(conn: Deno.Conn) { + const byteBuf = new Uint8Array([1]); + const emptyBuf = new Uint8Array(0); + let n: number | null; + + n = await conn.write(emptyBuf); + assertStrictEquals(n, 0); + + n = await conn.read(emptyBuf); + assertStrictEquals(n, 0); + + n = await conn.write(byteBuf); + assertStrictEquals(n, 1); + + n = await conn.read(byteBuf); + assertStrictEquals(n, 1); + + await conn.closeWrite(); + + n = await conn.write(emptyBuf); + assertStrictEquals(n, 0); + + await assertRejects(async () => { + await conn.write(byteBuf); + }, Deno.errors.NotConnected); + + n = await conn.write(emptyBuf); + assertStrictEquals(n, 0); + + n = await conn.read(byteBuf); + assertStrictEquals(n, null); + + conn.close(); +} + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsStreamSendReceiveEmptyBuf() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + sendReceiveEmptyBuf(serverConn), + sendReceiveEmptyBuf(clientConn), + ]); + }, +); + +function immediateClose(conn: Deno.Conn) { + conn.close(); + return Promise.resolve(); +} + +async function closeWriteAndClose(conn: Deno.Conn) { + await conn.closeWrite(); + + if (await conn.read(new Uint8Array(1)) !== null) { + throw new Error("did not expect to receive data on TLS stream"); + } + + conn.close(); +} + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsServerStreamImmediateClose() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + immediateClose(serverConn), + closeWriteAndClose(clientConn), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientStreamImmediateClose() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + closeWriteAndClose(serverConn), + immediateClose(clientConn), + ]); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsClientAndServerStreamImmediateClose() { + const [serverConn, clientConn] = await tlsPair(); + await Promise.all([ + immediateClose(serverConn), + immediateClose(clientConn), + ]); + }, +); + +async function tlsWithTcpFailureTestImpl( + phase: "handshake" | "traffic", + cipherByteCount: number, + failureMode: "corruption" | "shutdown", + reverse: boolean, +) { + const tlsPort = getPort(); + const tlsListener = Deno.listenTls({ + hostname: "localhost", + port: tlsPort, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/tls/localhost.key"), + }); + + const tcpPort = getPort(); + const tcpListener = Deno.listen({ hostname: "localhost", port: tcpPort }); + + const [tlsServerConn, tcpServerConn] = await Promise.all([ + tlsListener.accept(), + Deno.connect({ hostname: "localhost", port: tlsPort }), + ]); + + const [tcpClientConn, tlsClientConn] = await Promise.all([ + tcpListener.accept(), + Deno.connectTls({ + hostname: "localhost", + port: tcpPort, + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }), + ]); + + tlsListener.close(); + tcpListener.close(); + + const { + tlsConn1, + tlsConn2, + tcpConn1, + tcpConn2, + } = reverse + ? { + tlsConn1: tlsClientConn, + tlsConn2: tlsServerConn, + tcpConn1: tcpClientConn, + tcpConn2: tcpServerConn, + } + : { + tlsConn1: tlsServerConn, + tlsConn2: tlsClientConn, + tcpConn1: tcpServerConn, + tcpConn2: tcpClientConn, + }; + + const tcpForwardingInterruptDeferred1 = Promise.withResolvers<void>(); + const tcpForwardingPromise1 = forwardBytes( + tcpConn2, + tcpConn1, + cipherByteCount, + tcpForwardingInterruptDeferred1, + ); + + const tcpForwardingInterruptDeferred2 = Promise.withResolvers<void>(); + const tcpForwardingPromise2 = forwardBytes( + tcpConn1, + tcpConn2, + Infinity, + tcpForwardingInterruptDeferred2, + ); + + switch (phase) { + case "handshake": { + let expectedError; + switch (failureMode) { + case "corruption": + expectedError = Deno.errors.InvalidData; + break; + case "shutdown": + expectedError = Deno.errors.UnexpectedEof; + break; + default: + unreachable(); + } + + const tlsTrafficPromise1 = Promise.all([ + assertRejects( + () => sendBytes(tlsConn1, 0x01, 1), + expectedError, + ), + assertRejects( + () => receiveBytes(tlsConn1, 0x02, 1), + expectedError, + ), + ]); + + const tlsTrafficPromise2 = Promise.all([ + assertRejects( + () => sendBytes(tlsConn2, 0x02, 1), + Deno.errors.UnexpectedEof, + ), + assertRejects( + () => receiveBytes(tlsConn2, 0x01, 1), + Deno.errors.UnexpectedEof, + ), + ]); + + await tcpForwardingPromise1; + + switch (failureMode) { + case "corruption": + await sendBytes(tcpConn1, 0xff, 1 << 14 /* 16 kB */); + break; + case "shutdown": + await tcpConn1.closeWrite(); + break; + default: + unreachable(); + } + await tlsTrafficPromise1; + + tcpForwardingInterruptDeferred2.resolve(); + await tcpForwardingPromise2; + await tcpConn2.closeWrite(); + await tlsTrafficPromise2; + + break; + } + + case "traffic": { + await Promise.all([ + sendBytes(tlsConn2, 0x88, 8888), + receiveBytes(tlsConn1, 0x88, 8888), + sendBytes(tlsConn1, 0x99, 99999), + receiveBytes(tlsConn2, 0x99, 99999), + ]); + + tcpForwardingInterruptDeferred1.resolve(); + await tcpForwardingInterruptDeferred1.promise; + + switch (failureMode) { + case "corruption": + await sendBytes(tcpConn1, 0xff, 1 << 14 /* 16 kB */); + await assertRejects( + () => receiveEof(tlsConn1), + Deno.errors.InvalidData, + ); + tcpForwardingInterruptDeferred2.resolve(); + break; + case "shutdown": + await Promise.all([ + tcpConn1.closeWrite(), + await assertRejects( + () => receiveEof(tlsConn1), + Deno.errors.UnexpectedEof, + ), + await tlsConn1.closeWrite(), + await receiveEof(tlsConn2), + ]); + break; + default: + unreachable(); + } + + await tcpForwardingPromise2; + + break; + } + + default: + unreachable(); + } + + tlsServerConn.close(); + tlsClientConn.close(); + tcpServerConn.close(); + tcpClientConn.close(); + + async function sendBytes( + conn: Deno.Conn, + byte: number, + count: number, + ) { + let buf = new Uint8Array(1 << 12 /* 4 kB */); + buf.fill(byte); + + while (count > 0) { + buf = buf.subarray(0, Math.min(buf.length, count)); + const nwritten = await conn.write(buf); + assertStrictEquals(nwritten, buf.length); + count -= nwritten; + } + } + + async function receiveBytes( + conn: Deno.Conn, + byte: number, + count: number, + ) { + let buf = new Uint8Array(1 << 12 /* 4 kB */); + while (count > 0) { + buf = buf.subarray(0, Math.min(buf.length, count)); + const r = await conn.read(buf); + assertNotEquals(r, null); + assert(buf.subarray(0, r!).every((b) => b === byte)); + count -= r!; + } + } + + async function receiveEof(conn: Deno.Conn) { + const buf = new Uint8Array(1); + const r = await conn.read(buf); + assertStrictEquals(r, null); + } + + async function forwardBytes( + source: Deno.Conn, + sink: Deno.Conn, + count: number, + interruptPromise: ReturnType<typeof Promise.withResolvers<void>>, + ) { + let buf = new Uint8Array(1 << 12 /* 4 kB */); + while (count > 0) { + buf = buf.subarray(0, Math.min(buf.length, count)); + const nread = await Promise.race([ + source.read(buf), + interruptPromise.promise, + ]); + if (nread == null) break; // Either EOF or interrupted. + const nwritten = await sink.write(buf.subarray(0, nread)); + assertStrictEquals(nread, nwritten); + count -= nwritten; + } + } +} + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeWithTcpCorruptionImmediately() { + await tlsWithTcpFailureTestImpl("handshake", 0, "corruption", false); + await tlsWithTcpFailureTestImpl("handshake", 0, "corruption", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeWithTcpShutdownImmediately() { + await tlsWithTcpFailureTestImpl("handshake", 0, "shutdown", false); + await tlsWithTcpFailureTestImpl("handshake", 0, "shutdown", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeWithTcpCorruptionAfter70Bytes() { + await tlsWithTcpFailureTestImpl("handshake", 76, "corruption", false); + await tlsWithTcpFailureTestImpl("handshake", 78, "corruption", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeWithTcpShutdownAfter70bytes() { + await tlsWithTcpFailureTestImpl("handshake", 77, "shutdown", false); + await tlsWithTcpFailureTestImpl("handshake", 79, "shutdown", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeWithTcpCorruptionAfter200Bytes() { + await tlsWithTcpFailureTestImpl("handshake", 200, "corruption", false); + await tlsWithTcpFailureTestImpl("handshake", 202, "corruption", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeWithTcpShutdownAfter200bytes() { + await tlsWithTcpFailureTestImpl("handshake", 201, "shutdown", false); + await tlsWithTcpFailureTestImpl("handshake", 203, "shutdown", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsTrafficWithTcpCorruption() { + await tlsWithTcpFailureTestImpl("traffic", Infinity, "corruption", false); + await tlsWithTcpFailureTestImpl("traffic", Infinity, "corruption", true); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsTrafficWithTcpShutdown() { + await tlsWithTcpFailureTestImpl("traffic", Infinity, "shutdown", false); + await tlsWithTcpFailureTestImpl("traffic", Infinity, "shutdown", true); + }, +); + +function createHttpsListener(port: number): Deno.Listener { + // Query format: `curl --insecure https://localhost:8443/z/12345` + // The server returns a response consisting of 12345 times the letter 'z'. + const listener = Deno.listenTls({ + hostname: "localhost", + port, + cert: Deno.readTextFileSync("./tests/testdata/tls/localhost.crt"), + key: Deno.readTextFileSync("./tests/testdata/tls/localhost.key"), + }); + + serve(listener); + return listener; + + async function serve(listener: Deno.Listener) { + for await (const conn of listener) { + const EOL = "\r\n"; + + // Read GET request plus headers. + const buf = new Uint8Array(1 << 12 /* 4 kB */); + const decoder = new TextDecoder(); + let req = ""; + while (!req.endsWith(EOL + EOL)) { + const n = await conn.read(buf); + if (n === null) throw new Error("Unexpected EOF"); + req += decoder.decode(buf.subarray(0, n)); + } + + // Parse GET request. + const { filler, count, version } = + /^GET \/(?<filler>[^\/]+)\/(?<count>\d+) HTTP\/(?<version>1\.\d)\r\n/ + .exec(req)!.groups as { + filler: string; + count: string; + version: string; + }; + + // Generate response. + const resBody = new TextEncoder().encode(filler.repeat(+count)); + const resHead = new TextEncoder().encode( + [ + `HTTP/${version} 200 OK`, + `Content-Length: ${resBody.length}`, + "Content-Type: text/plain", + ].join(EOL) + EOL + EOL, + ); + + // Send response. + await writeAll(conn, resHead); + await writeAll(conn, resBody); + + // Close TCP connection. + conn.close(); + } + } +} + +async function curl(url: string): Promise<string> { + const { success, code, stdout, stderr } = await new Deno.Command("curl", { + args: ["--insecure", url], + }).output(); + + if (!success) { + throw new Error( + `curl ${url} failed: ${code}:\n${new TextDecoder().decode(stderr)}`, + ); + } + return new TextDecoder().decode(stdout); +} + +Deno.test( + { permissions: { read: true, net: true, run: true } }, + async function curlFakeHttpsServer() { + const port = getPort(); + const listener = createHttpsListener(port); + + const res1 = await curl(`https://localhost:${port}/d/1`); + assertStrictEquals(res1, "d"); + + const res2 = await curl(`https://localhost:${port}/e/12345`); + assertStrictEquals(res2, "e".repeat(12345)); + + const count3 = 1 << 17; // 128 kB. + const res3 = await curl(`https://localhost:${port}/n/${count3}`); + assertStrictEquals(res3, "n".repeat(count3)); + + const count4 = 12345678; + const res4 = await curl(`https://localhost:${port}/o/${count4}`); + assertStrictEquals(res4, "o".repeat(count4)); + + listener.close(); + }, +); + +Deno.test( + // Ignored because gmail appears to reject us on CI sometimes + { ignore: true, permissions: { read: true, net: true } }, + async function startTls() { + const hostname = "smtp.gmail.com"; + const port = 587; + const encoder = new TextEncoder(); + + const conn = await Deno.connect({ + hostname, + port, + }); + + let writer = new BufWriter(conn); + let reader = new TextProtoReader(new BufReader(conn)); + + let line: string | null = (await reader.readLine()) as string; + assert(line.startsWith("220")); + + await writer.write(encoder.encode(`EHLO ${hostname}\r\n`)); + await writer.flush(); + + while ((line = (await reader.readLine()) as string)) { + assert(line.startsWith("250")); + if (line.startsWith("250 ")) break; + } + + await writer.write(encoder.encode("STARTTLS\r\n")); + await writer.flush(); + + line = await reader.readLine(); + + // Received the message that the server is ready to establish TLS + assertEquals(line, "220 2.0.0 Ready to start TLS"); + + const tlsConn = await Deno.startTls(conn, { hostname }); + writer = new BufWriter(tlsConn); + reader = new TextProtoReader(new BufReader(tlsConn)); + + // After that use TLS communication again + await writer.write(encoder.encode(`EHLO ${hostname}\r\n`)); + await writer.flush(); + + while ((line = (await reader.readLine()) as string)) { + assert(line.startsWith("250")); + if (line.startsWith("250 ")) break; + } + + tlsConn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectTLSBadClientCertPrivateKey(): Promise<void> { + await assertRejects(async () => { + await Deno.connectTls({ + hostname: "deno.land", + port: 443, + certChain: "bad data", + privateKey: await Deno.readTextFile( + "tests/testdata/tls/localhost.key", + ), + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectTLSBadPrivateKey(): Promise<void> { + await assertRejects(async () => { + await Deno.connectTls({ + hostname: "deno.land", + port: 443, + certChain: await Deno.readTextFile( + "tests/testdata/tls/localhost.crt", + ), + privateKey: "bad data", + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectTLSNotPrivateKey(): Promise<void> { + await assertRejects(async () => { + await Deno.connectTls({ + hostname: "deno.land", + port: 443, + certChain: await Deno.readTextFile( + "tests/testdata/tls/localhost.crt", + ), + privateKey: "", + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectWithClientCert() { + // The test_server running on port 4552 responds with 'PASS' if client + // authentication was successful. Try it by running test_server and + // curl --key tests/testdata/tls/localhost.key \ + // --cert tests/testdata/tls/localhost.crt \ + // --cacert tests/testdata/tls/RootCA.crt https://localhost:4552/ + const conn = await Deno.connectTls({ + hostname: "localhost", + port: 4552, + certChain: await Deno.readTextFile( + "tests/testdata/tls/localhost.crt", + ), + privateKey: await Deno.readTextFile( + "tests/testdata/tls/localhost.key", + ), + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }); + const result = decoder.decode(await readAll(conn)); + assertEquals(result, "PASS"); + conn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectTLSCaCerts() { + const conn = await Deno.connectTls({ + hostname: "localhost", + port: 4557, + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }); + const result = decoder.decode(await readAll(conn)); + assertEquals(result, "PASS"); + conn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function connectTLSCertFile() { + const conn = await Deno.connectTls({ + hostname: "localhost", + port: 4557, + certFile: "tests/testdata/tls/RootCA.pem", + }); + const result = decoder.decode(await readAll(conn)); + assertEquals(result, "PASS"); + conn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function startTLSCaCerts() { + const plainConn = await Deno.connect({ + hostname: "localhost", + port: 4557, + }); + const conn = await Deno.startTls(plainConn, { + hostname: "localhost", + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }); + const result = decoder.decode(await readAll(conn)); + assertEquals(result, "PASS"); + conn.close(); + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeSuccess() { + const hostname = "localhost"; + const port = getPort(); + + const listener = Deno.listenTls({ + hostname, + port, + cert: await Deno.readTextFile("tests/testdata/tls/localhost.crt"), + key: await Deno.readTextFile("tests/testdata/tls/localhost.key"), + }); + const acceptPromise = listener.accept(); + const connectPromise = Deno.connectTls({ + hostname, + port, + certFile: "tests/testdata/tls/RootCA.crt", + }); + const [conn1, conn2] = await Promise.all([acceptPromise, connectPromise]); + listener.close(); + + await Promise.all([conn1.handshake(), conn2.handshake()]); + + // Begin sending a 10mb blob over the TLS connection. + const whole = new Uint8Array(10 << 20); // 10mb. + whole.fill(42); + const sendPromise = writeAll(conn1, whole); + // Set up the other end to receive half of the large blob. + const half = new Uint8Array(whole.byteLength / 2); + const receivePromise = readFull(conn2, half); + + await conn1.handshake(); + await conn2.handshake(); + + // Finish receiving the first 5mb. + assertEquals(await receivePromise, half.length); + + // See that we can call `handshake()` in the middle of large reads and writes. + await conn1.handshake(); + await conn2.handshake(); + + // Receive second half of large blob. Wait for the send promise and check it. + assertEquals(await readFull(conn2, half), half.length); + await sendPromise; + + await conn1.handshake(); + await conn2.handshake(); + + await conn1.closeWrite(); + await conn2.closeWrite(); + + await conn1.handshake(); + await conn2.handshake(); + + conn1.close(); + conn2.close(); + + async function readFull(conn: Deno.Conn, buf: Uint8Array) { + let offset, n; + for (offset = 0; offset < buf.length; offset += n) { + n = await conn.read(buf.subarray(offset, buf.length)); + assert(n != null && n > 0); + } + return offset; + } + }, +); + +Deno.test( + { permissions: { read: true, net: true } }, + async function tlsHandshakeFailure() { + const hostname = "localhost"; + const port = getPort(); + + async function server() { + const listener = Deno.listenTls({ + hostname, + port, + cert: Deno.readTextFileSync("tests/testdata/tls/localhost.crt"), + key: Deno.readTextFileSync("tests/testdata/tls/localhost.key"), + }); + for await (const conn of listener) { + for (let i = 0; i < 10; i++) { + // Handshake fails because the client rejects the server certificate. + await assertRejects( + () => conn.handshake(), + Deno.errors.InvalidData, + "received fatal alert", + ); + } + conn.close(); + break; + } + } + + async function connectTlsClient() { + const conn = await Deno.connectTls({ hostname, port }); + // Handshake fails because the server presents a self-signed certificate. + await assertRejects( + () => conn.handshake(), + Deno.errors.InvalidData, + "invalid peer certificate: UnknownIssuer", + ); + conn.close(); + } + + await Promise.all([server(), connectTlsClient()]); + + async function startTlsClient() { + const tcpConn = await Deno.connect({ hostname, port }); + const tlsConn = await Deno.startTls(tcpConn, { + hostname: "foo.land", + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }); + // Handshake fails because hostname doesn't match the certificate. + await assertRejects( + () => tlsConn.handshake(), + Deno.errors.InvalidData, + "NotValidForName", + ); + tlsConn.close(); + } + + await Promise.all([server(), startTlsClient()]); + }, +); + +Deno.test( + { permissions: { net: true } }, + async function listenTlsWithReuseAddr() { + const deferred1 = Promise.withResolvers<void>(); + const hostname = "localhost"; + const port = 3500; + + const listener1 = Deno.listenTls({ hostname, port, cert, key }); + + listener1.accept().then((conn) => { + conn.close(); + deferred1.resolve(); + }); + + const conn1 = await Deno.connectTls({ hostname, port, caCerts }); + conn1.close(); + await deferred1.promise; + listener1.close(); + + const deferred2 = Promise.withResolvers<void>(); + const listener2 = Deno.listenTls({ hostname, port, cert, key }); + + listener2.accept().then((conn) => { + conn.close(); + deferred2.resolve(); + }); + + const conn2 = await Deno.connectTls({ hostname, port, caCerts }); + conn2.close(); + await deferred2.promise; + listener2.close(); + }, +); + +Deno.test({ + ignore: Deno.build.os !== "linux", + permissions: { net: true }, +}, async function listenTlsReusePort() { + const hostname = "localhost"; + const port = 4003; + const listener1 = Deno.listenTls({ + hostname, + port, + cert, + key, + reusePort: true, + }); + const listener2 = Deno.listenTls({ + hostname, + port, + cert, + key, + reusePort: true, + }); + let p1; + let p2; + let listener1Recv = false; + let listener2Recv = false; + while (!listener1Recv || !listener2Recv) { + if (!p1) { + p1 = listener1.accept().then((conn) => { + conn.close(); + listener1Recv = true; + p1 = undefined; + }).catch(() => {}); + } + if (!p2) { + p2 = listener2.accept().then((conn) => { + conn.close(); + listener2Recv = true; + p2 = undefined; + }).catch(() => {}); + } + const conn = await Deno.connectTls({ hostname, port, caCerts }); + conn.close(); + await Promise.race([p1, p2]); + } + listener1.close(); + listener2.close(); +}); + +Deno.test({ + ignore: Deno.build.os === "linux", + permissions: { net: true }, +}, function listenTlsReusePortDoesNothing() { + const hostname = "localhost"; + const port = 4003; + const listener1 = Deno.listenTls({ + hostname, + port, + cert, + key, + reusePort: true, + }); + assertThrows(() => { + Deno.listenTls({ hostname, port, cert, key, reusePort: true }); + }, Deno.errors.AddrInUse); + listener1.close(); +}); + +Deno.test({ + permissions: { net: true }, +}, function listenTlsDoesNotThrowOnStringPort() { + const listener = Deno.listenTls({ + hostname: "localhost", + // @ts-ignore String port is not allowed by typing, but it shouldn't throw + // for backwards compatibility. + port: "0", + cert, + key, + }); + listener.close(); +}); + +Deno.test( + { permissions: { net: true, read: true } }, + function listenTLSInvalidCert() { + assertThrows(() => { + Deno.listenTls({ + hostname: "localhost", + port: 3500, + certFile: "tests/testdata/tls/invalid.crt", + keyFile: "tests/testdata/tls/localhost.key", + }); + }, Deno.errors.InvalidData); + }, +); + +Deno.test( + { permissions: { net: true, read: true } }, + function listenTLSInvalidKey() { + assertThrows(() => { + Deno.listenTls({ + hostname: "localhost", + port: 3500, + certFile: "tests/testdata/tls/localhost.crt", + keyFile: "tests/testdata/tls/invalid.key", + }); + }, Deno.errors.InvalidData); + }, +); diff --git a/cli/tests/unit/truncate_test.ts b/tests/unit/truncate_test.ts index 95b76052d..95b76052d 100644 --- a/cli/tests/unit/truncate_test.ts +++ b/tests/unit/truncate_test.ts diff --git a/cli/tests/unit/tty_color_test.ts b/tests/unit/tty_color_test.ts index 6f26891e3..6f26891e3 100644 --- a/cli/tests/unit/tty_color_test.ts +++ b/tests/unit/tty_color_test.ts diff --git a/tests/unit/tty_test.ts b/tests/unit/tty_test.ts new file mode 100644 index 000000000..f135ae7cf --- /dev/null +++ b/tests/unit/tty_test.ts @@ -0,0 +1,32 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { assert } from "./test_util.ts"; + +// Note tests for Deno.stdin.setRaw is in integration tests. + +Deno.test(function consoleSize() { + if (!Deno.stdout.isTerminal()) { + return; + } + const result = Deno.consoleSize(); + assert(typeof result.columns !== "undefined"); + assert(typeof result.rows !== "undefined"); +}); + +Deno.test({ permissions: { read: true } }, function isatty() { + // CI not under TTY, so cannot test stdin/stdout/stderr. + const f = Deno.openSync("tests/testdata/assets/hello.txt"); + assert(!Deno.isatty(f.rid)); + f.close(); +}); + +Deno.test(function isattyError() { + let caught = false; + try { + // Absurdly large rid. + Deno.isatty(0x7fffffff); + } catch (e) { + caught = true; + assert(e instanceof Deno.errors.BadResource); + } + assert(caught); +}); diff --git a/cli/tests/unit/umask_test.ts b/tests/unit/umask_test.ts index 0e97f0d35..0e97f0d35 100644 --- a/cli/tests/unit/umask_test.ts +++ b/tests/unit/umask_test.ts diff --git a/cli/tests/unit/url_search_params_test.ts b/tests/unit/url_search_params_test.ts index c547ef938..c547ef938 100644 --- a/cli/tests/unit/url_search_params_test.ts +++ b/tests/unit/url_search_params_test.ts diff --git a/cli/tests/unit/url_test.ts b/tests/unit/url_test.ts index b0dc86232..b0dc86232 100644 --- a/cli/tests/unit/url_test.ts +++ b/tests/unit/url_test.ts diff --git a/cli/tests/unit/urlpattern_test.ts b/tests/unit/urlpattern_test.ts index 7730dbe40..7730dbe40 100644 --- a/cli/tests/unit/urlpattern_test.ts +++ b/tests/unit/urlpattern_test.ts diff --git a/cli/tests/unit/utime_test.ts b/tests/unit/utime_test.ts index 9f5f25bee..9f5f25bee 100644 --- a/cli/tests/unit/utime_test.ts +++ b/tests/unit/utime_test.ts diff --git a/cli/tests/unit/version_test.ts b/tests/unit/version_test.ts index 4eadb7620..4eadb7620 100644 --- a/cli/tests/unit/version_test.ts +++ b/tests/unit/version_test.ts diff --git a/cli/tests/unit/wasm_test.ts b/tests/unit/wasm_test.ts index fab9c9308..fab9c9308 100644 --- a/cli/tests/unit/wasm_test.ts +++ b/tests/unit/wasm_test.ts diff --git a/tests/unit/webcrypto_test.ts b/tests/unit/webcrypto_test.ts new file mode 100644 index 000000000..58f59edc6 --- /dev/null +++ b/tests/unit/webcrypto_test.ts @@ -0,0 +1,2047 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { + assert, + assertEquals, + assertNotEquals, + assertRejects, +} from "./test_util.ts"; + +// https://github.com/denoland/deno/issues/11664 +Deno.test(async function testImportArrayBufferKey() { + const subtle = window.crypto.subtle; + assert(subtle); + + // deno-fmt-ignore + const key = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]); + + const cryptoKey = await subtle.importKey( + "raw", + key.buffer, + { name: "HMAC", hash: "SHA-1" }, + true, + ["sign"], + ); + assert(cryptoKey); + + // Test key usage + await subtle.sign({ name: "HMAC" }, cryptoKey, new Uint8Array(8)); +}); + +Deno.test(async function testSignVerify() { + const subtle = window.crypto.subtle; + assert(subtle); + for (const algorithm of ["RSA-PSS", "RSASSA-PKCS1-v1_5"]) { + for ( + const hash of [ + "SHA-1", + "SHA-256", + "SHA-384", + "SHA-512", + ] + ) { + const keyPair = await subtle.generateKey( + { + name: algorithm, + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash, + }, + true, + ["sign", "verify"], + ); + + const data = new Uint8Array([1, 2, 3]); + + const signAlgorithm = { name: algorithm, saltLength: 32 }; + + const signature = await subtle.sign( + signAlgorithm, + keyPair.privateKey, + data, + ); + + assert(signature); + assert(signature.byteLength > 0); + assert(signature.byteLength % 8 == 0); + assert(signature instanceof ArrayBuffer); + + const verified = await subtle.verify( + signAlgorithm, + keyPair.publicKey, + signature, + data, + ); + assert(verified); + } + } +}); + +// deno-fmt-ignore +const plainText = new Uint8Array([95, 77, 186, 79, 50, 12, 12, 232, 118, 114, 90, 252, 229, 251, 210, 91, 248, 62, 90, 113, 37, 160, 140, 175, 231, 60, 62, 186, 196, 33, 119, 157, 249, 213, 93, 24, 12, 58, 233, 148, 38, 69, 225, 216, 47, 238, 140, 157, 41, 75, 60, 177, 160, 138, 153, 49, 32, 27, 60, 14, 129, 252, 71, 202, 207, 131, 21, 162, 175, 102, 50, 65, 19, 195, 182, 98, 48, 195, 70, 8, 196, 244, 89, 54, 52, 206, 2, 178, 103, 54, 34, 119, 240, 168, 64, 202, 116, 188, 61, 26, 98, 54, 149, 44, 94, 215, 170, 248, 168, 254, 203, 221, 250, 117, 132, 230, 151, 140, 234, 93, 42, 91, 159, 183, 241, 180, 140, 139, 11, 229, 138, 48, 82, 2, 117, 77, 131, 118, 16, 115, 116, 121, 60, 240, 38, 170, 238, 83, 0, 114, 125, 131, 108, 215, 30, 113, 179, 69, 221, 178, 228, 68, 70, 255, 197, 185, 1, 99, 84, 19, 137, 13, 145, 14, 163, 128, 152, 74, 144, 25, 16, 49, 50, 63, 22, 219, 204, 157, 107, 225, 104, 184, 72, 133, 56, 76, 160, 62, 18, 96, 10, 193, 194, 72, 2, 138, 243, 114, 108, 201, 52, 99, 136, 46, 168, 192, 42, 171]); + +// Passing +const hashPlainTextVector = [ + { + hash: "SHA-1", + plainText: plainText.slice(0, 214), + }, + { + hash: "SHA-256", + plainText: plainText.slice(0, 190), + }, + { + hash: "SHA-384", + plainText: plainText.slice(0, 158), + }, + { + hash: "SHA-512", + plainText: plainText.slice(0, 126), + }, +]; + +Deno.test(async function testEncryptDecrypt() { + const subtle = window.crypto.subtle; + assert(subtle); + for ( + const { hash, plainText } of hashPlainTextVector + ) { + const keyPair = await subtle.generateKey( + { + name: "RSA-OAEP", + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash, + }, + true, + ["encrypt", "decrypt"], + ); + + const encryptAlgorithm = { name: "RSA-OAEP" }; + const cipherText = await subtle.encrypt( + encryptAlgorithm, + keyPair.publicKey, + plainText, + ); + + assert(cipherText); + assert(cipherText.byteLength > 0); + assertEquals(cipherText.byteLength * 8, 2048); + assert(cipherText instanceof ArrayBuffer); + + const decrypted = await subtle.decrypt( + encryptAlgorithm, + keyPair.privateKey, + cipherText, + ); + assert(decrypted); + assert(decrypted instanceof ArrayBuffer); + assertEquals(new Uint8Array(decrypted), plainText); + + const badPlainText = new Uint8Array(plainText.byteLength + 1); + badPlainText.set(plainText, 0); + badPlainText.set(new Uint8Array([32]), plainText.byteLength); + await assertRejects(async () => { + // Should fail + await subtle.encrypt( + encryptAlgorithm, + keyPair.publicKey, + badPlainText, + ); + throw new TypeError("unreachable"); + }, DOMException); + } +}); + +Deno.test(async function testGenerateRSAKey() { + const subtle = window.crypto.subtle; + assert(subtle); + + const keyPair = await subtle.generateKey( + { + name: "RSA-PSS", + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-256", + }, + true, + ["sign", "verify"], + ); + + assert(keyPair.privateKey); + assert(keyPair.publicKey); + assertEquals(keyPair.privateKey.extractable, true); + assert(keyPair.privateKey.usages.includes("sign")); +}); + +Deno.test(async function testGenerateHMACKey() { + const key = await window.crypto.subtle.generateKey( + { + name: "HMAC", + hash: "SHA-512", + }, + true, + ["sign", "verify"], + ); + + assert(key); + assertEquals(key.extractable, true); + assert(key.usages.includes("sign")); +}); + +Deno.test(async function testECDSASignVerify() { + const key = await window.crypto.subtle.generateKey( + { + name: "ECDSA", + namedCurve: "P-384", + }, + true, + ["sign", "verify"], + ); + + const encoder = new TextEncoder(); + const encoded = encoder.encode("Hello, World!"); + const signature = await window.crypto.subtle.sign( + { name: "ECDSA", hash: "SHA-384" }, + key.privateKey, + encoded, + ); + + assert(signature); + assert(signature instanceof ArrayBuffer); + + const verified = await window.crypto.subtle.verify( + { hash: { name: "SHA-384" }, name: "ECDSA" }, + key.publicKey, + signature, + encoded, + ); + assert(verified); +}); + +// Tests the "bad paths" as a temporary replacement for sign_verify/ecdsa WPT. +Deno.test(async function testECDSASignVerifyFail() { + const key = await window.crypto.subtle.generateKey( + { + name: "ECDSA", + namedCurve: "P-384", + }, + true, + ["sign", "verify"], + ); + + const encoded = new Uint8Array([1]); + // Signing with a public key (InvalidAccessError) + await assertRejects(async () => { + await window.crypto.subtle.sign( + { name: "ECDSA", hash: "SHA-384" }, + key.publicKey, + new Uint8Array([1]), + ); + throw new TypeError("unreachable"); + }, DOMException); + + // Do a valid sign for later verifying. + const signature = await window.crypto.subtle.sign( + { name: "ECDSA", hash: "SHA-384" }, + key.privateKey, + encoded, + ); + + // Verifying with a private key (InvalidAccessError) + await assertRejects(async () => { + await window.crypto.subtle.verify( + { hash: { name: "SHA-384" }, name: "ECDSA" }, + key.privateKey, + signature, + encoded, + ); + throw new TypeError("unreachable"); + }, DOMException); +}); + +// https://github.com/denoland/deno/issues/11313 +Deno.test(async function testSignRSASSAKey() { + const subtle = window.crypto.subtle; + assert(subtle); + + const keyPair = await subtle.generateKey( + { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-256", + }, + true, + ["sign", "verify"], + ); + + assert(keyPair.privateKey); + assert(keyPair.publicKey); + assertEquals(keyPair.privateKey.extractable, true); + assert(keyPair.privateKey.usages.includes("sign")); + + const encoder = new TextEncoder(); + const encoded = encoder.encode("Hello, World!"); + + const signature = await window.crypto.subtle.sign( + { name: "RSASSA-PKCS1-v1_5" }, + keyPair.privateKey, + encoded, + ); + + assert(signature); +}); + +// deno-fmt-ignore +const rawKey = new Uint8Array([ + 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16 +]); + +const jwk: JsonWebKey = { + kty: "oct", + // unpadded base64 for rawKey. + k: "AQIDBAUGBwgJCgsMDQ4PEA", + alg: "HS256", + ext: true, + "key_ops": ["sign"], +}; + +Deno.test(async function subtleCryptoHmacImportExport() { + const key1 = await crypto.subtle.importKey( + "raw", + rawKey, + { name: "HMAC", hash: "SHA-256" }, + true, + ["sign"], + ); + const key2 = await crypto.subtle.importKey( + "jwk", + jwk, + { name: "HMAC", hash: "SHA-256" }, + true, + ["sign"], + ); + const actual1 = await crypto.subtle.sign( + { name: "HMAC" }, + key1, + new Uint8Array([1, 2, 3, 4]), + ); + + const actual2 = await crypto.subtle.sign( + { name: "HMAC" }, + key2, + new Uint8Array([1, 2, 3, 4]), + ); + // deno-fmt-ignore + const expected = new Uint8Array([ + 59, 170, 255, 216, 51, 141, 51, 194, + 213, 48, 41, 191, 184, 40, 216, 47, + 130, 165, 203, 26, 163, 43, 38, 71, + 23, 122, 222, 1, 146, 46, 182, 87, + ]); + assertEquals( + new Uint8Array(actual1), + expected, + ); + assertEquals( + new Uint8Array(actual2), + expected, + ); + + const exportedKey1 = await crypto.subtle.exportKey("raw", key1); + assertEquals(new Uint8Array(exportedKey1), rawKey); + + const exportedKey2 = await crypto.subtle.exportKey("jwk", key2); + assertEquals(exportedKey2, jwk); +}); + +// https://github.com/denoland/deno/issues/12085 +Deno.test(async function generateImportHmacJwk() { + const key = await crypto.subtle.generateKey( + { + name: "HMAC", + hash: "SHA-512", + }, + true, + ["sign"], + ); + assert(key); + assertEquals(key.type, "secret"); + assertEquals(key.extractable, true); + assertEquals(key.usages, ["sign"]); + + const exportedKey = await crypto.subtle.exportKey("jwk", key); + assertEquals(exportedKey.kty, "oct"); + assertEquals(exportedKey.alg, "HS512"); + assertEquals(exportedKey.key_ops, ["sign"]); + assertEquals(exportedKey.ext, true); + assert(typeof exportedKey.k == "string"); + assertEquals(exportedKey.k.length, 171); +}); + +// 2048-bits publicExponent=65537 +const pkcs8TestVectors = [ + // rsaEncryption + { pem: "tests/testdata/webcrypto/id_rsaEncryption.pem", hash: "SHA-256" }, +]; + +Deno.test({ permissions: { read: true } }, async function importRsaPkcs8() { + const pemHeader = "-----BEGIN PRIVATE KEY-----"; + const pemFooter = "-----END PRIVATE KEY-----"; + for (const { pem, hash } of pkcs8TestVectors) { + const keyFile = await Deno.readTextFile(pem); + const pemContents = keyFile.substring( + pemHeader.length, + keyFile.length - pemFooter.length, + ); + const binaryDerString = atob(pemContents); + const binaryDer = new Uint8Array(binaryDerString.length); + for (let i = 0; i < binaryDerString.length; i++) { + binaryDer[i] = binaryDerString.charCodeAt(i); + } + + const key = await crypto.subtle.importKey( + "pkcs8", + binaryDer, + { name: "RSA-PSS", hash }, + true, + ["sign"], + ); + + assert(key); + assertEquals(key.type, "private"); + assertEquals(key.extractable, true); + assertEquals(key.usages, ["sign"]); + const algorithm = key.algorithm as RsaHashedKeyAlgorithm; + assertEquals(algorithm.name, "RSA-PSS"); + assertEquals(algorithm.hash.name, hash); + assertEquals(algorithm.modulusLength, 2048); + assertEquals(algorithm.publicExponent, new Uint8Array([1, 0, 1])); + } +}); + +const nonInteroperableVectors = [ + // id-RSASSA-PSS (sha256) + // `openssl genpkey -algorithm rsa-pss -pkeyopt rsa_pss_keygen_md:sha256 -out id_rsassaPss.pem` + { pem: "tests/testdata/webcrypto/id_rsassaPss.pem", hash: "SHA-256" }, + // id-RSASSA-PSS (default parameters) + // `openssl genpkey -algorithm rsa-pss -out id_rsassaPss.pem` + { + pem: "tests/testdata/webcrypto/id_rsassaPss_default.pem", + hash: "SHA-1", + }, + // id-RSASSA-PSS (default hash) + // `openssl genpkey -algorithm rsa-pss -pkeyopt rsa_pss_keygen_saltlen:30 -out rsaPss_saltLen_30.pem` + { + pem: "tests/testdata/webcrypto/id_rsassaPss_saltLen_30.pem", + hash: "SHA-1", + }, +]; + +Deno.test( + { permissions: { read: true } }, + async function importNonInteroperableRsaPkcs8() { + const pemHeader = "-----BEGIN PRIVATE KEY-----"; + const pemFooter = "-----END PRIVATE KEY-----"; + for (const { pem, hash } of nonInteroperableVectors) { + const keyFile = await Deno.readTextFile(pem); + const pemContents = keyFile.substring( + pemHeader.length, + keyFile.length - pemFooter.length, + ); + const binaryDerString = atob(pemContents); + const binaryDer = new Uint8Array(binaryDerString.length); + for (let i = 0; i < binaryDerString.length; i++) { + binaryDer[i] = binaryDerString.charCodeAt(i); + } + + await assertRejects( + () => + crypto.subtle.importKey( + "pkcs8", + binaryDer, + { name: "RSA-PSS", hash }, + true, + ["sign"], + ), + DOMException, + "unsupported algorithm", + ); + } + }, +); + +// deno-fmt-ignore +const asn1AlgorithmIdentifier = new Uint8Array([ + 0x02, 0x01, 0x00, // INTEGER + 0x30, 0x0d, // SEQUENCE (2 elements) + 0x06, 0x09, // OBJECT IDENTIFIER + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, // 1.2.840.113549.1.1.1 (rsaEncryption) + 0x05, 0x00, // NULL +]); + +Deno.test(async function rsaExport() { + for (const algorithm of ["RSASSA-PKCS1-v1_5", "RSA-PSS", "RSA-OAEP"]) { + const keyPair = await crypto.subtle.generateKey( + { + name: algorithm, + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-256", + }, + true, + algorithm !== "RSA-OAEP" ? ["sign", "verify"] : ["encrypt", "decrypt"], + ); + + assert(keyPair.privateKey); + assert(keyPair.publicKey); + assertEquals(keyPair.privateKey.extractable, true); + + const exportedPrivateKey = await crypto.subtle.exportKey( + "pkcs8", + keyPair.privateKey, + ); + + assert(exportedPrivateKey); + assert(exportedPrivateKey instanceof ArrayBuffer); + + const pkcs8 = new Uint8Array(exportedPrivateKey); + assert(pkcs8.length > 0); + + assertEquals( + pkcs8.slice(4, asn1AlgorithmIdentifier.byteLength + 4), + asn1AlgorithmIdentifier, + ); + + const exportedPublicKey = await crypto.subtle.exportKey( + "spki", + keyPair.publicKey, + ); + + const spki = new Uint8Array(exportedPublicKey); + assert(spki.length > 0); + + assertEquals( + spki.slice(4, asn1AlgorithmIdentifier.byteLength + 1), + asn1AlgorithmIdentifier.slice(3), + ); + } +}); + +Deno.test(async function testHkdfDeriveBits() { + const rawKey = crypto.getRandomValues(new Uint8Array(16)); + const key = await crypto.subtle.importKey( + "raw", + rawKey, + { name: "HKDF", hash: "SHA-256" }, + false, + ["deriveBits"], + ); + const salt = crypto.getRandomValues(new Uint8Array(16)); + const info = crypto.getRandomValues(new Uint8Array(16)); + const result = await crypto.subtle.deriveBits( + { + name: "HKDF", + hash: "SHA-256", + salt: salt, + info: info, + }, + key, + 128, + ); + assertEquals(result.byteLength, 128 / 8); +}); + +Deno.test(async function testHkdfDeriveBitsWithLargeKeySize() { + const key = await crypto.subtle.importKey( + "raw", + new Uint8Array([0x00]), + "HKDF", + false, + ["deriveBits"], + ); + await assertRejects( + () => + crypto.subtle.deriveBits( + { + name: "HKDF", + hash: "SHA-1", + salt: new Uint8Array(), + info: new Uint8Array(), + }, + key, + ((20 * 255) << 3) + 8, + ), + DOMException, + "The length provided for HKDF is too large", + ); +}); + +Deno.test(async function testEcdhDeriveBitsWithShorterLength() { + const keypair = await crypto.subtle.generateKey( + { + name: "ECDH", + namedCurve: "P-384", + }, + true, + ["deriveBits", "deriveKey"], + ); + const result = await crypto.subtle.deriveBits( + { + name: "ECDH", + public: keypair.publicKey, + }, + keypair.privateKey, + 256, + ); + assertEquals(result.byteLength * 8, 256); +}); + +Deno.test(async function testEcdhDeriveBitsWithLongerLength() { + const keypair = await crypto.subtle.generateKey( + { + name: "ECDH", + namedCurve: "P-384", + }, + true, + ["deriveBits", "deriveKey"], + ); + await assertRejects( + () => + crypto.subtle.deriveBits( + { + name: "ECDH", + public: keypair.publicKey, + }, + keypair.privateKey, + 512, + ), + DOMException, + "Invalid length", + ); +}); + +Deno.test(async function testEcdhDeriveBitsWithNullLength() { + const keypair = await crypto.subtle.generateKey( + { + name: "ECDH", + namedCurve: "P-384", + }, + true, + ["deriveBits", "deriveKey"], + ); + const result = await crypto.subtle.deriveBits( + { + name: "ECDH", + public: keypair.publicKey, + }, + keypair.privateKey, + // @ts-ignore: necessary until .d.ts file allows passing null (see https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1416) + null, + ); + assertEquals(result.byteLength * 8, 384); +}); + +Deno.test(async function testDeriveKey() { + // Test deriveKey + const rawKey = crypto.getRandomValues(new Uint8Array(16)); + const key = await crypto.subtle.importKey( + "raw", + rawKey, + "PBKDF2", + false, + ["deriveKey", "deriveBits"], + ); + + const salt = crypto.getRandomValues(new Uint8Array(16)); + const derivedKey = await crypto.subtle.deriveKey( + { + name: "PBKDF2", + salt, + iterations: 1000, + hash: "SHA-256", + }, + key, + { name: "HMAC", hash: "SHA-256" }, + true, + ["sign"], + ); + + assert(derivedKey instanceof CryptoKey); + assertEquals(derivedKey.type, "secret"); + assertEquals(derivedKey.extractable, true); + assertEquals(derivedKey.usages, ["sign"]); + + const algorithm = derivedKey.algorithm as HmacKeyAlgorithm; + assertEquals(algorithm.name, "HMAC"); + assertEquals(algorithm.hash.name, "SHA-256"); + assertEquals(algorithm.length, 512); +}); + +Deno.test(async function testAesCbcEncryptDecrypt() { + const key = await crypto.subtle.generateKey( + { name: "AES-CBC", length: 128 }, + true, + ["encrypt", "decrypt"], + ); + + const iv = crypto.getRandomValues(new Uint8Array(16)); + const encrypted = await crypto.subtle.encrypt( + { + name: "AES-CBC", + iv, + }, + key as CryptoKey, + new Uint8Array([1, 2, 3, 4, 5, 6]), + ); + + assert(encrypted instanceof ArrayBuffer); + assertEquals(encrypted.byteLength, 16); + + const decrypted = await crypto.subtle.decrypt( + { + name: "AES-CBC", + iv, + }, + key as CryptoKey, + encrypted, + ); + + assert(decrypted instanceof ArrayBuffer); + assertEquals(decrypted.byteLength, 6); + assertEquals(new Uint8Array(decrypted), new Uint8Array([1, 2, 3, 4, 5, 6])); +}); + +Deno.test(async function testAesCtrEncryptDecrypt() { + async function aesCtrRoundTrip( + key: CryptoKey, + counter: Uint8Array, + length: number, + plainText: Uint8Array, + ) { + const cipherText = await crypto.subtle.encrypt( + { + name: "AES-CTR", + counter, + length, + }, + key, + plainText, + ); + + assert(cipherText instanceof ArrayBuffer); + assertEquals(cipherText.byteLength, plainText.byteLength); + assertNotEquals(new Uint8Array(cipherText), plainText); + + const decryptedText = await crypto.subtle.decrypt( + { + name: "AES-CTR", + counter, + length, + }, + key, + cipherText, + ); + + assert(decryptedText instanceof ArrayBuffer); + assertEquals(decryptedText.byteLength, plainText.byteLength); + assertEquals(new Uint8Array(decryptedText), plainText); + } + for (const keySize of [128, 192, 256]) { + const key = await crypto.subtle.generateKey( + { name: "AES-CTR", length: keySize }, + true, + ["encrypt", "decrypt"], + ) as CryptoKey; + + // test normal operation + for (const length of [128 /*, 64, 128 */]) { + const counter = crypto.getRandomValues(new Uint8Array(16)); + + await aesCtrRoundTrip( + key, + counter, + length, + new Uint8Array([1, 2, 3, 4, 5, 6]), + ); + } + + // test counter-wrapping + for (const length of [32, 64, 128]) { + const plaintext1 = crypto.getRandomValues(new Uint8Array(32)); + const counter = new Uint8Array(16); + + // fixed upper part + for (let off = 0; off < 16 - (length / 8); ++off) { + counter[off] = off; + } + const ciphertext1 = await crypto.subtle.encrypt( + { + name: "AES-CTR", + counter, + length, + }, + key, + plaintext1, + ); + + // Set lower [length] counter bits to all '1's + for (let off = 16 - (length / 8); off < 16; ++off) { + counter[off] = 0xff; + } + + // = [ 1 block of 0x00 + plaintext1 ] + const plaintext2 = new Uint8Array(48); + plaintext2.set(plaintext1, 16); + + const ciphertext2 = await crypto.subtle.encrypt( + { + name: "AES-CTR", + counter, + length, + }, + key, + plaintext2, + ); + + // If counter wrapped, 2nd block of ciphertext2 should be equal to 1st block of ciphertext1 + // since ciphertext1 used counter = 0x00...00 + // and ciphertext2 used counter = 0xFF..FF which should wrap to 0x00..00 without affecting + // higher bits + assertEquals( + new Uint8Array(ciphertext1), + new Uint8Array(ciphertext2).slice(16), + ); + } + } +}); + +Deno.test(async function testECDH() { + for (const keySize of [256, 384]) { + const keyPair = await crypto.subtle.generateKey( + { + name: "ECDH", + namedCurve: "P-" + keySize, + }, + true, + ["deriveBits"], + ); + + const derivedKey = await crypto.subtle.deriveBits( + { + name: "ECDH", + public: keyPair.publicKey, + }, + keyPair.privateKey, + keySize, + ); + + assert(derivedKey instanceof ArrayBuffer); + assertEquals(derivedKey.byteLength, keySize / 8); + } +}); + +Deno.test(async function testWrapKey() { + // Test wrapKey + const key = await crypto.subtle.generateKey( + { + name: "RSA-OAEP", + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-256", + }, + true, + ["wrapKey", "unwrapKey"], + ); + + const hmacKey = await crypto.subtle.generateKey( + { + name: "HMAC", + hash: "SHA-256", + length: 128, + }, + true, + ["sign"], + ); + + const wrappedKey = await crypto.subtle.wrapKey( + "raw", + hmacKey, + key.publicKey, + { + name: "RSA-OAEP", + label: new Uint8Array(8), + }, + ); + + assert(wrappedKey instanceof ArrayBuffer); + assertEquals(wrappedKey.byteLength, 512); +}); + +// Doesn't need to cover all cases. +// Only for testing types. +Deno.test(async function testAesKeyGen() { + const key = await crypto.subtle.generateKey( + { + name: "AES-GCM", + length: 256, + }, + true, + ["encrypt", "decrypt"], + ); + + assert(key); + assertEquals(key.type, "secret"); + assertEquals(key.extractable, true); + assertEquals(key.usages, ["encrypt", "decrypt"]); + const algorithm = key.algorithm as AesKeyAlgorithm; + assertEquals(algorithm.name, "AES-GCM"); + assertEquals(algorithm.length, 256); +}); + +Deno.test(async function testUnwrapKey() { + const subtle = crypto.subtle; + + const AES_KEY: AesKeyAlgorithm & AesCbcParams = { + name: "AES-CBC", + length: 128, + iv: new Uint8Array(16), + }; + + const RSA_KEY: RsaHashedKeyGenParams & RsaOaepParams = { + name: "RSA-OAEP", + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-1", + }; + + const aesKey = await subtle.generateKey(AES_KEY, true, [ + "encrypt", + "decrypt", + ]); + + const rsaKeyPair = await subtle.generateKey( + { + name: "RSA-OAEP", + hash: "SHA-1", + publicExponent: new Uint8Array([1, 0, 1]), + modulusLength: 2048, + }, + false, + ["wrapKey", "encrypt", "unwrapKey", "decrypt"], + ); + + const enc = await subtle.wrapKey( + "raw", + aesKey, + rsaKeyPair.publicKey, + RSA_KEY, + ); + const unwrappedKey = await subtle.unwrapKey( + "raw", + enc, + rsaKeyPair.privateKey, + RSA_KEY, + AES_KEY, + false, + ["encrypt", "decrypt"], + ); + + assert(unwrappedKey instanceof CryptoKey); + assertEquals(unwrappedKey.type, "secret"); + assertEquals(unwrappedKey.extractable, false); + assertEquals(unwrappedKey.usages, ["encrypt", "decrypt"]); +}); + +Deno.test(async function testDecryptWithInvalidIntializationVector() { + // deno-fmt-ignore + const data = new Uint8Array([42,42,42,42,42,42,42,42,42,42,42,42,42,42,42]); + const key = await crypto.subtle.importKey( + "raw", + new Uint8Array(16), + { name: "AES-CBC", length: 256 }, + true, + ["encrypt", "decrypt"], + ); + // deno-fmt-ignore + const initVector = new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]); + const encrypted = await crypto.subtle.encrypt( + { name: "AES-CBC", iv: initVector }, + key, + data, + ); + // deno-fmt-ignore + const initVector2 = new Uint8Array([15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]); + await assertRejects(async () => { + await crypto.subtle.decrypt( + { name: "AES-CBC", iv: initVector2 }, + key, + encrypted, + ); + }, DOMException); +}); + +const jwtRSAKeys = { + "1024": { + size: 1024, + publicJWK: { + kty: "RSA", + n: "zZn4sRGfjQos56yL_Qy1R9NI-THMnFynn94g5RxA6wGrJh4BJT3x6I9x0IbpS3q-d4ORA6R2vuDMh8dDFRr9RDH6XY-gUScc9U5Jz3UA2KmVfsCbnUPvcAmMV_ENA7_TF0ivVjuIFodyDTx7EKHNVTrHHSlrbt7spbmcivs23Zc", + e: "AQAB", + }, + privateJWK: { + kty: "RSA", + n: "zZn4sRGfjQos56yL_Qy1R9NI-THMnFynn94g5RxA6wGrJh4BJT3x6I9x0IbpS3q-d4ORA6R2vuDMh8dDFRr9RDH6XY-gUScc9U5Jz3UA2KmVfsCbnUPvcAmMV_ENA7_TF0ivVjuIFodyDTx7EKHNVTrHHSlrbt7spbmcivs23Zc", + e: "AQAB", + d: "YqIK_GdH85F-GWZdgfgmv15NE78gOaL5h2g4v7DeM9-JC7A5PHSLKNYn87HFGcC4vv0PBIBRtyCA_mJJfEaGWORVCOXSBpWNepMYpio52n3w5uj5UZEsBnbtZc0EtWhVF2Auqa7VbiKrWcQUEgEI8V0gE5D4tyBg8GXv9975dQE", + p: "9BrAg5L1zfqGPuWJDuDCBX-TmtZdrOI3Ys4ZaN-yMPlTjwWSEPO0qnfjEZcw2VgXHgJJmbVco6TxckJCmEYqeQ", + q: "157jDJ1Ya5nmQvTPbhKAPAeMWogxCyaQTkBrp30pEKd6mGSB385hqr4BIk8s3f7MdXpM-USpaZgUoT4o_2VEjw", + dp: + "qdd_QUzcaB-6jkKo1Ug-1xKIAgDLFsIjJUUfWt_iHL8ti2Kl2dOnTcCypgebPm5TT1bqHN-agGYAdK5zpX2UiQ", + dq: + "hNRfwOSplNfhLvxLUN7a2qA3yYm-1MSz_1DWQP7srlLORlUcYPht2FZmsnEeDcAqynBGPQUcbG2Av_hgHz2OZw", + qi: + "zbpJQAhinrxSbVKxBQ2EZGFUD2e3WCXbAJRYpk8HVQ5AA52OhKTicOye2hEHnrgpFKzC8iznTsCG3FMkvwcj4Q", + }, + }, + + "2048": { + size: 2048, + publicJWK: { + kty: "RSA", + // unpadded base64 for rawKey. + n: "09eVwAhT9SPBxdEN-74BBeEANGaVGwqH-YglIc4VV7jfhR2by5ivzVq8NCeQ1_ACDIlTDY8CTMQ5E1c1SEXmo_T7q84XUGXf8U9mx6uRg46sV7fF-hkwJR80BFVsvWxp4ahPlVJYj__94ft7rIVvchb5tyalOjrYFCJoFnSgq-i3ZjU06csI9XnO5klINucD_Qq0vUhO23_Add2HSYoRjab8YiJJR_Eths7Pq6HHd2RSXmwYp5foRnwe0_U75XmesHWDJlJUHYbwCZo0kP9G8g4QbucwU-MSNBkZOO2x2ZtZNexpHd0ThkATbnNlpVG_z2AGNORp_Ve3rlXwrGIXXw", + e: "AQAB", + }, + privateJWK: { + kty: "RSA", + // unpadded base64 for rawKey. + n: "09eVwAhT9SPBxdEN-74BBeEANGaVGwqH-YglIc4VV7jfhR2by5ivzVq8NCeQ1_ACDIlTDY8CTMQ5E1c1SEXmo_T7q84XUGXf8U9mx6uRg46sV7fF-hkwJR80BFVsvWxp4ahPlVJYj__94ft7rIVvchb5tyalOjrYFCJoFnSgq-i3ZjU06csI9XnO5klINucD_Qq0vUhO23_Add2HSYoRjab8YiJJR_Eths7Pq6HHd2RSXmwYp5foRnwe0_U75XmesHWDJlJUHYbwCZo0kP9G8g4QbucwU-MSNBkZOO2x2ZtZNexpHd0ThkATbnNlpVG_z2AGNORp_Ve3rlXwrGIXXw", + e: "AQAB", + d: "H4xboN2co0VP9kXL71G8lUOM5EDis8Q9u8uqu_4U75t4rjpamVeD1vFMVfgOehokM_m_hKVnkkcmuNqj9L90ObaiRFPM5QxG7YkFpXbHlPAKeoXD1hsqMF0VQg_2wb8DhberInHA_rEA_kaVhHvavQLu7Xez45gf1d_J4I4931vjlCB6cupbLL0H5hHsxbMsX_5nnmAJdL_U3gD-U7ZdQheUPhDBJR2KeGzvnTm3KVKpOnwn-1Cd45MU4-KDdP0FcBVEuBsSrsQHliTaciBgkbyj__BangPj3edDxTkb-fKkEvhkXRjAoJs1ixt8nfSGDce9cM_GqAX9XGb4s2QkAQ", + dp: + "mM82RBwzGzi9LAqjGbi-badLtHRRBoH9sfMrJuOtzxRnmwBFccg_lwy-qAhUTqnN9kvD0H1FzXWzoFPFJbyi-AOmumYGpWm_PvzQGldne5CPJ02pYaeg-t1BePsT3OpIq0Am8E2Kjf9polpRJwIjO7Kx8UJKkhg5bISnsy0V8wE", + dq: + "ZlM4AvrWIpXwqsH_5Q-6BsLJdbnN_GypFCXoT9VXniXncSBZIWCkgDndBdWkSzyzIN65NiMRBfZaf9yduTFj4kvOPwb3ch3J0OxGJk0Ary4OGSlS1zNwMl93ALGal1FzpWUuiia9L9RraGqXAUr13L7TIIMRobRjpAV-z7M-ruM", + p: "7VwGt_tJcAFQHrmDw5dM1EBru6fidM45NDv6VVOEbxKuD5Sh2EfAHfm5c6oouA1gZqwvKH0sn_XpB1NsyYyHEQd3sBVdK0zRjTo-E9mRP-1s-LMd5YDXVq6HE339nxpXsmO25slQEF6zBrj1bSNNXBFc7fgDnlq-HIeleMvsY_E", + q: "5HqMHLzb4IgXhUl4pLz7E4kjY8PH2YGzaQfK805zJMbOXzmlZK0hizKo34Qqd2nB9xos7QgzOYQrNfSWheARwVsSQzAE0vGvw3zHIPP_lTtChBlCTPctQcURjw4dXcnK1oQ-IT321FNOW3EO-YTsyGcypJqJujlZrLbxYjOjQE8", + qi: + "OQXzi9gypDnpdHatIi0FaUGP8LSzfVH0AUugURJXs4BTJpvA9y4hcpBQLrcl7H_vq6kbGmvC49V-9I5HNVX_AuxGIXKuLZr5WOxPq8gLTqHV7X5ZJDtWIP_nq2NNgCQQyNNRrxebiWlwGK9GnX_unewT6jopI_oFhwp0Q13rBR0", + }, + }, + "4096": { + size: 4096, + publicJWK: { + kty: "RSA", + n: "2qr2TL2c2JmbsN0OLIRnaAB_ZKb1-Gh9H0qb4lrBuDaqkW_eFPwT-JIsvnNJvDT7BLJ57tTMIj56ZMtv6efSSTWSk9MOoW2J1K_iEretZ2cegB_aRX7qQVjnoFsz9U02BKfAIUT0o_K7b9G08d1rrAUohi_SVQhwObodg7BddMbKUmz70QNIS487LN44WUVnn9OgE9atTYUARNukT0DuQb3J-K20ksTuVujXbSelohDmLobqlGoi5sY_548Qs9BtFmQ2nGuEHNB2zdlZ5EvEqbUFVZ2QboG6jXdoos6qcwdgUvAhj1Hz10Ngic_RFqL7bNDoIOzNp66hdA35uxbwuaygZ16ikxoPj7eTYud1hrkyQCgeGw2YhCiKIE6eos_U5dL7WHRD5aSkkzsgXtnF8pVmStsuf0QcdAoC-eeCex0tSTgRw9AtGTz8Yr1tGQD9l_580zAXnE6jmrwRRQ68EEA7vohGov3tnG8pGyg_zcxeADLtPlfTc1tEwmh3SGrioDClioYCipm1JvkweEgP9eMPpEC8SgRU1VNDSVe1SF4uNsH8vA7PHFKfg6juqJEc5ht-l10FYER-Qq6bZXsU2oNcfE5SLDeLTWmxiHmxK00M8ABMFIV5gUkPoMiWcl87O6XwzA2chsIERp7Vb-Vn2O-EELiXzv7lPhc6fTGQ0Nc", + e: "AQAB", + }, + privateJWK: { + kty: "RSA", + n: "2qr2TL2c2JmbsN0OLIRnaAB_ZKb1-Gh9H0qb4lrBuDaqkW_eFPwT-JIsvnNJvDT7BLJ57tTMIj56ZMtv6efSSTWSk9MOoW2J1K_iEretZ2cegB_aRX7qQVjnoFsz9U02BKfAIUT0o_K7b9G08d1rrAUohi_SVQhwObodg7BddMbKUmz70QNIS487LN44WUVnn9OgE9atTYUARNukT0DuQb3J-K20ksTuVujXbSelohDmLobqlGoi5sY_548Qs9BtFmQ2nGuEHNB2zdlZ5EvEqbUFVZ2QboG6jXdoos6qcwdgUvAhj1Hz10Ngic_RFqL7bNDoIOzNp66hdA35uxbwuaygZ16ikxoPj7eTYud1hrkyQCgeGw2YhCiKIE6eos_U5dL7WHRD5aSkkzsgXtnF8pVmStsuf0QcdAoC-eeCex0tSTgRw9AtGTz8Yr1tGQD9l_580zAXnE6jmrwRRQ68EEA7vohGov3tnG8pGyg_zcxeADLtPlfTc1tEwmh3SGrioDClioYCipm1JvkweEgP9eMPpEC8SgRU1VNDSVe1SF4uNsH8vA7PHFKfg6juqJEc5ht-l10FYER-Qq6bZXsU2oNcfE5SLDeLTWmxiHmxK00M8ABMFIV5gUkPoMiWcl87O6XwzA2chsIERp7Vb-Vn2O-EELiXzv7lPhc6fTGQ0Nc", + e: "AQAB", + d: "uXPRXBhcE5-DWabBRKQuhxgU8ype5gTISWefeYP7U96ZHqu_sBByZ5ihdgyU9pgAZGVx4Ep9rnVKnH2lNr2zrP9Qhyqy99nM0aMxmypIWLAuP__DwLj4t99M4sU29c48CAq1egHfccSFjzpNuetOTCA71EJuokt70pm0OmGzgTyvjuR7VTLxd5PMXitBowSn8_cphmnFpT8tkTiuy8CH0R3DU7MOuINomDD1s8-yPBcVAVTPUnwJiauNuzestLQKMLlhT5wn-cAbYk36XRKdgkjSc2AkhHRl4WDqT1nzWYdh_DVIYSLiKSktkPO9ovMrRYiPtozfhl0m9SR9Ll0wXtcnnDlWXc_MSGpw18vmUBSJ4PIhkiFsvLn-db3wUkA8uve-iqqfk0sxlGWughWx03kGmZDmprWbXugCBHfsI4X93w4exznXH_tapxPnmjbhVUQR6p41MvO2lcHWPLwGJgLIoejBHpnn3TmMN0UjFZki7q9B_dJ3fXh0mX9DzAlC0sil1NgCPhMPq02393_giinQquMknrBvgKxGSfGUrDKuflCx611ZZlRM3R7YMX2OIy1g4DyhPzBVjxRMtm8PnIs3m3Hi-O-C_PHF93w9J8Wqd0yIw7SpavDqZXLPC6Cqi8K7MBZyVECXHtRj1bBqT-h_xZmFCDjSU0NqfOdgApE", + p: "9NrXwq4kY9kBBOwLoFZVQc4kJI_NbKa_W9FLdQdRIbMsZZHXJ3XDUR9vJAcaaR75WwIC7X6N55nVtWTq28Bys9flJ9RrCTfciOntHEphBhYaL5ZTUl-6khYmsOf_psff2VaOOCvHGff5ejuOmBQxkw2E-cv7knRgWFHoLWpku2NJIMuGHt9ks7OAUfIZVYl9YJnw4FYUzhgaxemknjLeZ8XTkGW2zckzF-d95YI9i8zD80Umubsw-YxriSfqFQ0rGHBsbQ8ZOTd_KJju42BWnXIjNDYmjFUqdzVjI4XQ8EGrCEf_8_iwphGyXD7LOJ4fqd97B3bYpoRTPnCgY_SEHQ", + q: "5J758_NeKr1XPZiLxXohYQQnh0Lb4QtGZ1xzCgjhBQLcIBeTOG_tYjCues9tmLt93LpJfypSJ-SjDLwkR2s069_IByYGpxyeGtV-ulqYhSw1nD2CXKMDGyO5jXDs9tJrS_UhfobXKQH03CRdFugyPkSNmXY-AafFynG7xLr7oYBC05FnhUXPm3VBTPt9K-BpqwYd_h9vkAWeprSPo83UlwcLMupSJY9LaHxhRdz2yi0ZKNwXXHRwcszGjDBvvzUcCYbqWqjzbEvFY6KtH8Jh4LhM46rHaoEOTernJsDF6a6W8Df88RthqTExcwnaQf0O_dlbjSxEIPfbxx8t1EQugw", + dp: + "4Y7Hu5tYAnLhMXuQqj9dgqU3PkcKYdCp7xc6f7Ah2P2JJHfYz4z4RD7Ez1eLyNKzulZ8A_PVHUjlSZiRkaYTBAEaJDrV70P6cFWuC6WpA0ZREQ1V7EgrQnANbGILa8QsPbYyhSQu4YlB1IwQq5_OmzyVBtgWA7AZIMMzMsMT0FuB_if-gWohBjmRN-vh0p45VUf6UW568-_YmgDFmMYbg1UFs7s_TwrNenPR0h7MO4CB8hP9vJLoZrooRczzIjljPbwy5bRG9CJfjTJ0vhj9MUT3kR1hHV1HJVGU5iBbfTfBKnvJGSI6-IDM4ZUm-B0R5hbs6s9cfOjhFmACIJIbMQ", + dq: + "gT4iPbfyHyVEwWyQb4X4grjvg7bXSKSwG1SXMDAOzV9tg7LwJjKYNy8gJAtJgNNVdsfVLs-E_Epzpoph1AIWO9YZZXkov6Yc9zyEVONMX9S7ReU74hTBd8E9b2lMfMg9ogYk9jtSPTt-6kigW4fOh4cHqZ6_tP3cgfLD3JZ8FDPHE4WaySvLDq49yUBO5dQKyIU_xV6OGhQjOUjP_yEoMmzn9tOittsIHTxbXTxqQ6c1FvU9O6YTv8Jl5_Cl66khfX1I1RG38xvurcHULyUbYgeuZ_Iuo9XreT73h9_owo9RguGT29XH4vcNZmRGf5GIvRb4e5lvtleIZkwJA3u78w", + qi: + "JHmVKb1zwW5iRR6RCeexYnh2fmY-3DrPSdM8Dxhr0F8dayi-tlRqEdnG0hvp45n8gLUskWWcB9EXlUJObZGKDfGuxgMa3g_xeLA2vmFQ12MxPsyH4iCNZvsgmGxx7TuOHrnDh5EBVnM4_de63crEJON2sYI8Ozi-xp2OEmAr2seWKq4sxkFni6exLhqb-NE4m9HMKlng1EtQh2rLBFG1VYD3SYYpMLc5fxzqGvSxn3Fa-Xgg-IZPY3ubrcm52KYgmLUGmnYStfVqGSWSdhDXHlNgI5pdAA0FzpyBk3ZX-JsxhwcnneKrYBBweq06kRMGWgvdbdAQ-7wSeGqqj5VPwA", + }, + }, +}; + +Deno.test(async function testImportRsaJwk() { + const subtle = window.crypto.subtle; + assert(subtle); + + for (const [_key, jwkData] of Object.entries(jwtRSAKeys)) { + const { size, publicJWK, privateJWK } = jwkData; + if (size < 2048) { + continue; + } + + // 1. Test import PSS + for (const hash of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) { + const hashMapPSS: Record<string, string> = { + "SHA-1": "PS1", + "SHA-256": "PS256", + "SHA-384": "PS384", + "SHA-512": "PS512", + }; + + if (size == 1024 && hash == "SHA-512") { + continue; + } + + const privateKeyPSS = await crypto.subtle.importKey( + "jwk", + { + alg: hashMapPSS[hash], + ...privateJWK, + ext: true, + "key_ops": ["sign"], + }, + { name: "RSA-PSS", hash }, + true, + ["sign"], + ); + + const publicKeyPSS = await crypto.subtle.importKey( + "jwk", + { + alg: hashMapPSS[hash], + ...publicJWK, + ext: true, + "key_ops": ["verify"], + }, + { name: "RSA-PSS", hash }, + true, + ["verify"], + ); + + const signaturePSS = await crypto.subtle.sign( + { name: "RSA-PSS", saltLength: 32 }, + privateKeyPSS, + new Uint8Array([1, 2, 3, 4]), + ); + + const verifyPSS = await crypto.subtle.verify( + { name: "RSA-PSS", saltLength: 32 }, + publicKeyPSS, + signaturePSS, + new Uint8Array([1, 2, 3, 4]), + ); + assert(verifyPSS); + } + + // 2. Test import PKCS1 + for (const hash of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"]) { + const hashMapPKCS1: Record<string, string> = { + "SHA-1": "RS1", + "SHA-256": "RS256", + "SHA-384": "RS384", + "SHA-512": "RS512", + }; + + if (size == 1024 && hash == "SHA-512") { + continue; + } + + const privateKeyPKCS1 = await crypto.subtle.importKey( + "jwk", + { + alg: hashMapPKCS1[hash], + ...privateJWK, + ext: true, + "key_ops": ["sign"], + }, + { name: "RSASSA-PKCS1-v1_5", hash }, + true, + ["sign"], + ); + + const publicKeyPKCS1 = await crypto.subtle.importKey( + "jwk", + { + alg: hashMapPKCS1[hash], + ...publicJWK, + ext: true, + "key_ops": ["verify"], + }, + { name: "RSASSA-PKCS1-v1_5", hash }, + true, + ["verify"], + ); + + const signaturePKCS1 = await crypto.subtle.sign( + { name: "RSASSA-PKCS1-v1_5", saltLength: 32 }, + privateKeyPKCS1, + new Uint8Array([1, 2, 3, 4]), + ); + + const verifyPKCS1 = await crypto.subtle.verify( + { name: "RSASSA-PKCS1-v1_5", saltLength: 32 }, + publicKeyPKCS1, + signaturePKCS1, + new Uint8Array([1, 2, 3, 4]), + ); + assert(verifyPKCS1); + } + + // 3. Test import OAEP + for ( + const { hash, plainText } of hashPlainTextVector + ) { + const hashMapOAEP: Record<string, string> = { + "SHA-1": "RSA-OAEP", + "SHA-256": "RSA-OAEP-256", + "SHA-384": "RSA-OAEP-384", + "SHA-512": "RSA-OAEP-512", + }; + + if (size == 1024 && hash == "SHA-512") { + continue; + } + + const encryptAlgorithm = { name: "RSA-OAEP" }; + + const privateKeyOAEP = await crypto.subtle.importKey( + "jwk", + { + alg: hashMapOAEP[hash], + ...privateJWK, + ext: true, + "key_ops": ["decrypt"], + }, + { ...encryptAlgorithm, hash }, + true, + ["decrypt"], + ); + + const publicKeyOAEP = await crypto.subtle.importKey( + "jwk", + { + alg: hashMapOAEP[hash], + ...publicJWK, + ext: true, + "key_ops": ["encrypt"], + }, + { ...encryptAlgorithm, hash }, + true, + ["encrypt"], + ); + const cipherText = await subtle.encrypt( + encryptAlgorithm, + publicKeyOAEP, + plainText, + ); + + assert(cipherText); + assert(cipherText.byteLength > 0); + assertEquals(cipherText.byteLength * 8, size); + assert(cipherText instanceof ArrayBuffer); + + const decrypted = await subtle.decrypt( + encryptAlgorithm, + privateKeyOAEP, + cipherText, + ); + assert(decrypted); + assert(decrypted instanceof ArrayBuffer); + assertEquals(new Uint8Array(decrypted), plainText); + } + } +}); + +const jwtECKeys = { + "256": { + size: 256, + algo: "ES256", + publicJWK: { + kty: "EC", + crv: "P-256", + x: "0hCwpvnZ8BKGgFi0P6T0cQGFQ7ugDJJQ35JXwqyuXdE", + y: "zgN1UtSBRQzjm00QlXAbF1v6s0uObAmeGPHBmDWDYeg", + }, + privateJWK: { + kty: "EC", + crv: "P-256", + x: "0hCwpvnZ8BKGgFi0P6T0cQGFQ7ugDJJQ35JXwqyuXdE", + y: "zgN1UtSBRQzjm00QlXAbF1v6s0uObAmeGPHBmDWDYeg", + d: "E9M6LVq_nPnrsh_4YNSu_m5W53eQ9N7ptAiE69M1ROo", + }, + }, + "384": { + size: 384, + algo: "ES384", + publicJWK: { + kty: "EC", + crv: "P-384", + x: "IZwU1mYXs27G2IVrOFtzp000T9iude8EZDXdpU47RL1fvevR0I3Wni19wdwhjLQ1", + y: "vSgTjMd4M3qEL2vWGyQOdCSfJGZ8KlgQp2v8KOAzX4imUB3sAZdtqFr7AIactqzo", + }, + privateJWK: { + kty: "EC", + crv: "P-384", + x: "IZwU1mYXs27G2IVrOFtzp000T9iude8EZDXdpU47RL1fvevR0I3Wni19wdwhjLQ1", + y: "vSgTjMd4M3qEL2vWGyQOdCSfJGZ8KlgQp2v8KOAzX4imUB3sAZdtqFr7AIactqzo", + d: "RTe1mQeE08LSLpao-S-hqkku6HPldqQVguFEGDyYiNEOa560ztSyzEAS5KxeqEBz", + }, + }, +}; + +type JWK = Record<string, string>; + +function equalJwk(expected: JWK, got: JWK): boolean { + const fields = Object.keys(expected); + + for (let i = 0; i < fields.length; i++) { + const fieldName = fields[i]; + + if (!(fieldName in got)) { + return false; + } + if (expected[fieldName] !== got[fieldName]) { + return false; + } + } + + return true; +} + +Deno.test(async function testImportExportEcDsaJwk() { + const subtle = crypto.subtle; + assert(subtle); + + for ( + const [_key, keyData] of Object.entries(jwtECKeys) + ) { + const { publicJWK, privateJWK, algo } = keyData; + + // 1. Test import EcDsa + const privateKeyECDSA = await subtle.importKey( + "jwk", + { + alg: algo, + ...privateJWK, + ext: true, + "key_ops": ["sign"], + }, + { name: "ECDSA", namedCurve: privateJWK.crv }, + true, + ["sign"], + ); + const expPrivateKeyJWK = await subtle.exportKey( + "jwk", + privateKeyECDSA, + ); + assert(equalJwk(privateJWK, expPrivateKeyJWK as JWK)); + + const publicKeyECDSA = await subtle.importKey( + "jwk", + { + alg: algo, + ...publicJWK, + ext: true, + "key_ops": ["verify"], + }, + { name: "ECDSA", namedCurve: publicJWK.crv }, + true, + ["verify"], + ); + + const expPublicKeyJWK = await subtle.exportKey( + "jwk", + publicKeyECDSA, + ); + + assert(equalJwk(publicJWK, expPublicKeyJWK as JWK)); + + const signatureECDSA = await subtle.sign( + { name: "ECDSA", hash: `SHA-${keyData.size}` }, + privateKeyECDSA, + new Uint8Array([1, 2, 3, 4]), + ); + + const verifyECDSA = await subtle.verify( + { name: "ECDSA", hash: `SHA-${keyData.size}` }, + publicKeyECDSA, + signatureECDSA, + new Uint8Array([1, 2, 3, 4]), + ); + assert(verifyECDSA); + } +}); + +Deno.test(async function testImportEcDhJwk() { + const subtle = crypto.subtle; + assert(subtle); + + for ( + const [_key, jwkData] of Object.entries(jwtECKeys) + ) { + const { size, publicJWK, privateJWK } = jwkData; + + // 1. Test import EcDsa + const privateKeyECDH = await subtle.importKey( + "jwk", + { + ...privateJWK, + ext: true, + "key_ops": ["deriveBits"], + }, + { name: "ECDH", namedCurve: privateJWK.crv }, + true, + ["deriveBits"], + ); + + const expPrivateKeyJWK = await subtle.exportKey( + "jwk", + privateKeyECDH, + ); + assert(equalJwk(privateJWK, expPrivateKeyJWK as JWK)); + + const publicKeyECDH = await subtle.importKey( + "jwk", + { + ...publicJWK, + ext: true, + "key_ops": [], + }, + { name: "ECDH", namedCurve: publicJWK.crv }, + true, + [], + ); + const expPublicKeyJWK = await subtle.exportKey( + "jwk", + publicKeyECDH, + ); + assert(equalJwk(publicJWK, expPublicKeyJWK as JWK)); + + const derivedKey = await subtle.deriveBits( + { + name: "ECDH", + public: publicKeyECDH, + }, + privateKeyECDH, + size, + ); + + assert(derivedKey instanceof ArrayBuffer); + assertEquals(derivedKey.byteLength, size / 8); + } +}); + +const ecTestKeys = [ + { + size: 256, + namedCurve: "P-256", + signatureLength: 64, + // deno-fmt-ignore + raw: new Uint8Array([ + 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, + 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, + 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, 112, 27, + 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, 131, 97, + 232, + ]), + // deno-fmt-ignore + spki: new Uint8Array([ + 48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, + 61, 3, 1, 7, 3, 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, + 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, + 87, 194, 172, 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, + 77, 16, 149, 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, + 193, 152, 53, 131, 97, 232, + ]), + // deno-fmt-ignore + pkcs8: new Uint8Array([ + 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, + 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 19, 211, 58, + 45, 90, 191, 156, 249, 235, 178, 31, 248, 96, 212, 174, 254, 110, 86, 231, + 119, 144, 244, 222, 233, 180, 8, 132, 235, 211, 53, 68, 234, 161, 68, 3, + 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, + 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, + 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, + 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, + 131, 97, 232, + ]), + }, + { + size: 384, + namedCurve: "P-384", + signatureLength: 96, + // deno-fmt-ignore + raw: new Uint8Array([ + 4, 118, 64, 176, 165, 100, 177, 112, 49, 254, 58, 53, 158, 63, 73, 200, + 148, 248, 242, 216, 186, 80, 92, 160, 53, 64, 232, 157, 19, 1, 12, 226, + 115, 51, 42, 143, 98, 206, 55, 220, 108, 78, 24, 71, 157, 21, 120, 126, + 104, 157, 86, 48, 226, 110, 96, 52, 48, 77, 170, 9, 231, 159, 26, 165, + 200, 26, 164, 99, 46, 227, 169, 105, 172, 225, 60, 102, 141, 145, 139, + 165, 47, 72, 53, 17, 17, 246, 161, 220, 26, 21, 23, 219, 1, 107, 185, + 163, 215, + ]), + // deno-fmt-ignore + spki: new Uint8Array([ + 48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, + 34, 3, 98, 0, 4, 118, 64, 176, 165, 100, 177, 112, 49, 254, 58, 53, 158, + 63, 73, 200, 148, 248, 242, 216, 186, 80, 92, 160, 53, 64, 232, 157, 19, + 1, 12, 226, 115, 51, 42, 143, 98, 206, 55, 220, 108, 78, 24, 71, 157, 21, + 120, 126, 104, 157, 86, 48, 226, 110, 96, 52, 48, 77, 170, 9, 231, 159, + 26, 165, 200, 26, 164, 99, 46, 227, 169, 105, 172, 225, 60, 102, 141, + 145, 139, 165, 47, 72, 53, 17, 17, 246, 161, 220, 26, 21, 23, 219, 1, + 107, 185, 163, 215, + ]), + // deno-fmt-ignore + pkcs8: new Uint8Array([ + 48, 129, 182, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, + 129, 4, 0, 34, 4, 129, 158, 48, 129, 155, 2, 1, 1, 4, 48, 202, 7, 195, + 169, 124, 170, 81, 169, 253, 127, 56, 28, 98, 90, 255, 165, 72, 142, 133, + 138, 237, 200, 176, 92, 179, 192, 83, 28, 47, 118, 157, 152, 47, 65, 133, + 140, 50, 83, 182, 191, 224, 96, 216, 179, 59, 150, 15, 233, 161, 100, 3, + 98, 0, 4, 118, 64, 176, 165, 100, 177, 112, 49, 254, 58, 53, 158, 63, 73, + 200, 148, 248, 242, 216, 186, 80, 92, 160, 53, 64, 232, 157, 19, 1, 12, + 226, 115, 51, 42, 143, 98, 206, 55, 220, 108, 78, 24, 71, 157, 21, 120, + 126, 104, 157, 86, 48, 226, 110, 96, 52, 48, 77, 170, 9, 231, 159, 26, + 165, 200, 26, 164, 99, 46, 227, 169, 105, 172, 225, 60, 102, 141, 145, + 139, 165, 47, 72, 53, 17, 17, 246, 161, 220, 26, 21, 23, 219, 1, 107, + 185, 163, 215, + ]), + }, +]; + +Deno.test(async function testImportEcSpkiPkcs8() { + const subtle = window.crypto.subtle; + assert(subtle); + + for ( + const { namedCurve, raw, spki, pkcs8, signatureLength } of ecTestKeys + ) { + const rawPublicKeyECDSA = await subtle.importKey( + "raw", + raw, + { name: "ECDSA", namedCurve }, + true, + ["verify"], + ); + + const expPublicKeyRaw = await subtle.exportKey( + "raw", + rawPublicKeyECDSA, + ); + + assertEquals(new Uint8Array(expPublicKeyRaw), raw); + + const privateKeyECDSA = await subtle.importKey( + "pkcs8", + pkcs8, + { name: "ECDSA", namedCurve }, + true, + ["sign"], + ); + + const expPrivateKeyPKCS8 = await subtle.exportKey( + "pkcs8", + privateKeyECDSA, + ); + + assertEquals(new Uint8Array(expPrivateKeyPKCS8), pkcs8); + + const expPrivateKeyJWK = await subtle.exportKey( + "jwk", + privateKeyECDSA, + ); + + assertEquals(expPrivateKeyJWK.crv, namedCurve); + + const publicKeyECDSA = await subtle.importKey( + "spki", + spki, + { name: "ECDSA", namedCurve }, + true, + ["verify"], + ); + + const expPublicKeySPKI = await subtle.exportKey( + "spki", + publicKeyECDSA, + ); + + assertEquals(new Uint8Array(expPublicKeySPKI), spki); + + const expPublicKeyJWK = await subtle.exportKey( + "jwk", + publicKeyECDSA, + ); + + assertEquals(expPublicKeyJWK.crv, namedCurve); + + for ( + const hash of ["SHA-1", "SHA-256", "SHA-384", "SHA-512"] + ) { + if ( + (hash == "SHA-256" && namedCurve == "P-256") || + (hash == "SHA-384" && namedCurve == "P-384") + ) { + const signatureECDSA = await subtle.sign( + { name: "ECDSA", hash }, + privateKeyECDSA, + new Uint8Array([1, 2, 3, 4]), + ); + + const verifyECDSA = await subtle.verify( + { name: "ECDSA", hash }, + publicKeyECDSA, + signatureECDSA, + new Uint8Array([1, 2, 3, 4]), + ); + assert(verifyECDSA); + } else { + await assertRejects( + async () => { + await subtle.sign( + { name: "ECDSA", hash }, + privateKeyECDSA, + new Uint8Array([1, 2, 3, 4]), + ); + }, + DOMException, + "Not implemented", + ); + await assertRejects( + async () => { + await subtle.verify( + { name: "ECDSA", hash }, + publicKeyECDSA, + new Uint8Array(signatureLength), + new Uint8Array([1, 2, 3, 4]), + ); + }, + DOMException, + "Not implemented", + ); + } + } + } +}); + +Deno.test(async function testAesGcmEncrypt() { + const key = await crypto.subtle.importKey( + "raw", + new Uint8Array(16), + { name: "AES-GCM", length: 256 }, + true, + ["encrypt", "decrypt"], + ); + + const nonces = [{ + iv: new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]), + ciphertext: new Uint8Array([ + 50, + 223, + 112, + 178, + 166, + 156, + 255, + 110, + 125, + 138, + 95, + 141, + 82, + 47, + 14, + 164, + 134, + 247, + 22, + ]), + }, { + iv: new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), + ciphertext: new Uint8Array([ + 210, + 101, + 81, + 216, + 151, + 9, + 192, + 197, + 62, + 254, + 28, + 132, + 89, + 106, + 40, + 29, + 175, + 232, + 201, + ]), + }]; + for (const { iv, ciphertext: fixture } of nonces) { + const data = new Uint8Array([1, 2, 3]); + + const cipherText = await crypto.subtle.encrypt( + { name: "AES-GCM", iv }, + key, + data, + ); + + assert(cipherText instanceof ArrayBuffer); + assertEquals(cipherText.byteLength, 19); + assertEquals( + new Uint8Array(cipherText), + fixture, + ); + + const plainText = await crypto.subtle.decrypt( + { name: "AES-GCM", iv }, + key, + cipherText, + ); + assert(plainText instanceof ArrayBuffer); + assertEquals(plainText.byteLength, 3); + assertEquals(new Uint8Array(plainText), data); + } +}); + +async function roundTripSecretJwk( + jwk: JsonWebKey, + algId: AlgorithmIdentifier | HmacImportParams, + ops: KeyUsage[], + validateKeys: ( + key: CryptoKey, + originalJwk: JsonWebKey, + exportedJwk: JsonWebKey, + ) => void, +) { + const key = await crypto.subtle.importKey( + "jwk", + jwk, + algId, + true, + ops, + ); + + assert(key instanceof CryptoKey); + assertEquals(key.type, "secret"); + + const exportedKey = await crypto.subtle.exportKey("jwk", key); + + validateKeys(key, jwk, exportedKey); +} + +Deno.test(async function testSecretJwkBase64Url() { + // Test 16bits with "overflow" in 3rd pos of 'quartet', no padding + const keyData = `{ + "kty": "oct", + "k": "xxx", + "alg": "HS512", + "key_ops": ["sign", "verify"], + "ext": true + }`; + + await roundTripSecretJwk( + JSON.parse(keyData), + { name: "HMAC", hash: "SHA-512" }, + ["sign", "verify"], + (key, _orig, exp) => { + assertEquals((key.algorithm as HmacKeyAlgorithm).length, 16); + + assertEquals(exp.k, "xxw"); + }, + ); + + // HMAC 128bits with base64url characters (-_) + await roundTripSecretJwk( + { + kty: "oct", + k: "HnZXRyDKn-_G5Fx4JWR1YA", + alg: "HS256", + "key_ops": ["sign", "verify"], + ext: true, + }, + { name: "HMAC", hash: "SHA-256" }, + ["sign", "verify"], + (key, orig, exp) => { + assertEquals((key.algorithm as HmacKeyAlgorithm).length, 128); + + assertEquals(orig.k, exp.k); + }, + ); + + // HMAC 104bits/(12+1) bytes with base64url characters (-_), padding and overflow in 2rd pos of "quartet" + await roundTripSecretJwk( + { + kty: "oct", + k: "a-_AlFa-2-OmEGa_-z==", + alg: "HS384", + "key_ops": ["sign", "verify"], + ext: true, + }, + { name: "HMAC", hash: "SHA-384" }, + ["sign", "verify"], + (key, _orig, exp) => { + assertEquals((key.algorithm as HmacKeyAlgorithm).length, 104); + + assertEquals("a-_AlFa-2-OmEGa_-w", exp.k); + }, + ); + + // AES-CBC 128bits with base64url characters (-_) no padding + await roundTripSecretJwk( + { + kty: "oct", + k: "_u3K_gEjRWf-7cr-ASNFZw", + alg: "A128CBC", + "key_ops": ["encrypt", "decrypt"], + ext: true, + }, + { name: "AES-CBC" }, + ["encrypt", "decrypt"], + (_key, orig, exp) => { + assertEquals(orig.k, exp.k); + }, + ); + + // AES-CBC 128bits of '1' with padding chars + await roundTripSecretJwk( + { + kty: "oct", + k: "_____________________w==", + alg: "A128CBC", + "key_ops": ["encrypt", "decrypt"], + ext: true, + }, + { name: "AES-CBC" }, + ["encrypt", "decrypt"], + (_key, _orig, exp) => { + assertEquals(exp.k, "_____________________w"); + }, + ); +}); + +Deno.test(async function testAESWrapKey() { + const key = await crypto.subtle.generateKey( + { + name: "AES-KW", + length: 128, + }, + true, + ["wrapKey", "unwrapKey"], + ); + + const hmacKey = await crypto.subtle.generateKey( + { + name: "HMAC", + hash: "SHA-256", + length: 128, + }, + true, + ["sign"], + ); + + //round-trip + // wrap-unwrap-export compare + const wrappedKey = await crypto.subtle.wrapKey( + "raw", + hmacKey, + key, + { + name: "AES-KW", + }, + ); + + assert(wrappedKey instanceof ArrayBuffer); + assertEquals(wrappedKey.byteLength, 16 + 8); // 8 = 'auth tag' + + const unwrappedKey = await crypto.subtle.unwrapKey( + "raw", + wrappedKey, + key, + { + name: "AES-KW", + }, + { + name: "HMAC", + hash: "SHA-256", + }, + true, + ["sign"], + ); + + assert(unwrappedKey instanceof CryptoKey); + assertEquals((unwrappedKey.algorithm as HmacKeyAlgorithm).length, 128); + + const hmacKeyBytes = await crypto.subtle.exportKey("raw", hmacKey); + const unwrappedKeyBytes = await crypto.subtle.exportKey("raw", unwrappedKey); + + assertEquals(new Uint8Array(hmacKeyBytes), new Uint8Array(unwrappedKeyBytes)); +}); + +// https://github.com/denoland/deno/issues/13534 +Deno.test(async function testAesGcmTagLength() { + const key = await crypto.subtle.importKey( + "raw", + new Uint8Array(32), + "AES-GCM", + false, + ["encrypt", "decrypt"], + ); + + const iv = crypto.getRandomValues(new Uint8Array(12)); + + // encrypt won't fail, it will simply truncate the tag + // as expected. + const encrypted = await crypto.subtle.encrypt( + { name: "AES-GCM", iv, tagLength: 96 }, + key, + new Uint8Array(32), + ); + + await assertRejects(async () => { + await crypto.subtle.decrypt( + { name: "AES-GCM", iv, tagLength: 96 }, + key, + encrypted, + ); + }); +}); + +Deno.test(async function ecPrivateKeyMaterialExportSpki() { + // `generateKey` generates a key pair internally stored as "private" key. + const keys = await crypto.subtle.generateKey( + { name: "ECDSA", namedCurve: "P-256" }, + true, + ["sign", "verify"], + ); + + assert(keys.privateKey instanceof CryptoKey); + assert(keys.publicKey instanceof CryptoKey); + + // `exportKey` should be able to perform necessary conversion to export spki. + const spki = await crypto.subtle.exportKey("spki", keys.publicKey); + assert(spki instanceof ArrayBuffer); +}); + +// https://github.com/denoland/deno/issues/13911 +Deno.test(async function importJwkWithUse() { + const jwk = { + "kty": "EC", + "use": "sig", + "crv": "P-256", + "x": "FWZ9rSkLt6Dx9E3pxLybhdM6xgR5obGsj5_pqmnz5J4", + "y": "_n8G69C-A2Xl4xUW2lF0i8ZGZnk_KPYrhv4GbTGu5G4", + }; + + const algorithm = { name: "ECDSA", namedCurve: "P-256" }; + + const key = await crypto.subtle.importKey( + "jwk", + jwk, + algorithm, + true, + ["verify"], + ); + + assert(key instanceof CryptoKey); +}); + +// https://github.com/denoland/deno/issues/14215 +Deno.test(async function exportKeyNotExtractable() { + const key = await crypto.subtle.generateKey( + { + name: "HMAC", + hash: "SHA-512", + }, + false, + ["sign", "verify"], + ); + + assert(key); + assertEquals(key.extractable, false); + + await assertRejects(async () => { + // Should fail + await crypto.subtle.exportKey("raw", key); + }, DOMException); +}); + +// https://github.com/denoland/deno/issues/15126 +Deno.test(async function testImportLeadingZeroesKey() { + const alg = { name: "ECDSA", namedCurve: "P-256" }; + + const jwk = { + kty: "EC", + crv: "P-256", + alg: "ES256", + x: "EvidcdFB1xC6tgfakqZsU9aIURxAJkcX62zHe1Nt6xU", + y: "AHsk6BioGM7MZWeXOE_49AGmtuaXFT3Ill3DYtz9uYg", + d: "WDeYo4o1heCF9l_2VIaClRyIeO16zsMlN8UG6Le9dU8", + "key_ops": ["sign"], + ext: true, + }; + + const key = await crypto.subtle.importKey( + "jwk", + jwk, + alg, + true, + ["sign"], + ); + + assert(key instanceof CryptoKey); + assertEquals(key.type, "private"); +}); + +// https://github.com/denoland/deno/issues/15523 +Deno.test(async function testECspkiRoundTrip() { + const alg = { name: "ECDH", namedCurve: "P-256" }; + const { publicKey } = await crypto.subtle.generateKey(alg, true, [ + "deriveBits", + ]); + const spki = await crypto.subtle.exportKey("spki", publicKey); + await crypto.subtle.importKey("spki", spki, alg, true, []); +}); + +Deno.test(async function testHmacJwkImport() { + await crypto.subtle.importKey( + "jwk", + { + kty: "oct", + use: "sig", + alg: "HS256", + k: "hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg", + }, + { name: "HMAC", hash: "SHA-256" }, + false, + ["sign", "verify"], + ); +}); + +Deno.test(async function p521Import() { + const jwk = { + "crv": "P-521", + "ext": true, + "key_ops": [ + "verify", + ], + "kty": "EC", + "x": + "AXkSI8nfkc6bu3fifXGuKKbu08g5LKPfxUNQJJYzzPgmN8XLDzx0C9Sdeejl1XoWGrheKPHl0k4tUmHw0cdInpfj", + "y": + "AT4vjsO0bzVRlN3Wthv9DewncDXS2tlTob5QojV8WX1GzOAikRfWFEP3nspoSv88U447acZAsk5IvgGJuVjgMDlx", + }; + const algorithm = { name: "ECDSA", namedCurve: "P-521" }; + + const key = await crypto.subtle.importKey( + "jwk", + jwk, + algorithm, + true, + ["verify"], + ); + + assert(key instanceof CryptoKey); +}); + +Deno.test(async function p521Generate() { + const algorithm = { name: "ECDSA", namedCurve: "P-521" }; + + const key = await crypto.subtle.generateKey( + algorithm, + true, + ["sign", "verify"], + ); + + assert(key.privateKey instanceof CryptoKey); + assert(key.publicKey instanceof CryptoKey); +}); diff --git a/tests/unit/webgpu_test.ts b/tests/unit/webgpu_test.ts new file mode 100644 index 000000000..517c75f9e --- /dev/null +++ b/tests/unit/webgpu_test.ts @@ -0,0 +1,267 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { assert, assertEquals, assertThrows } from "./test_util.ts"; + +let isCI: boolean; +try { + isCI = (Deno.env.get("CI")?.length ?? 0) > 0; +} catch { + isCI = true; +} + +// Skip these tests on linux CI, because the vulkan emulator is not good enough +// yet, and skip on macOS CI because these do not have virtual GPUs. +const isLinuxOrMacCI = + (Deno.build.os === "linux" || Deno.build.os === "darwin") && isCI; +// Skip these tests in WSL because it doesn't have good GPU support. +const isWsl = await checkIsWsl(); + +Deno.test({ + permissions: { read: true, env: true }, + ignore: isWsl || isLinuxOrMacCI, +}, async function webgpuComputePass() { + const adapter = await navigator.gpu.requestAdapter(); + assert(adapter); + + const numbers = [1, 4, 3, 295]; + + const device = await adapter.requestDevice(); + assert(device); + + const shaderCode = await Deno.readTextFile( + "tests/testdata/webgpu/computepass_shader.wgsl", + ); + + const shaderModule = device.createShaderModule({ + code: shaderCode, + }); + + const size = new Uint32Array(numbers).byteLength; + + const stagingBuffer = device.createBuffer({ + size: size, + usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST, + }); + + const storageBuffer = device.createBuffer({ + label: "Storage Buffer", + size: size, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | + GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + + const buf = new Uint32Array(storageBuffer.getMappedRange()); + + buf.set(numbers); + + storageBuffer.unmap(); + + const computePipeline = device.createComputePipeline({ + layout: "auto", + compute: { + module: shaderModule, + entryPoint: "main", + }, + }); + const bindGroupLayout = computePipeline.getBindGroupLayout(0); + + const bindGroup = device.createBindGroup({ + layout: bindGroupLayout, + entries: [ + { + binding: 0, + resource: { + buffer: storageBuffer, + }, + }, + ], + }); + + const encoder = device.createCommandEncoder(); + + const computePass = encoder.beginComputePass(); + computePass.setPipeline(computePipeline); + computePass.setBindGroup(0, bindGroup); + computePass.insertDebugMarker("compute collatz iterations"); + computePass.dispatchWorkgroups(numbers.length); + computePass.end(); + + encoder.copyBufferToBuffer(storageBuffer, 0, stagingBuffer, 0, size); + + device.queue.submit([encoder.finish()]); + + await stagingBuffer.mapAsync(1); + + const data = stagingBuffer.getMappedRange(); + + assertEquals(new Uint32Array(data), new Uint32Array([0, 2, 7, 55])); + + stagingBuffer.unmap(); + + device.destroy(); + + // TODO(lucacasonato): webgpu spec should add a explicit destroy method for + // adapters. + const resources = Object.keys(Deno.resources()); + Deno.close(Number(resources[resources.length - 1])); +}); + +Deno.test({ + permissions: { read: true, env: true }, + ignore: isWsl || isLinuxOrMacCI, +}, async function webgpuHelloTriangle() { + const adapter = await navigator.gpu.requestAdapter(); + assert(adapter); + + const device = await adapter.requestDevice(); + assert(device); + + const shaderCode = await Deno.readTextFile( + "tests/testdata/webgpu/hellotriangle_shader.wgsl", + ); + + const shaderModule = device.createShaderModule({ + code: shaderCode, + }); + + const pipelineLayout = device.createPipelineLayout({ + bindGroupLayouts: [], + }); + + const renderPipeline = device.createRenderPipeline({ + layout: pipelineLayout, + vertex: { + module: shaderModule, + entryPoint: "vs_main", + }, + fragment: { + module: shaderModule, + entryPoint: "fs_main", + targets: [ + { + format: "rgba8unorm-srgb", + }, + ], + }, + }); + + const dimensions = { + width: 200, + height: 200, + }; + const unpaddedBytesPerRow = dimensions.width * 4; + const align = 256; + const paddedBytesPerRowPadding = (align - unpaddedBytesPerRow % align) % + align; + const paddedBytesPerRow = unpaddedBytesPerRow + paddedBytesPerRowPadding; + + const outputBuffer = device.createBuffer({ + label: "Capture", + size: paddedBytesPerRow * dimensions.height, + usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST, + }); + const texture = device.createTexture({ + label: "Capture", + size: dimensions, + format: "rgba8unorm-srgb", + usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC, + }); + + const encoder = device.createCommandEncoder(); + const view = texture.createView(); + const renderPass = encoder.beginRenderPass({ + colorAttachments: [ + { + view, + storeOp: "store", + loadOp: "clear", + clearValue: [0, 1, 0, 1], + }, + ], + }); + renderPass.setPipeline(renderPipeline); + renderPass.draw(3, 1); + renderPass.end(); + + encoder.copyTextureToBuffer( + { + texture, + }, + { + buffer: outputBuffer, + bytesPerRow: paddedBytesPerRow, + rowsPerImage: 0, + }, + dimensions, + ); + + const bundle = encoder.finish(); + device.queue.submit([bundle]); + + await outputBuffer.mapAsync(1); + const data = new Uint8Array(outputBuffer.getMappedRange()); + + assertEquals( + data, + await Deno.readFile("tests/testdata/webgpu/hellotriangle.out"), + ); + + outputBuffer.unmap(); + + device.destroy(); + + // TODO(lucacasonato): webgpu spec should add a explicit destroy method for + // adapters. + const resources = Object.keys(Deno.resources()); + Deno.close(Number(resources[resources.length - 1])); +}); + +Deno.test({ + ignore: isWsl || isLinuxOrMacCI, +}, async function webgpuAdapterHasFeatures() { + const adapter = await navigator.gpu.requestAdapter(); + assert(adapter); + assert(adapter.features); + const resources = Object.keys(Deno.resources()); + Deno.close(Number(resources[resources.length - 1])); +}); + +Deno.test({ + ignore: isWsl || isLinuxOrMacCI, +}, async function webgpuNullWindowSurfaceThrows() { + const adapter = await navigator.gpu.requestAdapter(); + assert(adapter); + + const device = await adapter.requestDevice(); + assert(device); + + assertThrows( + () => { + new Deno.UnsafeWindowSurface("cocoa", null, null); + }, + ); + + device.destroy(); + const resources = Object.keys(Deno.resources()); + Deno.close(Number(resources[resources.length - 1])); +}); + +Deno.test(function getPreferredCanvasFormat() { + const preferredFormat = navigator.gpu.getPreferredCanvasFormat(); + assert(preferredFormat === "bgra8unorm" || preferredFormat === "rgba8unorm"); +}); + +async function checkIsWsl() { + return Deno.build.os === "linux" && await hasMicrosoftProcVersion(); + + async function hasMicrosoftProcVersion() { + // https://github.com/microsoft/WSL/issues/423#issuecomment-221627364 + try { + const procVersion = await Deno.readTextFile("/proc/version"); + return /microsoft/i.test(procVersion); + } catch { + return false; + } + } +} diff --git a/tests/unit/websocket_test.ts b/tests/unit/websocket_test.ts new file mode 100644 index 000000000..223b13404 --- /dev/null +++ b/tests/unit/websocket_test.ts @@ -0,0 +1,738 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import { assert, assertEquals, assertThrows, fail } from "./test_util.ts"; + +const servePort = 4248; +const serveUrl = `ws://localhost:${servePort}/`; + +Deno.test({ permissions: "none" }, function websocketPermissionless() { + assertThrows( + () => new WebSocket("ws://localhost"), + Deno.errors.PermissionDenied, + ); +}); + +Deno.test(async function websocketConstructorTakeURLObjectAsParameter() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket(new URL("ws://localhost:4242/")); + assertEquals(ws.url, "ws://localhost:4242/"); + ws.onerror = (e) => reject(e); + ws.onopen = () => ws.close(); + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test(async function websocketH2SendSmallPacket() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket(new URL("wss://localhost:4249/")); + assertEquals(ws.url, "wss://localhost:4249/"); + let messageCount = 0; + ws.onerror = (e) => reject(e); + ws.onopen = () => { + ws.send("a".repeat(16)); + ws.send("a".repeat(16)); + ws.send("a".repeat(16)); + }; + ws.onmessage = () => { + if (++messageCount == 3) { + ws.close(); + } + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test(async function websocketH2SendLargePacket() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket(new URL("wss://localhost:4249/")); + assertEquals(ws.url, "wss://localhost:4249/"); + let messageCount = 0; + ws.onerror = (e) => reject(e); + ws.onopen = () => { + ws.send("a".repeat(65000)); + ws.send("a".repeat(65000)); + ws.send("a".repeat(65000)); + }; + ws.onmessage = () => { + if (++messageCount == 3) { + ws.close(); + } + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test(async function websocketSendLargePacket() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket(new URL("wss://localhost:4243/")); + assertEquals(ws.url, "wss://localhost:4243/"); + ws.onerror = (e) => reject(e); + ws.onopen = () => { + ws.send("a".repeat(65000)); + }; + ws.onmessage = () => { + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test(async function websocketSendLargeBinaryPacket() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket(new URL("wss://localhost:4243/")); + ws.binaryType = "arraybuffer"; + assertEquals(ws.url, "wss://localhost:4243/"); + ws.onerror = (e) => reject(e); + ws.onopen = () => { + ws.send(new Uint8Array(65000)); + }; + ws.onmessage = (msg: MessageEvent) => { + assertEquals(msg.data.byteLength, 65000); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test(async function websocketSendLargeBlobPacket() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket(new URL("wss://localhost:4243/")); + ws.binaryType = "arraybuffer"; + assertEquals(ws.url, "wss://localhost:4243/"); + ws.onerror = (e) => reject(e); + ws.onopen = () => { + ws.send(new Blob(["a".repeat(65000)])); + }; + ws.onmessage = (msg: MessageEvent) => { + assertEquals(msg.data.byteLength, 65000); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +// https://github.com/denoland/deno/pull/17762 +// https://github.com/denoland/deno/issues/17761 +Deno.test(async function websocketPingPong() { + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4245/"); + assertEquals(ws.url, "ws://localhost:4245/"); + ws.onerror = (e) => reject(e); + ws.onmessage = (e) => { + ws.send(e.data); + }; + ws.onclose = () => { + resolve(); + }; + await promise; + ws.close(); +}); + +// TODO(mmastrac): This requires us to ignore bad certs +// Deno.test(async function websocketSecureConnect() { +// const { promise, resolve } = Promise.withResolvers<void>(); +// const ws = new WebSocket("wss://localhost:4243/"); +// assertEquals(ws.url, "wss://localhost:4243/"); +// ws.onerror = (error) => { +// console.log(error); +// fail(); +// }; +// ws.onopen = () => ws.close(); +// ws.onclose = () => { +// resolve(); +// }; +// await promise; +// }); + +// https://github.com/denoland/deno/issues/18700 +Deno.test( + { sanitizeOps: false, sanitizeResources: false }, + async function websocketWriteLock() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (req) => { + const { socket, response } = Deno.upgradeWebSocket(req); + socket.onopen = function () { + setTimeout(() => socket.send("Hello"), 500); + }; + socket.onmessage = function (e) { + assertEquals(e.data, "Hello"); + ac.abort(); + }; + return response; + }, + signal: ac.signal, + onListen: () => listeningDeferred.resolve(), + hostname: "localhost", + port: servePort, + }); + + await listeningDeferred.promise; + const deferred = Promise.withResolvers<void>(); + const ws = new WebSocket(serveUrl); + assertEquals(ws.url, serveUrl); + ws.onerror = () => fail(); + ws.onmessage = (e) => { + assertEquals(e.data, "Hello"); + setTimeout(() => { + ws.send(e.data); + }, 1000); + deferred.resolve(); + }; + ws.onclose = () => { + deferred.resolve(); + }; + + await Promise.all([deferred.promise, server.finished]); + ws.close(); + }, +); + +// https://github.com/denoland/deno/issues/18775 +Deno.test({ + sanitizeOps: false, + sanitizeResources: false, +}, async function websocketDoubleClose() { + const deferred = Promise.withResolvers<void>(); + + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (req) => { + const { response, socket } = Deno.upgradeWebSocket(req); + let called = false; + socket.onopen = () => socket.send("Hello"); + socket.onmessage = () => { + assert(!called); + called = true; + socket.send("bye"); + socket.close(); + }; + socket.onclose = () => ac.abort(); + socket.onerror = () => fail(); + return response; + }, + signal: ac.signal, + onListen: () => listeningDeferred.resolve(), + hostname: "localhost", + port: servePort, + }); + + await listeningDeferred.promise; + + const ws = new WebSocket(serveUrl); + assertEquals(ws.url, serveUrl); + ws.onerror = () => fail(); + ws.onmessage = (m: MessageEvent) => { + if (m.data == "Hello") ws.send("bye"); + }; + ws.onclose = () => { + deferred.resolve(); + }; + await Promise.all([deferred.promise, server.finished]); +}); + +// https://github.com/denoland/deno/issues/19483 +Deno.test({ + sanitizeOps: false, + sanitizeResources: false, +}, async function websocketCloseFlushes() { + const deferred = Promise.withResolvers<void>(); + + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (req) => { + const { response, socket } = Deno.upgradeWebSocket(req); + socket.onopen = () => socket.send("Hello"); + socket.onmessage = () => { + socket.send("Bye"); + socket.close(); + }; + socket.onclose = () => ac.abort(); + socket.onerror = () => fail(); + return response; + }, + signal: ac.signal, + onListen: () => listeningDeferred.resolve(), + hostname: "localhost", + port: servePort, + }); + + await listeningDeferred.promise; + + const ws = new WebSocket(serveUrl); + assertEquals(ws.url, serveUrl); + let seenBye = false; + ws.onerror = () => fail(); + ws.onmessage = ({ data }) => { + if (data == "Hello") { + ws.send("Hello!"); + } else { + assertEquals(data, "Bye"); + seenBye = true; + } + }; + ws.onclose = () => { + deferred.resolve(); + }; + await Promise.all([deferred.promise, server.finished]); + + assert(seenBye); +}); + +Deno.test( + { sanitizeOps: false }, + function websocketConstructorWithPrototypePollution() { + const originalSymbolIterator = Array.prototype[Symbol.iterator]; + try { + Array.prototype[Symbol.iterator] = () => { + throw Error("unreachable"); + }; + assertThrows(() => { + new WebSocket( + new URL("ws://localhost:4242/"), + // Allow `Symbol.iterator` to be called in WebIDL conversion to `sequence<DOMString>` + // deno-lint-ignore no-explicit-any + ["soap", "soap"].values() as any, + ); + }, DOMException); + } finally { + Array.prototype[Symbol.iterator] = originalSymbolIterator; + } + }, +); + +Deno.test(async function websocketTlsSocketWorks() { + const cert = await Deno.readTextFile("tests/testdata/tls/localhost.crt"); + const key = await Deno.readTextFile("tests/testdata/tls/localhost.key"); + + const messages: string[] = [], + errors: { server?: Event; client?: Event }[] = []; + const promise = new Promise((okay, nope) => { + const ac = new AbortController(); + const server = Deno.serve({ + handler: (req) => { + const { response, socket } = Deno.upgradeWebSocket(req); + socket.onopen = () => socket.send("ping"); + socket.onmessage = (e) => { + messages.push(e.data); + socket.close(); + }; + socket.onerror = (e) => errors.push({ server: e }); + socket.onclose = () => ac.abort(); + return response; + }, + signal: ac.signal, + hostname: "localhost", + port: servePort, + cert, + key, + }); + setTimeout(() => { + const ws = new WebSocket(`wss://localhost:${servePort}`); + ws.onmessage = (e) => { + messages.push(e.data); + ws.send("pong"); + }; + ws.onerror = (e) => { + errors.push({ client: e }); + nope(); + }; + ws.onclose = () => okay(server.finished); + }, 1000); + }); + + const finished = await promise; + + assertEquals(errors, []); + assertEquals(messages, ["ping", "pong"]); + + await finished; +}); + +// https://github.com/denoland/deno/issues/15340 +Deno.test( + async function websocketServerFieldInit() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (req) => { + const { socket, response } = Deno.upgradeWebSocket(req, { + idleTimeout: 0, + }); + socket.onopen = function () { + assert(typeof socket.url == "string"); + assert(socket.readyState == WebSocket.OPEN); + assert(socket.protocol == ""); + assert(socket.binaryType == "arraybuffer"); + socket.close(); + }; + socket.onclose = () => ac.abort(); + return response; + }, + signal: ac.signal, + onListen: () => listeningDeferred.resolve(), + hostname: "localhost", + port: servePort, + }); + + await listeningDeferred.promise; + const deferred = Promise.withResolvers<void>(); + const ws = new WebSocket(serveUrl); + assertEquals(ws.url, serveUrl); + ws.onerror = () => fail(); + ws.onclose = () => { + deferred.resolve(); + }; + + await Promise.all([deferred.promise, server.finished]); + }, +); + +Deno.test( + { sanitizeOps: false }, + async function websocketServerGetsGhosted() { + const ac = new AbortController(); + const listeningDeferred = Promise.withResolvers<void>(); + + const server = Deno.serve({ + handler: (req) => { + const { socket, response } = Deno.upgradeWebSocket(req, { + idleTimeout: 2, + }); + socket.onerror = () => socket.close(); + socket.onclose = () => ac.abort(); + return response; + }, + signal: ac.signal, + onListen: () => listeningDeferred.resolve(), + hostname: "localhost", + port: servePort, + }); + + await listeningDeferred.promise; + const r = await fetch("http://localhost:4545/ghost_ws_client"); + assertEquals(r.status, 200); + await r.body?.cancel(); + + await server.finished; + }, +); + +Deno.test("invalid scheme", () => { + assertThrows(() => new WebSocket("foo://localhost:4242")); +}); + +Deno.test("fragment", () => { + assertThrows(() => new WebSocket("ws://localhost:4242/#")); + assertThrows(() => new WebSocket("ws://localhost:4242/#foo")); +}); + +Deno.test("duplicate protocols", () => { + assertThrows(() => new WebSocket("ws://localhost:4242", ["foo", "foo"])); +}); + +Deno.test("invalid server", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:2121"); + let err = false; + ws.onerror = () => { + err = true; + }; + ws.onclose = () => { + if (err) { + resolve(); + } else { + fail(); + } + }; + ws.onopen = () => fail(); + await promise; +}); + +Deno.test("connect & close", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.onerror = () => fail(); + ws.onopen = () => { + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("connect & abort", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.close(); + let err = false; + ws.onerror = () => { + err = true; + }; + ws.onclose = () => { + if (err) { + resolve(); + } else { + fail(); + } + }; + ws.onopen = () => fail(); + await promise; +}); + +Deno.test("connect & close custom valid code", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.onerror = () => fail(); + ws.onopen = () => ws.close(1000); + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("connect & close custom invalid code", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.onerror = () => fail(); + ws.onopen = () => { + assertThrows(() => ws.close(1001)); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("connect & close custom valid reason", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.onerror = () => fail(); + ws.onopen = () => ws.close(1000, "foo"); + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("connect & close custom invalid reason", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.onerror = () => fail(); + ws.onopen = () => { + assertThrows(() => ws.close(1000, "".padEnd(124, "o"))); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo string", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.onerror = () => fail(); + ws.onopen = () => ws.send("foo"); + ws.onmessage = (e) => { + assertEquals(e.data, "foo"); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo string tls", async () => { + const deferred1 = Promise.withResolvers<void>(); + const deferred2 = Promise.withResolvers<void>(); + const ws = new WebSocket("wss://localhost:4243"); + ws.onerror = () => fail(); + ws.onopen = () => ws.send("foo"); + ws.onmessage = (e) => { + assertEquals(e.data, "foo"); + ws.close(); + deferred1.resolve(); + }; + ws.onclose = () => { + deferred2.resolve(); + }; + await deferred1.promise; + await deferred2.promise; +}); + +Deno.test("websocket error", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("wss://localhost:4242"); + ws.onopen = () => fail(); + ws.onerror = (err) => { + assert(err instanceof ErrorEvent); + assertEquals( + err.message, + "NetworkError: failed to connect to WebSocket: received corrupt message of type InvalidContentType", + ); + resolve(); + }; + await promise; +}); + +Deno.test("echo blob with binaryType blob", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + const blob = new Blob(["foo"]); + ws.onerror = () => fail(); + ws.onopen = () => ws.send(blob); + ws.onmessage = (e) => { + e.data.text().then((actual: string) => { + blob.text().then((expected) => { + assertEquals(actual, expected); + }); + }); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo blob with binaryType arraybuffer", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.binaryType = "arraybuffer"; + const blob = new Blob(["foo"]); + ws.onerror = () => fail(); + ws.onopen = () => ws.send(blob); + ws.onmessage = (e) => { + blob.arrayBuffer().then((expected) => { + assertEquals(e.data, expected); + }); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo uint8array with binaryType blob", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + const uint = new Uint8Array([102, 111, 111]); + ws.onerror = () => fail(); + ws.onopen = () => ws.send(uint); + ws.onmessage = (e) => { + e.data.arrayBuffer().then((actual: ArrayBuffer) => { + assertEquals(actual, uint.buffer); + }); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo uint8array with binaryType arraybuffer", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.binaryType = "arraybuffer"; + const uint = new Uint8Array([102, 111, 111]); + ws.onerror = () => fail(); + ws.onopen = () => ws.send(uint); + ws.onmessage = (e) => { + assertEquals(e.data, uint.buffer); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo arraybuffer with binaryType blob", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + const buffer = new ArrayBuffer(3); + ws.onerror = () => fail(); + ws.onopen = () => ws.send(buffer); + ws.onmessage = (e) => { + e.data.arrayBuffer().then((actual: ArrayBuffer) => { + assertEquals(actual, buffer); + }); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("echo arraybuffer with binaryType arraybuffer", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + ws.binaryType = "arraybuffer"; + const buffer = new ArrayBuffer(3); + ws.onerror = () => fail(); + ws.onopen = () => ws.send(buffer); + ws.onmessage = (e) => { + assertEquals(e.data, buffer); + ws.close(); + }; + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("Event Handlers order", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4242"); + const arr: number[] = []; + ws.onerror = () => fail(); + ws.addEventListener("message", () => arr.push(1)); + ws.onmessage = () => fail(); + ws.addEventListener("message", () => { + arr.push(3); + ws.close(); + assertEquals(arr, [1, 2, 3]); + }); + ws.onmessage = () => arr.push(2); + ws.onopen = () => ws.send("Echo"); + ws.onclose = () => { + resolve(); + }; + await promise; +}); + +Deno.test("Close without frame", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const ws = new WebSocket("ws://localhost:4244"); + ws.onerror = () => fail(); + ws.onclose = (e) => { + assertEquals(e.code, 1005); + resolve(); + }; + await promise; +}); diff --git a/cli/tests/unit/websocketstream_test.ts.disabled b/tests/unit/websocketstream_test.ts.disabled index eaedb71bd..eaedb71bd 100644 --- a/cli/tests/unit/websocketstream_test.ts.disabled +++ b/tests/unit/websocketstream_test.ts.disabled diff --git a/cli/tests/unit/webstorage_test.ts b/tests/unit/webstorage_test.ts index 9dc560af1..9dc560af1 100644 --- a/cli/tests/unit/webstorage_test.ts +++ b/tests/unit/webstorage_test.ts diff --git a/cli/tests/unit/worker_permissions_test.ts b/tests/unit/worker_permissions_test.ts index 28bf9f92a..28bf9f92a 100644 --- a/cli/tests/unit/worker_permissions_test.ts +++ b/tests/unit/worker_permissions_test.ts diff --git a/cli/tests/unit/worker_test.ts b/tests/unit/worker_test.ts index eea0e8106..eea0e8106 100644 --- a/cli/tests/unit/worker_test.ts +++ b/tests/unit/worker_test.ts diff --git a/cli/tests/unit/write_file_test.ts b/tests/unit/write_file_test.ts index 6cd08e2d1..6cd08e2d1 100644 --- a/cli/tests/unit/write_file_test.ts +++ b/tests/unit/write_file_test.ts diff --git a/cli/tests/unit/write_text_file_test.ts b/tests/unit/write_text_file_test.ts index a58d91997..a58d91997 100644 --- a/cli/tests/unit/write_text_file_test.ts +++ b/tests/unit/write_text_file_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_access_test.ts b/tests/unit_node/_fs/_fs_access_test.ts index 5b5b7f34d..5b5b7f34d 100644 --- a/cli/tests/unit_node/_fs/_fs_access_test.ts +++ b/tests/unit_node/_fs/_fs_access_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_appendFile_test.ts b/tests/unit_node/_fs/_fs_appendFile_test.ts index 57271efdb..57271efdb 100644 --- a/cli/tests/unit_node/_fs/_fs_appendFile_test.ts +++ b/tests/unit_node/_fs/_fs_appendFile_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_chmod_test.ts b/tests/unit_node/_fs/_fs_chmod_test.ts index 2bddcb293..2bddcb293 100644 --- a/cli/tests/unit_node/_fs/_fs_chmod_test.ts +++ b/tests/unit_node/_fs/_fs_chmod_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_chown_test.ts b/tests/unit_node/_fs/_fs_chown_test.ts index d4f6ea0e8..d4f6ea0e8 100644 --- a/cli/tests/unit_node/_fs/_fs_chown_test.ts +++ b/tests/unit_node/_fs/_fs_chown_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_close_test.ts b/tests/unit_node/_fs/_fs_close_test.ts index 155667305..155667305 100644 --- a/cli/tests/unit_node/_fs/_fs_close_test.ts +++ b/tests/unit_node/_fs/_fs_close_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_copy_test.ts b/tests/unit_node/_fs/_fs_copy_test.ts index 915ee93bd..915ee93bd 100644 --- a/cli/tests/unit_node/_fs/_fs_copy_test.ts +++ b/tests/unit_node/_fs/_fs_copy_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_dir_test.ts b/tests/unit_node/_fs/_fs_dir_test.ts index 697929fee..697929fee 100644 --- a/cli/tests/unit_node/_fs/_fs_dir_test.ts +++ b/tests/unit_node/_fs/_fs_dir_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_dirent_test.ts b/tests/unit_node/_fs/_fs_dirent_test.ts index a42f6a25c..a42f6a25c 100644 --- a/cli/tests/unit_node/_fs/_fs_dirent_test.ts +++ b/tests/unit_node/_fs/_fs_dirent_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_exists_test.ts b/tests/unit_node/_fs/_fs_exists_test.ts index baf959502..baf959502 100644 --- a/cli/tests/unit_node/_fs/_fs_exists_test.ts +++ b/tests/unit_node/_fs/_fs_exists_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_fdatasync_test.ts b/tests/unit_node/_fs/_fs_fdatasync_test.ts index 7a61bd4c1..7a61bd4c1 100644 --- a/cli/tests/unit_node/_fs/_fs_fdatasync_test.ts +++ b/tests/unit_node/_fs/_fs_fdatasync_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_fstat_test.ts b/tests/unit_node/_fs/_fs_fstat_test.ts index d15ef5a80..d15ef5a80 100644 --- a/cli/tests/unit_node/_fs/_fs_fstat_test.ts +++ b/tests/unit_node/_fs/_fs_fstat_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_fsync_test.ts b/tests/unit_node/_fs/_fs_fsync_test.ts index 870055c00..870055c00 100644 --- a/cli/tests/unit_node/_fs/_fs_fsync_test.ts +++ b/tests/unit_node/_fs/_fs_fsync_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_ftruncate_test.ts b/tests/unit_node/_fs/_fs_ftruncate_test.ts index 1e669fb60..1e669fb60 100644 --- a/cli/tests/unit_node/_fs/_fs_ftruncate_test.ts +++ b/tests/unit_node/_fs/_fs_ftruncate_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_futimes_test.ts b/tests/unit_node/_fs/_fs_futimes_test.ts index bf3746957..bf3746957 100644 --- a/cli/tests/unit_node/_fs/_fs_futimes_test.ts +++ b/tests/unit_node/_fs/_fs_futimes_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_handle_test.ts b/tests/unit_node/_fs/_fs_handle_test.ts index 151d4d752..151d4d752 100644 --- a/cli/tests/unit_node/_fs/_fs_handle_test.ts +++ b/tests/unit_node/_fs/_fs_handle_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_link_test.ts b/tests/unit_node/_fs/_fs_link_test.ts index 15f15c706..15f15c706 100644 --- a/cli/tests/unit_node/_fs/_fs_link_test.ts +++ b/tests/unit_node/_fs/_fs_link_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_lstat_test.ts b/tests/unit_node/_fs/_fs_lstat_test.ts index ccd21a3cd..ccd21a3cd 100644 --- a/cli/tests/unit_node/_fs/_fs_lstat_test.ts +++ b/tests/unit_node/_fs/_fs_lstat_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_mkdir_test.ts b/tests/unit_node/_fs/_fs_mkdir_test.ts index fb7fcf9c5..fb7fcf9c5 100644 --- a/cli/tests/unit_node/_fs/_fs_mkdir_test.ts +++ b/tests/unit_node/_fs/_fs_mkdir_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_mkdtemp_test.ts b/tests/unit_node/_fs/_fs_mkdtemp_test.ts index 9f8975113..9f8975113 100644 --- a/cli/tests/unit_node/_fs/_fs_mkdtemp_test.ts +++ b/tests/unit_node/_fs/_fs_mkdtemp_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_open_test.ts b/tests/unit_node/_fs/_fs_open_test.ts index 8cb9b0ec2..8cb9b0ec2 100644 --- a/cli/tests/unit_node/_fs/_fs_open_test.ts +++ b/tests/unit_node/_fs/_fs_open_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_opendir_test.ts b/tests/unit_node/_fs/_fs_opendir_test.ts index d4abb349c..d4abb349c 100644 --- a/cli/tests/unit_node/_fs/_fs_opendir_test.ts +++ b/tests/unit_node/_fs/_fs_opendir_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_readFile_test.ts b/tests/unit_node/_fs/_fs_readFile_test.ts index 00653955d..00653955d 100644 --- a/cli/tests/unit_node/_fs/_fs_readFile_test.ts +++ b/tests/unit_node/_fs/_fs_readFile_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_read_test.ts b/tests/unit_node/_fs/_fs_read_test.ts index de741e377..de741e377 100644 --- a/cli/tests/unit_node/_fs/_fs_read_test.ts +++ b/tests/unit_node/_fs/_fs_read_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_readdir_test.ts b/tests/unit_node/_fs/_fs_readdir_test.ts index eaacbfc5e..eaacbfc5e 100644 --- a/cli/tests/unit_node/_fs/_fs_readdir_test.ts +++ b/tests/unit_node/_fs/_fs_readdir_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_readlink_test.ts b/tests/unit_node/_fs/_fs_readlink_test.ts index 02d84c6c3..02d84c6c3 100644 --- a/cli/tests/unit_node/_fs/_fs_readlink_test.ts +++ b/tests/unit_node/_fs/_fs_readlink_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_realpath_test.ts b/tests/unit_node/_fs/_fs_realpath_test.ts index 6f22ff72a..6f22ff72a 100644 --- a/cli/tests/unit_node/_fs/_fs_realpath_test.ts +++ b/tests/unit_node/_fs/_fs_realpath_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_rename_test.ts b/tests/unit_node/_fs/_fs_rename_test.ts index dd0a01f8a..dd0a01f8a 100644 --- a/cli/tests/unit_node/_fs/_fs_rename_test.ts +++ b/tests/unit_node/_fs/_fs_rename_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_rm_test.ts b/tests/unit_node/_fs/_fs_rm_test.ts index 1cc82a0cc..1cc82a0cc 100644 --- a/cli/tests/unit_node/_fs/_fs_rm_test.ts +++ b/tests/unit_node/_fs/_fs_rm_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_rmdir_test.ts b/tests/unit_node/_fs/_fs_rmdir_test.ts index d2b075bdf..d2b075bdf 100644 --- a/cli/tests/unit_node/_fs/_fs_rmdir_test.ts +++ b/tests/unit_node/_fs/_fs_rmdir_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_stat_test.ts b/tests/unit_node/_fs/_fs_stat_test.ts index 38d5ca985..38d5ca985 100644 --- a/cli/tests/unit_node/_fs/_fs_stat_test.ts +++ b/tests/unit_node/_fs/_fs_stat_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_symlink_test.ts b/tests/unit_node/_fs/_fs_symlink_test.ts index 4e42da293..4e42da293 100644 --- a/cli/tests/unit_node/_fs/_fs_symlink_test.ts +++ b/tests/unit_node/_fs/_fs_symlink_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_truncate_test.ts b/tests/unit_node/_fs/_fs_truncate_test.ts index 9b7a9c490..9b7a9c490 100644 --- a/cli/tests/unit_node/_fs/_fs_truncate_test.ts +++ b/tests/unit_node/_fs/_fs_truncate_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_unlink_test.ts b/tests/unit_node/_fs/_fs_unlink_test.ts index 1bdd9ee29..1bdd9ee29 100644 --- a/cli/tests/unit_node/_fs/_fs_unlink_test.ts +++ b/tests/unit_node/_fs/_fs_unlink_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_utimes_test.ts b/tests/unit_node/_fs/_fs_utimes_test.ts index 1c6c7455e..1c6c7455e 100644 --- a/cli/tests/unit_node/_fs/_fs_utimes_test.ts +++ b/tests/unit_node/_fs/_fs_utimes_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_watch_test.ts b/tests/unit_node/_fs/_fs_watch_test.ts index ffa6cac45..ffa6cac45 100644 --- a/cli/tests/unit_node/_fs/_fs_watch_test.ts +++ b/tests/unit_node/_fs/_fs_watch_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_writeFile_test.ts b/tests/unit_node/_fs/_fs_writeFile_test.ts index 44f1403df..44f1403df 100644 --- a/cli/tests/unit_node/_fs/_fs_writeFile_test.ts +++ b/tests/unit_node/_fs/_fs_writeFile_test.ts diff --git a/cli/tests/unit_node/_fs/_fs_write_test.ts b/tests/unit_node/_fs/_fs_write_test.ts index 7e75f321f..7e75f321f 100644 --- a/cli/tests/unit_node/_fs/_fs_write_test.ts +++ b/tests/unit_node/_fs/_fs_write_test.ts diff --git a/cli/tests/unit_node/_fs/testdata/hello.txt b/tests/unit_node/_fs/testdata/hello.txt index 95d09f2b1..95d09f2b1 100644 --- a/cli/tests/unit_node/_fs/testdata/hello.txt +++ b/tests/unit_node/_fs/testdata/hello.txt diff --git a/cli/tests/unit_node/_test_utils.ts b/tests/unit_node/_test_utils.ts index 3942cf0a9..3942cf0a9 100644 --- a/cli/tests/unit_node/_test_utils.ts +++ b/tests/unit_node/_test_utils.ts diff --git a/cli/tests/unit_node/assertion_error_test.ts b/tests/unit_node/assertion_error_test.ts index b61baee93..b61baee93 100644 --- a/cli/tests/unit_node/assertion_error_test.ts +++ b/tests/unit_node/assertion_error_test.ts diff --git a/cli/tests/unit_node/async_hooks_test.ts b/tests/unit_node/async_hooks_test.ts index 1d0910d10..1d0910d10 100644 --- a/cli/tests/unit_node/async_hooks_test.ts +++ b/tests/unit_node/async_hooks_test.ts diff --git a/cli/tests/unit_node/buffer_test.ts b/tests/unit_node/buffer_test.ts index af83c9ada..af83c9ada 100644 --- a/cli/tests/unit_node/buffer_test.ts +++ b/tests/unit_node/buffer_test.ts diff --git a/cli/tests/unit_node/child_process_test.ts b/tests/unit_node/child_process_test.ts index 5314d66e7..5314d66e7 100644 --- a/cli/tests/unit_node/child_process_test.ts +++ b/tests/unit_node/child_process_test.ts diff --git a/cli/tests/unit_node/console_test.ts b/tests/unit_node/console_test.ts index bf6f667f2..bf6f667f2 100644 --- a/cli/tests/unit_node/console_test.ts +++ b/tests/unit_node/console_test.ts diff --git a/cli/tests/unit_node/crypto/crypto_cipher_gcm_test.ts b/tests/unit_node/crypto/crypto_cipher_gcm_test.ts index b7b616546..b7b616546 100644 --- a/cli/tests/unit_node/crypto/crypto_cipher_gcm_test.ts +++ b/tests/unit_node/crypto/crypto_cipher_gcm_test.ts diff --git a/cli/tests/unit_node/crypto/crypto_cipher_test.ts b/tests/unit_node/crypto/crypto_cipher_test.ts index 3da7ae3f1..3da7ae3f1 100644 --- a/cli/tests/unit_node/crypto/crypto_cipher_test.ts +++ b/tests/unit_node/crypto/crypto_cipher_test.ts diff --git a/cli/tests/unit_node/crypto/crypto_hash_test.ts b/tests/unit_node/crypto/crypto_hash_test.ts index ff1c9c598..ff1c9c598 100644 --- a/cli/tests/unit_node/crypto/crypto_hash_test.ts +++ b/tests/unit_node/crypto/crypto_hash_test.ts diff --git a/cli/tests/unit_node/crypto/crypto_key_test.ts b/tests/unit_node/crypto/crypto_key_test.ts index 8d1b24b21..8d1b24b21 100644 --- a/cli/tests/unit_node/crypto/crypto_key_test.ts +++ b/tests/unit_node/crypto/crypto_key_test.ts diff --git a/cli/tests/unit_node/crypto/crypto_sign_test.ts b/tests/unit_node/crypto/crypto_sign_test.ts index 287b54cc1..287b54cc1 100644 --- a/cli/tests/unit_node/crypto/crypto_sign_test.ts +++ b/tests/unit_node/crypto/crypto_sign_test.ts diff --git a/cli/tests/unit_node/crypto/ec_private_secp256r1.pem b/tests/unit_node/crypto/ec_private_secp256r1.pem index f1d5c5769..f1d5c5769 100644 --- a/cli/tests/unit_node/crypto/ec_private_secp256r1.pem +++ b/tests/unit_node/crypto/ec_private_secp256r1.pem diff --git a/cli/tests/unit_node/crypto/gcmEncryptExtIV128.json b/tests/unit_node/crypto/gcmEncryptExtIV128.json index 64896642d..64896642d 100644 --- a/cli/tests/unit_node/crypto/gcmEncryptExtIV128.json +++ b/tests/unit_node/crypto/gcmEncryptExtIV128.json diff --git a/cli/tests/unit_node/crypto/gcmEncryptExtIV256.json b/tests/unit_node/crypto/gcmEncryptExtIV256.json index cb8ba3086..cb8ba3086 100644 --- a/cli/tests/unit_node/crypto/gcmEncryptExtIV256.json +++ b/tests/unit_node/crypto/gcmEncryptExtIV256.json diff --git a/cli/tests/unit_node/dgram_test.ts b/tests/unit_node/dgram_test.ts index 4c6e49577..4c6e49577 100644 --- a/cli/tests/unit_node/dgram_test.ts +++ b/tests/unit_node/dgram_test.ts diff --git a/cli/tests/unit_node/events_test.ts b/tests/unit_node/events_test.ts index 13abf5f79..13abf5f79 100644 --- a/cli/tests/unit_node/events_test.ts +++ b/tests/unit_node/events_test.ts diff --git a/tests/unit_node/fs_test.ts b/tests/unit_node/fs_test.ts new file mode 100644 index 000000000..e0cdf3a23 --- /dev/null +++ b/tests/unit_node/fs_test.ts @@ -0,0 +1,116 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { + assert, + assertEquals, + assertThrows, +} from "@test_util/std/assert/mod.ts"; +import { join } from "node:path"; +import { tmpdir } from "node:os"; +import { + constants, + existsSync, + mkdtempSync, + promises, + readFileSync, + writeFileSync, +} from "node:fs"; +import { constants as fsPromiseConstants, cp } from "node:fs/promises"; +import { pathToAbsoluteFileUrl } from "../unit/test_util.ts"; + +Deno.test( + "[node/fs writeFileSync] write file without option", + () => { + const data = "Hello"; + const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; + + writeFileSync(filename, data); + const dataRead = readFileSync(filename, "utf8"); + + assert(dataRead === "Hello"); + }, +); + +Deno.test( + "[node/fs writeFileSync] write file with option ASCII", + () => { + const data = "Hello"; + const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; + + writeFileSync(filename, data, { encoding: "ascii" }); + const dataRead = readFileSync(filename, "utf8"); + + assert(dataRead === "Hello"); + }, +); + +Deno.test( + "[node/fs writeFileSync] write file throws error when encoding is not implemented", + () => { + const data = "Hello"; + const filename = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; + + assertThrows( + () => writeFileSync(filename, data, { encoding: "utf16le" }), + 'The value "utf16le" is invalid for option "encoding"', + ); + }, +); + +Deno.test( + "[node/fs existsSync] path", + { permissions: { read: true } }, + () => { + assert(existsSync("tests/testdata/assets/fixture.json")); + }, +); + +Deno.test( + "[node/fs existsSync] url", + { permissions: { read: true } }, + () => { + assert(existsSync( + pathToAbsoluteFileUrl("tests/testdata/assets/fixture.json"), + )); + }, +); + +Deno.test( + "[node/fs existsSync] no permission", + { permissions: { read: false } }, + () => { + assertThrows(() => { + existsSync("tests/testdata/assets/fixture.json"); + }, Deno.errors.PermissionDenied); + }, +); + +Deno.test( + "[node/fs existsSync] not exists", + { permissions: { read: true } }, + () => { + assert(!existsSync("bad_filename")); + }, +); + +Deno.test( + "[node/fs/promises constants] is the same as from node:fs", + () => { + assertEquals(constants, fsPromiseConstants); + assertEquals(constants, promises.constants); + }, +); + +Deno.test( + "[node/fs/promises cp] copy file", + async () => { + const src = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; + const dest = mkdtempSync(join(tmpdir(), "foo-")) + "/test.txt"; + writeFileSync(src, "Hello"); + + await cp(src, dest); + + const dataRead = readFileSync(dest, "utf8"); + assert(dataRead === "Hello"); + }, +); diff --git a/cli/tests/unit_node/http2_test.ts b/tests/unit_node/http2_test.ts index 5db5cc8e8..5db5cc8e8 100644 --- a/cli/tests/unit_node/http2_test.ts +++ b/tests/unit_node/http2_test.ts diff --git a/tests/unit_node/http_test.ts b/tests/unit_node/http_test.ts new file mode 100644 index 000000000..28e67ddad --- /dev/null +++ b/tests/unit_node/http_test.ts @@ -0,0 +1,940 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import EventEmitter from "node:events"; +import http, { type RequestOptions } from "node:http"; +import https from "node:https"; +import { assert, assertEquals, fail } from "@test_util/std/assert/mod.ts"; +import { assertSpyCalls, spy } from "@test_util/std/testing/mock.ts"; + +import { gzip } from "node:zlib"; +import { Buffer } from "node:buffer"; +import { serve } from "@test_util/std/http/server.ts"; +import { execCode } from "../unit/test_util.ts"; + +Deno.test("[node/http listen]", async () => { + { + const server = http.createServer(); + assertEquals(0, EventEmitter.listenerCount(server, "request")); + } + + { + const server = http.createServer(() => {}); + assertEquals(1, EventEmitter.listenerCount(server, "request")); + } + + { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer(); + + server.listen(() => { + server.close(); + }); + server.on("close", () => { + resolve(); + }); + + await promise; + } + + { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer(); + + server.listen().on("listening", () => { + server.close(); + }); + server.on("close", () => { + resolve(); + }); + + await promise; + } + + for (const port of [0, -0, 0.0, "0", null, undefined]) { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer(); + + server.listen(port, () => { + server.close(); + }); + server.on("close", () => { + resolve(); + }); + + await promise; + } +}); + +Deno.test("[node/http close]", async () => { + { + const deferred1 = Promise.withResolvers<void>(); + const deferred2 = Promise.withResolvers<void>(); + // Node quirk: callback gets exception object, event listener does not. + // deno-lint-ignore no-explicit-any + const server = http.createServer().close((err: any) => { + assertEquals(err.code, "ERR_SERVER_NOT_RUNNING"); + deferred1.resolve(); + }); + // deno-lint-ignore no-explicit-any + server.on("close", (err: any) => { + assertEquals(err, undefined); + deferred2.resolve(); + }); + server.on("listening", () => { + throw Error("unreachable"); + }); + await deferred1.promise; + await deferred2.promise; + } + + { + const deferred1 = Promise.withResolvers<void>(); + const deferred2 = Promise.withResolvers<void>(); + const server = http.createServer().listen().close((err) => { + assertEquals(err, undefined); + deferred1.resolve(); + }); + // deno-lint-ignore no-explicit-any + server.on("close", (err: any) => { + assertEquals(err, undefined); + deferred2.resolve(); + }); + server.on("listening", () => { + throw Error("unreachable"); + }); + await deferred1.promise; + await deferred2.promise; + } +}); + +Deno.test("[node/http] chunked response", async () => { + for ( + const body of [undefined, "", "ok"] + ) { + const expected = body ?? ""; + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = http.createServer((_req, res) => { + res.writeHead(200, { "transfer-encoding": "chunked" }); + res.end(body); + }); + + server.listen(async () => { + const res = await fetch( + // deno-lint-ignore no-explicit-any + `http://127.0.0.1:${(server.address() as any).port}/`, + ); + assert(res.ok); + + const actual = await res.text(); + assertEquals(actual, expected); + + server.close(() => resolve()); + }); + + await promise; + } +}); + +// Test empty chunks: https://github.com/denoland/deno/issues/17194 +Deno.test("[node/http] empty chunk in the middle of response", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + + const server = http.createServer((_req, res) => { + res.write("a"); + res.write(""); + res.write("b"); + res.end(); + }); + + server.listen(async () => { + const res = await fetch( + // deno-lint-ignore no-explicit-any + `http://127.0.0.1:${(server.address() as any).port}/`, + ); + const actual = await res.text(); + assertEquals(actual, "ab"); + server.close(() => resolve()); + }); + + await promise; +}); + +Deno.test("[node/http] server can respond with 101, 204, 205, 304 status", async () => { + for (const status of [101, 204, 205, 304]) { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((_req, res) => { + res.statusCode = status; + res.end(""); + }); + server.listen(async () => { + const res = await fetch( + // deno-lint-ignore no-explicit-any + `http://127.0.0.1:${(server.address() as any).port}/`, + ); + await res.arrayBuffer(); + assertEquals(res.status, status); + server.close(() => resolve()); + }); + await promise; + } +}); + +Deno.test("[node/http] IncomingRequest socket has remoteAddress + remotePort", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + + let remoteAddress: string | undefined; + let remotePort: number | undefined; + const server = http.createServer((req, res) => { + remoteAddress = req.socket.remoteAddress; + remotePort = req.socket.remotePort; + res.end(); + }); + server.listen(async () => { + // deno-lint-ignore no-explicit-any + const port = (server.address() as any).port; + const res = await fetch( + `http://127.0.0.1:${port}/`, + ); + await res.arrayBuffer(); + assertEquals(remoteAddress, "127.0.0.1"); + assertEquals(typeof remotePort, "number"); + server.close(() => resolve()); + }); + await promise; +}); + +Deno.test("[node/http] request default protocol", async () => { + const deferred1 = Promise.withResolvers<void>(); + const deferred2 = Promise.withResolvers<void>(); + const server = http.createServer((_, res) => { + res.end("ok"); + }); + + // @ts-ignore IncomingMessageForClient + // deno-lint-ignore no-explicit-any + let clientRes: any; + // deno-lint-ignore no-explicit-any + let clientReq: any; + server.listen(() => { + clientReq = http.request( + // deno-lint-ignore no-explicit-any + { host: "localhost", port: (server.address() as any).port }, + (res) => { + assert(res.socket instanceof EventEmitter); + assertEquals(res.complete, false); + res.on("data", () => {}); + res.on("end", () => { + server.close(); + }); + clientRes = res; + assertEquals(res.statusCode, 200); + deferred2.resolve(); + }, + ); + clientReq.end(); + }); + server.on("close", () => { + deferred1.resolve(); + }); + await deferred1.promise; + await deferred2.promise; + assert(clientReq.socket instanceof EventEmitter); + assertEquals(clientRes!.complete, true); +}); + +Deno.test("[node/http] request with headers", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((req, res) => { + assertEquals(req.headers["x-foo"], "bar"); + res.end("ok"); + }); + server.listen(() => { + const req = http.request( + { + host: "localhost", + // deno-lint-ignore no-explicit-any + port: (server.address() as any).port, + headers: { "x-foo": "bar" }, + }, + (res) => { + res.on("data", () => {}); + res.on("end", () => { + server.close(); + }); + assertEquals(res.statusCode, 200); + }, + ); + req.end(); + }); + server.on("close", () => { + resolve(); + }); + await promise; +}); + +Deno.test("[node/http] non-string buffer response", { + // TODO(kt3k): Enable sanitizer. A "zlib" resource is leaked in this test case. + sanitizeResources: false, +}, async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((_, res) => { + res.socket!.end(); + gzip( + Buffer.from("a".repeat(100), "utf8"), + {}, + (_err: Error | null, data: Buffer) => { + res.setHeader("Content-Encoding", "gzip"); + res.end(data); + }, + ); + }); + server.listen(async () => { + const res = await fetch( + // deno-lint-ignore no-explicit-any + `http://localhost:${(server.address() as any).port}`, + ); + try { + const text = await res.text(); + assertEquals(text, "a".repeat(100)); + } catch (e) { + server.emit("error", e); + } finally { + server.close(() => resolve()); + } + }); + await promise; +}); + +// TODO(kt3k): Enable this test +// Currently IncomingMessage constructor has incompatible signature. +/* +Deno.test("[node/http] http.IncomingMessage can be created without url", () => { + const message = new http.IncomingMessage( + // adapted from https://github.com/dougmoscrop/serverless-http/blob/80bfb3e940057d694874a8b0bc12ad96d2abe7ab/lib/request.js#L7 + { + // @ts-expect-error - non-request properties will also be passed in, e.g. by serverless-http + encrypted: true, + readable: false, + remoteAddress: "foo", + address: () => ({ port: 443 }), + // deno-lint-ignore no-explicit-any + end: Function.prototype as any, + // deno-lint-ignore no-explicit-any + destroy: Function.prototype as any, + }, + ); + message.url = "https://example.com"; +}); +*/ + +Deno.test("[node/http] send request with non-chunked body", async () => { + let requestHeaders: Headers; + let requestBody = ""; + + const hostname = "localhost"; + const port = 4505; + + // NOTE: Instead of node/http.createServer(), serve() in std/http/server.ts is used. + // https://github.com/denoland/deno_std/pull/2755#discussion_r1005592634 + const handler = async (req: Request) => { + requestHeaders = req.headers; + requestBody = await req.text(); + return new Response("ok"); + }; + const abortController = new AbortController(); + const servePromise = serve(handler, { + hostname, + port, + signal: abortController.signal, + onListen: undefined, + }); + + const opts: RequestOptions = { + host: hostname, + port, + method: "POST", + headers: { + "Content-Type": "text/plain; charset=utf-8", + "Content-Length": "11", + }, + }; + const req = http.request(opts, (res) => { + res.on("data", () => {}); + res.on("end", () => { + abortController.abort(); + }); + assertEquals(res.statusCode, 200); + assertEquals(requestHeaders.get("content-length"), "11"); + assertEquals(requestHeaders.has("transfer-encoding"), false); + assertEquals(requestBody, "hello world"); + }); + req.on("socket", (socket) => { + assert(socket.writable); + assert(socket.readable); + socket.setKeepAlive(); + socket.destroy(); + socket.setTimeout(100); + }); + req.write("hello "); + req.write("world"); + req.end(); + + await servePromise; +}); + +Deno.test("[node/http] send request with chunked body", async () => { + let requestHeaders: Headers; + let requestBody = ""; + + const hostname = "localhost"; + const port = 4505; + + // NOTE: Instead of node/http.createServer(), serve() in std/http/server.ts is used. + // https://github.com/denoland/deno_std/pull/2755#discussion_r1005592634 + const handler = async (req: Request) => { + requestHeaders = req.headers; + requestBody = await req.text(); + return new Response("ok"); + }; + const abortController = new AbortController(); + const servePromise = serve(handler, { + hostname, + port, + signal: abortController.signal, + onListen: undefined, + }); + + const opts: RequestOptions = { + host: hostname, + port, + method: "POST", + headers: { + "Content-Type": "text/plain; charset=utf-8", + "Content-Length": "11", + "Transfer-Encoding": "chunked", + }, + }; + const req = http.request(opts, (res) => { + res.on("data", () => {}); + res.on("end", () => { + abortController.abort(); + }); + assertEquals(res.statusCode, 200); + assertEquals(requestHeaders.has("content-length"), false); + assertEquals(requestHeaders.get("transfer-encoding"), "chunked"); + assertEquals(requestBody, "hello world"); + }); + req.write("hello "); + req.write("world"); + req.end(); + + await servePromise; +}); + +Deno.test("[node/http] send request with chunked body as default", async () => { + let requestHeaders: Headers; + let requestBody = ""; + + const hostname = "localhost"; + const port = 4505; + + // NOTE: Instead of node/http.createServer(), serve() in std/http/server.ts is used. + // https://github.com/denoland/deno_std/pull/2755#discussion_r1005592634 + const handler = async (req: Request) => { + requestHeaders = req.headers; + requestBody = await req.text(); + return new Response("ok"); + }; + const abortController = new AbortController(); + const servePromise = serve(handler, { + hostname, + port, + signal: abortController.signal, + onListen: undefined, + }); + + const opts: RequestOptions = { + host: hostname, + port, + method: "POST", + headers: { + "Content-Type": "text/plain; charset=utf-8", + }, + }; + const req = http.request(opts, (res) => { + res.on("data", () => {}); + res.on("end", () => { + abortController.abort(); + }); + assertEquals(res.statusCode, 200); + assertEquals(requestHeaders.has("content-length"), false); + assertEquals(requestHeaders.get("transfer-encoding"), "chunked"); + assertEquals(requestBody, "hello world"); + }); + req.write("hello "); + req.write("world"); + req.end(); + + await servePromise; +}); + +Deno.test("[node/http] ServerResponse _implicitHeader", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((_req, res) => { + const writeHeadSpy = spy(res, "writeHead"); + // deno-lint-ignore no-explicit-any + (res as any)._implicitHeader(); + assertSpyCalls(writeHeadSpy, 1); + writeHeadSpy.restore(); + res.end("Hello World"); + }); + + server.listen(async () => { + const { port } = server.address() as { port: number }; + const res = await fetch(`http://localhost:${port}`); + assertEquals(await res.text(), "Hello World"); + server.close(() => { + resolve(); + }); + }); + + await promise; +}); + +// https://github.com/denoland/deno/issues/21509 +Deno.test("[node/http] ServerResponse flushHeaders", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((_req, res) => { + res.flushHeaders(); // no-op + res.end("Hello World"); + }); + + server.listen(async () => { + const { port } = server.address() as { port: number }; + const res = await fetch(`http://localhost:${port}`); + assertEquals(await res.text(), "Hello World"); + server.close(() => { + resolve(); + }); + }); + + await promise; +}); + +Deno.test("[node/http] server unref", async () => { + const [statusCode, _output] = await execCode(` + import http from "node:http"; + const server = http.createServer((_req, res) => { + res.statusCode = status; + res.end(""); + }); + + // This should let the program to exit without waiting for the + // server to close. + server.unref(); + + server.listen(async () => { + }); + `); + assertEquals(statusCode, 0); +}); + +Deno.test("[node/http] ClientRequest handle non-string headers", async () => { + // deno-lint-ignore no-explicit-any + let headers: any; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const req = http.request("http://localhost:4545/echo_server", { + method: "POST", + headers: { 1: 2 }, + }, (resp) => { + headers = resp.headers; + + resp.on("data", () => {}); + + resp.on("end", () => { + resolve(); + }); + }); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + assertEquals(headers!["1"], "2"); +}); + +Deno.test("[node/http] ClientRequest uses HTTP/1.1", async () => { + let body = ""; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const req = https.request("https://localhost:5545/http_version", { + method: "POST", + headers: { 1: 2 }, + }, (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + assertEquals(body, "HTTP/1.1"); +}); + +Deno.test("[node/http] ClientRequest setTimeout", async () => { + let body = ""; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const timer = setTimeout(() => reject("timed out"), 50000); + const req = http.request("http://localhost:4545/http_version", (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }); + req.setTimeout(120000); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + clearTimeout(timer); + assertEquals(body, "HTTP/1.1"); +}); + +Deno.test("[node/http] ClientRequest setNoDelay", async () => { + let body = ""; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const timer = setTimeout(() => reject("timed out"), 50000); + const req = http.request("http://localhost:4545/http_version", (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }); + req.setNoDelay(true); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + clearTimeout(timer); + assertEquals(body, "HTTP/1.1"); +}); + +Deno.test("[node/http] ClientRequest PATCH", async () => { + let body = ""; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const req = http.request("http://localhost:4545/echo_server", { + method: "PATCH", + }, (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }); + req.write("hello "); + req.write("world"); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + assertEquals(body, "hello world"); +}); + +Deno.test("[node/http] ClientRequest PUT", async () => { + let body = ""; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const req = http.request("http://localhost:4545/echo_server", { + method: "PUT", + }, (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }); + req.write("hello "); + req.write("world"); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + assertEquals(body, "hello world"); +}); + +Deno.test("[node/http] ClientRequest search params", async () => { + let body = ""; + const { promise, resolve, reject } = Promise.withResolvers<void>(); + const req = http.request({ + host: "localhost:4545", + path: "search_params?foo=bar", + }, (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }); + req.once("error", (e) => reject(e)); + req.end(); + await promise; + assertEquals(body, "foo=bar"); +}); + +Deno.test("[node/http] HTTPS server", async () => { + const deferred = Promise.withResolvers<void>(); + const deferred2 = Promise.withResolvers<void>(); + const client = Deno.createHttpClient({ + caCerts: [Deno.readTextFileSync("tests/testdata/tls/RootCA.pem")], + }); + const server = https.createServer({ + cert: Deno.readTextFileSync("tests/testdata/tls/localhost.crt"), + key: Deno.readTextFileSync("tests/testdata/tls/localhost.key"), + }, (req, res) => { + // @ts-ignore: It exists on TLSSocket + assert(req.socket.encrypted); + res.end("success!"); + }); + server.listen(() => { + // deno-lint-ignore no-explicit-any + fetch(`https://localhost:${(server.address() as any).port}`, { + client, + }).then(async (res) => { + assertEquals(res.status, 200); + assertEquals(await res.text(), "success!"); + server.close(); + deferred2.resolve(); + }); + }) + .on("error", () => fail()); + server.on("close", () => { + deferred.resolve(); + }); + await Promise.all([deferred.promise, deferred2.promise]); + client.close(); +}); + +Deno.test( + "[node/http] client upgrade", + { permissions: { net: true } }, + async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((req, res) => { + // @ts-ignore: It exists on TLSSocket + assert(!req.socket.encrypted); + res.writeHead(200, { "Content-Type": "text/plain" }); + res.end("okay"); + }); + // @ts-ignore it's a socket for real + let serverSocket; + server.on("upgrade", (req, socket, _head) => { + // https://github.com/denoland/deno/issues/21979 + assert(req.socket?.write); + socket.write( + "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" + + "Upgrade: WebSocket\r\n" + + "Connection: Upgrade\r\n" + + "\r\n", + ); + serverSocket = socket; + }); + + // Now that server is running + server.listen(1337, "127.0.0.1", () => { + // make a request + const options = { + port: 1337, + host: "127.0.0.1", + headers: { + "Connection": "Upgrade", + "Upgrade": "websocket", + }, + }; + + const req = http.request(options); + req.end(); + + req.on("upgrade", (_res, socket, _upgradeHead) => { + socket.end(); + // @ts-ignore it's a socket for real + serverSocket!.end(); + server.close(() => { + resolve(); + }); + }); + }); + + await promise; + }, +); + +Deno.test( + "[node/http] client end with callback", + { permissions: { net: true } }, + async () => { + let received = false; + const ac = new AbortController(); + const server = Deno.serve({ port: 5928, signal: ac.signal }, (_req) => { + received = true; + return new Response("hello"); + }); + const { promise, resolve, reject } = Promise.withResolvers<void>(); + let body = ""; + + const request = http.request( + "http://localhost:5928/", + (resp) => { + resp.on("data", (chunk) => { + body += chunk; + }); + + resp.on("end", () => { + resolve(); + }); + }, + ); + request.on("error", reject); + request.end(() => { + assert(received); + }); + + await promise; + ac.abort(); + await server.finished; + + assertEquals(body, "hello"); + }, +); + +Deno.test("[node/http] server emits error if addr in use", async () => { + const deferred1 = Promise.withResolvers<void>(); + const deferred2 = Promise.withResolvers<Error>(); + + const server = http.createServer(); + server.listen(9001); + + const server2 = http.createServer(); + server2.on("error", (e) => { + deferred2.resolve(e); + }); + server2.listen(9001); + + const err = await deferred2.promise; + server.close(() => deferred1.resolve()); + server2.close(); + await deferred1.promise; + const expectedMsg = Deno.build.os === "windows" + ? "Only one usage of each socket address" + : "Address already in use"; + assert( + err.message.startsWith(expectedMsg), + `Wrong error: ${err.message}`, + ); +}); + +Deno.test( + "[node/http] client destroy doesn't leak", + { permissions: { net: true } }, + async () => { + const ac = new AbortController(); + let timerId; + + const server = Deno.serve( + { port: 5929, signal: ac.signal }, + async (_req) => { + await new Promise((resolve) => { + timerId = setTimeout(resolve, 5000); + }); + return new Response("hello"); + }, + ); + const { promise, resolve, reject } = Promise.withResolvers<void>(); + + const request = http.request("http://localhost:5929/"); + request.on("error", reject); + request.on("close", () => {}); + request.end(); + setTimeout(() => { + request.destroy(new Error()); + resolve(); + }, 100); + + await promise; + clearTimeout(timerId); + ac.abort(); + await server.finished; + }, +); + +Deno.test("[node/http] node:http exports globalAgent", async () => { + const http = await import("node:http"); + assert( + http.globalAgent, + "node:http must export 'globalAgent' on module namespace", + ); + assert( + http.default.globalAgent, + "node:http must export 'globalAgent' on module default export", + ); +}); + +Deno.test("[node/https] node:https exports globalAgent", async () => { + const https = await import("node:https"); + assert( + https.globalAgent, + "node:https must export 'globalAgent' on module namespace", + ); + assert( + https.default.globalAgent, + "node:https must export 'globalAgent' on module default export", + ); +}); + +Deno.test("[node/http] node:http request.setHeader(header, null) doesn't throw", () => { + { + const req = http.request("http://localhost:4545/"); + req.on("error", () => {}); + // @ts-expect-error - null is not a valid header value + req.setHeader("foo", null); + req.end(); + req.destroy(); + } + { + const req = https.request("https://localhost:4545/"); + req.on("error", () => {}); + // @ts-expect-error - null is not a valid header value + req.setHeader("foo", null); + req.end(); + req.destroy(); + } +}); + +Deno.test("[node/http] ServerResponse getHeader", async () => { + const { promise, resolve } = Promise.withResolvers<void>(); + const server = http.createServer((_req, res) => { + res.setHeader("foo", "bar"); + assertEquals(res.getHeader("foo"), "bar"); + assertEquals(res.getHeader("ligma"), undefined); + res.end("Hello World"); + }); + + server.listen(async () => { + const { port } = server.address() as { port: number }; + const res = await fetch(`http://localhost:${port}`); + assertEquals(await res.text(), "Hello World"); + server.close(() => { + resolve(); + }); + }); + + await promise; +}); diff --git a/cli/tests/unit_node/internal/_randomBytes_test.ts b/tests/unit_node/internal/_randomBytes_test.ts index 13ee82566..13ee82566 100644 --- a/cli/tests/unit_node/internal/_randomBytes_test.ts +++ b/tests/unit_node/internal/_randomBytes_test.ts diff --git a/cli/tests/unit_node/internal/_randomFill_test.ts b/tests/unit_node/internal/_randomFill_test.ts index d85569960..d85569960 100644 --- a/cli/tests/unit_node/internal/_randomFill_test.ts +++ b/tests/unit_node/internal/_randomFill_test.ts diff --git a/cli/tests/unit_node/internal/_randomInt_test.ts b/tests/unit_node/internal/_randomInt_test.ts index 2639f77ce..2639f77ce 100644 --- a/cli/tests/unit_node/internal/_randomInt_test.ts +++ b/tests/unit_node/internal/_randomInt_test.ts diff --git a/cli/tests/unit_node/internal/pbkdf2_test.ts b/tests/unit_node/internal/pbkdf2_test.ts index 019e76dcd..019e76dcd 100644 --- a/cli/tests/unit_node/internal/pbkdf2_test.ts +++ b/tests/unit_node/internal/pbkdf2_test.ts diff --git a/cli/tests/unit_node/internal/scrypt_test.ts b/tests/unit_node/internal/scrypt_test.ts index bd846ba8d..bd846ba8d 100644 --- a/cli/tests/unit_node/internal/scrypt_test.ts +++ b/tests/unit_node/internal/scrypt_test.ts diff --git a/tests/unit_node/module_test.ts b/tests/unit_node/module_test.ts new file mode 100644 index 000000000..f8e117254 --- /dev/null +++ b/tests/unit_node/module_test.ts @@ -0,0 +1,72 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +import { createRequire, Module } from "node:module"; +import { assert, assertEquals } from "@test_util/std/assert/mod.ts"; +import process from "node:process"; +import * as path from "node:path"; + +Deno.test("[node/module _preloadModules] has internal require hook", () => { + // Check if it's there + // deno-lint-ignore no-explicit-any + (Module as any)._preloadModules([ + "./tests/unit_node/testdata/add_global_property.js", + ]); + // deno-lint-ignore no-explicit-any + assertEquals((globalThis as any).foo, "Hello"); +}); + +Deno.test("[node/module runMain] loads module using the current process.argv", () => { + process.argv = [ + process.argv[0], + "./tests/unit_node/testdata/add_global_property_run_main.js", + ]; + + // deno-lint-ignore no-explicit-any + (Module as any).runMain(); + // deno-lint-ignore no-explicit-any + assertEquals((globalThis as any).calledViaRunMain, true); +}); + +Deno.test("[node/module _nodeModulePaths] prevents duplicate /node_modules/node_modules suffix", () => { + // deno-lint-ignore no-explicit-any + const actual: string[] = (Module as any)._nodeModulePaths( + path.join(process.cwd(), "testdata", "node_modules", "foo"), + ); + + assert( + !actual.some((dir) => /node_modules[/\\]node_modules/g.test(dir)), + "Duplicate 'node_modules/node_modules' suffix found", + ); +}); + +Deno.test("[node/module _nodeModulePaths] prevents duplicate root /node_modules", () => { + // deno-lint-ignore no-explicit-any + const actual: string[] = (Module as any)._nodeModulePaths( + path.join(process.cwd(), "testdata", "node_modules", "foo"), + ); + + assert( + new Set(actual).size === actual.length, + "Duplicate path entries found", + ); + const root = path.parse(actual[0]).root; + assert( + actual.includes(path.join(root, "node_modules")), + "Missing root 'node_modules' directory", + ); +}); + +Deno.test("Built-in Node modules have `node:` prefix", () => { + let thrown = false; + try { + // @ts-ignore We want to explicitly test wrong call signature + createRequire(); + } catch (e) { + thrown = true; + const stackLines = e.stack.split("\n"); + // Assert that built-in node modules have `node:<mod_name>` specifiers. + assert(stackLines.some((line: string) => line.includes("(node:module:"))); + } + + assert(thrown); +}); diff --git a/cli/tests/unit_node/net_test.ts b/tests/unit_node/net_test.ts index 60cf9d8fc..60cf9d8fc 100644 --- a/cli/tests/unit_node/net_test.ts +++ b/tests/unit_node/net_test.ts diff --git a/cli/tests/unit_node/os_test.ts b/tests/unit_node/os_test.ts index c18aa07c3..c18aa07c3 100644 --- a/cli/tests/unit_node/os_test.ts +++ b/tests/unit_node/os_test.ts diff --git a/cli/tests/unit_node/path_test.ts b/tests/unit_node/path_test.ts index a6c4ec5a8..a6c4ec5a8 100644 --- a/cli/tests/unit_node/path_test.ts +++ b/tests/unit_node/path_test.ts diff --git a/cli/tests/unit_node/perf_hooks_test.ts b/tests/unit_node/perf_hooks_test.ts index 004eedfd6..004eedfd6 100644 --- a/cli/tests/unit_node/perf_hooks_test.ts +++ b/tests/unit_node/perf_hooks_test.ts diff --git a/cli/tests/unit_node/process_test.ts b/tests/unit_node/process_test.ts index 4f4703d35..4f4703d35 100644 --- a/cli/tests/unit_node/process_test.ts +++ b/tests/unit_node/process_test.ts diff --git a/cli/tests/unit_node/querystring_test.ts b/tests/unit_node/querystring_test.ts index 9831d92ed..9831d92ed 100644 --- a/cli/tests/unit_node/querystring_test.ts +++ b/tests/unit_node/querystring_test.ts diff --git a/cli/tests/unit_node/readline_test.ts b/tests/unit_node/readline_test.ts index ecd1a893d..ecd1a893d 100644 --- a/cli/tests/unit_node/readline_test.ts +++ b/tests/unit_node/readline_test.ts diff --git a/cli/tests/unit_node/repl_test.ts b/tests/unit_node/repl_test.ts index adfc1d60a..adfc1d60a 100644 --- a/cli/tests/unit_node/repl_test.ts +++ b/tests/unit_node/repl_test.ts diff --git a/cli/tests/unit_node/stream_test.ts b/tests/unit_node/stream_test.ts index ab81497d1..ab81497d1 100644 --- a/cli/tests/unit_node/stream_test.ts +++ b/tests/unit_node/stream_test.ts diff --git a/cli/tests/unit_node/string_decoder_test.ts b/tests/unit_node/string_decoder_test.ts index 768ae3b3a..768ae3b3a 100644 --- a/cli/tests/unit_node/string_decoder_test.ts +++ b/tests/unit_node/string_decoder_test.ts diff --git a/cli/tests/unit_node/testdata/add_global_property.js b/tests/unit_node/testdata/add_global_property.js index 814d17d0d..814d17d0d 100644 --- a/cli/tests/unit_node/testdata/add_global_property.js +++ b/tests/unit_node/testdata/add_global_property.js diff --git a/cli/tests/unit_node/testdata/add_global_property_run_main.js b/tests/unit_node/testdata/add_global_property_run_main.js index c9db1cea6..c9db1cea6 100644 --- a/cli/tests/unit_node/testdata/add_global_property_run_main.js +++ b/tests/unit_node/testdata/add_global_property_run_main.js diff --git a/cli/tests/unit_node/testdata/binary_stdio.js b/tests/unit_node/testdata/binary_stdio.js index aa370a933..aa370a933 100644 --- a/cli/tests/unit_node/testdata/binary_stdio.js +++ b/tests/unit_node/testdata/binary_stdio.js diff --git a/cli/tests/unit_node/testdata/child_process_stdio.js b/tests/unit_node/testdata/child_process_stdio.js index b13b09562..b13b09562 100644 --- a/cli/tests/unit_node/testdata/child_process_stdio.js +++ b/tests/unit_node/testdata/child_process_stdio.js diff --git a/cli/tests/unit_node/testdata/child_process_stdio_012.js b/tests/unit_node/testdata/child_process_stdio_012.js index e3717f985..e3717f985 100644 --- a/cli/tests/unit_node/testdata/child_process_stdio_012.js +++ b/tests/unit_node/testdata/child_process_stdio_012.js diff --git a/cli/tests/unit_node/testdata/child_process_unref.js b/tests/unit_node/testdata/child_process_unref.js index 8201ac44d..8201ac44d 100644 --- a/cli/tests/unit_node/testdata/child_process_unref.js +++ b/tests/unit_node/testdata/child_process_unref.js diff --git a/cli/tests/unit_node/testdata/exec_file_text_error.js b/tests/unit_node/testdata/exec_file_text_error.js index 9697e6044..9697e6044 100644 --- a/cli/tests/unit_node/testdata/exec_file_text_error.js +++ b/tests/unit_node/testdata/exec_file_text_error.js diff --git a/cli/tests/unit_node/testdata/exec_file_text_output.js b/tests/unit_node/testdata/exec_file_text_output.js index 019c0f4bc..019c0f4bc 100644 --- a/cli/tests/unit_node/testdata/exec_file_text_output.js +++ b/tests/unit_node/testdata/exec_file_text_output.js diff --git a/cli/tests/unit_node/testdata/infinite_loop.js b/tests/unit_node/testdata/infinite_loop.js index 0e6540a7b..0e6540a7b 100644 --- a/cli/tests/unit_node/testdata/infinite_loop.js +++ b/tests/unit_node/testdata/infinite_loop.js diff --git a/cli/tests/unit_node/testdata/lorem_ipsum.txt b/tests/unit_node/testdata/lorem_ipsum.txt index 08e00ed29..08e00ed29 100644 --- a/cli/tests/unit_node/testdata/lorem_ipsum.txt +++ b/tests/unit_node/testdata/lorem_ipsum.txt diff --git a/cli/tests/unit_node/testdata/node_modules/foo/index.js b/tests/unit_node/testdata/node_modules/foo/index.js index 24faba789..24faba789 100644 --- a/cli/tests/unit_node/testdata/node_modules/foo/index.js +++ b/tests/unit_node/testdata/node_modules/foo/index.js diff --git a/cli/tests/unit_node/testdata/node_modules/foo/package.json b/tests/unit_node/testdata/node_modules/foo/package.json index bde99de92..bde99de92 100644 --- a/cli/tests/unit_node/testdata/node_modules/foo/package.json +++ b/tests/unit_node/testdata/node_modules/foo/package.json diff --git a/cli/tests/unit_node/testdata/process_exit.ts b/tests/unit_node/testdata/process_exit.ts index 57351c087..57351c087 100644 --- a/cli/tests/unit_node/testdata/process_exit.ts +++ b/tests/unit_node/testdata/process_exit.ts diff --git a/cli/tests/unit_node/testdata/process_exit2.ts b/tests/unit_node/testdata/process_exit2.ts index 3731f745a..3731f745a 100644 --- a/cli/tests/unit_node/testdata/process_exit2.ts +++ b/tests/unit_node/testdata/process_exit2.ts diff --git a/cli/tests/unit_node/testdata/process_really_exit.ts b/tests/unit_node/testdata/process_really_exit.ts index 16f30b33d..16f30b33d 100644 --- a/cli/tests/unit_node/testdata/process_really_exit.ts +++ b/tests/unit_node/testdata/process_really_exit.ts diff --git a/cli/tests/unit_node/testdata/process_stdin.ts b/tests/unit_node/testdata/process_stdin.ts index 23562b090..23562b090 100644 --- a/cli/tests/unit_node/testdata/process_stdin.ts +++ b/tests/unit_node/testdata/process_stdin.ts diff --git a/cli/tests/unit_node/testdata/process_stdin_dummy.txt b/tests/unit_node/testdata/process_stdin_dummy.txt index a907ec3f4..a907ec3f4 100644 --- a/cli/tests/unit_node/testdata/process_stdin_dummy.txt +++ b/tests/unit_node/testdata/process_stdin_dummy.txt diff --git a/cli/tests/unit_node/testdata/rsa_private.pem b/tests/unit_node/testdata/rsa_private.pem index cd274ae6d..cd274ae6d 100644 --- a/cli/tests/unit_node/testdata/rsa_private.pem +++ b/tests/unit_node/testdata/rsa_private.pem diff --git a/cli/tests/unit_node/testdata/rsa_private_pkcs1.pem b/tests/unit_node/testdata/rsa_private_pkcs1.pem index 215e5cc51..215e5cc51 100644 --- a/cli/tests/unit_node/testdata/rsa_private_pkcs1.pem +++ b/tests/unit_node/testdata/rsa_private_pkcs1.pem diff --git a/cli/tests/unit_node/testdata/rsa_public.pem b/tests/unit_node/testdata/rsa_public.pem index 8c30cfa52..8c30cfa52 100644 --- a/cli/tests/unit_node/testdata/rsa_public.pem +++ b/tests/unit_node/testdata/rsa_public.pem diff --git a/cli/tests/unit_node/testdata/worker_module/index.js b/tests/unit_node/testdata/worker_module/index.js index a3e976b65..a3e976b65 100644 --- a/cli/tests/unit_node/testdata/worker_module/index.js +++ b/tests/unit_node/testdata/worker_module/index.js diff --git a/cli/tests/unit_node/testdata/worker_module/other_file.js b/tests/unit_node/testdata/worker_module/other_file.js index 41789dfe8..41789dfe8 100644 --- a/cli/tests/unit_node/testdata/worker_module/other_file.js +++ b/tests/unit_node/testdata/worker_module/other_file.js diff --git a/cli/tests/unit_node/testdata/worker_module/package.json b/tests/unit_node/testdata/worker_module/package.json index 486d2f82b..486d2f82b 100644 --- a/cli/tests/unit_node/testdata/worker_module/package.json +++ b/tests/unit_node/testdata/worker_module/package.json diff --git a/cli/tests/unit_node/testdata/worker_threads.mjs b/tests/unit_node/testdata/worker_threads.mjs index 03dc462f0..03dc462f0 100644 --- a/cli/tests/unit_node/testdata/worker_threads.mjs +++ b/tests/unit_node/testdata/worker_threads.mjs diff --git a/cli/tests/unit_node/timers_test.ts b/tests/unit_node/timers_test.ts index f5cccc9a9..f5cccc9a9 100644 --- a/cli/tests/unit_node/timers_test.ts +++ b/tests/unit_node/timers_test.ts diff --git a/cli/tests/unit_node/tls_test.ts b/tests/unit_node/tls_test.ts index d87df4e33..d87df4e33 100644 --- a/cli/tests/unit_node/tls_test.ts +++ b/tests/unit_node/tls_test.ts diff --git a/cli/tests/unit_node/tty_test.ts b/tests/unit_node/tty_test.ts index 43beda4bc..43beda4bc 100644 --- a/cli/tests/unit_node/tty_test.ts +++ b/tests/unit_node/tty_test.ts diff --git a/cli/tests/unit_node/util_test.ts b/tests/unit_node/util_test.ts index 8480266c1..8480266c1 100644 --- a/cli/tests/unit_node/util_test.ts +++ b/tests/unit_node/util_test.ts diff --git a/cli/tests/unit_node/v8_test.ts b/tests/unit_node/v8_test.ts index e48285d4e..e48285d4e 100644 --- a/cli/tests/unit_node/v8_test.ts +++ b/tests/unit_node/v8_test.ts diff --git a/cli/tests/unit_node/vm_test.ts b/tests/unit_node/vm_test.ts index 30449a7b1..30449a7b1 100644 --- a/cli/tests/unit_node/vm_test.ts +++ b/tests/unit_node/vm_test.ts diff --git a/cli/tests/unit_node/worker_threads_test.ts b/tests/unit_node/worker_threads_test.ts index e79049229..e79049229 100644 --- a/cli/tests/unit_node/worker_threads_test.ts +++ b/tests/unit_node/worker_threads_test.ts diff --git a/cli/tests/unit_node/zlib_test.ts b/tests/unit_node/zlib_test.ts index 31ebe0b4f..31ebe0b4f 100644 --- a/cli/tests/unit_node/zlib_test.ts +++ b/tests/unit_node/zlib_test.ts diff --git a/tools/copyright_checker.js b/tools/copyright_checker.js index 8aaa77fa1..15bba2229 100644 --- a/tools/copyright_checker.js +++ b/tools/copyright_checker.js @@ -24,15 +24,15 @@ export async function checkCopyright() { "*.js", "*.ts", ":!:.github/mtime_cache/action.js", - ":!:cli/tests/testdata/**", + ":!:tests/testdata/**", ":!:cli/bench/testdata/**", ":!:cli/tsc/dts/**", ":!:cli/tsc/*typescript.js", ":!:cli/tsc/compiler.d.ts", ":!:test_util/wpt/**", ":!:cli/tools/init/templates/**", - ":!:cli/tests/unit_node/testdata/**", - ":!:cli/tests/node_compat/test/**", + ":!:tests/unit_node/testdata/**", + ":!:tests/node_compat/test/**", ":!:cli/tools/bench/mitata.rs", // rust diff --git a/tools/lint.js b/tools/lint.js index 0eae493fd..8d6e2e64a 100755 --- a/tools/lint.js +++ b/tools/lint.js @@ -41,22 +41,22 @@ async function dlint() { "*.js", "*.ts", ":!:.github/mtime_cache/action.js", - ":!:cli/tests/testdata/swc_syntax_error.ts", - ":!:cli/tests/testdata/error_008_checkjs.js", + ":!:tests/testdata/swc_syntax_error.ts", + ":!:tests/testdata/error_008_checkjs.js", ":!:cli/bench/testdata/npm/*", ":!:cli/bench/testdata/express-router.js", ":!:cli/bench/testdata/react-dom.js", ":!:cli/compilers/wasm_wrap.js", ":!:cli/tsc/dts/**", - ":!:cli/tests/testdata/encoding/**", - ":!:cli/tests/testdata/error_syntax.js", - ":!:cli/tests/testdata/file_extensions/ts_with_js_extension.js", - ":!:cli/tests/testdata/fmt/**", - ":!:cli/tests/testdata/npm/**", - ":!:cli/tests/testdata/lint/**", - ":!:cli/tests/testdata/run/**", - ":!:cli/tests/testdata/tsc/**", - ":!:cli/tests/testdata/test/glob/**", + ":!:tests/testdata/encoding/**", + ":!:tests/testdata/error_syntax.js", + ":!:tests/testdata/file_extensions/ts_with_js_extension.js", + ":!:tests/testdata/fmt/**", + ":!:tests/testdata/npm/**", + ":!:tests/testdata/lint/**", + ":!:tests/testdata/run/**", + ":!:tests/testdata/tsc/**", + ":!:tests/testdata/test/glob/**", ":!:cli/tsc/*typescript.js", ":!:cli/tsc/compiler.d.ts", ":!:test_util/wpt/**", diff --git a/tools/node_compat/TODO.md b/tools/node_compat/TODO.md index d22e8811d..eb288c65e 100644 --- a/tools/node_compat/TODO.md +++ b/tools/node_compat/TODO.md @@ -1,7 +1,7 @@ <!-- deno-fmt-ignore-file --> # Remaining Node Tests -NOTE: This file should not be manually edited. Please edit `cli/tests/node_compat/config.json` and run `deno task setup` in `tools/node_compat` dir instead. +NOTE: This file should not be manually edited. Please edit `tests/node_compat/config.json` and run `deno task setup` in `tools/node_compat` dir instead. Total: 2999 diff --git a/tools/node_compat/setup.ts b/tools/node_compat/setup.ts index 4770fbc50..47588350d 100755 --- a/tools/node_compat/setup.ts +++ b/tools/node_compat/setup.ts @@ -1,7 +1,7 @@ #!/usr/bin/env -S deno run --allow-read=. --allow-write=. --allow-run=git // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -/** This copies the test files according to the config file `cli/tests/node_compat/config.jsonc` */ +/** This copies the test files according to the config file `tests/node_compat/config.jsonc` */ import { walk } from "@test_util/std/fs/walk.ts"; import { sep } from "@test_util/std/path/mod.ts"; @@ -10,7 +10,7 @@ import { writeAll } from "@test_util/std/streams/write_all.ts"; import { withoutAll } from "@test_util/std/collections/without_all.ts"; import { relative } from "@test_util/std/path/posix.ts"; -import { config, ignoreList } from "../../cli/tests/node_compat/common.ts"; +import { config, ignoreList } from "../../tests/node_compat/common.ts"; const encoder = new TextEncoder(); @@ -39,7 +39,7 @@ const NODE_IGNORED_TEST_DIRS = [ const VENDORED_NODE_TEST = new URL("node/test/", import.meta.url); const NODE_COMPAT_TEST_DEST_URL = new URL( - "../../cli/tests/node_compat/test/", + "../../tests/node_compat/test/", import.meta.url, ); @@ -76,7 +76,7 @@ async function updateToDo() { await file.write(encoder.encode(`<!-- deno-fmt-ignore-file --> # Remaining Node Tests -NOTE: This file should not be manually edited. Please edit \`cli/tests/node_compat/config.json\` and run \`deno task setup\` in \`tools/node_compat\` dir instead. +NOTE: This file should not be manually edited. Please edit \`tests/node_compat/config.json\` and run \`deno task setup\` in \`tools/node_compat\` dir instead. Total: ${missingTests.length} |