mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-31 07:23:06 +08:00
After socket.setEncoding(enc), socket.pipe(destination) wrote the raw bytes it read to the destination. It now writes the decoded strings, as Node's pipe writes each string chunk: the destination receives their UTF-8 bytes, and a partial character the decoder holds at EOF is written before the destination ends. tests/node-parallel/run.mjs runs each job's files with its own TEST_THREAD_ID, as Node's test runner does, so test/common/tmpdir gives concurrent files different directories instead of one shared .tmp.0.
Node test/parallel files
run.mjs builds files from a Node.js checkout's test/parallel with scriptc, runs each executable in that directory, and compares its exit status with Node's. It records a verdict per file: pass (the same exit code, or the same terminating signal), fail (a different exit code or signal), or refused (the build failed), with the first error line.
git clone --depth 1 --branch v24.22.0 https://github.com/nodejs/node /path/to/node
node tests/node-parallel/run.mjs --node /path/to/node --pattern '^test-(url-|whatwg-url-|querystring)'
Options:
--node: a Node.js checkout, or itstestdirectory. Use the version in.node-version.--pattern: a regular expression over file names intest/parallel.--common:minimal(the default) ornode.minimalcopies the selected files into<out>/tree/test/paralleland usescommon/index.cjs,common/wpt.cjsandcommon/tmpdir.cjsfrom this directory astest/common/index.js,test/common/wpt.jsandtest/common/tmpdir.js, with the checkout'stest/fixtures,test/common/fixtures.js,test/common/dns.jsandtest/common/internet.js. The minimal common has the helpers these files use (mustCall,mustNotCall,mustSucceed,skip,expectWarning,expectsError,invalidArgTypeHelper,spawnPromisified,hasIntl,isWindows,PIPE, ...) with Node's semantics, so a verdict measures the module under test rather than Node's fulltest/common.nodebuilds the files in place against Node's owntest/common.
--out: where executables and results go (defaultnode_modules/.cache/scriptc-node-parallel).--cli: the scriptc CLI entry (defaultpackages/cli/dist/main.js).--jobs: concurrent files (default 4).
Node runs each file with its // Flags: line. Each job runs its files with its own TEST_THREAD_ID, as Node's test runner does, so test/common/tmpdir gives concurrent files different directories. Results are written to <out>/results.json and <out>/results.md.
Before a lane relies on the minimal common, run its files under Node in <out>/tree/test/parallel: they should all pass there.