mirror of
https://github.com/oven-sh/bun
synced 2026-02-13 04:18:58 +00:00
Merge branch 'main' into codex/fix-node.js-test-https-connect-address-family
This commit is contained in:
27
.github/workflows/codex-test-sync.yml
vendored
27
.github/workflows/codex-test-sync.yml
vendored
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
38
test/js/node/parallel/test-child-process-server-close.js
Normal file
38
test/js/node/parallel/test-child-process-server-close.js
Normal 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();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user