Skip to content

test(net): expand Node 26.5 parity coverage - #6865

Open
TheHypnoo wants to merge 2 commits into
mainfrom
test/expand-node-net-parity
Open

test(net): expand Node 26.5 parity coverage#6865
TheHypnoo wants to merge 2 commits into
mainfrom
test/expand-node-net-parity

Conversation

@TheHypnoo

@TheHypnoo TheHypnoo commented Jul 26, 2026

Copy link
Copy Markdown
Member

Summary

Expand the granular node:net parity suite against Node 26.5.0 and document stable differences in Perry, Deno, and Bun.

Changes

  • expand the suite from 13 to 47 focused fixtures across classes, exports, validation, lifecycle, overloads, transport, counters, flow control, abort, and reset contracts
  • replace broad or nondeterministic fixtures with single-contract probes using loopback and ephemeral ports
  • add per-fixture evidence pinned to exact Node, Deno, and Bun revisions
  • buffer full TCP input before round-trip processing, keep pauseOnConnect focused on accepted socket state, and record the asynchronous resetAndDestroy() error
  • update the clean Perry baseline to 16/47

Related issue

n/a

Test plan

  • cargo build --release clean
  • cargo test --workspace --exclude perry-ui-ios --exclude perry-ui-tvos --exclude perry-ui-watchos --exclude perry-ui-gtk4 --exclude perry-ui-android --exclude perry-ui-windows passes — not run; this PR changes parity fixtures and evidence only
  • Node 26.5.0: 47/47 identical across three runs; 0 errors and 0 timeouts
  • Deno 2.9.3: 42 identical and 5 stable differences across three runs
  • Bun 1.2.18: 28 identical and 19 stable differences across three runs
  • Perry: 16 passes and 31 stable differences across two post-review focused runs; 0 compile failures, runtime errors, crashes, or timeouts
  • deno fmt --check test-parity/node-suite/net
  • cargo fmt --all -- --check
  • JSON parse and git diff --check

./scripts/check_file_size.sh still reports the pre-existing crates/perry-runtime/src/object/mod.rs at 2039 lines. This PR does not change that file.

Screenshots / output

Not applicable; this PR has no UI changes.

Checklist

  • I have NOT bumped the workspace version or edited CLAUDE.md / CHANGELOG.md
  • My commits follow the repository's conventional commit style
  • I've read CONTRIBUTING.md and agree to the Code of Conduct
  • HTTP, TLS, UDP, cluster, and async-hooks contracts remain in their own suites
  • Internet, fixed ports, Unix sockets, host interfaces, kernel error text, packet boundaries, timing, pummel, and process-transfer cases remain excluded

Summary by CodeRabbit

  • New Features
    • Expanded Node networking parity coverage across blocklists, socket address behaviors, connection and server lifecycle, and validation scenarios (including IPv4/IPv6, backpressure, event ordering, and cork/uncork).
  • Documentation
    • Added networking parity evidence and a detailed coverage guide, including scope, fixture counts, run instructions, and stability/exclusion criteria.
  • Tests
    • Refreshed parity baselines and improved determinism with more robust cleanup and error reporting.
    • Removed/adjusted nondeterministic cases to improve reliability.

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR expands the node:net parity suite to 47 fixtures covering classes, exports, connections, servers, sockets, and validation. It adds cross-runtime evidence and README documentation, improves deterministic cleanup and output normalization, and updates the net baseline measurements.

Changes

node:net parity coverage

