diff --git a/scripts/_smoke-utils.mjs b/scripts/_smoke-utils.mjs new file mode 100644 index 0000000..89df933 --- /dev/null +++ b/scripts/_smoke-utils.mjs @@ -0,0 +1,18 @@ +export function readStream(stream) { + return new Promise((resolve, reject) => { + let output = '' + stream.setEncoding('utf8') + stream.on('data', chunk => { + output += chunk + }) + stream.on('error', reject) + stream.on('end', () => resolve(output)) + }) +} + +export function waitForExit(child) { + return new Promise((resolve, reject) => { + child.on('error', reject) + child.on('exit', code => resolve(code ?? 1)) + }) +} diff --git a/scripts/package-smoke.mjs b/scripts/package-smoke.mjs index 68aeaf9..ed4a914 100644 --- a/scripts/package-smoke.mjs +++ b/scripts/package-smoke.mjs @@ -9,6 +9,7 @@ import { } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join, resolve } from 'node:path' +import { readStream, waitForExit } from './_smoke-utils.mjs' const packageBinName = 'konteks-cli' const manager = process.argv[2] @@ -172,23 +173,3 @@ async function run(command, args, options = { isolatedHome: true }) { output: `${stdout}\n${stderr}`.trim(), } } - -function readStream(stream) { - return new Promise((resolve, reject) => { - let output = '' - - stream.setEncoding('utf8') - stream.on('data', chunk => { - output += chunk - }) - stream.on('error', reject) - stream.on('end', () => resolve(output)) - }) -} - -function waitForExit(child) { - return new Promise((resolve, reject) => { - child.on('error', reject) - child.on('exit', code => resolve(code ?? 1)) - }) -} diff --git a/scripts/runtime-smoke.mjs b/scripts/runtime-smoke.mjs index 421766c..b3660a0 100644 --- a/scripts/runtime-smoke.mjs +++ b/scripts/runtime-smoke.mjs @@ -2,6 +2,7 @@ import { spawn } from 'node:child_process' import { mkdir, mkdtemp, rm } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' +import { readStream, waitForExit } from './_smoke-utils.mjs' const runtime = process.argv[2] const supportedRuntimes = new Set(['bun', 'node']) @@ -115,23 +116,3 @@ async function runCli(args) { await rm(homeDir, { force: true, recursive: true }) } } - -function readStream(stream) { - return new Promise((resolve, reject) => { - let output = '' - - stream.setEncoding('utf8') - stream.on('data', chunk => { - output += chunk - }) - stream.on('error', reject) - stream.on('end', () => resolve(output)) - }) -} - -function waitForExit(child) { - return new Promise((resolve, reject) => { - child.on('error', reject) - child.on('exit', code => resolve(code ?? 1)) - }) -}