douglasduteil...shelltest

Acceptance testing framework for CLI applications

Usage no npm install needed!

<script type="module">
  import douglasduteilShelltest from 'https://cdn.skypack.dev/douglasduteil...shelltest';
</script>

README

shelltest

Build Status npm version

JS acceptance testing framework for CLI applications.

Purpose

This framework is intended to serve as a friendly layer of abstraction for testing the stdout, stderr, and exit code of shell commands. It's like supertest, but for CLI apps.

Installation

npm install shelltest --save

Example

shelltest()
.cmd("/usr/bin/my_command")
.expect('stdout', /^regex.match/)
.end();

With Mocha

it('should run the command', function(done){
  shelltest()
  .cmd("/usr/bin/my_command")
  .expect('stdout', /^match/)
  .expect(0)
  .end(done);
});

API

.cmd(command)

Sets the command to be executed.

.cmd("/bin/my_command")

.expect(value, match)

Adds an assertion. All assertions are evaluated when .end(fn) is called.

.expect('stderr', /^regex.match/) //Asserts stderr
.expect('stdout', 'string match') //Asserts stdout
.expect(0)                        //Asserts exit code

.cwd(cwd)

Sets child_process cwd option.

.cwd('/var')

.env(env)

Sets child_process env option.

.env({"PATH": "/usr/cust:/usr/bin"})

.timeout(timeout)

Sets child_process timeout option.

.timeout(10)

.uid(uid)

Sets child_process uid option.

.uid(0)

.gid(gid)

Sets child_process gid option.

.gid(0)

.end([fn])

Executes command and evaluates assertions. end() will throw with no callback. Callback is fired with fn(err, stdout, stderr) :

  • err: null or the assert or process error
  • stdout: the output string
  • stderr: the error string
.end(callback_function)