Nanotechnology Promises Much
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    cmdtpublic

    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:

    install

    npm i cmdt

    Downloadsweekly downloads

    34

    version

    1.0.0

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar