Merge branch 'main' into codex/fix-node.js-test-https-connect-address-family

This commit is contained in:
Jarred Sumner
2025-05-30 01:18:30 -07:00
committed by GitHub
3 changed files with 59 additions and 8 deletions

View File

@@ -29,16 +29,27 @@ jobs:
with:
bun-version: ${{ env.BUN_VERSION }}
- name: Get changed files and sync tests
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v44
with:
files: |
test/js/node/test/parallel/**/*.{js,mjs,ts}
test/js/node/test/sequential/**/*.{js,mjs,ts}
- name: Sync tests
if: steps.changed-files.outputs.any_changed == 'true'
shell: bash
run: |
# Get the list of changed files from the PR
git diff --name-only origin/main...HEAD | while read -r file; do
if [[ "$file" =~ ^test/js/node/test/(parallel|sequential)/(.+)\.(js|mjs|ts)$ ]]; then
test_name="${BASH_REMATCH[2]}"
echo "Syncing test: $test_name"
bun node:test:cp "$test_name"
fi
echo "Changed test files:"
echo "${{ steps.changed-files.outputs.all_changed_files }}"
# Process each changed test file
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
# Extract test name from file path
test_name=$(basename "$file" | sed 's/\.[^.]*$//')
echo "Syncing test: $test_name"
bun node:test:cp "$test_name"
done
- name: Commit changes

View File

@@ -1498,10 +1498,12 @@ function nodeToBun(item: string, index: number): string | number | null | NodeJS
}
if (isNodeStreamReadable(item)) {
if (Object.hasOwn(item, "fd") && typeof item.fd === "number") return item.fd;
if (item._handle && typeof item._handle.fd === "number") return item._handle.fd;
throw new Error(`TODO: stream.Readable stdio @ ${index}`);
}
if (isNodeStreamWritable(item)) {
if (Object.hasOwn(item, "fd") && typeof item.fd === "number") return item.fd;
if (item._handle && typeof item._handle.fd === "number") return item._handle.fd;
throw new Error(`TODO: stream.Writable stdio @ ${index}`);
}
const result = nodeToBunLookup[item];

View File

@@ -0,0 +1,38 @@
const common = require('../common');
const assert = require('assert');
const { fork, spawn } = require('child_process');
const net = require('net');
const tmpdir = require('../common/tmpdir');
// Run in a child process because the PIPE file descriptor stays open until
// Node.js completes, blocking the tmpdir and preventing cleanup.
if (process.argv[2] !== 'child') {
// Parent
tmpdir.refresh();
// Run test
const child = fork(__filename, ['child'], { stdio: 'inherit' });
child.on('exit', common.mustCall(function(code) {
assert.strictEqual(code, 0);
}));
return;
}
// Child
const server = net.createServer((conn) => {
spawn(process.execPath, ['-v'], {
stdio: ['ignore', conn, 'ignore']
}).on('close', common.mustCall(() => {
conn.end();
}));
}).listen(common.PIPE, () => {
const client = net.connect(common.PIPE, common.mustCall());
client.once('data', () => {
client.end(() => {
server.close();
});
});
});