Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Command-line tool for testing command-line tools
JavaScript
branch: master
Failed to load latest commit information.
bin Initial commit.
conf Add init command.
examples Add example .yml test files.
lib Add fixture file support.
screenshots Add screenshots.
test-integration
test Add fixture file support.
.bob.json Initial commit.
.gitignore
.jshintrc Initial commit.
.npmignore Add screenshots.
.travis.yml Add 0.12 and iojs to CI run.
CHANGELOG.md
LICENSE Update (c) year.
README.md
avatar.jpg Grayscale avatar.
package.json Upgrade deps, change tilde with caret for newer npm consistency.

README.md

Avatar

Build Status Dependencies Status Coverage Status Published Version
npm Badge

Cmdt

Cmdt is a command-line tool for testing command-line tools.

This is handy for testing a command line execution result by checking its exit code and output. Commands will be executed in a temporary directory /tmp/cmdt--/ , this directory will be removed after all tests are completed unless -d/--debug flag is specified.

Installation

npm install -g cmdt

Usage

Run tests on specified test files:

cmdt run <file1>.yml <file2>.yml

Run all test files contained in a directory:

cmdt run <dir>

Debug exit code and output of failing tests, temporary directory will be logged and won't be removed at the end of the execution:

cmdt run --debug <file>.yml <dir>

Test File

Set test command, expected exit code and/or output regular expression in a .yml file:

- description: should display user name
  command: whoami
  exitcode: 0
  output: someuser

- command: time
  exitcode: 0
  output: real.+(\r\n?|\n)user.+
  stdout: real.+(\r\n?|\n)user.+

- command: unknowncommand
  exitcode: 1
  stderr: ^some error$

Parameters can also be specified, and used in test command:

- params:
    first_name: 'Theodore'
    last_name: 'Twombly'
    url: 'http://localhost'

- command: 'echo "Hey {first_name} {last_name}!"'
  exitcode: 0
  output: 'echo "Hey Theodore Twombly!"'

- command: 'wget {url}'
  exitcode: 0

Environment variables are available as _env parameter in test commands:

NAME="Theodore Twombly" cmdt run <file>.yml <dir>

- command: 'echo "Hello {_env.NAME}!"'
  exitcode: 0
  output: 'echo "Hello Theodore Twombly!"'

Test fixtures files and directories can be specified in fixtures array, which will then be copied to test execution directory:

# assuming path/to/data_dir/foobar.txt and path/to/another_dir/barfoo.txt exist
- fixtures:
  - path/to/data_dir
  - path/to/another_dir/barfoo.txt

- command: 'file foobar.txt'
  exitcode: 0

- command: 'file barfoo.txt'
  exitcode: 0

Test Fields

Name Description Mandatory
description description of the test No
command command line to be executed Yes
exitcode expected exit code No
output stdout + stderr output, regexp matching No
stdout stdout only output, regexp matching No
stderr stderr only output, regexp matching No

Screenshots

Success with directory arg screenshot Failure with file arg on debug mode screenshot

Colophon

Developer's Guide

Build reports:

Something went wrong with that request. Please try again.