fix(ext/fs): account for all ops in leak checks (#23300)

This is PR a smaller retry of #23066 that simply ensures all async
`ext/fs` ops are accounted for if left hanging in tests. This also sorts
the `OP_DETAILS` in alphabetical order for easy future reading.

When reviewing, it might be best to look at the commits in order for
better understanding.
This commit is contained in:
Asher Gomez 2024-04-10 12:47:01 +10:00 committed by GitHub
parent e190acbfa8
commit 08f46ac446
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -293,9 +293,6 @@ pub const OP_DETAILS: phf::Map<&'static str, [&'static str; 2]> = phf_map! {
"op_blob_read_part" => ["read from a Blob or File", "awaiting the result of a Blob or File read"],
"op_broadcast_recv" => ["receive a message from a BroadcastChannel", "closing the BroadcastChannel"],
"op_broadcast_send" => ["send a message to a BroadcastChannel", "closing the BroadcastChannel"],
"op_chmod_async" => ["change the permissions of a file", "awaiting the result of a `Deno.chmod` call"],
"op_chown_async" => ["change the owner of a file", "awaiting the result of a `Deno.chown` call"],
"op_copy_file_async" => ["copy a file", "awaiting the result of a `Deno.copyFile` call"],
"op_crypto_decrypt" => ["decrypt data", "awaiting the result of a `crypto.subtle.decrypt` call"],
"op_crypto_derive_bits" => ["derive bits from a key", "awaiting the result of a `crypto.subtle.deriveBits` call"],
"op_crypto_encrypt" => ["encrypt data", "awaiting the result of a `crypto.subtle.encrypt` call"],
@ -303,66 +300,76 @@ pub const OP_DETAILS: phf::Map<&'static str, [&'static str; 2]> = phf_map! {
"op_crypto_sign_key" => ["sign data", "awaiting the result of a `crypto.subtle.sign` call"],
"op_crypto_subtle_digest" => ["digest data", "awaiting the result of a `crypto.subtle.digest` call"],
"op_crypto_verify_key" => ["verify data", "awaiting the result of a `crypto.subtle.verify` call"],
"op_dns_resolve" => ["resolve a DNS name", "awaiting the result of a `Deno.resolveDns` call"],
"op_fetch_send" => ["send a HTTP request", "awaiting the result of a `fetch` call"],
"op_ffi_call_nonblocking" => ["do a non blocking ffi call", "awaiting the returned promise"],
"op_ffi_call_ptr_nonblocking" => ["do a non blocking ffi call", "awaiting the returned promise"],
"op_fs_chmod_async" => ["change the permissions of a file", "awaiting the result of a `Deno.chmod` call"],
"op_fs_chown_async" => ["change the owner of a file", "awaiting the result of a `Deno.chown` call"],
"op_fs_copy_file_async" => ["copy a file", "awaiting the result of a `Deno.copyFile` call"],
"op_fs_events_poll" => ["get the next file system event", "breaking out of a for await loop looping over `Deno.FsEvents`"],
"op_fs_fdatasync_async" => ["flush pending data operations for a file to disk", "awaiting the result of a `Deno.fdatasync` call"],
"op_fs_fdatasync_async_unstable" => ["flush pending data operations for a file to disk", "awaiting the result of a `Deno.FsFile.syncData` call"],
"op_fs_file_stat_async" => ["get file metadata", "awaiting the result of a `Deno.fstat` or `Deno.FsFile.stat` call"],
"op_fs_flock_async" => ["lock a file", "awaiting the result of a `Deno.flock` or `Deno.FsFile.lock` call"],
"op_fs_fsync_async" => ["flush pending data operations for a file to disk", "awaiting the result of a `Deno.fsync` or `Deno.FsFile.sync` call"],
"op_fs_fsync_async_unstable" => ["flush pending data operations for a file to disk", "awaiting the result of a `Deno.FsFile.sync` call"],
"op_fs_ftruncate_async" => ["truncate a file", "awaiting the result of a `Deno.ftruncate` or `Deno.FsFile.truncate` call"],
"op_fs_funlock_async" => ["unlock a file", "awaiting the result of a `Deno.funlock` or `Deno.FsFile.unlock` call"],
"op_fs_futime_async" => ["change file timestamps", "awaiting the result of a `Deno.futime` or `Deno.FsFile.utime` call"],
"op_fs_link_async" => ["create a hard link", "awaiting the result of a `Deno.link` call"],
"op_fs_lstat_async" => ["get file metadata", "awaiting the result of a `Deno.lstat` call"],
"op_fs_make_temp_dir_async" => ["create a temporary directory", "awaiting the result of a `Deno.makeTempDir` call"],
"op_fs_make_temp_file_async" => ["create a temporary file", "awaiting the result of a `Deno.makeTempFile` call"],
"op_fs_mkdir_async" => ["create a directory", "awaiting the result of a `Deno.mkdir` call"],
"op_fs_open_async" => ["open a file", "awaiting the result of a `Deno.open` call"],
"op_fs_read_dir_async" => ["read a directory", "collecting all items in the async iterable returned from a `Deno.readDir` call"],
"op_fs_read_file_async" => ["read a file", "awaiting the result of a `Deno.readFile` call"],
"op_fs_read_file_text_async" => ["read a text file", "awaiting the result of a `Deno.readTextFile` call"],
"op_fs_read_link_async" => ["read a symlink", "awaiting the result of a `Deno.readLink` call"],
"op_fs_realpath_async" => ["resolve a path", "awaiting the result of a `Deno.realpath` call"],
"op_fs_remove_async" => ["remove a file or directory", "awaiting the result of a `Deno.remove` call"],
"op_fs_rename_async" => ["rename a file or directory", "awaiting the result of a `Deno.rename` call"],
"op_fs_seek_async" => ["seek in a file", "awaiting the result of a `Deno.seek` or `Deno.FsFile.seek` call"],
"op_fs_stat_async" => ["get file metadata", "awaiting the result of a `Deno.stat` call"],
"op_fs_symlink_async" => ["create a symlink", "awaiting the result of a `Deno.symlink` call"],
"op_fs_truncate_async" => ["truncate a file", "awaiting the result of a `Deno.truncate` call"],
"op_fs_utime_async" => ["change file timestamps", "awaiting the result of a `Deno.utime` call"],
"op_fs_write_file_async" => ["write a file", "awaiting the result of a `Deno.writeFile` call"],
"op_host_recv_ctrl" => ["receive a message from a web worker", "terminating a `Worker`"],
"op_host_recv_message" => ["receive a message from a web worker", "terminating a `Worker`"],
"op_http_accept" => ["accept a HTTP request", "closing a `Deno.HttpConn`"],
"op_http_shutdown" => ["shutdown a HTTP connection", "awaiting `Deno.HttpEvent#respondWith`"],
"op_http_upgrade_websocket" => ["upgrade a HTTP connection to a WebSocket", "awaiting `Deno.HttpEvent#respondWith`"],
"op_http_write" => ["write HTTP response body", "awaiting `Deno.HttpEvent#respondWith`"],
"op_http_write_headers" => ["write HTTP response headers", "awaiting `Deno.HttpEvent#respondWith`"],
"op_message_port_recv_message" => ["receive a message from a MessagePort", "awaiting the result of not closing a `MessagePort`"],
"op_net_accept_tcp" => ["accept a TCP stream", "closing a `Deno.Listener`"],
"op_net_accept_tls" => ["accept a TLS stream", "closing a `Deno.TlsListener`"],
"op_net_accept_unix" => ["accept a Unix stream", "closing a `Deno.Listener`"],
"op_net_connect_tcp" => ["connect to a TCP server", "awaiting a `Deno.connect` call"],
"op_net_connect_tls" => ["connect to a TLS server", "awaiting a `Deno.connectTls` call"],
"op_net_connect_unix" => ["connect to a Unix server", "awaiting a `Deno.connect` call"],
"op_net_recv_udp" => ["receive a datagram message via UDP", "awaiting the result of `Deno.DatagramConn#receive` call, or not breaking out of a for await loop looping over a `Deno.DatagramConn`"],
"op_net_recv_unixpacket" => ["receive a datagram message via Unixpacket", "awaiting the result of `Deno.DatagramConn#receive` call, or not breaking out of a for await loop looping over a `Deno.DatagramConn`"],
"op_net_send_udp" => ["send a datagram message via UDP", "awaiting the result of `Deno.DatagramConn#send` call"],
"op_net_send_unixpacket" => ["send a datagram message via Unixpacket", "awaiting the result of `Deno.DatagramConn#send` call"],
"op_dns_resolve" => ["resolve a DNS name", "awaiting the result of a `Deno.resolveDns` call"],
"op_fdatasync_async" => ["flush pending data operations for a file to disk", "awaiting the result of a `file.fdatasync` call"],
"op_fetch_send" => ["send a HTTP request", "awaiting the result of a `fetch` call"],
"op_ffi_call_nonblocking" => ["do a non blocking ffi call", "awaiting the returned promise"],
"op_ffi_call_ptr_nonblocking" => ["do a non blocking ffi call", "awaiting the returned promise"],
"op_flock_async" => ["lock a file", "awaiting the result of a `Deno.flock` call"],
"op_fs_events_poll" => ["get the next file system event", "breaking out of a for await loop looping over `Deno.FsEvents`"],
"op_fs_file_stat_async" => ["get file metadata", "awaiting the result of a `Deno.FsFile#stat` call"],
"op_fsync_async" => ["flush pending data operations for a file to disk", "awaiting the result of a `file.fsync` call"],
"op_ftruncate_async" => ["truncate a file", "awaiting the result of a `Deno.ftruncate` call"],
"op_funlock_async" => ["unlock a file", "awaiting the result of a `Deno.funlock` call"],
"op_futime_async" => ["change file timestamps", "awaiting the result of a `Deno.futime` call"],
"op_http_accept" => ["accept a HTTP request", "closing a `Deno.HttpConn`"],
"op_http_shutdown" => ["shutdown a HTTP connection", "awaiting `Deno.HttpEvent#respondWith`"],
"op_http_upgrade_websocket" => ["upgrade a HTTP connection to a WebSocket", "awaiting `Deno.HttpEvent#respondWith`"],
"op_http_write_headers" => ["write HTTP response headers", "awaiting `Deno.HttpEvent#respondWith`"],
"op_http_write" => ["write HTTP response body", "awaiting `Deno.HttpEvent#respondWith`"],
"op_link_async" => ["create a hard link", "awaiting the result of a `Deno.link` call"],
"op_make_temp_dir_async" => ["create a temporary directory", "awaiting the result of a `Deno.makeTempDir` call"],
"op_make_temp_file_async" => ["create a temporary file", "awaiting the result of a `Deno.makeTempFile` call"],
"op_message_port_recv_message" => ["receive a message from a MessagePort", "awaiting the result of not closing a `MessagePort`"],
"op_mkdir_async" => ["create a directory", "awaiting the result of a `Deno.mkdir` call"],
"op_net_accept_tcp" => ["accept a TCP stream", "closing a `Deno.Listener`"],
"op_net_accept_unix" => ["accept a Unix stream", "closing a `Deno.Listener`"],
"op_net_connect_tcp" => ["connect to a TCP server", "awaiting a `Deno.connect` call"],
"op_net_connect_unix" => ["connect to a Unix server", "awaiting a `Deno.connect` call"],
"op_open_async" => ["open a file", "awaiting the result of a `Deno.open` call"],
"op_read_dir_async" => ["read a directory", "collecting all items in the async iterable returned from a `Deno.readDir` call"],
"op_read_link_async" => ["read a symlink", "awaiting the result of a `Deno.readLink` call"],
"op_realpath_async" => ["resolve a path", "awaiting the result of a `Deno.realpath` call"],
"op_remove_async" => ["remove a file or directory", "awaiting the result of a `Deno.remove` call"],
"op_rename_async" => ["rename a file or directory", "awaiting the result of a `Deno.rename` call"],
"op_run_status" => ["get the status of a subprocess", "awaiting the result of a `Deno.Process#status` call"],
"op_seek_async" => ["seek in a file", "awaiting the result of a `Deno.File#seek` call"],
"op_signal_poll" => ["get the next signal", "un-registering a OS signal handler"],
"op_stat_async" => ["get file metadata", "awaiting the result of a `Deno.stat` call"],
"op_symlink_async" => ["create a symlink", "awaiting the result of a `Deno.symlink` call"],
"op_net_accept_tls" => ["accept a TLS stream", "closing a `Deno.TlsListener`"],
"op_net_connect_tls" => ["connect to a TLS server", "awaiting a `Deno.connectTls` call"],
"op_spawn_wait" => ["wait for a subprocess to exit", "awaiting the result of a `Deno.Process#status` call"],
"op_tls_handshake" => ["perform a TLS handshake", "awaiting a `Deno.TlsConn#handshake` call"],
"op_tls_start" => ["start a TLS connection", "awaiting a `Deno.startTls` call"],
"op_truncate_async" => ["truncate a file", "awaiting the result of a `Deno.truncate` call"],
"op_utime_async" => ["change file timestamps", "awaiting the result of a `Deno.utime` call"],
"op_host_recv_message" => ["receive a message from a web worker", "terminating a `Worker`"],
"op_host_recv_ctrl" => ["receive a message from a web worker", "terminating a `Worker`"],
"op_webgpu_buffer_get_map_async" => ["map a WebGPU buffer", "awaiting the result of a `GPUBuffer#mapAsync` call"],
"op_webgpu_request_adapter" => ["request a WebGPU adapter", "awaiting the result of a `navigator.gpu.requestAdapter` call"],
"op_webgpu_request_device" => ["request a WebGPU device", "awaiting the result of a `GPUAdapter#requestDevice` call"],
"op_ws_close" => ["close a WebSocket", "awaiting until the `close` event is emitted on a `WebSocket`, or the `WebSocketStream#closed` promise resolves"],
"op_ws_create" => ["create a WebSocket", "awaiting until the `open` event is emitted on a `WebSocket`, or the result of a `WebSocketStream#connection` promise"],
"op_ws_next_event" => ["receive the next message on a WebSocket", "closing a `WebSocket` or `WebSocketStream`"],
"op_ws_send_text" => ["send a message on a WebSocket", "closing a `WebSocket` or `WebSocketStream`"],
"op_ws_send_binary" => ["send a message on a WebSocket", "closing a `WebSocket` or `WebSocketStream`"],
"op_ws_send_binary_ab" => ["send a message on a WebSocket", "closing a `WebSocket` or `WebSocketStream`"],
"op_ws_send_ping" => ["send a message on a WebSocket", "closing a `WebSocket` or `WebSocketStream`"],
"op_spawn_wait" => ["wait for a subprocess to exit", "awaiting the result of a `Deno.Process#status` call"],
"op_ws_send_text" => ["send a message on a WebSocket", "closing a `WebSocket` or `WebSocketStream`"],
};
#[cfg(test)]