tryouts / 0.4.1
| Short description: | Like basketball tryouts for your codes and command-line tools | |||||
|---|---|---|---|---|---|---|
| Category: | Library/Development | |||||
| Status: | beta | |||||
| Created: | 2009-06-07 15:39:44 GMT | |||||
| Last update: | 2009-06-07 15:39:44 GMT | |||||
| Owner: | delano (Projects of this owner) | |||||
| Homepage: | http://github.com/delano/tryouts/ | |||||
| Download: | http://github.com/delano/tryouts/tarball/latest | |||||
| License: | BSD | |||||
| Dependency: |
|
|||||
| Description: | Tryouts - v0.4 BETATryouts is a high-level testing library for your command-line applications and Ruby codes. TerminologyTryouts is a bit different than other testing libraries. Test definitions are organized in a similar way as Shoulda tests (although the keywords in the syntax are different).
Testing a command-line application (a CLI)Tryouts tests command-line applications by comparing expected output with the actual output. Let’s say we have an executable called mockout and we want to test the following commands:
$ bin/executable
$ bin/executable -f yaml
The tryout definition would look like this:
command :executable, "path/2/executable"
tryout "Common Usage" do
drill "No Command"
drill "YAML Output", :f, 'yaml'
end
And the expected output would be defined like this:
dream "No Command" do
output inline(%Q{
Date: 2009-02-16
Players: d-bam, alberta, birds, condor man
Owners: greg, rupaul, telly, prince kinko
})
end
dream "YAML Output" do
format :yaml
output ({
"Date" => "2009-02-16",
"Players" => ["d-bam", "alberta", "birds", "condor man"],
"Owners" => ["greg", "rupaul", "telly", "prince kinko"]
})
end
Testing Ruby codes (an API)Tryouts employs the same approach for testing Ruby codes. The return value of the drill block is compared to the expectation defined by the dream. Here is an example of including dreams inside the tryout definition.
library :caesars, LIBRARY_PATH
tryout "Common Usage" do
dream "Some Maths", 3
drill "Some Maths" do
12 / 4
end
dream "A Block", Proc, :class # Test the class type instead of the value
drill "A Block" do
Proc.new do
:anything
end
end
end
ALPHA NoticeThis library is very new (est. 2009-05-19) and has not been vetted by the scrutiny of time. In particular you can expect:
3 Ways to define tryoutsThere are three ways to define an instance of this class:
On ThreadsTryouts does some funky stuff to make it simple to write tests. This "funky stuff" means that this library is *not thread-safe at definition-time*. However, once all tryouts files are parsed (or in OO-syntax, once all objects are created), this class should be *thread-safe at drill-time*. More Info
Thanks
Credits
Related ProjectsLicenseSee: LICENSE.txt |
|||||
| Versions: | [0.8.0 (2009-07-01)] [0.7.4 (2009-07-01)] [0.4.1 (2009-06-07)] | |||||