Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738import assert from 'node:assert/strict';import test from 'node:test';import {once} from 'node:events';import {spawnBridge} from '../src/bridge-process.mjs';
test('bridge transports queued input and drains both output streams before closing',async()=>{ const child=spawnBridge(process.execPath,['-e', "process.stdin.on('data',d=>process.stdout.write(d));process.stdin.on('end',()=>process.stderr.write('done'));"], {stdio:['pipe','pipe','pipe']}); const out=[],err=[]; child.stdout.on('data',chunk=>out.push(chunk)); child.stderr.on('data',chunk=>err.push(chunk)); const closed=once(child,'close'); const data=Buffer.alloc(1024*1024,65); child.stdin.end(data); assert.equal((await closed)[0],0); assert.deepEqual(Buffer.concat(out),data); assert.equal(Buffer.concat(err).toString(),'done');});
test('a process killed before it starts cannot remain running',async()=>{ const child=spawnBridge(process.execPath,['-e','setInterval(()=>{},1000)'],{stdio:['pipe','pipe','pipe']}); const closed=once(child,'close'); child.kill('SIGTERM'); const [code,signal]=await closed; assert.ok(signal==='SIGTERM'||code!==0); if(child.pid)assert.throws(()=>process.kill(child.pid,0));});
test('a missing executable reports an error and rejects pending writes',async()=>{ const child=spawnBridge('/does-not-exist/aesel-test',[],{stdio:['pipe','pipe','pipe']}); child.stdin.on('error',()=>{}); const failed=new Promise(resolve=>child.once('error',resolve)); const writeFailed=new Promise(resolve=>child.stdin.write('request',error=>resolve(error))); assert.equal((await failed).code,'ENOENT'); assert.ok(await writeFailed);});