Layer / File(s) Summary
Suite evidence and baseline
test-parity/node-suite/net/README.md, test-parity/node-suite/net/EVIDENCE.md, test-parity/node_suite_baseline.json
Documents fixture scope, runtime measurements, traceability, exclusions, and refreshed net baseline thresholds.
Classes and public exports
test-parity/node-suite/net/classes/*, test-parity/node-suite/net/exports/*
Adds runtime coverage for BlockList, SocketAddress, exports, descriptors, aliases, prototypes, and argument helpers.
Connection and transport behavior
test-parity/node-suite/net/connection/*
Adds TCP fixtures for abort signals, metadata, backpressure, counters, overloads, buffering, round trips, event ordering, half-close behavior, IPv6, and state transitions.
Server and socket lifecycle
test-parity/node-suite/net/server/*, test-parity/node-suite/net/socket/*, test-parity/node-suite/net/method-values/*
Adds server and socket lifecycle, state, reference, listen, pause, chainability, reset, and async-dispose checks.
Argument validation and deterministic cleanup
test-parity/node-suite/net/validation/*
Adds validation cases for connection, listen, server, socket, receiver, port, timeout, and normalized error behavior, with explicit cleanup.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

  • PerryTS/perry#6698: Updates the same node-suite baseline file and related module measurements.
  • PerryTS/perry#6815: Relates to the removed connection-state-limits fixture and getConnections behavior.

Suggested labels: parity

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise and accurately summarizes the main change: expanding Node 26.5 parity coverage for net tests.
Description check ✅ Passed The description matches the template well, with summary, changes, related issue, test plan, output, and checklist sections filled in.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/expand-node-net-parity

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test-parity/node_suite_baseline.json`:
- Around line 105-106: Update the regression checker to validate the baseline
total in addition to the existing pass-floor check: reject results when
current.total is less than floor.total. Use the baseline totals represented by
test-parity/node_suite_baseline.json so removing failing fixtures cannot make a
reduced suite pass.

In `@test-parity/node-suite/net/connection/data-roundtrip.ts`:
- Around line 4-7: Update the server callback in net.createServer so it
accumulates all data chunks received from the socket instead of responding from
the first data event. After the peer signals the receive stream has ended,
combine the buffered data, uppercase the complete input, and send the
transformed result before closing the socket.

In `@test-parity/node-suite/net/EVIDENCE.md`:
- Around line 162-164: Update the stopping-point sentence in EVIDENCE.md by
replacing “required excluded host” with “required exclusion of host”; leave the
rest of the documentation unchanged.
- Around line 47-48: Update the parity definition in EVIDENCE.md to state that
“same” means byte-for-byte equality of stdout after applying
node_suite_run.normalize(), rather than raw stdout parity. Keep the existing
description of “diff” and the repeated-run qualification unchanged.

In `@test-parity/node-suite/net/server/pause-on-connect.ts`:
- Around line 15-23: Update the synchronization in the server test around the
accepted-socket data handling so it exposes a promise or equivalent completion
signal for the expected payload, then await that signal before logging received.
Replace reliance on client.once("close") alone with the accepted socket’s
expected end/close or data completion, while preserving the existing received
payload assertion/output.

In `@test-parity/node-suite/net/socket/destroy-and-reset.ts`:
- Around line 3-10: The test loop should capture the error emitted by
resetAndDestroy() before logging the final result. Update the socket error
listener in the method loop to record the received error, then log that captured
error’s name and code after invoking the method, ensuring resetAndDestroy()’s
destroy(ERR_SOCKET_CLOSED) event is observable despite the no-op listener.

In `@test-parity/node-suite/net/validation/connect-missing-arguments.ts`:
- Around line 3-10: Synchronize asynchronous validation outcomes before logging
results: in test-parity/node-suite/net/validation/connect-missing-arguments.ts
(lines 3-10) and test-parity/node-suite/net/validation/connect-options.ts (lines
13-20), await either the socket's "error" or "close" event before reporting each
case; in test-parity/node-suite/net/validation/listen-options.ts (lines 9-17),
await "error" or "listening", close the server, then await its cleanup before
reporting. Update the affected net.connect/net.Server.listen fixture flows while
preserving their existing pass/error output.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bf92aa69-3905-4342-871e-e1bfe752ab6f

📥 Commits

Reviewing files that changed from the base of the PR and between 563c359 and 390cdb2.

📒 Files selected for processing (50)
  • test-parity/node-suite/net/EVIDENCE.md
  • test-parity/node-suite/net/README.md
  • test-parity/node-suite/net/classes/block-list-identity.ts
  • test-parity/node-suite/net/classes/block-list-ipv4.ts
  • test-parity/node-suite/net/classes/block-list-ipv6.ts
  • test-parity/node-suite/net/classes/block-list-json.ts
  • test-parity/node-suite/net/classes/block-list-socket-address-inputs.ts
  • test-parity/node-suite/net/classes/blocklist-socketaddress.ts
  • test-parity/node-suite/net/classes/socket-address-defaults.ts
  • test-parity/node-suite/net/classes/socket-address-parse.ts
  • test-parity/node-suite/net/classes/socket-address-validation.ts
  • test-parity/node-suite/net/connection/abort-signal.ts
  • test-parity/node-suite/net/connection/address-metadata.ts
  • test-parity/node-suite/net/connection/backpressure.ts
  • test-parity/node-suite/net/connection/bytes-counters.ts
  • test-parity/node-suite/net/connection/connect-overloads.ts
  • test-parity/node-suite/net/connection/cork-uncork.ts
  • test-parity/node-suite/net/connection/data-roundtrip.ts
  • test-parity/node-suite/net/connection/end-callback-order.ts
  • test-parity/node-suite/net/connection/event-order.ts
  • test-parity/node-suite/net/connection/half-close.ts
  • test-parity/node-suite/net/connection/ipv6-loopback.ts
  • test-parity/node-suite/net/connection/state-transitions.ts
  • test-parity/node-suite/net/exports/bound-socket.ts
  • test-parity/node-suite/net/exports/class-prototypes.ts
  • test-parity/node-suite/net/exports/create-server-and-helpers.ts
  • test-parity/node-suite/net/exports/descriptors-and-aliases.ts
  • test-parity/node-suite/net/exports/stream-alias.ts
  • test-parity/node-suite/net/method-values/server-async-dispose.ts
  • test-parity/node-suite/net/server/address-lifecycle.ts
  • test-parity/node-suite/net/server/connection-state-limits.ts
  • test-parity/node-suite/net/server/get-connections.ts
  • test-parity/node-suite/net/server/initial-state-and-refs.ts
  • test-parity/node-suite/net/server/listen-overloads.ts
  • test-parity/node-suite/net/server/pause-on-connect.ts
  • test-parity/node-suite/net/socket/chainable-controls.ts
  • test-parity/node-suite/net/socket/destroy-and-reset.ts
  • test-parity/node-suite/net/socket/initial-state.ts
  • test-parity/node-suite/net/socket/type-of-service.ts
  • test-parity/node-suite/net/validation/auto-select-family-defaults.ts
  • test-parity/node-suite/net/validation/connect-missing-arguments.ts
  • test-parity/node-suite/net/validation/connect-options.ts
  • test-parity/node-suite/net/validation/connect-port.ts
  • test-parity/node-suite/net/validation/create-server-options.ts
  • test-parity/node-suite/net/validation/listen-options.ts
  • test-parity/node-suite/net/validation/listen-port.ts
  • test-parity/node-suite/net/validation/receiver-validation.ts
  • test-parity/node-suite/net/validation/socket-constructor-options.ts
  • test-parity/node-suite/net/validation/socket-set-timeout.ts
  • test-parity/node_suite_baseline.json
💤 Files with no reviewable changes (2)
  • test-parity/node-suite/net/server/connection-state-limits.ts
  • test-parity/node-suite/net/classes/blocklist-socketaddress.ts

Comment on lines +105 to +106
"pass": 16,
"total": 47

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Enforce the baseline total, not only the pass floor.

The regression checker currently ignores floor.total. With this 16/47 baseline, deleting the 31 failing fixtures could produce 16/16 and still pass the regression check. Add a current.total < floor.total regression check so fixture removal cannot silently reduce coverage.

Suggested checker change
+        if cur["total"] < floor["total"]:
+            regressions.append(
+                f"{mod}: {cur['total']} fixtures < baseline {floor['total']}"
+            )
-        if cur["pass"] < floor["pass"]:
+        if cur["pass"] < floor["pass"]:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test-parity/node_suite_baseline.json` around lines 105 - 106, Update the
regression checker to validate the baseline total in addition to the existing
pass-floor check: reject results when current.total is less than floor.total.
Use the baseline totals represented by test-parity/node_suite_baseline.json so
removing failing fixtures cannot make a reduced suite pass.

Comment thread test-parity/node-suite/net/connection/data-roundtrip.ts
Comment on lines +47 to +48
`same` means byte-for-byte stdout parity with Node 26.5.0. `diff` means a stable
runtime difference. Every row completed three identical runs.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Describe parity as normalized stdout equality.

The runner applies node_suite_run.normalize() before comparing outputs, so this is not raw byte-for-byte stdout parity. Clarify that same means byte-for-byte equality after normalization.

Suggested wording
-`same` means byte-for-byte stdout parity with Node 26.5.0.
+`same` means byte-for-byte stdout parity with Node 26.5.0 after normalization.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
`same` means byte-for-byte stdout parity with Node 26.5.0. `diff` means a stable
runtime difference. Every row completed three identical runs.
`same` means byte-for-byte stdout parity with Node 26.5.0 after normalization. `diff` means a stable
runtime difference. Every row completed three identical runs.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test-parity/node-suite/net/EVIDENCE.md` around lines 47 - 48, Update the
parity definition in EVIDENCE.md to state that “same” means byte-for-byte
equality of stdout after applying node_suite_run.normalize(), rather than raw
stdout parity. Keep the existing description of “diff” and the repeated-run
qualification unchanged.

Comment thread test-parity/node-suite/net/EVIDENCE.md Outdated
Comment on lines +15 to +23
await new Promise<void>((resolve, reject) => {
server.once("error", reject);
server.listen(0, "127.0.0.1", resolve);
});
client = net.connect((server.address() as any).port, "127.0.0.1");
client.on("error", () => {});
client.end("hello");
await new Promise<void>((resolve) => client!.once("close", resolve));
console.log("received:", received.join(""));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="test-parity/node-suite/net/server/pause-on-connect.ts"
if [ -f "$file" ]; then
  echo "== file exists =="
  wc -l "$file"
  echo "== contents =="
  cat -n "$file"
else
  echo "file not found: $file"
  echo "candidate files:"
  fd -i 'pause-on-connect|pause.*connect|server.*pause' test-parity || true
fi

echo "== related context =="
rg -n "pause-on-connect|received|server\.on|pauseOnConnect|pause connect|connect" test-parity || true

Repository: PerryTS/perry

Length of output: 50370


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== node net test behavior probe =="
node - <<'JS'
const net = require('net');
let events = [];
let done = false;

async function run() {
  const server = net.createServer((s) => {
    events.push('accept');
    s.on('data', (chunk) => {
      // simulate work after data
      Promise.resolve().then(() => {
        events.push('data-after-microtick');
      });
    });
    s.on('end', () => events.push('accept-end'));
    s.on('pause', () => events.push('accept-pause'));
    s.on('resume', () => events.push('accept-resume'));
  });

  const serverReady = new Promise(resolve => {
    server.once('error', reject => { throw reject; });
    server.listen(0, '127.0.0.1', resolve);
  });
  await serverReady;
  const address = server.address();
  const client = net.connect(address.port, '127.0.0.1');
  client.once('close', () => events.push('client-close'));
  client.end('hello');
  // mimic test: await client close, print received, then exit
  console.log('client-close, received:', 'hello');
  await new Promise(resolve => setTimeout(resolve, 1));
  console.log('other events:', events);
  client.destroy();
  server.close();
}

run();
JS

Repository: PerryTS/perry

Length of output: 766


Use a stable synchronization point for the server payload.

client.once("close") is the only wait before logging, but the accepted socket’s "data" callback runs asynchronously after being resumed. Track the accepted socket’s expected "end"/"close" or expected-data promise and await it before printing received.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test-parity/node-suite/net/server/pause-on-connect.ts` around lines 15 - 23,
Update the synchronization in the server test around the accepted-socket data
handling so it exposes a promise or equivalent completion signal for the
expected payload, then await that signal before logging received. Replace
reliance on client.once("close") alone with the accepted socket’s expected
end/close or data completion, while preserving the existing received payload
assertion/output.

Source: MCP tools

Comment thread test-parity/node-suite/net/socket/destroy-and-reset.ts
Comment on lines +3 to +10
for (const args of [[], [{}], [{ host: "127.0.0.1" }]] as any[][]) {
try {
const socket = (net.connect as any)(...args);
socket.on("error", () => {});
socket.destroy();
console.log(JSON.stringify(args), "OK");
} catch (error: any) {
console.log(JSON.stringify(args), error.name, error.code);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Tracked files:"
git ls-files 'test-parity/node-suite/net/validation/*.ts'

echo
echo "Connect missing:"
if [ -f test-parity/node-suite/net/validation/connect-missing-arguments.ts ]; then
  cat -n test-parity/node-suite/net/validation/connect-missing-arguments.ts
fi

echo
echo "Connect options:"
if [ -f test-parity/node-suite/net/validation/connect-options.ts ]; then
  cat -n test-parity/node-suite/net/validation/connect-options.ts
fi

echo
echo "Listen options:"
if [ -f test-parity/node-suite/net/validation/listen-options.ts ]; then
  cat -n test-parity/node-suite/net/validation/listen-options.ts
fi

echo
echo "Search for runner/runtime context:"
rg -n "test-parity|node-suite|validation|net.connect|createServer|listen" test-parity -S --glob '*.ts' --glob '*.js' --glob '*.json' | head -200

Repository: PerryTS/perry

Length of output: 27548


🌐 Web query:

Node.js net.connect emits error asynchronous connect options throws synchronously documentation

💡 Result:

In Node.js, the net.connect method (and its alias net.createConnection) functions asynchronously [1][2]. When a connection attempt encounters a problem, it does not throw an exception; instead, it emits an 'error' event on the returned net.Socket object [1][2]. Because the method is asynchronous, you must attach an 'error' event listener to the returned socket to handle connection failures [3][2]. However, the method can still throw errors synchronously if the provided arguments or options are invalid [4]. For example, passing invalid parameters (such as a negative port number) will cause Node.js to throw a synchronous exception (like a RangeError) immediately when the function is called [4]. In summary: 1. Synchronous errors: These occur immediately upon calling the function if the inputs or configuration options are invalid [4]. 2. Asynchronous errors: These occur during the actual network connection attempt and are communicated via the 'error' event on the returned socket [1][2]. To ensure robust error handling, you should use a try-catch block to wrap the net.connect call itself to catch synchronous configuration errors, and register an 'error' listener on the returned socket object to handle runtime connection errors [3].

Citations:


🌐 Web query:

Node.js net.listen emits error asynchronous listen close close callback promise documentation

💡 Result:

In Node.js, the net.Server.listen method is asynchronous but does not return a Promise [1][2]. Instead, it returns the net.Server instance itself, allowing for method chaining [1][2]. Key behavioral details for handling its lifecycle are as follows: 1. Asynchronous Execution and Callbacks: Because listen is asynchronous, it does not immediately indicate that the server is ready to accept connections [1]. When the server successfully starts listening, it emits the 'listening' event [1][2]. If a callback is passed as the final argument to listen, it is automatically registered as a listener for this 'listening' event [1][2]. 2. Error Handling: Errors occurring during the listen process (such as EADDRINUSE) are emitted via the 'error' event on the server instance [3]. Because the method does not return a promise, these errors cannot be caught using try/catch blocks or promise rejection handlers unless you explicitly wrap the method [4]. Developers must attach an 'error' event listener to the server instance to handle these cases [3]. 3. Closing the Server: The 'close' event is emitted when the server has effectively stopped accepting new connections and all existing connections have ended [3]. The server.close([callback]) method is used to initiate this shutdown [3]. Unlike socket events, if a server emits an 'error' event, it will not automatically emit a 'close' event unless server.close is manually invoked [3]. 4. Promise-based Alternatives: As of recent versions, Node.js has introduced an experimental net/promises API which provides a promise-based approach to listening [5]. This API is designed to resolve once the server is actively listening [5]. For versions prior to or outside of this experimental API, developers often manually wrap server.listen in a Promise if they require async/await syntax, typically by setting up 'listening' and 'error' event listeners within the Promise constructor [4].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

cat package.json 2>/dev/null | jq '.type // empty, .scripts // empty, .dependencies // empty, ."devDependencies" // empty' 2>/dev/null || true
echo
fd -a 'package.json|tsx|test|verify|parity|runner' . | sed 's#^\./##' | head -120
echo
rg -n "\"node-suite\"|node-suite|\\.ts$|validation|net::|test:|parity|tsx|perry" package.json test-parity -g 'package.json' -g '*.ts' -g '*.js' -g '*.json' -S | head -250

Repository: PerryTS/perry

Length of output: 7090


Synchronize validation results before reporting pass.

net.connect() and net.Server.listen() fail asynchronously via "error" after returning the socket/server, so these fixtures can log "OK" before any observed failure. Await one of "error"/"close" for sockets, and await "error"/"listening" before closing then waiting on the server’s cleanup before reporting each case.

📍 Affects 3 files
  • test-parity/node-suite/net/validation/connect-missing-arguments.ts#L3-L10 (this comment)
  • test-parity/node-suite/net/validation/connect-options.ts#L13-L20
  • test-parity/node-suite/net/validation/listen-options.ts#L9-L17
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test-parity/node-suite/net/validation/connect-missing-arguments.ts` around
lines 3 - 10, Synchronize asynchronous validation outcomes before logging
results: in test-parity/node-suite/net/validation/connect-missing-arguments.ts
(lines 3-10) and test-parity/node-suite/net/validation/connect-options.ts (lines
13-20), await either the socket's "error" or "close" event before reporting each
case; in test-parity/node-suite/net/validation/listen-options.ts (lines 9-17),
await "error" or "listening", close the server, then await its cleanup before
reporting. Update the affected net.connect/net.Server.listen fixture flows while
preserving their existing pass/error output.

Source: MCP tools

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test-parity/node-suite/net/EVIDENCE.md`:
- Line 108: Update the Bun 1.2.18 aggregate row in EVIDENCE.md to match the
verified PR results: 27 of 47 identical and 20 differences, while preserving the
other aggregate columns and table formatting.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 57b0c20d-40df-4776-af0b-2923334cf328

📥 Commits

Reviewing files that changed from the base of the PR and between 390cdb2 and d0cd753.

📒 Files selected for processing (4)
  • test-parity/node-suite/net/EVIDENCE.md
  • test-parity/node-suite/net/connection/data-roundtrip.ts
  • test-parity/node-suite/net/server/pause-on-connect.ts
  • test-parity/node-suite/net/socket/destroy-and-reset.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • test-parity/node-suite/net/connection/data-roundtrip.ts
  • test-parity/node-suite/net/socket/destroy-and-reset.ts

| -------------- | --------------------: | -----------------: | -------------: | -------: |
| Node.js 26.5.0 | 47 | 0 | 0 | 0 |
| Deno 2.9.3 | 42 | 5 | 0 | 0 |
| Bun 1.2.18 | 28 | 19 | 0 | 0 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Reconcile the Bun aggregate with the PR result.

The PR objective reports Bun at 27/47 identical with 20 differences, while this table reports 28/47 with 19 differences. Align the table with the verified fixture results and stated objective before merging.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test-parity/node-suite/net/EVIDENCE.md` at line 108, Update the Bun 1.2.18
aggregate row in EVIDENCE.md to match the verified PR results: 27 of 47
identical and 20 differences, while preserving the other aggregate columns and
table formatting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant