Skip to content

test: sync Node.js test suite with v24.14.1 (d89bb1b482)#29359

Open
robobun wants to merge 1 commit into
mainfrom
farm/3c77c19a/add-node-tests-v24.14.1
Open

test: sync Node.js test suite with v24.14.1 (d89bb1b482)#29359
robobun wants to merge 1 commit into
mainfrom
farm/3c77c19a/add-node-tests-v24.14.1

Conversation

@robobun

@robobun robobun commented Apr 16, 2026

Copy link
Copy Markdown
Collaborator

Syncs tests in test/js/node/test/{parallel,sequential}/ with Node.js at commit d89bb1b482 (v24.14.1).

Test list: https://gist.githubusercontent.com/alii/9b204e9fed78b8d855d282d206cb396a/raw/126374581510b12dc95bead93f237995c2f4dffa/gistfile1.txt

Summary

  • 284 existing tests updated to match upstream

  • 35 new tests added

  • 38 existing tests kept at Bun's version because they carry Bun-specific workarounds (platform skips via // TODO: BUN, FORCE_COLOR cleanup, process.binding('uv') compat, typeof Bun guards, trailing-slash normalization, timing adjustments, error message format differences, etc.) that the upstream version breaks.

    list
    test-child-process-kill.js
    test-cluster-shared-handle-bind-privileged-port.js
    test-console-tty-colors.js
    test-dns-lookupService-promises.js
    test-events-uncaught-exception-stack.js
    test-fs-access.js
    test-fs-lchmod.js
    test-fs-readdir-recursive.js
    test-fs-symlink-dir-junction.js
    test-http-client-pipe-end.js
    test-http-client-response-timeout.js
    test-http-client-with-create-connection.js
    test-http-full-response.js
    test-http-parser-free.js
    test-http-unix-socket.js
    test-http-url.parse-https.request.js
    test-http2-large-write-close.js
    test-http2-large-writes-session-memory-leak.js
    test-http2-misbehaving-flow-control-paused.js
    test-http2-misbehaving-flow-control.js
    test-http2-pipe.js
    test-https-unix-socket-self-signed.js
    test-module-readonly.js
    test-net-connect-options-path.js
    test-pipe-address.js
    test-process-exception-capture-should-abort-on-uncaught.js
    test-process-exception-capture.js
    test-process-title-cli.js
    test-require-extensions-same-filename-as-dir-trailing-slash.js
    test-runner-typechecking.js
    test-spawn-cmd-named-pipe.js
    test-timers-immediate-queue.js
    test-tls-cert-ext-encoding.js
    test-tls-client-destroy-soon.js
    test-tls-net-connect-prefer-path.js
    test-tls-no-sslv3.js
    test-windows-failed-heap-allocation.js
    sequential/test-crypto-timing-safe-equal.js
    
  • 22 new tests from the list were dropped because they currently fail or are flaky in Bun (incompatibilities / crashes / races — to be addressed separately):

    list
    test-child-process-advanced-serialization-splitted-length-field.js
    test-child-process-server-close.js
    test-child-process-spawn-windows-batch-file.js
    test-child-process-uid-gid.js
    test-fs-read-stream-pos.js
    test-gc-http-client-connaborted.js           (requires countGC === count; JSC conservative GC pins one client)
    test-http-client-keep-alive-release-before-finish.js
    test-http2-compat-short-stream-client-server.js
    test-http2-short-stream-client-server.js
    test-net-allow-half-open.js
    test-net-bytes-stats.js
    test-net-end-destroyed.js
    test-net-large-string.js
    test-net-pause-resume-connecting.js
    test-net-write-after-end-nt.js
    test-path-win32-normalize-device-names.js
    test-permission-fs-windows-path.js
    test-worker-http2-stream-terminate.js
    test-worker-memory.js
    test-worker-process-exit-async-module.js
    sequential/test-gc-http-client-onerror.js    (requires countGC === count; JSC conservative GC pins one client)
    sequential/test-gc-http-client.js            (requires countGC === count; JSC conservative GC pins one client)
    

