/aruba

CLI Steps for Cucumber

Primary LanguageRubyMIT LicenseMIT

aruba

Cucumber steps for driving out command line applications. The command line application can be anything, a compiled C program, a Java program, a Perl script - anything. There is also special support for various Ruby versions (see below).

Usage

gem install aruba

Then, just require the library in one of your ruby files under features/support

require 'aruba'

You now have a bunch of step definitions that you can use in your features. Look at aruba/cucumber.rb to see all the step definitions. Look at features/*.feature for examples (which are also testing Aruba itself).

Ruby/RVM love

Aruba has a couple of step definitions that make it easier to test your ruby command line program with specific versions of Ruby (regardless of what Ruby version you’re using to invoke Cucumber).

This is done with the follwoing step definitions:

/^I am using rvm "([^"]*)"$/
/^I am using rvm gemset "([^"]*)"$/

Then, if you use the step definition:

/^I run "(.*)"$/

.. with a command that starts with ruby, Aruba will actually invoke the Ruby version (and gemset if you specified) instead of just ruby, which would be the one on your PATH, which might not be the one you want. The same goes for commands starting with bundle, cucumber, gem, jeweler, rails, rake, rspec and spec - they can all be run with a particular ruby version that you specify.

See features/running_ruby.feature for examples.

Getting more output with tags.

Aruba has several tags you can use to see what command actually gets run (useful if you’re using the RVM steps), STDOUT or STDERR. You can put these tags on individual scenarios, or on a feature. The tags are:

  • @announce-cmd

  • @announce-stdout

  • @announce-stderr

  • @announce (does all of the above)

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Aslak Hellesøy and David Chelimsky. See LICENSE for details.