44 lines
1.1 KiB
TypeScript

import { run } from './run'
import { getError } from '@rondo.dev/test-utils'
import { join } from 'path'
describe('run', () => {
async function read(readable: NodeJS.ReadableStream): Promise<string> {
return new Promise((resolve, reject) => {
readable.on('error', err => reject(err))
readable.on('readable', () => {
let data = ''
let chunk
while (null !== (chunk = readable.read())) {
data += chunk
}
resolve(data)
})
})
}
it('runs a process and returns stdin/stdout/contentType', async () => {
const result = await run({
cmd: process.argv[0],
args: [join(__dirname, 'testProcess.ts')],
contentType: 'text/plain',
})
expect(result.contentType).toBe('text/plain')
result.stdin.write('test')
const text = await read(result.stdout)
expect(text.trim()).toBe('test')
})
it('rejects when command is invalid', async () => {
const error = await getError(run({
cmd: 'invalid-command',
args: ['test'],
contentType: 'text/plain',
}))
expect(error.message).toMatch(/ENOENT/)
})
})