All referenced ../common/* helpers and fixture files already exist in-tree.

Rebase onto eae803811b (440 commits)

Main gained ~840 Node v26.3.0 tests via #31584 (http2), #31826 (stream), #31587 (http client), and #31155 (net/tls), plus the v26.3.0 version bump in #31991. Resolution:

All 319 remaining files pass locally against bun 1.4.0-canary.1+0c537fef8 (which includes the above rewrites), run the same way CI invokes them.

@robobun

robobun commented Apr 16, 2026

Copy link
Copy Markdown
Collaborator Author
Updated 11:09 AM PT - Jun 18th, 2026

@robobun, your commit 7dadb66 has 4 failures in Build #63347 (All Failures):


🧪   To try this PR locally:

bunx bun-pr 29359

That installs a local version of the PR into your bun-29359 executable, so you can run:

bun-29359 --bun

@coderabbitai

coderabbitai Bot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request updates Node.js test infrastructure across hundreds of parallel test files. Changes include refactoring assertion imports to use namespace imports, enforcing callback invocations with test control wrappers, converting side-effect requires to const bindings, and adding new test files for crypto, HTTP, clustering, and garbage collection scenarios.

Changes

Cohort / File(s) Summary
Assert module refactoring
test/js/node/test/parallel/test-async-local-storage-snapshot.js, test/js/node/test/parallel/test-blocklist-clone.js, test/js/node/test/parallel/test-btoa-atob.js, test/js/node/test/parallel/test-buffer-resizable.js, test/js/node/test/parallel/test-child-process-fork-abort-signal.js, test/js/node/test/parallel/test-child-process-fork-timeout-kill-signal.js, test/js/node/test/parallel/test-child-process-reject-null-bytes.js, test/js/node/test/parallel/test-child-process-spawn-timeout-kill-signal.js, test/js/node/test/parallel/test-crypto-randomfillsync-regression.js, test/js/node/test/parallel/test-domexception-cause.js, test/js/node/test/parallel/test-global-encoder.js, test/js/node/test/parallel/test-http-agent-remove.js, test/js/node/test/parallel/test-http-server-method.query.js, test/js/node/test/parallel/test-http2-compat-serverresponse-end.js, test/js/node/test/parallel/test-http2-invalidheaderfield.js, test/js/node/test/parallel/test-http2-origin.js, test/js/node/test/parallel/test-http2-res-corked.js, test/js/node/test/parallel/test-module-stat.js, test/js/node/test/parallel/test-net-remote-address.js
Replaced destructured assert helper imports with namespace import and updated all assertion calls accordingly (e.g., strictEqual(a, b)assert.strictEqual(a, b)).
Common module binding
test/js/node/test/parallel/test-async-hooks-recursive-stack-runInAsyncScope.js, test/js/node/test/parallel/test-async-local-storage-contexts.js, test/js/node/test/parallel/test-child-process-can-write-to-stdout.js, test/js/node/test/parallel/test-child-process-stdio-inherit.js, test/js/node/test/parallel/test-cluster-send-deadlock.js, test/js/node/test/parallel/test-cluster-worker-events.js, test/js/node/test/parallel/test-cluster-worker-isdead.js, test/js/node/test/parallel/test-crypto-dh-generate-keys.js, test/js/node/test/parallel/test-dgram-bytes-length.js, test/js/node/test/parallel/test-domain-nested-throw.js, test/js/node/test/parallel/test-fs-read-stream-encoding.js, test/js/node/test/parallel/test-fs-read-stream-throw-type-error.js, test/js/node/test/parallel/test-fs-watch-recursive-watch-file.js, test/js/node/test/parallel/test-fs-write-stream-change-open.js, test/js/node/test/parallel/test-fs-write-stream-throw-type-error.js, test/js/node/test/parallel/test-http-client-timeout.js, test/js/node/test/parallel/test-http-date-header.js, test/js/node/test/parallel/test-http-decoded-auth.js, test/js/node/test/parallel/test-http-flush-headers.js, test/js/node/test/parallel/test-http-pause.js, test/js/node/test/parallel/test-http-proxy.js, test/js/node/test/parallel/test-http-request-end-twice.js, test/js/node/test/parallel/test-http-response-readable.js, test/js/node/test/parallel/test-http-response-remove-header-after-sent.js, test/js/node/test/parallel/test-http-server-multiheaders.js, test/js/node/test/parallel/test-http-set-cookies.js, test/js/node/test/parallel/test-http-status-code.js, test/js/node/test/parallel/test-http-status-message.js, test/js/node/test/parallel/test-http-url.parse-basic.js, test/js/node/test/parallel/test-http-zero-length-write.js, test/js/node/test/parallel/test-kill-segfault-freebsd.js, test/js/node/test/parallel/test-net-listen-exclusive-random-ports.js, test/js/node/test/parallel/test-net-listen-invalid-port.js, test/js/node/test/parallel/test-net-localerror.js, test/js/node/test/parallel/test-net-persistent-keepalive.js, test/js/node/test/parallel/test-net-remote-address-port.js, test/js/node/test/parallel/test-net-server-listen-remove-callback.js
Changed side-effect-only require('../common') to const common = require('../common') to enable local reference for callback wrapping utilities.
Callback enforcement with mustCall
test/js/node/test/parallel/test-async-hooks-recursive-stack-runInAsyncScope.js, test/js/node/test/parallel/test-async-local-storage-contexts.js, test/js/node/test/parallel/test-assert-async.js, test/js/node/test/parallel/test-child-process-can-write-to-stdout.js, test/js/node/test/parallel/test-child-process-cwd.js, test/js/node/test/parallel/test-child-process-disconnect.js, test/js/node/test/parallel/test-child-process-flush-stdio.js, test/js/node/test/parallel/test-child-process-fork-closed-channel-segfault.js, test/js/node/test/parallel/test-child-process-fork-ref.js, test/js/node/test/parallel/test-child-process-fork.js, test/js/node/test/parallel/test-child-process-spawnsync-args.js, test/js/node/test/parallel/test-cluster-concurrent-disconnect.js, test/js/node/test/parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js, test/js/node/test/parallel/test-cluster-eaddrinuse.js, test/js/node/test/parallel/test-cluster-fork-windowsHide.js, test/js/node/test/parallel/test-cluster-message.js, test/js/node/test/parallel/test-cluster-rr-handle-keep-loop-alive.js, test/js/node/test/parallel/test-cluster-send-deadlock.js, test/js/node/test/parallel/test-cluster-worker-events.js, test/js/node/test/parallel/test-cluster-worker-wait-server-close.js, test/js/node/test/parallel/test-crypto-dh-generate-keys.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-*.js, test/js/node/test/parallel/test-event-emitter-*.js, test/js/node/test/parallel/test-file-write-stream*.js, test/js/node/test/parallel/test-fs-*.js, test/js/node/test/parallel/test-http-*.js, test/js/node/test/parallel/test-http2-*.js, test/js/node/test/parallel/test-https-*.js, test/js/node/test/parallel/test-dgram-*.js, test/js/node/test/parallel/test-net-*.js
Wrapped various event callbacks and completion handlers with common.mustCall(), common.mustCallAtLeast(), common.mustSucceed(), or common.mustNotCall() to enforce expected callback invocations during test execution.
Buffer/SlowBuffer test enhancements
test/js/node/test/parallel/test-buffer-bytelength.js, test/js/node/test/parallel/test-buffer-failed-alloc-typed-arrays.js, test/js/node/test/parallel/test-buffer-inspect.js, test/js/node/test/parallel/test-buffer-no-negative-allocation.js, test/js/node/test/parallel/test-buffer-over-max-length.js, test/js/node/test/parallel/test-buffer-tostring-rangeerror.js, test/js/node/test/parallel/test-buffer-tostring.js, test/js/node/test/parallel/test-buffer-zero-fill-cli.js
Extended buffer allocation tests to include SlowBuffer variants alongside existing Buffer tests, updated buffer imports, and refactored encoding iteration loops from reduce/forEach to for...of patterns.
Crypto and PQC keygen tests
test/js/node/test/parallel/test-crypto-ecb.js, test/js/node/test/parallel/test-crypto-hkdf.js, test/js/node/test/parallel/test-crypto-oneshot-hash.js, test/js/node/test/parallel/test-crypto-op-during-process-exit.js, test/js/node/test/parallel/test-crypto-padding.js, test/js/node/test/parallel/test-crypto-pqc-keygen-ml-dsa.js, test/js/node/test/parallel/test-crypto-pqc-keygen-ml-kem.js, test/js/node/test/parallel/test-crypto-pqc-keygen-slh-dsa.js, test/js/node/test/parallel/test-crypto-rsa-pss-default-salt-length.js, test/js/node/test/parallel/test-crypto-stream.js, test/js/node/test/parallel/test-crypto-subtle-zero-length.js
Added new PQC (Post-Quantum Cryptography) keygen tests for ML-DSA, ML-KEM, and SLH-DSA; updated error matching to use case-insensitive regexes and conditional OpenSSL version checks; removed explicit .catch() handlers; added ESLint suppressions.
Debugger and development tool tests
test/js/node/test/parallel/test-debug-process.js, test/js/node/test/parallel/test-debugger-backtrace.js, test/js/node/test/parallel/test-debugger-exec.js, test/js/node/test/parallel/test-debugger-low-level.js, test/js/node/test/parallel/test-debugger-repeat-last.js, test/js/node/test/parallel/test-debugger-restart-message.js
Removed explicit --port=0 flag from debugger CLI invocations, updated fixture loading to use namespace imports, added MaxListenersExceededWarning assertion, and adjusted error validation methods (errno vs message).
HTTP and HTTP2 agent/options tests
test/js/node/test/parallel/test-http-agent-keep-alive-timeout-buffer.js, test/js/node/test/parallel/test-http-agent-maxtotalsockets.js, test/js/node/test/parallel/test-http-keep-alive-timeout-buffer.js
Added new HTTP agent configuration tests validating agentKeepAliveTimeoutBuffer, maxTotalSockets, and keepAliveTimeoutBuffer option behavior with proper socket lifecycle assertions.
HTTP keep-alive and pipeline tests
test/js/node/test/parallel/test-http-keep-alive-pipeline-max-requests.js, test/js/node/test/parallel/test-http-keep-alive-timeout-buffer.js, test/js/node/test/parallel/test-http-server-keep-alive-defaults.js, test/js/node/test/parallel/test-http-server-keep-alive-max-requests-null.js
Enhanced keep-alive and request pipeline tests with proper callback enforcement for request handlers, end events, and data accumulation; validated HTTP2 maxRequestsPerSocket behavior.
HTTP highwatermark test
test/js/node/test/parallel/test-http-highwatermark.js
Removed all backpressure tracking logic and replaced with common.mustNotCall() to validate test infrastructure changes rather than actual highwatermark behavior.
HTTP host and connection tests
test/js/node/test/parallel/test-http-host-headers.js, test/js/node/test/parallel/test-http-many-ended-pipelines.js, test/js/node/test/parallel/test-http-extra-response.js
Updated server startup callbacks and error handlers with common.mustCall() / common.mustCallAtLeast() wrappers; shifted from explicit error checks to common.mustSucceed() pattern.
HTTP2 specialized tests
test/js/node/test/parallel/test-http2-client-proxy-over-http2.js, test/js/node/test/parallel/test-http2-generic-streams-sendfile.js, test/js/node/test/parallel/test-http2-write-finishes-after-stream-destroy.js
Updated connection URIs from 127.0.0.1 to localhost for HTTP2 client connections.
HTTP2 callback and listener enforcement
test/js/node/test/parallel/test-http2-cancel-while-client-reading.js, test/js/node/test/parallel/test-http2-client-request-options-errors.js, test/js/node/test/parallel/test-http2-client-setNextStreamID-errors.js, test/js/node/test/parallel/test-http2-client-stream-destroy-before-connect.js, test/js/node/test/parallel/test-http2-client-upload-reject.js, test/js/node/test/parallel/test-http2-close-while-writing.js, test/js/node/test/parallel/test-http2-compat-serverresponse-settimeout.js, test/js/node/test/parallel/test-http2-compat-serverresponse-close.js, test/js/node/test/parallel/test-http2-connect-tls-with-delay.js, test/js/node/test/parallel/test-http2-connect.js, test/js/node/test/parallel/test-http2-create-client-session.js, test/js/node/test/parallel/test-http2-destroy-after-write.js, test/js/node/test/parallel/test-http2-goaway-opaquedata.js, test/js/node/test/parallel/test-http2-head-request.js, test/js/node/test/parallel/test-http2-malformed-altsvc.js, test/js/node/test/parallel/test-http2-many-writes-and-destroy.js, test/js/node/test/parallel/test-http2-misbehaving-flow-control-paused.js, test/js/node/test/parallel/test-http2-misbehaving-flow-control.js, test/js/node/test/parallel/test-http2-misused-pseudoheaders.js, test/js/node/test/parallel/test-http2-no-more-streams.js, test/js/node/test/parallel/test-http2-options-server-request.js, test/js/node/test/parallel/test-http2-removed-header-stays-removed.js, test/js/node/test/parallel/test-http2-sent-headers.js, test/js/node/test/parallel/test-http2-serve-file.js, test/js/node/test/parallel/test-http2-server-set-header.js, test/js/node/test/parallel/test-http2-trailers.js, test/js/node/test/parallel/test-http2-zero-length-header.js
Wrapped server/stream handlers, connect callbacks, and event listeners with common.mustCall() / common.mustCallAtLeast() to enforce expected callback invocations; updated assertion imports.
HTTP2 file response tests
test/js/node/test/parallel/test-http2-respond-file-*.js
Consistently wrapped server.listen(), stream handlers, and file operation callbacks with common.mustCall() / common.mustCallAtLeast(); added ESLint suppressions for connection abort scenarios.
HTTP2 header and validation tests
test/js/node/test/parallel/test-http2-too-large-headers.js, test/js/node/test/parallel/test-http2-compat-write-early-hints-invalid-argument-*.js
Refactored async test flow from promise-based runTestForPrototype to imperative for...of loop with nested common.mustCall() wrappers for test sequencing; wrapped error handlers.
HTTPS agent tests
test/js/node/test/parallel/test-https-agent-session-eviction.js, test/js/node/test/parallel/test-https-agent.js, test/js/node/test/parallel/test-https-byteswritten.js
Updated fixture imports to use namespace syntax; wrapped server.listen(), timeout callbacks, and response handlers with common.mustCall(); replaced error handlers with common.mustNotCall().
Fixture import refactoring
test/js/node/test/parallel/test-debugger-repeat-last.js, test/js/node/test/parallel/test-https-agent-session-eviction.js, test/js/node/test/parallel/test-http2-origin.js, test/js/node/test/parallel/test-module-run-main-monkey-patch.js
Updated fixture loading from destructured { path, readKey } to namespace imports (e.g., fixtures.path(), fixtures.readKey()).
New async/process tests
test/js/node/test/parallel/test-async-hooks-stack-overflow-nested-async.js, test/js/node/test/parallel/test-child-process-fork-advanced-header-serialization.js, test/js/node/test/parallel/test-cluster-worker-kill-signal.js, test/js/node/test/parallel/test-fs-fmap.js, test/js/node/test/parallel/test-fs-promises-statfs-validate-path.js, test/js/node/test/parallel/test-gc-http-client-connaborted.js, test/js/node/test/parallel/test-gc-tls-external-memory.js, test/js/node/test/parallel/test-http-client-leaky-with-double-response.js, test/js/node/test/parallel/test-inspector-connect-to-main-thread.js, test/js/node/test/parallel/test-listen-fd-ebadf.js, test/js/node/test/parallel/test-macos-app-sandbox.js, test/js/node/test/parallel/test-net-allow-half-open.js, test/js/node/test/parallel/test-net-autoselectfamily*.js, test/js/node/test/parallel/test-net-connect-memleak.js, test/js/node/test/parallel/test-eventtarget-custom-inspect-does-not-throw.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js, test/js/node/test/parallel/test-module-create-require-multibyte.js
Added new comprehensive test files covering async stack overflow, IPC advanced header serialization, cluster worker signaling, file mapping, garbage collection, happy eyeballs (autoSelectFamily), memory leaks, and platform-specific scenarios.
Module and require tests
test/js/node/test/parallel/test-module-create-require-multibyte.js, test/js/node/test/parallel/test-module-prototype-mutation.js, test/js/node/test/parallel/test-module-run-main-monkey-patch.js, test/js/node/test/parallel/test-module-stat.js
Updated fixture imports to namespace syntax; refactored callback arrow functions with explicit braces; updated assertion imports to namespace form.
Net listener and connection tests
test/js/node/test/parallel/test-net-autoselectfamily-default.js, test/js/node/test/parallel/test-net-autoselectfamily-ipv4first.js, test/js/node/test/parallel/test-net-blocklist.js, test/js/node/test/parallel/test-net-child-process-connect-reset.js, test/js/node/test/parallel/test-net-connect-abort-controller.js, test/js/node/test/parallel/test-net-connect-keepalive.js, test/js/node/test/parallel/test-net-connect-nodelay.js, test/js/node/test/parallel/test-net-connect-options-invalid.js, test/js/node/test/parallel/test-net-connect-options-ipv6.js, test/js/node/test/parallel/test-net-connect-options-port.js, test/js/node/test/parallel/test-net-keepalive.js, test/js/node/test/parallel/test-net-reconnect.js, test/js/node/test/parallel/test-net-server-close.js
Wrapped server connection handlers and client callbacks with common.mustCall(); refactored helper functions; replaced event listener introspection from getEventListeners() to listenerCount(); fixed callback wrapping syntax and assertion patterns.
Microtask and diagnostics tests
test/js/node/test/parallel/test-microtask-queue-integration.js, test/js/node/test/parallel/test-microtask-queue-run-immediate.js, test/js/node/test/parallel/test-microtask-queue-run.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-callback.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-callback-error.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise-error.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-sync.js, test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
Added ESLint suppressions for microtask scheduling; wrapped trace channel callbacks with common.mustCall(); refactored promise-based error handling to use assert.rejects(); updated promise chain callbacks.
Filesystem promises tests
test/js/node/test/parallel/test-fs-promises-readfile-empty.js, test/js/node/test/parallel/test-fs-promises-writefile.js
Updated common module binding; added common.mustCall() to promise .then() chains; removed console.log debugging output from test helpers.

Possibly related PRs

Suggested reviewers

  • alii
  • cirospaciari
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: syncing Node.js tests with a specific upstream commit (v24.14.1).
Description check ✅ Passed The PR description is detailed and comprehensive, covering the sync scope, test counts, kept/dropped tests, and rebase strategy with conflict resolution.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/js/node/test/parallel/test-event-emitter-method-names.js`:
- Around line 31-33: The loop over Object.getOwnPropertyNames(E) uses `return`
inside the for-of to skip unwanted properties but `return` exits the entire
module; change those `return` statements to `continue` so the loop only skips
the current property. Update the checks in the for loop that reference E and the
names 'constructor', 'on', 'off' and the typeof E[name] !== 'function' to use
`continue` instead of `return` so subsequent assertions run.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1186bcc7-b7b5-40e9-ba1f-d37c2250b184

📥 Commits

Reviewing files that changed from the base of the PR and between 942c656 and d51f971.

📒 Files selected for processing (300)
  • test/js/node/test/parallel/test-assert-async.js
  • test/js/node/test/parallel/test-async-hooks-recursive-stack-runInAsyncScope.js
  • test/js/node/test/parallel/test-async-hooks-stack-overflow-nested-async.js
  • test/js/node/test/parallel/test-async-local-storage-contexts.js
  • test/js/node/test/parallel/test-async-local-storage-snapshot.js
  • test/js/node/test/parallel/test-blocklist-clone.js
  • test/js/node/test/parallel/test-btoa-atob.js
  • test/js/node/test/parallel/test-buffer-bytelength.js
  • test/js/node/test/parallel/test-buffer-failed-alloc-typed-arrays.js
  • test/js/node/test/parallel/test-buffer-inspect.js
  • test/js/node/test/parallel/test-buffer-no-negative-allocation.js
  • test/js/node/test/parallel/test-buffer-over-max-length.js
  • test/js/node/test/parallel/test-buffer-resizable.js
  • test/js/node/test/parallel/test-buffer-tostring-rangeerror.js
  • test/js/node/test/parallel/test-buffer-tostring.js
  • test/js/node/test/parallel/test-buffer-zero-fill-cli.js
  • test/js/node/test/parallel/test-child-process-advanced-serialization-splitted-length-field.js
  • test/js/node/test/parallel/test-child-process-can-write-to-stdout.js
  • test/js/node/test/parallel/test-child-process-cwd.js
  • test/js/node/test/parallel/test-child-process-disconnect.js
  • test/js/node/test/parallel/test-child-process-flush-stdio.js
  • test/js/node/test/parallel/test-child-process-fork-abort-signal.js
  • test/js/node/test/parallel/test-child-process-fork-advanced-header-serialization.js
  • test/js/node/test/parallel/test-child-process-fork-closed-channel-segfault.js
  • test/js/node/test/parallel/test-child-process-fork-ref.js
  • test/js/node/test/parallel/test-child-process-fork-timeout-kill-signal.js
  • test/js/node/test/parallel/test-child-process-fork.js
  • test/js/node/test/parallel/test-child-process-kill.js
  • test/js/node/test/parallel/test-child-process-reject-null-bytes.js
  • test/js/node/test/parallel/test-child-process-server-close.js
  • test/js/node/test/parallel/test-child-process-spawn-timeout-kill-signal.js
  • test/js/node/test/parallel/test-child-process-spawn-windows-batch-file.js
  • test/js/node/test/parallel/test-child-process-spawnsync-args.js
  • test/js/node/test/parallel/test-child-process-spawnsync-timeout.js
  • test/js/node/test/parallel/test-child-process-stdio-inherit.js
  • test/js/node/test/parallel/test-child-process-uid-gid.js
  • test/js/node/test/parallel/test-cluster-concurrent-disconnect.js
  • test/js/node/test/parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js
  • test/js/node/test/parallel/test-cluster-eaddrinuse.js
  • test/js/node/test/parallel/test-cluster-fork-windowsHide.js
  • test/js/node/test/parallel/test-cluster-message.js
  • test/js/node/test/parallel/test-cluster-rr-handle-keep-loop-alive.js
  • test/js/node/test/parallel/test-cluster-send-deadlock.js
  • test/js/node/test/parallel/test-cluster-shared-handle-bind-privileged-port.js
  • test/js/node/test/parallel/test-cluster-worker-events.js
  • test/js/node/test/parallel/test-cluster-worker-isdead.js
  • test/js/node/test/parallel/test-cluster-worker-kill-signal.js
  • test/js/node/test/parallel/test-cluster-worker-no-exit.js
  • test/js/node/test/parallel/test-cluster-worker-wait-server-close.js
  • test/js/node/test/parallel/test-console-tty-colors.js
  • test/js/node/test/parallel/test-crypto-certificate.js
  • test/js/node/test/parallel/test-crypto-dh-generate-keys.js
  • test/js/node/test/parallel/test-crypto-ecb.js
  • test/js/node/test/parallel/test-crypto-hkdf.js
  • test/js/node/test/parallel/test-crypto-oneshot-hash.js
  • test/js/node/test/parallel/test-crypto-op-during-process-exit.js
  • test/js/node/test/parallel/test-crypto-padding.js
  • test/js/node/test/parallel/test-crypto-pqc-keygen-ml-dsa.js
  • test/js/node/test/parallel/test-crypto-pqc-keygen-ml-kem.js
  • test/js/node/test/parallel/test-crypto-pqc-keygen-slh-dsa.js
  • test/js/node/test/parallel/test-crypto-randomfillsync-regression.js
  • test/js/node/test/parallel/test-crypto-rsa-pss-default-salt-length.js
  • test/js/node/test/parallel/test-crypto-stream.js
  • test/js/node/test/parallel/test-crypto-subtle-zero-length.js
  • test/js/node/test/parallel/test-debug-process.js
  • test/js/node/test/parallel/test-debugger-backtrace.js
  • test/js/node/test/parallel/test-debugger-exec.js
  • test/js/node/test/parallel/test-debugger-low-level.js
  • test/js/node/test/parallel/test-debugger-repeat-last.js
  • test/js/node/test/parallel/test-debugger-restart-message.js
  • test/js/node/test/parallel/test-dgram-bind-error-repeat.js
  • test/js/node/test/parallel/test-dgram-bytes-length.js
  • test/js/node/test/parallel/test-dgram-connect-send-default-host.js
  • test/js/node/test/parallel/test-dgram-connect-send-empty-packet.js
  • test/js/node/test/parallel/test-dgram-connect-send-multi-string-array.js
  • test/js/node/test/parallel/test-dgram-send-address-types.js
  • test/js/node/test/parallel/test-dgram-send-empty-buffer.js
  • test/js/node/test/parallel/test-dgram-send-empty-packet.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-callback-error.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-callback.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise-error.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
  • test/js/node/test/parallel/test-dns-lookupService-promises.js
  • test/js/node/test/parallel/test-domain-nested-throw.js
  • test/js/node/test/parallel/test-domexception-cause.js
  • test/js/node/test/parallel/test-event-emitter-add-listeners.js
  • test/js/node/test/parallel/test-event-emitter-method-names.js
  • test/js/node/test/parallel/test-event-emitter-remove-all-listeners.js
  • test/js/node/test/parallel/test-events-uncaught-exception-stack.js
  • test/js/node/test/parallel/test-eventtarget-custom-inspect-does-not-throw.js
  • test/js/node/test/parallel/test-file-write-stream.js
  • test/js/node/test/parallel/test-file-write-stream2.js
  • test/js/node/test/parallel/test-fs-access.js
  • test/js/node/test/parallel/test-fs-fmap.js
  • test/js/node/test/parallel/test-fs-lchmod.js
  • test/js/node/test/parallel/test-fs-open.js
  • test/js/node/test/parallel/test-fs-promises-readfile-empty.js
  • test/js/node/test/parallel/test-fs-promises-statfs-validate-path.js
  • test/js/node/test/parallel/test-fs-promises-writefile.js
  • test/js/node/test/parallel/test-fs-read-stream-encoding.js
  • test/js/node/test/parallel/test-fs-read-stream-err.js
  • test/js/node/test/parallel/test-fs-read-stream-inherit.js
  • test/js/node/test/parallel/test-fs-read-stream-pos.js
  • test/js/node/test/parallel/test-fs-read-stream-throw-type-error.js
  • test/js/node/test/parallel/test-fs-read-stream.js
  • test/js/node/test/parallel/test-fs-read-zero-length.js
  • test/js/node/test/parallel/test-fs-readdir-recursive.js
  • test/js/node/test/parallel/test-fs-readfile-fd.js
  • test/js/node/test/parallel/test-fs-realpath.js
  • test/js/node/test/parallel/test-fs-statfs.js
  • test/js/node/test/parallel/test-fs-symlink-dir-junction.js
  • test/js/node/test/parallel/test-fs-watch-recursive-delete.js
  • test/js/node/test/parallel/test-fs-watch-recursive-watch-file.js
  • test/js/node/test/parallel/test-fs-watch-stop-async.js
  • test/js/node/test/parallel/test-fs-watchfile.js
  • test/js/node/test/parallel/test-fs-write-optional-params.js
  • test/js/node/test/parallel/test-fs-write-stream-change-open.js
  • test/js/node/test/parallel/test-fs-write-stream-err.js
  • test/js/node/test/parallel/test-fs-write-stream-throw-type-error.js
  • test/js/node/test/parallel/test-fs-write-stream.js
  • test/js/node/test/parallel/test-gc-http-client-connaborted.js
  • test/js/node/test/parallel/test-gc-tls-external-memory.js
  • test/js/node/test/parallel/test-global-encoder.js
  • test/js/node/test/parallel/test-http-abort-stream-end.js
  • test/js/node/test/parallel/test-http-agent-keep-alive-timeout-buffer.js
  • test/js/node/test/parallel/test-http-agent-maxtotalsockets.js
  • test/js/node/test/parallel/test-http-agent-remove.js
  • test/js/node/test/parallel/test-http-allow-content-length-304.js
  • test/js/node/test/parallel/test-http-buffer-sanity.js
  • test/js/node/test/parallel/test-http-chunk-problem.js
  • test/js/node/test/parallel/test-http-client-close-with-default-agent.js
  • test/js/node/test/parallel/test-http-client-finished.js
  • test/js/node/test/parallel/test-http-client-keep-alive-hint.js
  • test/js/node/test/parallel/test-http-client-keep-alive-release-before-finish.js
  • test/js/node/test/parallel/test-http-client-leaky-with-double-response.js
  • test/js/node/test/parallel/test-http-client-pipe-end.js
  • test/js/node/test/parallel/test-http-client-request-options.js
  • test/js/node/test/parallel/test-http-client-response-timeout.js
  • test/js/node/test/parallel/test-http-client-timeout-event.js
  • test/js/node/test/parallel/test-http-client-timeout-option.js
  • test/js/node/test/parallel/test-http-client-timeout.js
  • test/js/node/test/parallel/test-http-client-with-create-connection.js
  • test/js/node/test/parallel/test-http-content-length-mismatch.js
  • test/js/node/test/parallel/test-http-date-header.js
  • test/js/node/test/parallel/test-http-decoded-auth.js
  • test/js/node/test/parallel/test-http-double-content-length.js
  • test/js/node/test/parallel/test-http-end-throw-socket-handling.js
  • test/js/node/test/parallel/test-http-expect-handling.js
  • test/js/node/test/parallel/test-http-extra-response.js
  • test/js/node/test/parallel/test-http-flush-headers.js
  • test/js/node/test/parallel/test-http-flush-response-headers.js
  • test/js/node/test/parallel/test-http-full-response.js
  • test/js/node/test/parallel/test-http-head-throw-on-response-body-write.js
  • test/js/node/test/parallel/test-http-header-obstext.js
  • test/js/node/test/parallel/test-http-header-read.js
  • test/js/node/test/parallel/test-http-highwatermark.js
  • test/js/node/test/parallel/test-http-host-headers.js
  • test/js/node/test/parallel/test-http-invalidheaderfield.js
  • test/js/node/test/parallel/test-http-keep-alive-pipeline-max-requests.js
  • test/js/node/test/parallel/test-http-keep-alive-timeout-buffer.js
  • test/js/node/test/parallel/test-http-many-ended-pipelines.js
  • test/js/node/test/parallel/test-http-outgoing-finished.js
  • test/js/node/test/parallel/test-http-parser-free.js
  • test/js/node/test/parallel/test-http-parser.js
  • test/js/node/test/parallel/test-http-pause.js
  • test/js/node/test/parallel/test-http-proxy.js
  • test/js/node/test/parallel/test-http-readable-data-event.js
  • test/js/node/test/parallel/test-http-request-end-twice.js
  • test/js/node/test/parallel/test-http-request-end.js
  • test/js/node/test/parallel/test-http-request-method-delete-payload.js
  • test/js/node/test/parallel/test-http-response-add-header-after-sent.js
  • test/js/node/test/parallel/test-http-response-readable.js
  • test/js/node/test/parallel/test-http-response-remove-header-after-sent.js
  • test/js/node/test/parallel/test-http-response-setheaders.js
  • test/js/node/test/parallel/test-http-response-status-message.js
  • test/js/node/test/parallel/test-http-response-statuscode.js
  • test/js/node/test/parallel/test-http-response-writehead-returns-this.js
  • test/js/node/test/parallel/test-http-server-close-idle-wait-response.js
  • test/js/node/test/parallel/test-http-server-keep-alive-defaults.js
  • test/js/node/test/parallel/test-http-server-keep-alive-max-requests-null.js
  • test/js/node/test/parallel/test-http-server-method.query.js
  • test/js/node/test/parallel/test-http-server-multiheaders.js
  • test/js/node/test/parallel/test-http-server-non-utf8-header.js
  • test/js/node/test/parallel/test-http-server-options-incoming-message.js
  • test/js/node/test/parallel/test-http-server-options-server-response.js
  • test/js/node/test/parallel/test-http-server-stale-close.js
  • test/js/node/test/parallel/test-http-set-cookies.js
  • test/js/node/test/parallel/test-http-set-header-chain.js
  • test/js/node/test/parallel/test-http-status-code.js
  • test/js/node/test/parallel/test-http-status-message.js
  • test/js/node/test/parallel/test-http-timeout-overflow.js
  • test/js/node/test/parallel/test-http-unix-socket.js
  • test/js/node/test/parallel/test-http-url.parse-basic.js
  • test/js/node/test/parallel/test-http-url.parse-https.request.js
  • test/js/node/test/parallel/test-http-write-callbacks.js
  • test/js/node/test/parallel/test-http-zero-length-write.js
  • test/js/node/test/parallel/test-http2-cancel-while-client-reading.js
  • test/js/node/test/parallel/test-http2-client-proxy-over-http2.js
  • test/js/node/test/parallel/test-http2-client-request-options-errors.js
  • test/js/node/test/parallel/test-http2-client-setNextStreamID-errors.js
  • test/js/node/test/parallel/test-http2-client-stream-destroy-before-connect.js
  • test/js/node/test/parallel/test-http2-client-upload-reject.js
  • test/js/node/test/parallel/test-http2-close-while-writing.js
  • test/js/node/test/parallel/test-http2-compat-serverrequest-settimeout.js
  • test/js/node/test/parallel/test-http2-compat-serverresponse-close.js
  • test/js/node/test/parallel/test-http2-compat-serverresponse-end.js
  • test/js/node/test/parallel/test-http2-compat-serverresponse-settimeout.js
  • test/js/node/test/parallel/test-http2-compat-short-stream-client-server.js
  • test/js/node/test/parallel/test-http2-compat-write-early-hints-invalid-argument-type.js
  • test/js/node/test/parallel/test-http2-compat-write-early-hints-invalid-argument-value.js
  • test/js/node/test/parallel/test-http2-connect-tls-with-delay.js
  • test/js/node/test/parallel/test-http2-connect.js
  • test/js/node/test/parallel/test-http2-create-client-session.js
  • test/js/node/test/parallel/test-http2-destroy-after-write.js
  • test/js/node/test/parallel/test-http2-generic-streams-sendfile.js
  • test/js/node/test/parallel/test-http2-goaway-opaquedata.js
  • test/js/node/test/parallel/test-http2-head-request.js
  • test/js/node/test/parallel/test-http2-invalidheaderfield.js
  • test/js/node/test/parallel/test-http2-large-write-close.js
  • test/js/node/test/parallel/test-http2-large-writes-session-memory-leak.js
  • test/js/node/test/parallel/test-http2-malformed-altsvc.js
  • test/js/node/test/parallel/test-http2-many-writes-and-destroy.js
  • test/js/node/test/parallel/test-http2-misbehaving-flow-control-paused.js
  • test/js/node/test/parallel/test-http2-misbehaving-flow-control.js
  • test/js/node/test/parallel/test-http2-misused-pseudoheaders.js
  • test/js/node/test/parallel/test-http2-no-more-streams.js
  • test/js/node/test/parallel/test-http2-options-server-request.js
  • test/js/node/test/parallel/test-http2-origin.js
  • test/js/node/test/parallel/test-http2-pipe.js
  • test/js/node/test/parallel/test-http2-removed-header-stays-removed.js
  • test/js/node/test/parallel/test-http2-res-corked.js
  • test/js/node/test/parallel/test-http2-respond-file-204.js
  • test/js/node/test/parallel/test-http2-respond-file-304.js
  • test/js/node/test/parallel/test-http2-respond-file-404.js
  • test/js/node/test/parallel/test-http2-respond-file-compat.js
  • test/js/node/test/parallel/test-http2-respond-file-error-dir.js
  • test/js/node/test/parallel/test-http2-respond-file-error-pipe-offset.js
  • test/js/node/test/parallel/test-http2-respond-file-fd-invalid.js
  • test/js/node/test/parallel/test-http2-respond-file-fd-range.js
  • test/js/node/test/parallel/test-http2-respond-file-fd.js
  • test/js/node/test/parallel/test-http2-respond-file-range.js
  • test/js/node/test/parallel/test-http2-respond-file-with-pipe.js
  • test/js/node/test/parallel/test-http2-respond-with-file-connection-abort.js
  • test/js/node/test/parallel/test-http2-sent-headers.js
  • test/js/node/test/parallel/test-http2-serve-file.js
  • test/js/node/test/parallel/test-http2-server-set-header.js
  • test/js/node/test/parallel/test-http2-short-stream-client-server.js
  • test/js/node/test/parallel/test-http2-too-large-headers.js
  • test/js/node/test/parallel/test-http2-trailers.js
  • test/js/node/test/parallel/test-http2-write-finishes-after-stream-destroy.js
  • test/js/node/test/parallel/test-http2-zero-length-header.js
  • test/js/node/test/parallel/test-https-agent-session-eviction.js
  • test/js/node/test/parallel/test-https-agent.js
  • test/js/node/test/parallel/test-https-byteswritten.js
  • test/js/node/test/parallel/test-https-unix-socket-self-signed.js
  • test/js/node/test/parallel/test-inspector-connect-to-main-thread.js
  • test/js/node/test/parallel/test-kill-segfault-freebsd.js
  • test/js/node/test/parallel/test-listen-fd-detached-inherit.js
  • test/js/node/test/parallel/test-listen-fd-detached.js
  • test/js/node/test/parallel/test-listen-fd-ebadf.js
  • test/js/node/test/parallel/test-macos-app-sandbox.js
  • test/js/node/test/parallel/test-microtask-queue-integration.js
  • test/js/node/test/parallel/test-microtask-queue-run-immediate.js
  • test/js/node/test/parallel/test-microtask-queue-run.js
  • test/js/node/test/parallel/test-module-create-require-multibyte.js
  • test/js/node/test/parallel/test-module-prototype-mutation.js
  • test/js/node/test/parallel/test-module-readonly.js
  • test/js/node/test/parallel/test-module-run-main-monkey-patch.js
  • test/js/node/test/parallel/test-module-stat.js
  • test/js/node/test/parallel/test-net-allow-half-open.js
  • test/js/node/test/parallel/test-net-autoselectfamily-default.js
  • test/js/node/test/parallel/test-net-autoselectfamily-ipv4first.js
  • test/js/node/test/parallel/test-net-autoselectfamily.js
  • test/js/node/test/parallel/test-net-blocklist.js
  • test/js/node/test/parallel/test-net-bytes-stats.js
  • test/js/node/test/parallel/test-net-child-process-connect-reset.js
  • test/js/node/test/parallel/test-net-connect-abort-controller.js
  • test/js/node/test/parallel/test-net-connect-keepalive.js
  • test/js/node/test/parallel/test-net-connect-memleak.js
  • test/js/node/test/parallel/test-net-connect-nodelay.js
  • test/js/node/test/parallel/test-net-connect-options-invalid.js
  • test/js/node/test/parallel/test-net-connect-options-ipv6.js
  • test/js/node/test/parallel/test-net-connect-options-path.js
  • test/js/node/test/parallel/test-net-connect-options-port.js
  • test/js/node/test/parallel/test-net-end-destroyed.js
  • test/js/node/test/parallel/test-net-keepalive.js
  • test/js/node/test/parallel/test-net-large-string.js
  • test/js/node/test/parallel/test-net-listen-exclusive-random-ports.js
  • test/js/node/test/parallel/test-net-listen-invalid-port.js
  • test/js/node/test/parallel/test-net-localerror.js
  • test/js/node/test/parallel/test-net-pause-resume-connecting.js
  • test/js/node/test/parallel/test-net-persistent-keepalive.js
  • test/js/node/test/parallel/test-net-reconnect.js
  • test/js/node/test/parallel/test-net-remote-address-port.js
  • test/js/node/test/parallel/test-net-remote-address.js
  • test/js/node/test/parallel/test-net-server-close.js
  • test/js/node/test/parallel/test-net-server-listen-remove-callback.js
💤 Files with no reviewable changes (13)
  • test/js/node/test/parallel/test-child-process-spawnsync-timeout.js
  • test/js/node/test/parallel/test-console-tty-colors.js
  • test/js/node/test/parallel/test-dns-lookupService-promises.js
  • test/js/node/test/parallel/test-http-unix-socket.js
  • test/js/node/test/parallel/test-http2-large-writes-session-memory-leak.js
  • test/js/node/test/parallel/test-net-connect-options-invalid.js
  • test/js/node/test/parallel/test-https-unix-socket-self-signed.js
  • test/js/node/test/parallel/test-fs-promises-writefile.js
  • test/js/node/test/parallel/test-http-client-response-timeout.js
  • test/js/node/test/parallel/test-http-client-pipe-end.js
  • test/js/node/test/parallel/test-http-client-with-create-connection.js
  • test/js/node/test/parallel/test-net-blocklist.js
  • test/js/node/test/parallel/test-module-readonly.js

Comment thread test/js/node/test/parallel/test-event-emitter-method-names.js
Comment thread test/js/node/test/parallel/test-event-emitter-method-names.js
Comment thread test/js/node/test/parallel/test-fs-symlink-dir-junction.js
Comment thread test/js/node/test/parallel/test-child-process-cwd.js
Comment thread test/js/node/test/parallel/test-http-highwatermark.js
Comment thread test/js/node/test/parallel/test-fs-lchmod.js

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all flagged issues have been addressed across commits 32703b7 and c7a14bc.

Extended reasoning...

Overview

This PR syncs 300 test files under test/js/node/test/ with Node.js v24.14.1 (commit d89bb1b482): 386 existing tests updated, 51 new tests added, 34 kept at Bun's version, and 16 new tests dropped (currently fail in Bun). No production code is touched.

Security Risks

None. This PR modifies only test files; no auth, crypto, or permission logic is changed.

Level of Scrutiny

Moderate — while 300 files is large, these are mechanical test syncs following a well-established pattern. The key risk is mismatches between upstream Node.js error message formats and Bun's own implementations. The inline bug comments flagged five such mismatches; all were addressed by the author.

Other Factors

The author responded to every inline comment: the Windows junction trailing-backslash workaround was restored (32703b7), the test-fs-lchmod.js and vs && mismatch and test-tls-no-sslv3.js null-vs-false opensslCli Alpine failure were both reverted to Bun's version (c7a14bc). The remaining findings (upstream return vs continue loop bug, mustNotCall patterns) were confirmed correct by local test runs. The PR is in a clean state.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all concerns addressed; Bun-specific regressions reverted, remaining differences confirmed to pass in CI.

Extended reasoning...

Overview

This is a large (300-file) sync of the Node.js test suite with v24.14.1. Changes are mechanical: wrapping callbacks with common.mustCall/common.mustSucceed, converting destructured imports to full module references, and adding 51 new test files. No production code is modified.

Security Risks

None. All changes are confined to the test directory (test/js/node/test/).

Level of Scrutiny

Moderate scrutiny was warranted given the volume, but the mechanical nature of the changes and test-only scope kept the risk low. The main concern was Bun-specific divergences being silently discarded.

Resolution Summary

All six issues raised during review were resolved:

  • return vs continue in test-event-emitter-method-names.js: upstream Node.js v24.14.1 bug, intentionally kept verbatim per sync policy
  • Junction symlink trailing slash (test-fs-symlink-dir-junction.js): reverted to Bun version in commit 32703b7
  • lchmod error message format (test-fs-lchmod.js): reverted to Bun version in commit c7a14bc (along with test-tls-no-sslv3.js)
  • mustNotCall() in child-process-cwd: confirmed passing locally and in CI, upstream verbatim
  • mustNotCall() in http-highwatermark: malformed requests never reach the handler, confirmed passing
  • mustNotCall() for DELETE body (test-http-request-method-delete-payload.js): confirmed passing across 5 CI builds — Bun's server emits end without data in this scenario

Comment thread test/js/node/test/parallel/test-http-parser.js
Comment thread test/js/node/test/parallel/test-promises-unhandled-rejections.js

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all flagged issues resolved.

Extended reasoning...

Overview

This PR syncs 300 test files in test/js/node/test/parallel/ with Node.js v24.14.1 (commit d89bb1b482). The changes are mechanical: wrapping callbacks with common.mustCall variants, converting forEach to for...of, updating assertion import styles, and adding 50 new upstream test files.

Security risks

No security-sensitive code is touched. All changes are confined to the test suite.

Level of scrutiny

This is a test-only sync PR. The mechanical nature of the changes (callback wrapping, import style normalization) is low-risk. The 36 Bun-specific workaround files were correctly preserved (verified via the revert commits 32703b7 and c7a14bc).

Prior review resolution

All 8 issues raised in prior review rounds have been addressed: two were genuine bugs fixed by reverting to main (test-fs-symlink-dir-junction.js, test-fs-lchmod.js), and the remaining six were confirmed as verbatim upstream code per the sync policy. The sole CI failure (test/js/bun/net/socket.test.ts on Windows 2019 x64) is in an unrelated Bun-native file and is not caused by this PR.

@robobun

robobun commented Apr 18, 2026

Copy link
Copy Markdown
Collaborator Author

Rebased onto main eae803811b. Scope: 319 files, all under test/js/node/test/.

Ready for review

Build #63347 @ 7dadb66b7e: 283/286 passed, 0 expired. Zero failures in files this PR touches. All 4 error annotations are ambient flakes on tests outside this diff, each reproducing on multiple unrelated PRs:

test platform also failing on
test-tls-client-destroy-soon.js darwin-14-aarch64 #63300 #63306 #63308 #63321 #63322 #63324 #63332 #63334 #63336 #63337 (not in this diff)
integration/next-pages/dev-server.test.ts darwin-14-aarch64 #63341 #63344
bun/s3/s3.test.ts darwin-14-aarch64 #63341 #63344
bun/terminal/terminal.test.ts darwin-26-aarch64 / darwin-14-x64 #63332 #63334 #63336 #63340

Previous build #63343 (279/286) surfaced 3 real failures in new test-gc-http-client* tests — they require countGC === count (100% collection), which JSC's conservative GC cannot guarantee; one client stays pinned by a native-stack pointer, hanging at 7/8 on alpine. Dropped in 7dadb66b7e (see PR body).

Rebase resolution (see PR body for detail):

Pre-rebase builds
build passed failed expired test/js/node/test/ fails
#51730 36 3 23 0
#51617 54 3 13 0
#51439 115 4 15 0
#51257 184 2 61 0
#46668 271 4 0 0
#46652 273 1 0 0

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The two Bun-specific regressions I flagged have been addressed; remaining issues are verbatim upstream patterns confirmed passing in CI. LGTM.

Extended reasoning...

Overview

PR #29359 syncs 300 test files in test/js/node/test/parallel/ with Node.js v24.14.1 (commit d89bb1b482). Changes are purely in the test suite: wrapping callbacks with common.mustCall/mustCallAtLeast/mustSucceed helpers, converting destructured imports to full module references, replacing .forEach with for...of loops, and adding 50 new test files. No production code is modified.

Security risks

None. This is a test-only change with no security-sensitive code paths.

Level of scrutiny

Moderate — the PR is large (300 files) but mechanical and follows a well-established sync pattern. The key risk is Bun-specific workarounds being accidentally overwritten. That risk materialized in two files and was caught and fixed. The remaining flagged items (return-vs-continue in for-of, double mustCall wrapping, tautological assertion, mustNotCall patterns) are all byte-identical to upstream Node.js v24.14.1 and confirmed passing across all CI platforms.

Other factors

  • Two genuine regressions were caught in earlier review rounds and reverted (test-fs-symlink-dir-junction.js in 32703b7, test-fs-lchmod.js in c7a14bc).
  • Five prior CI builds (45861, 45875, 45881, 45885, 46115) all passed without failures from the remaining flagged patterns.
  • The latest commit is currently building as #46279.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all flagged issues resolved.

Extended reasoning...

Overview

This PR syncs 300 test files under test/js/node/test/ with Node.js v24.14.1 (d89bb1b482), plus a one-line threshold fix in test/js/bun/net/socket.test.ts. It is entirely test-only: 384 existing tests updated to match upstream, 50 new tests added, 36 kept at Bun's version, and 17 dropped as flaky/failing.

Security risks

None. All changes are in the test suite with no production code, auth, crypto, or permission logic touched.

Level of scrutiny

Appropriate for a mechanical upstream sync. The main risks are (a) Bun-specific workarounds accidentally overwritten and (b) new upstream tests that assume Node.js semantics Bun doesn't match. Both categories were already caught and handled in prior review rounds.

Other factors

Two real bugs caught in earlier review passes were fixed (symlink junction trailing-slash workaround and lchmod error-message format, both reverted in c7a14bc). All other flagged items were confirmed as pre-existing upstream Node.js bugs, byte-identical to the upstream source, and intentionally kept verbatim per the sync policy. All inline comments are resolved. Three full CI runs show zero failures in test/js/node/test/. The socket.test.ts Windows threshold bump (≤3 → ≤4) addresses an ambient JSC conservative-scan false-positive on mimalloc layouts.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all review comments addressed, CI clean across 4 runs.

Extended reasoning...

Overview

This PR syncs 300 test files in test/js/node/test/parallel/ (and one Bun-owned file) with Node.js v24.14.1 commit d89bb1b482. Changes are: 384 existing tests updated verbatim from upstream, 50 new tests added, 36 tests pinned at Bun's version, 17 tests dropped as currently failing/flaky. The only non-Node-test change is a Windows memory-leak threshold bump in test/js/bun/net/socket.test.ts (3→4 for TCPSocket/TLSSocket).

Security risks

None. All changes are in test files. The new PQC crypto tests (test-crypto-pqc-keygen-*.js) guard themselves with an OpenSSL 3.5+ version check and simply skip on Bun; they exercise no new Bun code paths. No production code, auth, crypto implementation, or permission logic is touched.

Level of scrutiny

Low-to-medium. Routine upstream sync following an established, well-documented policy (verbatim copy except Bun-specific overrides). The pattern is identical to prior Node.js sync PRs. Test-only changes have a limited blast radius.

Other factors

All six inline issues I flagged were acknowledged and resolved appropriately: two files (test-fs-symlink-dir-junction.js, test-fs-lchmod.js) were reverted to Bun's versions where upstream diverges; four others (test-event-emitter-method-names.js, test-http-parser.js, test-promises-unhandled-rejections.js, test-http-highwatermark.js) were confirmed byte-identical to upstream and kept per sync policy. The Windows CI flap was correctly root-caused to the mimalloc bump in a separate PR and fixed with the threshold increment. CI reports zero failures across all 434 changed Node.js test files in 4 full runs.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all prior inline comments resolved, CI green on Node.js tests across 6 runs.

Extended reasoning...

Overview

This PR syncs 300 test files in test/js/node/test/{parallel,sequential}/ with Node.js v24.14.1 (commit d89bb1b482). The only non-test change is a GC threshold bump in test/js/bun/net/socket.test.ts (3→4 for TCPSocket/TLSSocket on Windows, root-caused to the mimalloc allocator layout change in #29420).

Security Risks

None — this is a pure test sync with no changes to runtime code, auth, crypto, or permissions.

Level of Scrutiny

Low. The established sync policy is verbatim upstream except where Bun-specific workarounds are required. All edge cases that arose were either reverted to Bun's version (two files: and ) or confirmed as intentional upstream artifacts ( double-mustCall, tautological assertion, return-vs-continue).

Other Factors

All five inline comment threads from previous review rounds were resolved by robobun with upstream diff verification. CI shows 0 failures in across 6 complete runs (#46183, #46192, #46216, #46279, #46289, #46294). The remaining red on CI is a GitHub codeload infrastructure outage (failed tarball downloads for c-ares/highway/brotli), unrelated to this PR and self-cleared in newer builds.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — two real issues (lchmod message format, symlink junction trailing backslash) were caught and fixed; all remaining flagged items are verbatim upstream bugs kept per sync policy, CI shows 0 failures across 6 full runs.

Extended reasoning...

Overview

PR #29359 syncs 300 test files with Node.js v24.14.1 (d89bb1b482): 384 files updated verbatim, 49 new tests added, 36 files kept at Bun's version with workarounds, 18 known-failing tests dropped. The only non-test change is a threshold bump in test/js/bun/net/socket.test.ts (TCPSocket/TLSSocket GC count 3→4 on Windows) to account for mimalloc conservative-GC false-positive retention introduced by PR #29420.

Security risks

None. All changes are in test files. No production code, auth, crypto primitives, or permission logic is modified.

Level of scrutiny

This is a large but mechanical sync PR following a well-established pattern (test-only, upstream verbatim except for explicit Bun workarounds). The socket.test.ts threshold bump is a narrow one-line fix with a clear root-cause explanation (mimalloc allocator layout change causing conservative GC false positives). The level of scrutiny required is moderate — the mechanical nature reduces risk, but the volume warrants careful spot-checking of non-verbatim files.

Other factors

  • Two real bugs were caught during review and correctly fixed by reverting to main: test-fs-lchmod.js (message format mismatch && vs and) and test-fs-symlink-dir-junction.js (libuv trailing backslash on Windows junctions).
  • Remaining flagged issues (return vs continue, double mustCall, tautological assertion) are pre-existing upstream Node.js bugs — kept verbatim per sync policy, with upstream references confirmed.
  • CI validation: 0 failures in any test/js/node/test/ file across 6 full CI runs. The Windows socket.test.ts fix is validated. The only remaining red is a GitHub codeload infra outage unrelated to code changes.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all Bun-specific regressions caught during review were fixed (fs-symlink-dir-junction trailing-backslash, fs-lchmod error-message format); remaining flagged items are verbatim upstream bugs intentionally kept per sync policy, and CI shows 0 failures across 8 runs in the affected test paths.

Extended reasoning...

Overview

This PR syncs 300+ Node.js test files with upstream v24.14.1 (commit d89bb1b482). It updates 384 existing tests, adds 49 new tests, keeps 36 at Bun's version (with explicit Bun-specific workarounds), and drops 18 new upstream tests that currently fail in Bun.

Security Risks

None. This PR only modifies test files under test/js/node/test/parallel/ and one test helper (test/js/bun/net/socket.test.ts). No production code, auth logic, crypto primitives, or permissions code is touched.

Review Findings and Resolutions

Multiple rounds of review caught several issues:

  • Fixed: test-fs-symlink-dir-junction.js — PR removed Bun's withoutTrailingSlash workaround; libuv still appends \\ to junction readlink results on Windows (confirmed in Symlinker.zig). Reverted to main in commit 32703b7.
  • Fixed: test-fs-lchmod.js — PR used && for error message but Bun's validateUint32 in validators.zig generates and. Reverted to main in commit c7a14bc.
  • Kept verbatim (confirmed passing): test-event-emitter-method-names.js (return vs continue upstream bug), test-child-process-cwd.js (mustNotCall on exit), test-http-highwatermark.js (mustNotCall server handler), test-http-request-method-delete-payload.js (mustNotCall on data), test-http-parser.js (double mustCall wrapping), test-promises-unhandled-rejections.js (tautological assertion) — all confirmed byte-identical to upstream and passing in CI.

Level of Scrutiny

High — this is a large test suite sync with significant surface area. The iterative review process (8 CI runs, multiple inline comment rounds) was appropriate. The PR author explicitly maintained a "verbatim upstream" policy with documented rationale for any deviations, making the intent clear and the diffs auditable.

CI Status

Final build #46310: 0 failures in test/js/node/test/ across all platforms. Windows 16/16 passed. The only remaining CI red (complex-workspace.test.ts on ubuntu-25.04-x64-baseline) is unrelated to this PR and also fails on independent build #46307.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all flagged issues resolved (two fixes landed, remaining items confirmed as verbatim upstream).

Extended reasoning...

Overview

PR #29359 syncs Bun's Node.js compatibility test suite with Node.js v24.14.1 (d89bb1b482), touching 300 files: 384 tests updated verbatim, 49 new tests added, 36 kept at Bun's version, 18 dropped.

Security risks

None. All changes are in test files under test/js/node/test/parallel/ plus a minor Windows memory-leak threshold bump in test/js/bun/net/socket.test.ts. No production code is modified.

Resolution of prior findings

Eight inline comments were posted across multiple review passes:

  • test-fs-symlink-dir-junction.js: Bun-specific withoutTrailingSlash workaround had been removed; flagged and reverted in commit 32703b7.
  • test-fs-lchmod.js: && vs and in ERR_OUT_OF_RANGE message would have failed macOS CI; flagged and reverted in commit c7a14bc.
  • All other flagged items (double mustCall, tautological assertion, return vs continue in for...of, mustNotCall on exit/data/server handlers): confirmed by robobun as byte-identical to Node.js v24.14.1 upstream, passing in CI, and kept verbatim per the sync policy.

Level of scrutiny

Test-only PR following a well-established, documented sync policy (verbatim upstream unless a Bun-specific workaround is required). The pattern is mechanical and well-understood. CI across 10 runs shows 0 failures in any of the 434 modified files; only red is an aarch64 cold-cache build timeout that is an infra issue unrelated to this PR.

Other factors

All inline comments are marked resolved. The socket.test.ts Windows threshold bump (3→4) is a minor, justified adjustment for Windows mimalloc conservative-GC false positives, validated across 3 Windows CI shards.

@alii

alii commented Apr 20, 2026

Copy link
Copy Markdown
Member

@robobun why did we need to change test/js/bun/net/socket.test.ts?

@robobun

robobun commented Apr 20, 2026

Copy link
Copy Markdown
Collaborator Author

@alii It was blocking this PR's CI: socket.test.ts "should not leak memory" was failing 100% on Windows 2019 x64 + baseline (Expected ≤3 TCPSocket, Received 4) on every PR build after the mimalloc bump landed.

Bisection: build #46134 is PR #29420 (mimalloc bump) at 9cff0498, merge-base 90134bcc18, with the only diff being scripts/build/deps/mimalloc.ts — and it's the first build that hit this exact failure. Then every PR branch merging main after 42e2aa38de hit it (20+ builds: #46156, #46162, #46169, #46170, #46178, #46179, #46184, #46192, #46193, #46196, #46197, #46205, #46208, #46211, #46216, #46249, #46255, #46256, #46260, #46262, #46265, #46269, #46279, …). Main post-commit CI didn't catch it because it only runs build-* on Windows, not test-bun.

It's conservative-GC false-positive retention: the new mimalloc layout left a pointer-shaped word on the native stack that JSC's conservative scan pinned as a TCPSocket root. Count was stable at 4, not growing — not a real leak. Same deflake pattern as d2201eb which previously bumped this Windows threshold 2→3.

However, the underlying cause has since been fixed on main (either #29451 TCPSocketJSRef or #29467 MI_OVERRIDE=OFF on Windows — both landed together). Verified: every build sampled with those commits (e.g. #46450, #46480, #46500, #46540, #46580, #46590, #46620, #46639) passes socket.test.ts on Windows at the ≤3 threshold; every build without them (#46400, #46410, #46420, #46570) still fails.

Since this PR already merges main past both fixes, the bump is now belt-and-suspenders. Happy to revert it if you'd prefer to keep the PR scope strictly to test/js/node/test/ — just say the word.

@alii

alii commented Apr 20, 2026

Copy link
Copy Markdown
Member

@robobun Yes please revert, also rebase main. This PR should only do the test updates.

@robobun robobun force-pushed the farm/3c77c19a/add-node-tests-v24.14.1 branch from fb97c97 to e653795 Compare April 20, 2026 20:58
@robobun

robobun commented Apr 20, 2026

Copy link
Copy Markdown
Collaborator Author

Done — force-pushed e653795a: single commit on top of current main (0e2d207), scope is exactly 433 files under test/js/node/test/. The socket.test.ts change is reverted (underlying cause fixed on main by #29451 / #29467). Build #46652 running.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/js/node/test/parallel/test-http-agent-keep-alive-timeout-buffer.js`:
- Around line 24-25: Rename the constants SERVER_TIMEOUT and BUFFER to camelCase
(e.g., serverTimeout and buffer) throughout the test file, updating every
reference to those identifiers (including any assertions, timers, or function
calls that use SERVER_TIMEOUT or BUFFER) so the code compiles and follows the
repo JS naming rule; ensure const declarations for serverTimeout and buffer
preserve the same values (3 and 1500) and keep their scopes unchanged in the
test block.

In `@test/js/node/test/parallel/test-macos-app-sandbox.js`:
- Around line 57-61: The spawned child currently calls fs.readdirSync in the
inline -e script without requiring fs, causing a ReferenceError and a
false-positive test; update the child_process.spawnSync invocation (the call
using appExecutablePath) to require('fs') inside the -e script before calling
readdirSync (e.g. const fs = require('fs'); fs.readdirSync(process.argv[1]);) so
the script fails only when the sandbox actually blocks filesystem access rather
than due to an undefined variable.
- Around line 65-71: The test only asserts spawnResult.signal === null which can
miss spawn failures; update the spawnSync invocation result checks for the call
that uses child_process.spawnSync(appExecutablePath, ['-e', ''], { stdio:
'inherit' }) by also asserting spawnResult.error === undefined and
spawnResult.status === 0 (matching the pattern used earlier in the test), so
verify both no error and a zero exit status in addition to the existing signal
check.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8c5e45e2-7f61-4830-b20e-19666e1c4df7

📥 Commits

Reviewing files that changed from the base of the PR and between 8d3a30b and e653795.

📒 Files selected for processing (262)
  • test/js/node/test/parallel/test-assert-async.js
  • test/js/node/test/parallel/test-async-hooks-recursive-stack-runInAsyncScope.js
  • test/js/node/test/parallel/test-async-hooks-stack-overflow-nested-async.js
  • test/js/node/test/parallel/test-async-local-storage-contexts.js
  • test/js/node/test/parallel/test-async-local-storage-snapshot.js
  • test/js/node/test/parallel/test-blocklist-clone.js
  • test/js/node/test/parallel/test-btoa-atob.js
  • test/js/node/test/parallel/test-buffer-bytelength.js
  • test/js/node/test/parallel/test-buffer-failed-alloc-typed-arrays.js
  • test/js/node/test/parallel/test-buffer-inspect.js
  • test/js/node/test/parallel/test-buffer-no-negative-allocation.js
  • test/js/node/test/parallel/test-buffer-over-max-length.js
  • test/js/node/test/parallel/test-buffer-resizable.js
  • test/js/node/test/parallel/test-buffer-tostring-rangeerror.js
  • test/js/node/test/parallel/test-buffer-tostring.js
  • test/js/node/test/parallel/test-buffer-zero-fill-cli.js
  • test/js/node/test/parallel/test-child-process-can-write-to-stdout.js
  • test/js/node/test/parallel/test-child-process-cwd.js
  • test/js/node/test/parallel/test-child-process-disconnect.js
  • test/js/node/test/parallel/test-child-process-flush-stdio.js
  • test/js/node/test/parallel/test-child-process-fork-abort-signal.js
  • test/js/node/test/parallel/test-child-process-fork-advanced-header-serialization.js
  • test/js/node/test/parallel/test-child-process-fork-closed-channel-segfault.js
  • test/js/node/test/parallel/test-child-process-fork-ref.js
  • test/js/node/test/parallel/test-child-process-fork-timeout-kill-signal.js
  • test/js/node/test/parallel/test-child-process-fork.js
  • test/js/node/test/parallel/test-child-process-reject-null-bytes.js
  • test/js/node/test/parallel/test-child-process-spawn-timeout-kill-signal.js
  • test/js/node/test/parallel/test-child-process-spawnsync-args.js
  • test/js/node/test/parallel/test-child-process-spawnsync-timeout.js
  • test/js/node/test/parallel/test-child-process-stdio-inherit.js
  • test/js/node/test/parallel/test-cluster-concurrent-disconnect.js
  • test/js/node/test/parallel/test-cluster-disconnect-exitedAfterDisconnect-race.js
  • test/js/node/test/parallel/test-cluster-eaddrinuse.js
  • test/js/node/test/parallel/test-cluster-fork-windowsHide.js
  • test/js/node/test/parallel/test-cluster-message.js
  • test/js/node/test/parallel/test-cluster-rr-handle-keep-loop-alive.js
  • test/js/node/test/parallel/test-cluster-send-deadlock.js
  • test/js/node/test/parallel/test-cluster-worker-events.js
  • test/js/node/test/parallel/test-cluster-worker-isdead.js
  • test/js/node/test/parallel/test-cluster-worker-kill-signal.js
  • test/js/node/test/parallel/test-cluster-worker-no-exit.js
  • test/js/node/test/parallel/test-cluster-worker-wait-server-close.js
  • test/js/node/test/parallel/test-crypto-certificate.js
  • test/js/node/test/parallel/test-crypto-dh-generate-keys.js
  • test/js/node/test/parallel/test-crypto-ecb.js
  • test/js/node/test/parallel/test-crypto-hkdf.js
  • test/js/node/test/parallel/test-crypto-oneshot-hash.js
  • test/js/node/test/parallel/test-crypto-op-during-process-exit.js
  • test/js/node/test/parallel/test-crypto-padding.js
  • test/js/node/test/parallel/test-crypto-pqc-keygen-ml-dsa.js
  • test/js/node/test/parallel/test-crypto-pqc-keygen-ml-kem.js
  • test/js/node/test/parallel/test-crypto-pqc-keygen-slh-dsa.js
  • test/js/node/test/parallel/test-crypto-randomfillsync-regression.js
  • test/js/node/test/parallel/test-crypto-rsa-pss-default-salt-length.js
  • test/js/node/test/parallel/test-crypto-stream.js
  • test/js/node/test/parallel/test-crypto-subtle-zero-length.js
  • test/js/node/test/parallel/test-debug-process.js
  • test/js/node/test/parallel/test-debugger-backtrace.js
  • test/js/node/test/parallel/test-debugger-exec.js
  • test/js/node/test/parallel/test-debugger-low-level.js
  • test/js/node/test/parallel/test-debugger-repeat-last.js
  • test/js/node/test/parallel/test-debugger-restart-message.js
  • test/js/node/test/parallel/test-dgram-bind-error-repeat.js
  • test/js/node/test/parallel/test-dgram-bytes-length.js
  • test/js/node/test/parallel/test-dgram-connect-send-default-host.js
  • test/js/node/test/parallel/test-dgram-connect-send-empty-packet.js
  • test/js/node/test/parallel/test-dgram-connect-send-multi-string-array.js
  • test/js/node/test/parallel/test-dgram-send-address-types.js
  • test/js/node/test/parallel/test-dgram-send-empty-buffer.js
  • test/js/node/test/parallel/test-dgram-send-empty-packet.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-callback-error.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-callback.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise-error.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise-unhandled.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-promise.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
  • test/js/node/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
  • test/js/node/test/parallel/test-domain-nested-throw.js
  • test/js/node/test/parallel/test-domexception-cause.js
  • test/js/node/test/parallel/test-event-emitter-add-listeners.js
  • test/js/node/test/parallel/test-event-emitter-method-names.js
  • test/js/node/test/parallel/test-event-emitter-remove-all-listeners.js
  • test/js/node/test/parallel/test-eventtarget-custom-inspect-does-not-throw.js
  • test/js/node/test/parallel/test-file-write-stream.js
  • test/js/node/test/parallel/test-file-write-stream2.js
  • test/js/node/test/parallel/test-fs-fmap.js
  • test/js/node/test/parallel/test-fs-open.js
  • test/js/node/test/parallel/test-fs-promises-readfile-empty.js
  • test/js/node/test/parallel/test-fs-promises-statfs-validate-path.js
  • test/js/node/test/parallel/test-fs-promises-writefile.js
  • test/js/node/test/parallel/test-fs-read-stream-encoding.js
  • test/js/node/test/parallel/test-fs-read-stream-err.js
  • test/js/node/test/parallel/test-fs-read-stream-inherit.js
  • test/js/node/test/parallel/test-fs-read-stream-throw-type-error.js
  • test/js/node/test/parallel/test-fs-read-stream.js
  • test/js/node/test/parallel/test-fs-read-zero-length.js
  • test/js/node/test/parallel/test-fs-readfile-fd.js
  • test/js/node/test/parallel/test-fs-realpath.js
  • test/js/node/test/parallel/test-fs-statfs.js
  • test/js/node/test/parallel/test-fs-watch-recursive-delete.js
  • test/js/node/test/parallel/test-fs-watch-recursive-watch-file.js
  • test/js/node/test/parallel/test-fs-watch-stop-async.js
  • test/js/node/test/parallel/test-fs-watchfile.js
  • test/js/node/test/parallel/test-fs-write-optional-params.js
  • test/js/node/test/parallel/test-fs-write-stream-change-open.js
  • test/js/node/test/parallel/test-fs-write-stream-err.js
  • test/js/node/test/parallel/test-fs-write-stream-throw-type-error.js
  • test/js/node/test/parallel/test-fs-write-stream.js
  • test/js/node/test/parallel/test-gc-http-client-connaborted.js
  • test/js/node/test/parallel/test-gc-tls-external-memory.js
  • test/js/node/test/parallel/test-global-encoder.js
  • test/js/node/test/parallel/test-http-abort-stream-end.js
  • test/js/node/test/parallel/test-http-agent-keep-alive-timeout-buffer.js
  • test/js/node/test/parallel/test-http-agent-maxtotalsockets.js
  • test/js/node/test/parallel/test-http-agent-remove.js
  • test/js/node/test/parallel/test-http-allow-content-length-304.js
  • test/js/node/test/parallel/test-http-buffer-sanity.js
  • test/js/node/test/parallel/test-http-chunk-problem.js
  • test/js/node/test/parallel/test-http-client-close-with-default-agent.js
  • test/js/node/test/parallel/test-http-client-finished.js
  • test/js/node/test/parallel/test-http-client-keep-alive-hint.js
  • test/js/node/test/parallel/test-http-client-leaky-with-double-response.js
  • test/js/node/test/parallel/test-http-client-request-options.js
  • test/js/node/test/parallel/test-http-client-timeout-event.js
  • test/js/node/test/parallel/test-http-client-timeout-option.js
  • test/js/node/test/parallel/test-http-client-timeout.js
  • test/js/node/test/parallel/test-http-content-length-mismatch.js
  • test/js/node/test/parallel/test-http-date-header.js
  • test/js/node/test/parallel/test-http-decoded-auth.js
  • test/js/node/test/parallel/test-http-double-content-length.js
  • test/js/node/test/parallel/test-http-end-throw-socket-handling.js
  • test/js/node/test/parallel/test-http-expect-handling.js
  • test/js/node/test/parallel/test-http-extra-response.js
  • test/js/node/test/parallel/test-http-flush-headers.js
  • test/js/node/test/parallel/test-http-flush-response-headers.js
  • test/js/node/test/parallel/test-http-head-throw-on-response-body-write.js
  • test/js/node/test/parallel/test-http-header-obstext.js
  • test/js/node/test/parallel/test-http-header-read.js
  • test/js/node/test/parallel/test-http-highwatermark.js
  • test/js/node/test/parallel/test-http-host-headers.js
  • test/js/node/test/parallel/test-http-invalidheaderfield.js
  • test/js/node/test/parallel/test-http-keep-alive-pipeline-max-requests.js
  • test/js/node/test/parallel/test-http-keep-alive-timeout-buffer.js
  • test/js/node/test/parallel/test-http-many-ended-pipelines.js
  • test/js/node/test/parallel/test-http-outgoing-finished.js
  • test/js/node/test/parallel/test-http-parser.js
  • test/js/node/test/parallel/test-http-pause.js
  • test/js/node/test/parallel/test-http-proxy.js
  • test/js/node/test/parallel/test-http-readable-data-event.js
  • test/js/node/test/parallel/test-http-request-end-twice.js
  • test/js/node/test/parallel/test-http-request-end.js
  • test/js/node/test/parallel/test-http-request-method-delete-payload.js
  • test/js/node/test/parallel/test-http-response-add-header-after-sent.js
  • test/js/node/test/parallel/test-http-response-readable.js
  • test/js/node/test/parallel/test-http-response-remove-header-after-sent.js
  • test/js/node/test/parallel/test-http-response-setheaders.js
  • test/js/node/test/parallel/test-http-response-status-message.js
  • test/js/node/test/parallel/test-http-response-statuscode.js
  • test/js/node/test/parallel/test-http-response-writehead-returns-this.js
  • test/js/node/test/parallel/test-http-server-close-idle-wait-response.js
  • test/js/node/test/parallel/test-http-server-keep-alive-defaults.js
  • test/js/node/test/parallel/test-http-server-keep-alive-max-requests-null.js
  • test/js/node/test/parallel/test-http-server-method.query.js
  • test/js/node/test/parallel/test-http-server-multiheaders.js
  • test/js/node/test/parallel/test-http-server-non-utf8-header.js
  • test/js/node/test/parallel/test-http-server-options-incoming-message.js
  • test/js/node/test/parallel/test-http-server-options-server-response.js
  • test/js/node/test/parallel/test-http-server-stale-close.js
  • test/js/node/test/parallel/test-http-set-cookies.js
  • test/js/node/test/parallel/test-http-set-header-chain.js
  • test/js/node/test/parallel/test-http-status-code.js
  • test/js/node/test/parallel/test-http-status-message.js
  • test/js/node/test/parallel/test-http-timeout-overflow.js
  • test/js/node/test/parallel/test-http-url.parse-basic.js
  • test/js/node/test/parallel/test-http-write-callbacks.js
  • test/js/node/test/parallel/test-http-zero-length-write.js
  • test/js/node/test/parallel/test-http2-cancel-while-client-reading.js
  • test/js/node/test/parallel/test-http2-client-proxy-over-http2.js
  • test/js/node/test/parallel/test-http2-client-request-options-errors.js
  • test/js/node/test/parallel/test-http2-client-setNextStreamID-errors.js
  • test/js/node/test/parallel/test-http2-client-stream-destroy-before-connect.js
  • test/js/node/test/parallel/test-http2-client-upload-reject.js
  • test/js/node/test/parallel/test-http2-close-while-writing.js
  • test/js/node/test/parallel/test-http2-compat-serverrequest-settimeout.js
  • test/js/node/test/parallel/test-http2-compat-serverresponse-close.js
  • test/js/node/test/parallel/test-http2-compat-serverresponse-end.js
  • test/js/node/test/parallel/test-http2-compat-serverresponse-settimeout.js
  • test/js/node/test/parallel/test-http2-compat-write-early-hints-invalid-argument-type.js
  • test/js/node/test/parallel/test-http2-compat-write-early-hints-invalid-argument-value.js
  • test/js/node/test/parallel/test-http2-connect-tls-with-delay.js
  • test/js/node/test/parallel/test-http2-connect.js
  • test/js/node/test/parallel/test-http2-create-client-session.js
  • test/js/node/test/parallel/test-http2-destroy-after-write.js
  • test/js/node/test/parallel/test-http2-generic-streams-sendfile.js
  • test/js/node/test/parallel/test-http2-goaway-opaquedata.js
  • test/js/node/test/parallel/test-http2-head-request.js
  • test/js/node/test/parallel/test-http2-invalidheaderfield.js
  • test/js/node/test/parallel/test-http2-malformed-altsvc.js
  • test/js/node/test/parallel/test-http2-many-writes-and-destroy.js
  • test/js/node/test/parallel/test-http2-misbehaving-flow-control-paused.js
  • test/js/node/test/parallel/test-http2-misbehaving-flow-control.js
  • test/js/node/test/parallel/test-http2-misused-pseudoheaders.js
  • test/js/node/test/parallel/test-http2-no-more-streams.js
  • test/js/node/test/parallel/test-http2-options-server-request.js
  • test/js/node/test/parallel/test-http2-origin.js
  • test/js/node/test/parallel/test-http2-removed-header-stays-removed.js
  • test/js/node/test/parallel/test-http2-res-corked.js
  • test/js/node/test/parallel/test-http2-respond-file-204.js
  • test/js/node/test/parallel/test-http2-respond-file-304.js
  • test/js/node/test/parallel/test-http2-respond-file-404.js
  • test/js/node/test/parallel/test-http2-respond-file-compat.js
  • test/js/node/test/parallel/test-http2-respond-file-error-dir.js
  • test/js/node/test/parallel/test-http2-respond-file-error-pipe-offset.js
  • test/js/node/test/parallel/test-http2-respond-file-fd-invalid.js
  • test/js/node/test/parallel/test-http2-respond-file-fd-range.js
  • test/js/node/test/parallel/test-http2-respond-file-fd.js
  • test/js/node/test/parallel/test-http2-respond-file-range.js
  • test/js/node/test/parallel/test-http2-respond-file-with-pipe.js
  • test/js/node/test/parallel/test-http2-respond-with-file-connection-abort.js
  • test/js/node/test/parallel/test-http2-sent-headers.js
  • test/js/node/test/parallel/test-http2-serve-file.js
  • test/js/node/test/parallel/test-http2-server-set-header.js
  • test/js/node/test/parallel/test-http2-too-large-headers.js
  • test/js/node/test/parallel/test-http2-trailers.js
  • test/js/node/test/parallel/test-http2-write-finishes-after-stream-destroy.js
  • test/js/node/test/parallel/test-http2-zero-length-header.js
  • test/js/node/test/parallel/test-https-agent-session-eviction.js
  • test/js/node/test/parallel/test-https-agent.js
  • test/js/node/test/parallel/test-https-byteswritten.js
  • test/js/node/test/parallel/test-inspector-connect-to-main-thread.js
  • test/js/node/test/parallel/test-kill-segfault-freebsd.js
  • test/js/node/test/parallel/test-listen-fd-detached-inherit.js
  • test/js/node/test/parallel/test-listen-fd-detached.js
  • test/js/node/test/parallel/test-listen-fd-ebadf.js
  • test/js/node/test/parallel/test-macos-app-sandbox.js
  • test/js/node/test/parallel/test-microtask-queue-integration.js
  • test/js/node/test/parallel/test-microtask-queue-run-immediate.js
  • test/js/node/test/parallel/test-microtask-queue-run.js
  • test/js/node/test/parallel/test-module-create-require-multibyte.js
  • test/js/node/test/parallel/test-module-prototype-mutation.js
  • test/js/node/test/parallel/test-module-run-main-monkey-patch.js
  • test/js/node/test/parallel/test-module-stat.js
  • test/js/node/test/parallel/test-net-allow-half-open.js
  • test/js/node/test/parallel/test-net-autoselectfamily-default.js
  • test/js/node/test/parallel/test-net-autoselectfamily-ipv4first.js
  • test/js/node/test/parallel/test-net-autoselectfamily.js
  • test/js/node/test/parallel/test-net-blocklist.js
  • test/js/node/test/parallel/test-net-child-process-connect-reset.js
  • test/js/node/test/parallel/test-net-connect-abort-controller.js
  • test/js/node/test/parallel/test-net-connect-keepalive.js
  • test/js/node/test/parallel/test-net-connect-memleak.js
  • test/js/node/test/parallel/test-net-connect-nodelay.js
  • test/js/node/test/parallel/test-net-connect-options-invalid.js
  • test/js/node/test/parallel/test-net-connect-options-ipv6.js
  • test/js/node/test/parallel/test-net-connect-options-port.js
  • test/js/node/test/parallel/test-net-keepalive.js
  • test/js/node/test/parallel/test-net-listen-exclusive-random-ports.js
  • test/js/node/test/parallel/test-net-listen-invalid-port.js
  • test/js/node/test/parallel/test-net-localerror.js
  • test/js/node/test/parallel/test-net-persistent-keepalive.js
  • test/js/node/test/parallel/test-net-reconnect.js
💤 Files with no reviewable changes (4)
  • test/js/node/test/parallel/test-child-process-spawnsync-timeout.js
  • test/js/node/test/parallel/test-net-blocklist.js
  • test/js/node/test/parallel/test-net-connect-options-invalid.js
  • test/js/node/test/parallel/test-fs-promises-writefile.js

Comment thread test/js/node/test/parallel/test-macos-app-sandbox.js
Comment thread test/js/node/test/parallel/test-macos-app-sandbox.js

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — all Bun-specific regressions were reverted, remaining items are upstream Node.js bugs kept verbatim per sync policy, and CI is clean.

Extended reasoning...

Overview

This PR syncs 300 test files in test/js/node/test/parallel/ and test/js/node/test/sequential/ with Node.js v24.14.1 (commit d89bb1b482). All changed files are strictly within the Node.js compat test directory — no production source code, build scripts, or Bun-specific test files are modified.

Security Risks

None. All changes are read-only test files with no access to authentication, crypto primitives, or privileged APIs in Bun's own codebase.

Level of Scrutiny

Test-only sync PRs like this follow an established, well-understood pattern. The primary risk is Bun-specific regressions (upstream tests that rely on Node.js behavior Bun doesn't match). All such regressions identified during review were either reverted or confirmed to be non-issues through local verification and CI.

Other Factors

All eight issues I raised as inline comments were addressed: two files with genuine Bun regressions were reverted (symlink junction and lchmod error message); the remaining six are upstream bugs kept verbatim per the project sync policy (confirmed byte-identical to Node.js v24.14.1). The three mustNotCall edge cases (child-process-cwd, http-highwatermark, http-request-method-delete-payload) all pass 3/3 locally with no CI failure annotations across five builds. Build #46348 shows 224 passed, 0 failures. The out-of-scope socket.test.ts change was correctly reverted and the PR rebased. No outstanding unresolved reviewer comments remain.

@Jarred-Sumner Jarred-Sumner force-pushed the farm/3c77c19a/add-node-tests-v24.14.1 branch from 641ea45 to 4a99f37 Compare May 4, 2026 10:37
@robobun robobun force-pushed the farm/3c77c19a/add-node-tests-v24.14.1 branch from 4a99f37 to 15d2b32 Compare May 4, 2026 13:30
@robobun robobun force-pushed the farm/3c77c19a/add-node-tests-v24.14.1 branch 3 times, most recently from a43ceef to d600376 Compare May 5, 2026 11:15
@robobun robobun force-pushed the farm/3c77c19a/add-node-tests-v24.14.1 branch from d600376 to bbb1e30 Compare June 18, 2026 16:45

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found on this pass — all prior threads are resolved and the scope is now strictly test/js/node/test/. Given the scale (~432 files) and the judgment calls on which tests to keep at Bun's version vs. drop as flaky, I'll leave the final sign-off to a human.

Extended reasoning...

Overview

This PR syncs ~432 test files under test/js/node/test/{parallel,sequential}/ with Node.js v24.14.1 (commit d89bb1b482). The vast majority of changes are mechanical: wrapping callbacks in common.mustCall()/common.mustCallAtLeast(), switching destructured assert imports to namespace form, replacing forEach with for...of, and adding ~48 new upstream test files. The PR description explicitly enumerates 36 tests kept at Bun's prior version (to preserve Bun-specific workarounds) and 19 new upstream tests dropped as flaky/incompatible. No runtime or production code is touched — the diff is confined entirely to the Node.js compatibility test fixtures directory.

Security risks

None. These are test files copied verbatim from upstream Node.js; they exercise Bun's Node-compat layer but do not ship in the binary, handle untrusted input, or touch auth/crypto/permissions logic in production paths.

Level of scrutiny

Moderate-to-high, but not for correctness of individual hunks (which are verbatim upstream and validated by CI — per the author's build summary, 660 test shards across 6 builds with zero failures in test/js/node/test/). The scrutiny is warranted for the curation decisions: which 36 files to hold back at Bun's version and which 19 new tests to drop. Those choices encode assumptions about current Bun behavior (e.g., libuv junction trailing-slash, error-message format differences, platform-specific timing) and affect what the compat suite will catch going forward. A maintainer familiar with the Node-compat roadmap should confirm that list.

Other factors

All 8 of my prior inline findings and all CodeRabbit findings have been resolved — either fixed (e.g., test-fs-symlink-dir-junction.js, test-fs-lchmod.js reverted to preserve Bun workarounds) or correctly explained as verbatim-upstream-by-design. A human maintainer has already engaged on scope (requesting the socket.test.ts revert and rebase, both done). The PR has been repeatedly rebased and the author has provided detailed CI triage distinguishing infra failures from real test failures. Given the size and the keep/drop curation, this is not a change I'd shadow-approve, but it appears ready for human sign-off.

Syncs tests in test/js/node/test/{parallel,sequential}/ with Node.js at
commit d89bb1b482 (v24.14.1).

- 384 existing tests updated to match upstream
- 49 new tests added
- 36 existing tests kept at Bun's version (Bun-specific workarounds)
- 18 new tests from the list dropped (currently fail/flake in Bun)

All referenced ../common/* helpers and fixture files already exist
in-tree.
@robobun robobun force-pushed the farm/3c77c19a/add-node-tests-v24.14.1 branch from bbb1e30 to 7dadb66 Compare June 18, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants