C0 code coverage information

Generated on Mon Aug 13 01:18:54 -0400 2007 with rcov 0.8.0


Code reported as executed by Ruby looks like this...
and this: this line is also marked as covered.
Lines considered as run by rcov, but not reported by Ruby, look like this,
and this: these lines were inferred by rcov (using simple heuristics).
Finally, here's a line marked as not executed.
Name Total lines Lines of code Total coverage Code coverage
lib/spec/matchers/raise_error.rb 105 71
100.0% 
100.0% 
  1 module Spec
  2   module Matchers
  3     
  4     class RaiseError #:nodoc:
  5       def initialize(error_or_message=Exception, message=nil)
  6         if String === error_or_message
  7           @expected_error = Exception
  8           @expected_message = error_or_message
  9         else
 10           @expected_error = error_or_message
 11           @expected_message = message
 12         end
 13       end
 14       
 15       def matches?(proc)
 16         @raised_expected_error = false
 17         @raised_other = false
 18         begin
 19           proc.call
 20         rescue @expected_error => @actual_error
 21           if @expected_message.nil?
 22             @raised_expected_error = true
 23           else
 24             case @expected_message
 25             when Regexp
 26               if @expected_message =~ @actual_error.message
 27                 @raised_expected_error = true
 28               else
 29                 @raised_other = true
 30               end
 31             else
 32               if @expected_message == @actual_error.message
 33                 @raised_expected_error = true
 34               else
 35                 @raised_other = true
 36               end
 37             end
 38           end
 39         rescue => @actual_error
 40           @raised_other = true
 41         ensure
 42           return @raised_expected_error
 43         end
 44       end
 45       
 46       def failure_message
 47         return "expected #{expected_error}#{actual_error}" if @raised_other || !@raised_expected_error
 48       end
 49 
 50       def negative_failure_message
 51         "expected no #{expected_error}#{actual_error}"
 52       end
 53       
 54       def description
 55         "raise #{expected_error}"
 56       end
 57       
 58       private
 59         def expected_error
 60           case @expected_message
 61           when nil
 62             @expected_error
 63           when Regexp
 64             "#{@expected_error} with message matching #{@expected_message.inspect}"
 65           else
 66             "#{@expected_error} with #{@expected_message.inspect}"
 67           end
 68         end
 69 
 70         def actual_error
 71           @actual_error.nil? ? " but nothing was raised" : ", got #{@actual_error.inspect}"
 72         end
 73     end
 74     
 75     # :call-seq:
 76     #   should raise_error()
 77     #   should raise_error(NamedError)
 78     #   should raise_error(NamedError, String)
 79     #   should raise_error(NamedError, Regexp)
 80     #   should_not raise_error()
 81     #   should_not raise_error(NamedError)
 82     #   should_not raise_error(NamedError, String)
 83     #   should_not raise_error(NamedError, Regexp)
 84     #
 85     # With no args, matches if any error is raised.
 86     # With a named error, matches only if that specific error is raised.
 87     # With a named error and messsage specified as a String, matches only if both match.
 88     # With a named error and messsage specified as a Regexp, matches only if both match.
 89     #
 90     # == Examples
 91     #
 92     #   lambda { do_something_risky }.should raise_error
 93     #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError)
 94     #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, "that was too risky")
 95     #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, /oo ri/)
 96     #
 97     #   lambda { do_something_risky }.should_not raise_error
 98     #   lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError)
 99     #   lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, "that was too risky")
100     #   lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, /oo ri/)
101     def raise_error(error=Exception, message=nil)
102       Matchers::RaiseError.new(error, message)
103     end
104   end
105 end

Generated using the rcov code coverage analysis tool for Ruby version 0.8.0.

Valid XHTML 1.0! Valid CSS!