deno/cli/tests/unit
Matt Mastracci 976c381045
perf(ext/websocket): Reduce GC pressure & monomorpize op_ws_next_event (#19405)
Reduce the GC pressure from the websocket event method by splitting it
into an event getter and a buffer getter.

Before:
165.9k msg/sec

After:
169.9k msg/sec
2023-06-08 09:32:08 -06:00
..
abort_controller_test.ts
blob_test.ts chore: update std submodule and its imports (#17408) 2023-01-15 21:09:26 +01:00
body_test.ts fix(fetch): Correctly decode multipart/form-data names and filenames (#19145) 2023-05-16 17:49:35 +02:00
broadcast_channel_test.ts
buffer_test.ts
build_test.ts
cache_api_test.ts fix(ext/cache): cache.put overwrites previous call (#18649) 2023-04-12 11:25:19 +05:30
chmod_test.ts
chown_test.ts
command_test.ts fix(runtime): ChildProcess::kill() doesn't require additional perms (#15339) 2023-05-11 14:53:45 +02:00
console_test.ts fix(ext/console): fix inspecting large ArrayBuffers (#19373) 2023-06-06 11:06:00 +02:00
copy_file_test.ts fix(runtime/fs): preserve permissions in copyFileSync for macOS (#17412) 2023-01-14 13:45:30 +00:00
custom_event_test.ts
dir_test.ts
dom_exception_test.ts
error_stack_test.ts
error_test.ts fix: add WouldBlock error (#17339) 2023-02-12 23:14:33 +01:00
esnext_test.ts
event_target_test.ts fix(ext/web): Copy EventTarget list before dispatch (#19360) 2023-06-04 18:03:44 -06:00
event_test.ts
fetch_test.ts chore(cli): One Rust test per JS and Node unit test file (#19199) 2023-05-22 13:35:59 -06:00
ffi_test.ts feat(ext/ffi): Replace pointer integers with v8::External objects (#16889) 2023-02-22 19:32:38 +02:00
file_test.ts
filereader_test.ts
files_test.ts feat: TypeScript 5.0.2 (except decorators) (#18294) 2023-03-21 15:46:40 +00:00
flock_test.ts
fs_events_test.ts
get_random_values_test.ts
globals_test.ts refactor: remove Deno.core (#16881) 2023-01-24 18:54:10 +01:00
headers_test.ts fix(core): introduce SafeRegExp to primordials (#17592) 2023-03-01 08:14:16 +09:00
http_test.ts chore(core): Ensure that net test ports aren't used elsewhere (#19243) 2023-05-24 12:36:41 -06:00
internals_test.ts
intl_test.ts
io_test.ts
kv_test.ts fix(ext/kv): throw on the Kv constructor (#18978) 2023-05-03 23:08:42 +02:00
link_test.ts
make_temp_test.ts
message_channel_test.ts
metrics_test.ts perf(core): async op pseudo-codegen and performance work (#18887) 2023-04-30 08:50:24 +00:00
mkdir_test.ts
navigator_test.ts
net_test.ts chore(cli): One Rust test per JS and Node unit test file (#19199) 2023-05-22 13:35:59 -06:00
network_interfaces_test.ts
opcall_test.ts perf(core): async op pseudo-codegen and performance work (#18887) 2023-04-30 08:50:24 +00:00
os_test.ts
path_from_url_test.ts
performance_test.ts chore(cli): measure performance against wall-clock (#18357) 2023-03-22 18:06:29 +00:00
permissions_test.ts feat: Add sync APIs for "Deno.permissions" (#17019) 2023-01-25 00:42:44 +01:00
process_test.ts feat(lint): add Deno.run to no-deprecated-deno-api (#18869) 2023-04-27 02:52:52 +00:00
progressevent_test.ts
promise_hooks_test.ts refactor: remove Deno.core (#16881) 2023-01-24 18:54:10 +01:00
read_dir_test.ts
read_file_test.ts fix(runtime): Extract error code for all OS error variants (#17958) 2023-03-19 00:01:50 +00:00
read_link_test.ts
read_text_file_test.ts Revert "refactor: don't expose Deno[Deno.internal].core namespace" (#18881) 2023-04-28 00:37:03 +02:00
README.md
real_path_test.ts
ref_unref_test.ts refactor: remove Deno.core (#16881) 2023-01-24 18:54:10 +01:00
remove_test.ts
rename_test.ts
request_test.ts
resources_test.ts chore(cli): One Rust test per JS and Node unit test file (#19199) 2023-05-22 13:35:59 -06:00
response_test.ts
serve_test.ts refactor(ext/http): Expose internal serveHttpOnListener API for HTTP2 (#19331) 2023-05-31 23:20:39 +00:00
signal_test.ts
stat_test.ts feat(ext/fs): add isBlockDevice, isCharDevice, isFifo, isSocket to FileInfo (#19008) 2023-05-24 21:18:13 +02:00
stdio_test.ts
structured_clone_test.ts
symlink_test.ts
sync_test.ts
test_util.ts feat(ext/kv): key-value store (#18232) 2023-03-22 12:13:24 +08:00
testing_test.ts fix(test): allow explicit undefined for boolean test options (#18786) 2023-04-21 15:32:37 +02:00
text_encoding_test.ts refactor: remove Deno.core (#16881) 2023-01-24 18:54:10 +01:00
timers_test.ts fix(ext/web): improve timers resolution for 0ms timeouts (#19212) 2023-05-22 14:09:31 +02:00
tls_test.ts fix: support "fetch" over HTTPS for IP addresses (#18499) 2023-05-17 02:19:23 +02:00
truncate_test.ts
tty_color_test.ts
tty_test.ts
umask_test.ts
url_search_params_test.ts
url_test.ts fix(ext/url): throw TypeError for empty argument (#18896) 2023-04-30 12:24:34 +02:00
urlpattern_test.ts fix(dts): URLPatternComponentResult groups should have possibly undefined key values (#18643) 2023-04-26 19:15:25 -04:00
utime_test.ts
version_test.ts fix(cli): upgrade to Typescript 5.0.4 (#19090) 2023-05-11 14:12:58 +00:00
wasm_test.ts
webcrypto_test.ts fix(ext/crypto): correctly limit ECDSA and hash algorithms (#18030) 2023-03-05 12:34:07 +00:00
websocket_test.ts perf(ext/websocket): Reduce GC pressure & monomorpize op_ws_next_event (#19405) 2023-06-08 09:32:08 -06:00
webstorage_test.ts fix(ext/webstorage): check size of inputs before insert (#18087) 2023-03-09 12:28:51 +00:00
worker_permissions_test.ts
worker_types.ts
write_file_test.ts fix(ops): Always close cancel handles for read_async/write_async (#17736) 2023-02-11 14:19:13 +02:00
write_text_file_test.ts

Deno runtime tests

Files in this directory are unit tests for Deno runtime.

Testing Deno runtime code requires checking API under different runtime permissions. To accomplish this all tests exercised are created using Deno.test() function.

import {} from "./test_util.ts";

Deno.test(function simpleTestFn(): void {
  // test code here
});

Deno.test(
  {
    ignore: Deno.build.os === "windows",
    permissions: { read: true, write: true },
  },
  function complexTestFn(): void {
    // test code here
  },
);

Running tests

There are two ways to run unit_test_runner.ts:

# Run all tests.
cargo run --bin deno -- test --allow-all --unstable --location=http://js-unit-tests/foo/bar cli/tests/unit/

# Run a specific test module
cargo run --bin deno -- test --allow-all --unstable --location=http://js-unit-tests/foo/bar cli/tests/unit/files_test.ts

Http server

target/debug/test_server is required to run when one's running unit tests. During CI it's spawned automatically, but if you want to run tests manually make sure that server is spawned otherwise there'll be cascade of test failures.