README.markdown in stub_shell-0.0.2 vs README.markdown in stub_shell-0.0.3
- old
+ new
@@ -1,7 +1,12 @@
# StubShell [![Build Status](https://secure.travis-ci.org/stackbuilders/stub_shell.png)](http://travis-ci.org/stackbuilders/stub_shell)
+StubShell helps you to test your libraries that interact with the system through the Kernel backquote and system methods.
+It does this by providing a DSL to describe the messages that you expect the shell to receive in the order that you expect
+to receive them. StubShell can be used to stub simple interactions, or ones that cause the system that you're working with
+to change state.
+
## Installation
gem install stub_shell
## Configuration
@@ -12,16 +17,74 @@
config.include StubShell::TestHelpers
end
## Usage
+StubShell can handle simple cases where you want to stub a system call in Ruby or more complex interactions
+where commands may change the state and return values of subsequent commands.
+
+### Simple Usage
+
+You use StubShell simply by describing the commands that you want stubbed out, along with the value that they
+should return in STDOUT and STDERR, as well as their exit status.
+
it ... do
stub_shell do
command "ls /tmp/foobar" do
stdout "hey there"
+ stderr "some error"
+ exitstatus 2
end
end
end
+
+By default, StubShell assumes that STDOUT and STDERR are nil, and that the exit status is 0 (success), so you
+can leave these options out if you want.
+
+### Stubbing Complex Shell Interactions
+
+You can stub more complex interactions with the shell, including cases where commands that you execute will
+change the output of subsequent commands.
+
+ stub_shell do
+ command 'ls /tmp/foobar' do
+ stdout 'yes, foobar exists'
+ end
+
+ command "rm /tmp/foobar" do
+ stub_shell do
+ command 'ls /tmp/foobar' do
+ stderr 'the file no longer exists'
+ exitstatus 2
+ end
+ end
+ end
+ end
+
+StubShell starts looking for defined commands at the current level of the execution hierarchy, so if you
+invoke the command to remove /tmp/foobar above, it will always look at the stub_shell context nested below
+that command for matches to subsequent commands. If no matching commands are found at that level, StubShell
+searches recursively upwards in the tree for matches until it either finds one or it runs out of options and
+raises an error indicating that no matches were found.
+
+### Regular Expression Matching of Commands
+
+You can use regular expressions to match commands in StubShell.
+
+ stub_shell do
+ command /ls \/tmp.*foo/' do
+ stdout 'yes, your directory exists'
+ end
+ end
+
+### Additional Documentation
+
+We suggest that you read the acceptance tests included with this library to help understand the
+way that it works.
+
+## Authors
+
+Justin Leitgeb (@jsl) and @itsmeduncan.
## Contribute
1. [Fork](http://help.github.com/forking/) stub_shell
2. Create a topic branch - `git checkout -b my_branch`