1. douglasduteil...shelltest
Acceptance testing framework for CLI applications
douglasduteil...shelltest
Package: douglasduteil...shelltest
Created by: jolshevski
Last modified: Wed, 15 Jun 2022 22:52:46 GMT
Version: 2.0.0
License: ISC
Downloads: 28
Repository: https://github.com/jolshevski/shelltest

Install

npm install douglasduteil...shelltest
yarn add douglasduteil...shelltest

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)

RELATED POST

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin