man.html in difects-3.0.0 vs man.html in difects-3.0.1
- old
+ new
@@ -81,11 +81,11 @@
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>difects(1)</li>
- <li class='tc'>Version 3.0.0</li>
+ <li class='tc'>Version 3.0.1</li>
<li class='tr'>difects(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
@@ -152,11 +152,11 @@
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Evaluates the given <var>FILE</var>s and also files matching the given <var>GLOB</var> patterns.</p>
<p>The exit status of this command reflects the number of errors and assertion
-failures up to a maximum of 255 (to avoid 8-bit unsigned integer overflow).</p>
+failures (up to a maximum of 255 to avoid 8-bit unsigned integer overflow).</p>
<h2 id="OPTIONS">OPTIONS</h2>
<dl>
<dt><code>-d</code>, <code>--debug</code></dt><dd><p>Launch interactive debugger upon assertion failures.</p></dd>
@@ -181,40 +181,37 @@
</code></pre>
<h3 id="Hooks">Hooks</h3>
<p>A <strong>hook</strong> is a scheduled point of entry into the test execution process. The
-<code>D()</code> method provides several of them:</p>
+following <strong>hook methods</strong> allow you to register a block of code to execute
+when a hook occurs:</p>
-<pre><code>D "outer test" do
- D .< { puts "before each nested test" }
- D .> { puts "after each nested test" }
- D .<< { puts "before all nested tests" }
- D .>> { puts "after all nested tests" }
+<dl>
+<dt class="flush"><code>D.<()</code></dt><dd><p>Calls the given block <em>before each</em> child test.</p></dd>
+<dt class="flush"><code>D.>()</code></dt><dd><p>Calls the given block <em>after each</em> child test.</p></dd>
+<dt class="flush"><code>D.<<()</code></dt><dd><p>Calls the given block <em>before all</em> child tests.</p></dd>
+<dt class="flush"><code>D.>>()</code></dt><dd><p>Calls the given block <em>after all</em> child tests.</p></dd>
+</dl>
- D "inner test" do
- # assertions and logic here
- end
-end
-</code></pre>
-<p>A hook method can be called multiple times. Every call to a hook method
-schedules additional logic to be executed during the hook:</p>
+<p>A hook method can be called multiple times. Each additional call schedules
+more logic to be executed during the hook:</p>
<pre><code>D .< { puts "do something" }
D .< { puts "do something more!" }
</code></pre>
<h3 id="Insulation">Insulation</h3>
-<p>The <code>D!()</code> method defines a new test that is explicitly insulated from
-the tests that contain it and also from the top-level Ruby environment.
+<p>The <code>D!()</code> method defines a new test that is explicitly insulated from the
+tests that contain it and also from the top-level Ruby environment.
Root-level calls to the <code>D()</code> method are insulated by default.</p>
<p>Inside an insulated test, you are free to mix-in (using the <code>extend</code> keyword,
-not the <code>include</code> keyword) any modules your test logic needs and also define
-your own constants, methods, and classes.</p>
+not the <code>include</code> keyword) any modules your test logic needs. You can also
+define your own constants, methods, and classes.</p>
<h3 id="Sharing">Sharing</h3>
<dl>
<dt class="flush"><code>S()</code></dt><dd><p>Mechanism for sharing code. When called with a block, it shares the given
@@ -230,11 +227,11 @@
<h3 id="Information">Information</h3>
<dl>
<dt class="flush"><code>I()</code></dt><dd><p>Mechanism for inserting arbitrary Ruby objects into the test execution
-report. You can think of this method as a way to <em>inform</em> yourself.</p></dd>
+report. You can think of this method as being a way to <em>inform</em> someone.</p></dd>
<dt class="flush"><code>I!()</code></dt><dd><p>Starts the interactive debugger at the location where it is called.</p></dd>
</dl>
<h3 id="Execution">Execution</h3>
@@ -242,11 +239,10 @@
<p>Tests are executed in depth-first search (DFS) order.</p>
<p>You can configure the test execution process using:</p>
<pre><code>DIFECTS.debug = your_choice_here
-DIFECTS.quiet = your_choice_here
</code></pre>
<p>You can execute all tests defined thus far using:</p>
<pre><code>DIFECTS.start
@@ -359,15 +355,15 @@
</code></pre>
<p>Failure reports are composed of the following sections:</p>
<dl>
-<dt class="flush">fail</dt><dd><p>Description of the assertion failure.</p></dd>
-<dt class="flush">call</dt><dd><p>Stack trace leading to the point of failure.</p></dd>
-<dt class="flush">code</dt><dd><p>Source code surrounding the point of failure.</p></dd>
-<dt class="flush">bind</dt><dd><p>Location where local variables (in the "vars" section) were extracted.</p></dd>
-<dt class="flush">vars</dt><dd><p>Local variables visible at the point of failure.</p></dd>
+<dt class="flush"><code>:fail</code></dt><dd><p>Description of the assertion failure.</p></dd>
+<dt class="flush"><code>:call</code></dt><dd><p>Stack trace leading to the point of failure.</p></dd>
+<dt class="flush"><code>:code</code></dt><dd><p>Source code surrounding the point of failure.</p></dd>
+<dt class="flush"><code>:bind</code></dt><dd><p>Location where local variables (in the "vars" section) were extracted.</p></dd>
+<dt class="flush"><code>:vars</code></dt><dd><p>Local variables visible at the point of failure.</p></dd>
</dl>
<p>After the failure is reported, you will be placed into a debugger to
investigate the failure if the <code>DIFECTS.debug</code> option is enabled.</p>
@@ -394,114 +390,114 @@
<p>This library emulates <a href="http://rspec.info">RSpec</a> by adding the following methods to the
<code>DIFECTS</code> module.</p>
<dl>
-<dt><code>after</code>(<em>what</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/spec.rb#L21">lib/difects/spec.rb:21</a></p></dd>
-<dt><code>before</code>(<em>what</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/spec.rb#L10">lib/difects/spec.rb:10</a></p></dd>
-<dt><code>context</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>describe</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>it</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
+<dt><code>after</code>(<em>what</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/spec.rb#L21">lib/difects/spec.rb:21</a>.</p></dd>
+<dt><code>before</code>(<em>what</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/spec.rb#L10">lib/difects/spec.rb:10</a>.</p></dd>
+<dt><code>context</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>describe</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>it</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
</dl>
<h3 id="difects-unit">difects/unit</h3>
<p>This library emulates <a href="http://ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html">Test::Unit</a> by adding the following methods to the
<code>DIFECTS</code> module.</p>
<dl>
-<dt><code>assert</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>assert_empty</code>(<em>collection</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L26">lib/difects/unit.rb:26</a></p></dd>
-<dt><code>assert_equal</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L31">lib/difects/unit.rb:31</a></p></dd>
-<dt><code>assert_in_delta</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a></p></dd>
-<dt><code>assert_in_epsilon</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a></p></dd>
-<dt><code>assert_include</code>(<em>item</em>, <em>collection</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L47">lib/difects/unit.rb:47</a></p></dd>
-<dt><code>assert_instance_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L52">lib/difects/unit.rb:52</a></p></dd>
-<dt><code>assert_kind_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L57">lib/difects/unit.rb:57</a></p></dd>
-<dt><code>assert_match</code>(<em>pattern</em>, <em>string</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L67">lib/difects/unit.rb:67</a></p></dd>
-<dt><code>assert_nil</code>(<em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L62">lib/difects/unit.rb:62</a></p></dd>
-<dt><code>assert_not</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>assert_not_empty</code>(<em>collection</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L26">lib/difects/unit.rb:26</a></p></dd>
-<dt><code>assert_not_equal</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L31">lib/difects/unit.rb:31</a></p></dd>
-<dt><code>assert_not_in_delta</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a></p></dd>
-<dt><code>assert_not_in_epsilon</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a></p></dd>
-<dt><code>assert_not_include</code>(<em>item</em>, <em>collection</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L47">lib/difects/unit.rb:47</a></p></dd>
-<dt><code>assert_not_instance_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L52">lib/difects/unit.rb:52</a></p></dd>
-<dt><code>assert_not_kind_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L57">lib/difects/unit.rb:57</a></p></dd>
-<dt><code>assert_not_match</code>(<em>pattern</em>, <em>string</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L67">lib/difects/unit.rb:67</a></p></dd>
-<dt><code>assert_not_nil</code>(<em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L62">lib/difects/unit.rb:62</a></p></dd>
-<dt><code>assert_not_operator</code>(<em>object</em>, <em>operator</em>, <em>operand</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L77">lib/difects/unit.rb:77</a></p></dd>
-<dt><code>assert_not_raise</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L82">lib/difects/unit.rb:82</a></p></dd>
-<dt><code>assert_not_respond_to</code>(<em>object</em>, <em>query</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L86">lib/difects/unit.rb:86</a></p></dd>
-<dt><code>assert_not_same</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L72">lib/difects/unit.rb:72</a></p></dd>
-<dt><code>assert_not_send</code>(<em>object</em>, <em>query</em>, *<em>args</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L95">lib/difects/unit.rb:95</a></p></dd>
-<dt><code>assert_not_throw</code>(<em>symbol</em>, <em>message</em>=nil, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L91">lib/difects/unit.rb:91</a></p></dd>
-<dt><code>assert_operator</code>(<em>object</em>, <em>operator</em>, <em>operand</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L77">lib/difects/unit.rb:77</a></p></dd>
-<dt><code>assert_raise</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L82">lib/difects/unit.rb:82</a></p></dd>
-<dt><code>assert_respond_to</code>(<em>object</em>, <em>query</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L86">lib/difects/unit.rb:86</a></p></dd>
-<dt><code>assert_same</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L72">lib/difects/unit.rb:72</a></p></dd>
-<dt><code>assert_send</code>(<em>object</em>, <em>query</em>, *<em>args</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L95">lib/difects/unit.rb:95</a></p></dd>
-<dt><code>assert_throw</code>(<em>symbol</em>, <em>message</em>=nil, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L91">lib/difects/unit.rb:91</a></p></dd>
-<dt><code>setup</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>setup!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>teardown</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>teardown!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>test</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
+<dt><code>assert</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>assert_empty</code>(<em>collection</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L26">lib/difects/unit.rb:26</a>.</p></dd>
+<dt><code>assert_equal</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L31">lib/difects/unit.rb:31</a>.</p></dd>
+<dt><code>assert_in_delta</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a>.</p></dd>
+<dt><code>assert_in_epsilon</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a>.</p></dd>
+<dt><code>assert_include</code>(<em>item</em>, <em>collection</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L47">lib/difects/unit.rb:47</a>.</p></dd>
+<dt><code>assert_instance_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L52">lib/difects/unit.rb:52</a>.</p></dd>
+<dt><code>assert_kind_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L57">lib/difects/unit.rb:57</a>.</p></dd>
+<dt><code>assert_match</code>(<em>pattern</em>, <em>string</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L67">lib/difects/unit.rb:67</a>.</p></dd>
+<dt><code>assert_nil</code>(<em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L62">lib/difects/unit.rb:62</a>.</p></dd>
+<dt><code>assert_not</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>assert_not_empty</code>(<em>collection</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L26">lib/difects/unit.rb:26</a>.</p></dd>
+<dt><code>assert_not_equal</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L31">lib/difects/unit.rb:31</a>.</p></dd>
+<dt><code>assert_not_in_delta</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a>.</p></dd>
+<dt><code>assert_not_in_epsilon</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a>.</p></dd>
+<dt><code>assert_not_include</code>(<em>item</em>, <em>collection</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L47">lib/difects/unit.rb:47</a>.</p></dd>
+<dt><code>assert_not_instance_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L52">lib/difects/unit.rb:52</a>.</p></dd>
+<dt><code>assert_not_kind_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L57">lib/difects/unit.rb:57</a>.</p></dd>
+<dt><code>assert_not_match</code>(<em>pattern</em>, <em>string</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L67">lib/difects/unit.rb:67</a>.</p></dd>
+<dt><code>assert_not_nil</code>(<em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L62">lib/difects/unit.rb:62</a>.</p></dd>
+<dt><code>assert_not_operator</code>(<em>object</em>, <em>operator</em>, <em>operand</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L77">lib/difects/unit.rb:77</a>.</p></dd>
+<dt><code>assert_not_raise</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L82">lib/difects/unit.rb:82</a>.</p></dd>
+<dt><code>assert_not_respond_to</code>(<em>object</em>, <em>query</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L86">lib/difects/unit.rb:86</a>.</p></dd>
+<dt><code>assert_not_same</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L72">lib/difects/unit.rb:72</a>.</p></dd>
+<dt><code>assert_not_send</code>(<em>object</em>, <em>query</em>, *<em>args</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L95">lib/difects/unit.rb:95</a>.</p></dd>
+<dt><code>assert_not_throw</code>(<em>symbol</em>, <em>message</em>=nil, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L91">lib/difects/unit.rb:91</a>.</p></dd>
+<dt><code>assert_operator</code>(<em>object</em>, <em>operator</em>, <em>operand</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L77">lib/difects/unit.rb:77</a>.</p></dd>
+<dt><code>assert_raise</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L82">lib/difects/unit.rb:82</a>.</p></dd>
+<dt><code>assert_respond_to</code>(<em>object</em>, <em>query</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L86">lib/difects/unit.rb:86</a>.</p></dd>
+<dt><code>assert_same</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L72">lib/difects/unit.rb:72</a>.</p></dd>
+<dt><code>assert_send</code>(<em>object</em>, <em>query</em>, *<em>args</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L95">lib/difects/unit.rb:95</a>.</p></dd>
+<dt><code>assert_throw</code>(<em>symbol</em>, <em>message</em>=nil, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L91">lib/difects/unit.rb:91</a>.</p></dd>
+<dt><code>setup</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>setup!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>teardown</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>teardown!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>test</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
</dl>
<h3 id="difects-mini">difects/mini</h3>
<p>This library emulates <a href="http://blog.zenspider.com/minitest/">Minitest</a> by adding the following methods to the
<code>DIFECTS</code> module.</p>
<dl>
-<dt><code>refute</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>refute_empty</code>(<em>collection</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L26">lib/difects/unit.rb:26</a></p></dd>
-<dt><code>refute_equal</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L31">lib/difects/unit.rb:31</a></p></dd>
-<dt><code>refute_in_delta</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a></p></dd>
-<dt><code>refute_in_epsilon</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a></p></dd>
-<dt><code>refute_include</code>(<em>item</em>, <em>collection</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L47">lib/difects/unit.rb:47</a></p></dd>
-<dt><code>refute_instance_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L52">lib/difects/unit.rb:52</a></p></dd>
-<dt><code>refute_kind_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L57">lib/difects/unit.rb:57</a></p></dd>
-<dt><code>refute_match</code>(<em>pattern</em>, <em>string</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L67">lib/difects/unit.rb:67</a></p></dd>
-<dt><code>refute_nil</code>(<em>object</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L62">lib/difects/unit.rb:62</a></p></dd>
-<dt><code>refute_operator</code>(<em>object</em>, <em>operator</em>, <em>operand</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L77">lib/difects/unit.rb:77</a></p></dd>
-<dt><code>refute_raise</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L82">lib/difects/unit.rb:82</a></p></dd>
-<dt><code>refute_respond_to</code>(<em>object</em>, <em>query</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L86">lib/difects/unit.rb:86</a></p></dd>
-<dt><code>refute_same</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L72">lib/difects/unit.rb:72</a></p></dd>
-<dt><code>refute_send</code>(<em>object</em>, <em>query</em>, *<em>args</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L95">lib/difects/unit.rb:95</a></p></dd>
-<dt><code>refute_throw</code>(<em>symbol</em>, <em>message</em>=nil, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L91">lib/difects/unit.rb:91</a></p></dd>
+<dt><code>refute</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>refute_empty</code>(<em>collection</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L26">lib/difects/unit.rb:26</a>.</p></dd>
+<dt><code>refute_equal</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L31">lib/difects/unit.rb:31</a>.</p></dd>
+<dt><code>refute_in_delta</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a>.</p></dd>
+<dt><code>refute_in_epsilon</code>(<em>expected</em>, <em>actual</em>, <em>delta</em>=nil, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L36">lib/difects/unit.rb:36</a>.</p></dd>
+<dt><code>refute_include</code>(<em>item</em>, <em>collection</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L47">lib/difects/unit.rb:47</a>.</p></dd>
+<dt><code>refute_instance_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L52">lib/difects/unit.rb:52</a>.</p></dd>
+<dt><code>refute_kind_of</code>(<em>klass</em>, <em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L57">lib/difects/unit.rb:57</a>.</p></dd>
+<dt><code>refute_match</code>(<em>pattern</em>, <em>string</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L67">lib/difects/unit.rb:67</a>.</p></dd>
+<dt><code>refute_nil</code>(<em>object</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L62">lib/difects/unit.rb:62</a>.</p></dd>
+<dt><code>refute_operator</code>(<em>object</em>, <em>operator</em>, <em>operand</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L77">lib/difects/unit.rb:77</a>.</p></dd>
+<dt><code>refute_raise</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L82">lib/difects/unit.rb:82</a>.</p></dd>
+<dt><code>refute_respond_to</code>(<em>object</em>, <em>query</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L86">lib/difects/unit.rb:86</a>.</p></dd>
+<dt><code>refute_same</code>(<em>expected</em>, <em>actual</em>, <em>message</em>=nil)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L72">lib/difects/unit.rb:72</a>.</p></dd>
+<dt><code>refute_send</code>(<em>object</em>, <em>query</em>, *<em>args</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L95">lib/difects/unit.rb:95</a>.</p></dd>
+<dt><code>refute_throw</code>(<em>symbol</em>, <em>message</em>=nil, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects/unit.rb#L91">lib/difects/unit.rb:91</a>.</p></dd>
</dl>
<h3 id="difects-long">difects/long</h3>
<p>This library emulates Readability by adding the following methods to the
<code>DIFECTS</code> module.</p>
<dl>
-<dt><code>Catch</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Catch!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Catch?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Describe</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Describe!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Error</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Error!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Error?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>False</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>False!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>False?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Inform</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Inform!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Share</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Share!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>Share?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>True</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>True!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
-<dt><code>True?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>Defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1126">lib/difects.rb:1126</a></p></dd>
+<dt><code>Catch</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Catch!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Catch?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Describe</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Describe!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Error</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Error!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Error?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>False</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>False!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>False?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Inform</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Inform!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Share</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Share!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>Share?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>True</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>True!</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
+<dt><code>True?</code>(*<em>args</em>, &<em>block</em>)</dt><dd><p>This method is defined at <a href="http://github.com/sunaku/difects/tree/master/lib/difects.rb#L1124">lib/difects.rb:1124</a>.</p></dd>
</dl>
<h2 id="EXAMPLES">EXAMPLES</h2>
@@ -554,24 +550,83 @@
<pre><code>---
- Wizard:
- Preparing spell to defeat mortal foes...
- Magician:
- Preparing rabbits to pull from hat...
- - 14
+ - 13
- Calculator:
- 3.141592653589793
- - 1
- 2
- 3
- - a
- b
- c
- foo: bar!
---
-time: 0.002947349
+time: 0.00290479
</code></pre>
+<h3 id="Using-hooks-to-perform-before-and-after-actions">Using hooks to perform before and after actions</h3>
+
+<p>When the following test is run:</p>
+
+<pre><code>require 'difects/auto'
+
+D "outer test" do
+ D .< { I "(outer hook) before each" }
+ D .> { I "(outer hook) after each" }
+ D .<< { I "(outer hook) before all" }
+ D .>> { I "(outer hook) after all" }
+
+ D "inner test 1" do
+ D .< { I "(inner hook) before each" }
+ D .> { I "(inner hook) after each" }
+ D .<< { I "(inner hook) before all" }
+ D .>> { I "(inner hook) after all" }
+
+ D "inner test 1.1" do
+ I "hello world"
+ end
+ end
+
+ D "inner test 2" do
+ I "goodbye world"
+ end
+
+ D .< { I "(outer hook) before each, again" }
+ D .> { I "(outer hook) after each, again" }
+end
+</code></pre>
+
+<p>DIFECTS will output the following:</p>
+
+<pre><code>---
+- outer test:
+ - (outer hook) before all
+ - (outer hook) before each
+ - (outer hook) before each, again
+ - inner test 1:
+ - (inner hook) before all
+ - (inner hook) before each
+ - inner test 1.1:
+ - hello world
+ - (inner hook) after each
+ - (inner hook) after all
+ - (outer hook) after each
+ - (outer hook) after each, again
+ - (outer hook) before each
+ - (outer hook) before each, again
+ - inner test 2:
+ - goodbye world
+ - (outer hook) after each
+ - (outer hook) after each, again
+ - (outer hook) after all
+---
+time: 0.007519821
+</code></pre>
+
<h3 id="Sharing-code-between-tests">Sharing code between tests</h3>
<p>When the following test is run:</p>
<pre><code>require 'difects/auto'
@@ -615,11 +670,11 @@
- Strength is power!
- King:
- Power is power!
---
pass: 3
-time: 0.007106484
+time: 0.007250196
</code></pre>
<h3 id="Insulated-and-uninsulated-tests">Insulated and uninsulated tests</h3>
<p>When the following test is run:</p>
@@ -656,11 +711,11 @@
- a root-level test:
- an inner, non-insulated test:
- an inner, insulated test:
---
pass: 10
-time: 0.007744531
+time: 0.00794053
</code></pre>
<h2 id="HACKING">HACKING</h2>
<p>This section is meant for people who want to develop DIFECTS's source code.</p>
@@ -744,10 +799,33 @@
<h2 id="VERSIONS">VERSIONS</h2>
<p>This section contains release notes of current and past releases.</p>
+<h3 id="Version-3-0-1-2010-07-25-">Version 3.0.1 (2010-07-25)</h3>
+
+<p>This release fixes a bug in Ruby 1.8, refactors the code, and better documents
+test hooks in the manual.</p>
+
+<p>Bug fixes:</p>
+
+<ul>
+<li>Ruby 1.8 does not pass value to <code>Hash#delete_if()</code>. All failure details
+were being omitted, instead of just the unavailable ones, as a result.</li>
+</ul>
+
+
+<p>Housekeeping:</p>
+
+<ul>
+<li><p>Refactor variable values hash calculation and pretty printing logic.</p></li>
+<li><p>Put FailureDetails pretty-printing modules into their own namespace.</p></li>
+<li><p>Raise error if closest insulated test cannot be not found.</p></li>
+<li><p>Describe all test hooks and add example to manual, plus small revisions.</p></li>
+</ul>
+
+
<h3 id="Version-3-0-0-2010-07-24-">Version 3.0.0 (2010-07-24)</h3>
<p>This release renames the project to "DIFECTS", reduces cruft, improves the
presentation and debuggability of assertion failures, and revises the manual.</p>
@@ -1157,10 +1235,10 @@
<h2 id="LICENSE">LICENSE</h2>
<p>(the ISC license)</p>
-<p>Copyright 2009 Suraj N. Kurapati <a href="mailto:sunaku@gmail.com" data-bare-link="true">sunaku@gmail.com</a></p>
+<p>Copyright 2009 Suraj N. Kurapati <a href="mailto:sunaku@gmail.com" data-bare-link="true">sunaku@gmail.com</a></p>
<p>Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.</p>