cli-tester
Lean promisified wrapper to test NodeJS CLI scripts
Plays nicely with blue-tape
Installation
npm install --save-dev cli-tester
Usage
const test = require('blue-tape');
const tester = require('cli-tester');
test('Successful run', t =>
tester(require.resolve('./cli-that-is-ok'))
.then(({code, stdout, stderr}) => {
t.equal(code, 0, 'should exit with code 0');
t.equal(stdout, 'check expected output');
t.equal(stderr, '', 'should not have any errors');
}));
test('CLI throws', t =>
tester(require.resolve('./cli-that-throws'))
.then(({code, stdout, stderr}) => {
t.equal(code, 1, 'should exit with code 1');
t.equal(stdout, '', 'should not have any output');
t.ok(stderr.match('some error from CLI'));
}));
Node 5 and older
const tester = require('cli-tester/es5');
API
tester(cli, env, ...args)
Returns ES6 Promise, that is always successful
cli - string
Resolved path to JS CLI, ideally absolute path
tester(require.resolve('./cli'))
env (optional) - object
Object with ENV vars
tester(require.resolve('./cli'), {OMG: 'OMG!'})
...args (optional) - string
List of command line arguments
tester(require.resolve('./cli'), '--hello', 'world')
tester(require.resolve('./cli'), {OMG: 'OMG!'},'--hello', 'world')
Development and testing
Currently is being developed and tested with the latest stable Node 7
under OSX
and Windows
.
git clone git@github.com:nkbt/cli-tester.git
cd cli-tester
npm install
Tests
npm test
npm run cov
License
MIT