Project

cli-test

0.0
No commit activity in last 3 years
No release in over 3 years
A rack-test inspired gem that provides helper methods to make testing command line scripts easier
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

cli-test

Ruby gem for easy testing of command line scripts

Installation

To install cli-test use the following command:

$ gem install cli-test

Examples

To use cli-test include CliTest in your test code and execute the desired command or script

require 'cli-test'

describe 'MyScript' do
    include CliTest

    it 'executes successfully' do
        execute_script('hello_world.rb')

        expect(last_execution).to be_successful
        expect(last_execution.stdout).to eq("Hello World\n")
        expect(last_execution.stderr).to be_empty
    end
end

The script can be executed with bundler with the use_bundler option

it 'uses bundler to execute' do
    execute_script('hello_world.rb', use_bundler: true)

    expect(last_execution).to be_successful
end

Arguments can be supplied with the args option. If an Array is passed in then each entry will be treated as a separate argument. Any arguments are converted to strings using to_s before being executed.

it 'can accept arguments' do
    execute_script('args.rb', args: [1,2,3])

    expect(last_execution.stdout).to eq("1,2,3\n")
end

Data can be passed into the STDIN of the command with the stdin_data option

it 'can pass in data to the STDIN' do
    execute_script('hello.rb', stdin_data: 'world')

    expect(last_execution.stdout).to eq("Hello world\n")
end

If an array is passed in then each entry is treated as a separate STDIN entry

it 'can pass in data to the STDIN' do
    execute_script('hello.rb', stdin_data: ['world', 'globe'])

    expect(last_execution.stdout).to eq("Hello world\nHello globe\n")
end

Direct commands can be executed using the execute command

it 'can execute commands' do
    execute('ruby --version')

    expect(last_execution).to be_successful
end

License

cli-test is licensed under the MIT License