smartshell/test/test.ts
2017-09-09 13:20:24 +02:00

52 lines
1.5 KiB
TypeScript

import { expect, tap } from 'tapbundle'
import * as smartshell from '../ts/index'
import * as smartq from 'smartq'
let testSmartshell: smartshell.Smartshell
tap.test('smartshell should run async', async () => {
let execResult = await smartshell.exec('npm -v')
expect(execResult.stdout).to.match(/[0-9\.]*/)
})
tap.test('smartshell should run async and silent', async () => {
let execResult = await smartshell.execSilent('npm -v')
expect(execResult.stdout).to.match(/[0-9\.]*/)
})
tap.test('smartshell should stream a shell execution', async () => {
let done = smartq.defer()
let execStreamingResponse = smartshell.execStreaming('npm -v')
execStreamingResponse.childProcess.stdout.on('data', data => {
done.resolve(data)
})
let data = await done.promise
expect(data).to.match(/[0-9\.]*/)
await execStreamingResponse.finalPromise
})
tap.test('it should execute and wait for a line in the output', async () => {
await smartshell.execAndWaitForLine('echo "5.0.4"', /5.0.4/)
})
// Smartshell class
tap.test('smartshell should create a Smartshell instance', async () => {
testSmartshell = new smartshell.Smartshell({
executor: 'bash',
sourceFilePaths: []
})
expect(testSmartshell).to.be.instanceof(smartshell.Smartshell)
})
tap.test('smartshell should run async', async () => {
return testSmartshell.execSilent('sleep 1 && npm -v').then(async (execResult) => {
console.log(execResult.stdout)
})
})
tap.start({
throwOnError: true
})