Tryouts v2.4 (2024-07-20)
Ruby tests that read like documentation.
A simple test framework for Ruby code that uses introspection to allow defining checks in comments.
Installation
One of:
- In your Gemfile:
gem 'tryouts'
- As a gem:
gem install tryouts
- From source:
$ git clone git://github.com/tryouts/tryouts.git
Usage
# Run all tests accessible from the current directory (e.g. ./try, ./tryouts)) $ try # Run a single test file $ try try/10_utils_try.rb # Command arguments $ try -h Usage: try [options] -V, --version Display the version -q, --quiet Run in quiet mode -v, --verbose Run in verbose mode -f, --fails Show only failing tryouts -D, --debug Run in debug mode -h, --help Display this help
Exit codes
When all tests pass, try exits with a 0. An exit code of 1 or more indicates the number of failing tests.
Writing tests
## A very simple test 1 + 1 #=> 2 ## The test description can spread ## across multiple lines. The same ## is true for test definitions. a = 'foo' b = 'bar' a + b #=> 'foobar' ## A test will pass when its return ## value equals the expectation. 'foo'.class #=> String ## The expectations are evaluated as well. 81 #=> 9 * 9 ## Here's an example of testing errors begin raise RuntimeError rescue RuntimeError :success end #=> :success
For real world examples, see Onetimesecret tryouts.
Test setup / cleanup
Put the setup code at the top of the file, and cleanup code at the bottom. Like this:
# This is called before all tests require 'gibbler' Gibbler.digest_type = Digest::SHA256 ## This is a single testcase :anything.gibbler #=> '8574309' # This will be called after all tests Gibbler.digest_type = Digest::SHA1
__
Thanks
- cloudhead
- mynyml
- Syntenic for the hackfest venue.
- AlexPeuchert for the screencast.
- Christian Michon for suggesting a better default output format.
This collision was brought to you by Montreal.rb.