cli-tester

2.0.0 • Public • Published

cli-tester npm

Discord

CircleCI AppVeyor Travis Coverage Dependencies Dev Dependencies

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

// With omitted ENV
tester(require.resolve('./cli'), '--hello', 'world')
 
// With ENV
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

# to run tests 
npm test
 
# to generate test coverage (./coverage) 
npm run cov

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i cli-tester

Weekly Downloads

7

Version

2.0.0

License

MIT

Last publish

Collaborators

  • nkbt