Skip to content
This repository
  • 20 commits
  • 20 files changed
  • 1 comment
  • 3 contributors
Aug 31, 2010
Justin Ko equality.feature
- Closes #15.
7b52164
David Chelimsky beef up equality matchers feature 7cdb347
Sep 04, 2010
David Chelimsky delegate be(val) to equal(val) deb38c9
David Chelimsky un-pend pending example
- was failing on ruby-1.9.2-preview, but passes now on ruby-1.9.2 final
8f740ac
Myron Marston Remove dependency on jeweler.
- Allows us to have an always-up-to-date gemspec.
- Use bundler's build/install/release rake tasks rather than jeweler's.
- One less development dependency.
- No need for a separate VERSION file.
15060b8
David Chelimsky add ruby-debug to Gemfile 04eeba1
David Chelimsky Make eq and eql matchers diffable and clean up when to/not diff e7303e9
David Chelimsky Diff when comparing a multiline string to a regexp
- Closes #8.
76434fa
Sep 08, 2010
David Chelimsky remove ruby-debug from Gemfile for 1.9.1 b43f107
David Chelimsky remove unnecessary requirement from feature
- output of paths changed subtly and caused this feature to fail
  unnecessarily. No need to bind this feature to that part of the
  output.
ed7e32a
Sep 09, 2010
David Chelimsky should[_not] change now handles boolean values correctly
- Closes #16.
ecd24f5
David Chelimsky clean up the change matcher c249173
Sep 11, 2010
David Chelimsky add beginnings of History f859a68
David Chelimsky history 6c31cbf
David Chelimsky fix changelog link in History f5aac62
Sep 12, 2010
David Chelimsky prep for beta.21 c4e6875
David Chelimsky bump version to 2.0.0.beta.21 76b9667
David Chelimsky stop using the old shared example API d13d9b7
David Chelimsky adjust history for beta.22 release 51f64b1
David Chelimsky bump version to 2.0.0.beta.22 311ba91
8  Gemfile
... ...
@@ -1,7 +1,6 @@
1 1
 source "http://rubygems.org"
2 2
 
3 3
 gem "rake"
4  
-gem "jeweler"
5 4
 gem "cucumber"
6 5
 gem "aruba", ">= 0.2.0"
7 6
 gem "autotest"
@@ -10,3 +9,10 @@ gem "rspec-expectations", :path => "."
10 9
 gem "rspec-core", :path => "../rspec-core"
11 10
 gem "rspec-mocks", :path => "../rspec-mocks"
12 11
 gem "watchr"
  12
+
  13
+case RUBY_VERSION
  14
+when '1.9.2'
  15
+  gem 'ruby-debug19'
  16
+when /^1\.8/
  17
+  gem 'ruby-debug'
  18
+end
16  History.md
Source Rendered
... ...
@@ -0,0 +1,16 @@
  1
+## rspec-expectations release history (incomplete)
  2
+
  3
+### 2.0.0.beta.22 / 2010-09-12
  4
+
  5
+[full changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.beta.20...v2.0.0.beta.22)
  6
+
  7
+* Enhancements
  8
+  * diffing improvements
  9
+    * diff multiline strings
  10
+    * don't diff single line strings
  11
+    * don't diff numbers (silly)
  12
+    * diff regexp + multiline string
  13
+
  14
+* Bug fixes
  15
+  * should[_not] change now handles boolean values correctly
  16
+
43  Rakefile
... ...
@@ -1,41 +1,12 @@
1 1
 require 'bundler'
2 2
 Bundler.setup
  3
+Bundler::GemHelper.install_tasks
3 4
 
4  
-$LOAD_PATH << File.expand_path("../lib", __FILE__)
5 5
 require 'rake'
6 6
 require 'rake/rdoctask'
7  
-require 'rspec/expectations/version'
8 7
 require 'rspec/core/rake_task'
9 8
 require 'cucumber/rake/task'
10 9
 
11  
-begin
12  
-  require 'jeweler'
13  
-  Jeweler::Tasks.new do |gem|
14  
-    gem.name = "rspec-expectations"
15  
-    gem.version = RSpec::Expectations::Version::STRING
16  
-    gem.summary = "rspec-expectations-#{RSpec::Expectations::Version::STRING}"
17  
-    gem.description = "rspec expectations (should[_not] and matchers)"
18  
-    gem.rubyforge_project = "rspec"
19  
-    gem.email = "dchelimsky@gmail.com;chad.humphries@gmail.com"
20  
-    gem.homepage = "http://github.com/rspec/expectations"
21  
-    gem.authors = ["David Chelimsky", "Chad Humphries"]    
22  
-    gem.add_dependency('diff-lcs', ">= 1.1.2")
23  
-    gem.add_development_dependency('cucumber', ">= 0.6.2")
24  
-    gem.add_development_dependency('aruba', ">= 0.1.1")
25  
-    gem.add_development_dependency('rspec-core', ">= #{RSpec::Expectations::Version::STRING}")
26  
-    gem.add_development_dependency('rspec-mocks', ">= #{RSpec::Expectations::Version::STRING}")
27  
-  end
28  
-rescue LoadError
29  
-  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
30  
-end
31  
-
32  
-namespace :gem do
33  
-  desc "push to gemcutter"
34  
-  task :push => :build do
35  
-    system "gem push pkg/rspec-expectations-#{RSpec::Expectations::Version::STRING}.gem"
36  
-  end
37  
-end
38  
-
39 10
 RSpec::Core::RakeTask.new(:spec)
40 11
 
41 12
 class Cucumber::Rake::Task::ForkedCucumberRunner
@@ -50,18 +21,11 @@ Cucumber::Rake::Task.new do |t|
50 21
   t.cucumber_opts = %w{--format progress}
51 22
 end
52 23
 
53  
-task :default => [:check_dependencies, :spec, :cucumber]
  24
+task :default => [:spec, :cucumber]
54 25
 
55 26
 Rake::RDocTask.new do |rdoc|
56  
-  if File.exist?('VERSION.yml')
57  
-    config = YAML.load(File.read('VERSION.yml'))
58  
-    version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
59  
-  else
60  
-    version = ""
61  
-  end
62  
-
63 27
   rdoc.rdoc_dir = 'rdoc'
64  
-  rdoc.title = "rspec-expectations #{version}"
  28
+  rdoc.title = "rspec-expectations #{RSpec::Expectations::Version::STRING}"
65 29
   rdoc.rdoc_files.include('README*')
66 30
   rdoc.rdoc_files.include('lib/**/*.rb')
67 31
 end
@@ -73,4 +37,3 @@ task :clobber do
73 37
   rm_rf 'coverage'
74 38
 end
75 39
 
76  
-
1  VERSION
... ...
@@ -1 +0,0 @@
1  
-2.0.0.beta.20
85  features/expectations/diffing.feature
... ...
@@ -0,0 +1,85 @@
  1
+Feature: diffing
  2
+
  3
+  When appropriate, failure messages will automatically include a diff.
  4
+
  5
+  Scenario: diff for a multiline string
  6
+    Given a file named "example_spec.rb" with:
  7
+      """
  8
+      describe "a multiline string" do
  9
+        it "is like another string" do
  10
+          expected = <<-EXPECTED
  11
+      this is the
  12
+        expected
  13
+          string
  14
+      EXPECTED
  15
+          actual = <<-ACTUAL
  16
+      this is the
  17
+        actual
  18
+          string
  19
+      ACTUAL
  20
+          actual.should eq(expected)
  21
+        end
  22
+      end
  23
+      """
  24
+    When I run "rspec example_spec.rb"
  25
+    Then the output should contain:
  26
+      """
  27
+           Diff:
  28
+           @@ -1,4 +1,4 @@
  29
+            this is the
  30
+           -  expected
  31
+           +  actual
  32
+                string
  33
+      """
  34
+
  35
+  Scenario: diff for a multiline string and a regexp
  36
+    Given a file named "example_spec.rb" with:
  37
+      """
  38
+      describe "a multiline string" do
  39
+        it "is like another string" do
  40
+          expected = /expected/m
  41
+          actual = <<-ACTUAL
  42
+      this is the
  43
+        actual
  44
+          string
  45
+      ACTUAL
  46
+          actual.should =~ expected
  47
+        end
  48
+      end
  49
+      """
  50
+    When I run "rspec example_spec.rb"
  51
+    Then the output should contain:
  52
+      """
  53
+           Diff:
  54
+           @@ -1,2 +1,4 @@
  55
+           -/expected/m
  56
+           +this is the
  57
+           +  actual
  58
+           +    string
  59
+      """
  60
+
  61
+  Scenario: no diff for a single line strings
  62
+    Given a file named "example_spec.rb" with:
  63
+      """
  64
+      describe "a single line string" do
  65
+        it "is like another string" do
  66
+          expected = "this string"
  67
+          actual   = "that string"
  68
+          actual.should eq(expected)
  69
+        end
  70
+      end
  71
+      """
  72
+    When I run "rspec example_spec.rb"
  73
+    Then the output should not contain "Diff:"
  74
+
  75
+  Scenario: no diff for numbers
  76
+    Given a file named "example_spec.rb" with:
  77
+      """
  78
+      describe "a number" do
  79
+        it "is like another number" do
  80
+          1.should eq(2)
  81
+        end
  82
+      end
  83
+      """
  84
+    When I run "rspec example_spec.rb"
  85
+    Then the output should not contain "Diff:"
142  features/matchers/equality.feature
... ...
@@ -0,0 +1,142 @@
  1
+Feature: equality matchers
  2
+
  3
+  Ruby exposes several different methods for handling equality:
  4
+
  5
+    a.equal?(b) # object identity - a and b refer to the same object
  6
+    a.eql?(b)   # object equivalence - a and b have the same value
  7
+    a == b      # object equivalence - a and b have the same value with type conversions
  8
+
  9
+  Note that these descriptions are guidelines but are not forced by the
  10
+  language. Any object can implement any of these methods with its own
  11
+  semantics.
  12
+
  13
+  rspec-expectations ships with matchers that align with each of these methods:
  14
+
  15
+    a.should equal(b) # passes if a.equal?(b)
  16
+    a.should eql(b)   # passes if a.eql?(b)
  17
+    a.should == b     # passes if a == b
  18
+
  19
+  It also ships with two matchers that have more of a DSL feel to them:
  20
+
  21
+    a.should be(b) # passes if a.equal?(b)
  22
+    a.should eq(b) # passes if a == b
  23
+
  24
+  Scenario: compare using eq (==)
  25
+    Given a file named "compare_using_eq.rb" with:
  26
+      """
  27
+      require 'spec_helper'
  28
+
  29
+      describe "a string" do
  30
+        it "is equal to another string of the same value" do
  31
+          "this string".should eq("this string")
  32
+        end
  33
+
  34
+        it "is not equal to another string of a different value" do
  35
+          "this string".should_not eq("a different string")
  36
+        end
  37
+      end
  38
+
  39
+      describe "an integer" do
  40
+        it "is equal to a float of the same value" do
  41
+          5.should eq(5.0)
  42
+        end
  43
+      end
  44
+      """
  45
+    When I run "rspec compare_using_eq.rb"
  46
+    Then the output should contain "3 examples, 0 failures"
  47
+
  48
+  Scenario: compare using ==
  49
+    Given a file named "compare_using_==.rb" with:
  50
+      """
  51
+      require 'spec_helper'
  52
+
  53
+      describe "a string" do
  54
+        it "is equal to another string of the same value" do
  55
+          "this string".should == "this string"
  56
+        end
  57
+
  58
+        it "is not equal to another string of a different value" do
  59
+          "this string".should_not == "a different string"
  60
+        end
  61
+      end
  62
+
  63
+      describe "an integer" do
  64
+        it "is equal to a float of the same value" do
  65
+          5.should == 5.0
  66
+        end
  67
+      end
  68
+      """
  69
+    When I run "rspec compare_using_==.rb"
  70
+    Then the output should contain "3 examples, 0 failures"
  71
+
  72
+  Scenario: compare using eql (eql?)
  73
+    Given a file named "compare_using_eql.rb" with:
  74
+      """
  75
+      require 'spec_helper'
  76
+
  77
+      describe "an integer" do
  78
+        it "is equal to another integer of the same value" do
  79
+          5.should eql(5)
  80
+        end
  81
+
  82
+        it "is not equal to another integer of a different value" do
  83
+          5.should_not eql(6)
  84
+        end
  85
+
  86
+        it "is not equal to a float of the same value" do
  87
+          5.should_not eql(5.0)
  88
+        end
  89
+
  90
+      end
  91
+      """
  92
+    When I run "rspec compare_using_eql.rb"
  93
+    Then the output should contain "3 examples, 0 failures"
  94
+
  95
+  Scenario: compare using equal (equal?)
  96
+    Given a file named "compare_using_equal.rb" with:
  97
+      """
  98
+      require 'spec_helper'
  99
+
  100
+      describe "a string" do
  101
+        it "is equal to itself" do
  102
+          string = "this string"
  103
+          string.should equal(string)
  104
+        end
  105
+
  106
+        it "is not equal to another string of the same value" do
  107
+          "this string".should_not equal("this string")
  108
+        end
  109
+
  110
+        it "is not equal to another string of a different value" do
  111
+          "this string".should_not equal("a different string")
  112
+        end
  113
+
  114
+      end
  115
+      """
  116
+    When I run "rspec compare_using_equal.rb"
  117
+    Then the output should contain "3 examples, 0 failures"
  118
+
  119
+  Scenario: compare using be (equal?)
  120
+    Given a file named "compare_using_be.rb" with:
  121
+      """
  122
+      require 'spec_helper'
  123
+
  124
+      describe "a string" do
  125
+        it "is equal to itself" do
  126
+          string = "this string"
  127
+          string.should be(string)
  128
+        end
  129
+
  130
+        it "is not equal to another string of the same value" do
  131
+          "this string".should_not be("this string")
  132
+        end
  133
+
  134
+        it "is not equal to another string of a different value" do
  135
+          "this string".should_not be("a different string")
  136
+        end
  137
+
  138
+      end
  139
+      """
  140
+    When I run "rspec compare_using_be.rb"
  141
+    Then the output should contain "3 examples, 0 failures"
  142
+
6  lib/rspec/expectations/differ.rb
@@ -41,8 +41,10 @@ def diff_as_string(data_new, data_old)
41 41
         output << oldhunk.diff(format) << "\n"
42 42
       end  
43 43
 
44  
-      def diff_as_object(target,expected)
45  
-        diff_as_string(PP.pp(target,""), PP.pp(expected,""))
  44
+      def diff_as_object(actual,expected)
  45
+        actual = String === actual ? actual : PP.pp(actual,"")
  46
+        expected = String === expected ? expected : PP.pp(expected,"")
  47
+        diff_as_string(actual, expected)
46 48
       end
47 49
 
48 50
     protected
6  lib/rspec/expectations/fail_with.rb
@@ -21,7 +21,7 @@ def fail_with(message, expected=nil, actual=nil) # :nodoc:
21 21
             if any_multiline_strings?(actual, expected)
22 22
               message << "\nDiff:" << self.differ.diff_as_string(actual, expected)
23 23
             end
24  
-          elsif no_procs?(actual, expected)
  24
+          elsif no_procs?(actual, expected) && no_numbers?(actual, expected)
25 25
             message << "\nDiff:" << self.differ.diff_as_object(actual, expected)
26 26
           end
27 27
         end
@@ -42,6 +42,10 @@ def all_strings?(*args)
42 42
       def any_multiline_strings?(*args)
43 43
         all_strings?(*args) && args.any? {|a| a =~ /\n/}
44 44
       end
  45
+
  46
+      def no_numbers?(*args)
  47
+        args.none? {|a| Numeric === a}
  48
+      end
45 49
     end
46 50
   end
47 51
 end
2  lib/rspec/expectations/version.rb
... ...
@@ -1,7 +1,7 @@
1 1
 module RSpec # :nodoc:
2 2
   module Expectations # :nodoc:
3 3
     module Version # :nodoc:
4  
-      STRING = File.readlines(File.expand_path('../../../../VERSION', __FILE__)).first
  4
+      STRING = '2.0.0.beta.22'
5 5
     end
6 6
   end
7 7
 end
29  lib/rspec/matchers/be.rb
@@ -177,32 +177,6 @@ def prefix_to_sentence
177 177
 
178 178
     end
179 179
 
180  
-    class BeSameAs < Be
181  
-      
182  
-      def initialize(*args, &block)
183  
-        @expected = args.shift
184  
-        @args = args
185  
-      end
186  
-      
187  
-      def matches?(actual)
188  
-        @actual = actual
189  
-        @actual.equal?(@expected)
190  
-      end
191  
-
192  
-      def failure_message_for_should
193  
-        "expected #{@expected}, got #{@actual.inspect}"
194  
-      end
195  
-      
196  
-      def failure_message_for_should_not
197  
-        "expected not #{@expected}, got #{@actual.inspect}"
198  
-      end
199  
-
200  
-      def description
201  
-        "be #{expected_to_sentence}#{args_to_sentence}"
202  
-      end
203  
-
204  
-    end
205  
- 
206 180
     # :call-seq:
207 181
     #   should be_true
208 182
     #   should be_false
@@ -235,8 +209,7 @@ def description
235 209
     #   target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
236 210
     def be(*args)
237 211
       args.empty? ?
238  
-        Matchers::Be.new :
239  
-        Matchers::BeSameAs.new(*args)
  212
+        Matchers::Be.new : equal(*args)
240 213
     end
241 214
 
242 215
     # passes if target.kind_of?(klass)
65  lib/rspec/matchers/change.rb
@@ -4,9 +4,10 @@ module Matchers
4 4
     #Based on patch from Wilson Bilkovich
5 5
     class Change #:nodoc:
6 6
       def initialize(receiver=nil, message=nil, &block)
7  
-        @message = message || "result"
  7
+        @message = message
8 8
         @value_proc = block || lambda {receiver.__send__(message)}
9 9
         @to = @from = @minimum = @maximum = @amount = nil
  10
+        @given_from = @given_to = false
10 11
       end
11 12
       
12 13
       def matches?(event_proc)
@@ -16,14 +17,9 @@ def matches?(event_proc)
16 17
         event_proc.call
17 18
         @after = evaluate_value_proc
18 19
         
19  
-        return (@to = false) if @from unless @from == @before
20  
-        return false if @to unless @to == @after
21  
-        return (@before + @amount == @after) if @amount
22  
-        return ((@after - @before) >= @minimum) if @minimum
23  
-        return ((@after - @before) <= @maximum) if @maximum        
24  
-        return @before != @after
  20
+        changed? && matches_before? && matches_after? && matches_amount? && matches_min? && matches_max?
25 21
       end
26  
-      
  22
+
27 23
       def raise_block_syntax_error
28 24
         raise MatcherError.new(<<-MESSAGE
29 25
 block passed to should or should_not change must use {} instead of do/end
@@ -36,18 +32,18 @@ def evaluate_value_proc
36 32
       end
37 33
       
38 34
       def failure_message_for_should
39  
-        if @to
40  
-          "#{@message} should have been changed to #{@to.inspect}, but is now #{@after.inspect}"
41  
-        elsif @from
42  
-          "#{@message} should have initially been #{@from.inspect}, but was #{@before.inspect}"
  35
+        if @given_from && @before != @from
  36
+          "#{message} should have initially been #{@from.inspect}, but was #{@before.inspect}"
  37
+        elsif @given_to && @to != @after
  38
+          "#{message} should have been changed to #{@to.inspect}, but is now #{@after.inspect}"
43 39
         elsif @amount
44  
-          "#{@message} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
  40
+          "#{message} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
45 41
         elsif @minimum
46  
-          "#{@message} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
  42
+          "#{message} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
47 43
         elsif @maximum
48  
-          "#{@message} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
  44
+          "#{message} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
49 45
         else
50  
-          "#{@message} should have changed, but is still #{@before.inspect}"
  46
+          "#{message} should have changed, but is still #{@before.inspect}"
51 47
         end
52 48
       end
53 49
       
@@ -56,7 +52,7 @@ def actual_delta
56 52
       end
57 53
       
58 54
       def failure_message_for_should_not
59  
-        "#{@message} should not have changed, but did change from #{@before.inspect} to #{@after.inspect}"
  55
+        "#{message} should not have changed, but did change from #{@before.inspect} to #{@after.inspect}"
60 56
       end
61 57
       
62 58
       def by(amount)
@@ -75,18 +71,51 @@ def by_at_most(maximum)
75 71
       end      
76 72
       
77 73
       def to(to)
  74
+        @given_to = true
78 75
         @to = to
79 76
         self
80 77
       end
81 78
       
82 79
       def from (from)
  80
+        @given_from = true
83 81
         @from = from
84 82
         self
85 83
       end
86 84
       
87 85
       def description
88  
-        "change ##{@message}"
  86
+        "change ##{message}"
  87
+      end
  88
+
  89
+    private
  90
+      
  91
+      def message
  92
+        @message || "result"
  93
+      end
  94
+
  95
+      def changed?
  96
+        @before != @after
  97
+      end
  98
+
  99
+      def matches_before?
  100
+        @given_from ? @from == @before : true
89 101
       end
  102
+
  103
+      def matches_after?
  104
+        @given_to ? @to == @after : true
  105
+      end
  106
+
  107
+      def matches_amount?
  108
+        @amount ? (@before + @amount == @after) : true
  109
+      end
  110
+
  111
+      def matches_min?
  112
+        @minimum ? (@after - @before >= @minimum) : true
  113
+      end
  114
+
  115
+      def matches_max?
  116
+        @maximum ? (@after - @before <= @maximum) : true
  117
+      end
  118
+      
90 119
     end
91 120
     
92 121
     # :call-seq:
3  lib/rspec/matchers/eq.rb
@@ -14,6 +14,9 @@ module Matchers
14 14
     #   5.should_not eq(3)
15 15
     def eq(expected)
16 16
       Matcher.new :eq, expected do |_expected_|
  17
+
  18
+        diffable
  19
+
17 20
         match do |actual|
18 21
           actual == _expected_
19 22
         end
3  lib/rspec/matchers/eql.rb
@@ -14,6 +14,9 @@ module Matchers
14 14
     #   5.should_not eql(3)
15 15
     def eql(expected)
16 16
       Matcher.new :eql, expected do |_expected_|
  17
+
  18
+        diffable
  19
+
17 20
         match do |actual|
18 21
           actual.eql?(_expected_)
19 22
         end
194  rspec-expectations.gemspec
... ...
@@ -1,179 +1,31 @@
1  
-# Generated by jeweler
2  
-# DO NOT EDIT THIS FILE DIRECTLY
3  
-# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4 1
 # -*- encoding: utf-8 -*-
  2
+$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
  3
+require "rspec/expectations/version"
5 4
 
6 5
 Gem::Specification.new do |s|
7  
-  s.name = %q{rspec-expectations}
8  
-  s.version = "2.0.0.beta.20"
  6
+  s.name        = "rspec-expectations"
  7
+  s.version     = RSpec::Expectations::Version::STRING
  8
+  s.platform    = Gem::Platform::RUBY
  9
+  s.authors     = ["David Chelimsky", "Chad Humphries"]
  10
+  s.email       = "dchelimsky@gmail.com;chad.humphries@gmail.com"
  11
+  s.homepage    = "http://github.com/rspec/rspec-expectations"
  12
+  s.summary     = "rspec-expectations-#{RSpec::Expectations::Version::STRING}"
  13
+  s.description = "rspec expectations (should[_not] and matchers)"
9 14
 
10  
-  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11  
-  s.authors = ["David Chelimsky", "Chad Humphries"]
12  
-  s.date = %q{2010-08-24}
13  
-  s.description = %q{rspec expectations (should[_not] and matchers)}
14  
-  s.email = %q{dchelimsky@gmail.com;chad.humphries@gmail.com}
15  
-  s.extra_rdoc_files = [
16  
-    "README.markdown"
17  
-  ]
18  
-  s.files = [
19  
-    ".document",
20  
-     ".gitignore",
21  
-     "Gemfile",
22  
-     "License.txt",
23  
-     "README.markdown",
24  
-     "Rakefile",
25  
-     "Upgrade.markdown",
26  
-     "VERSION",
27  
-     "cucumber.yml",
28  
-     "features/README.markdown",
29  
-     "features/expectations/attribute_of_subject.feature",
30  
-     "features/expectations/customized_message.feature",
31  
-     "features/expectations/implicit_docstrings.feature",
32  
-     "features/matchers/access_running_example.feature",
33  
-     "features/matchers/define_diffable_matcher.feature",
34  
-     "features/matchers/define_matcher.feature",
35  
-     "features/matchers/define_matcher_outside_rspec.feature",
36  
-     "features/matchers/define_matcher_with_fluent_interface.feature",
37  
-     "features/matchers/expect_change.feature",
38  
-     "features/matchers/expect_error.feature",
39  
-     "features/support/env.rb",
40  
-     "lib/rspec-expectations.rb",
41  
-     "lib/rspec/expectations.rb",
42  
-     "lib/rspec/expectations/backward_compatibility.rb",
43  
-     "lib/rspec/expectations/differ.rb",
44  
-     "lib/rspec/expectations/errors.rb",
45  
-     "lib/rspec/expectations/extensions.rb",
46  
-     "lib/rspec/expectations/extensions/array.rb",
47  
-     "lib/rspec/expectations/extensions/kernel.rb",
48  
-     "lib/rspec/expectations/extensions/rspec/core/example_group.rb",
49  
-     "lib/rspec/expectations/fail_with.rb",
50  
-     "lib/rspec/expectations/handler.rb",
51  
-     "lib/rspec/expectations/version.rb",
52  
-     "lib/rspec/matchers.rb",
53  
-     "lib/rspec/matchers/be.rb",
54  
-     "lib/rspec/matchers/be_close.rb",
55  
-     "lib/rspec/matchers/be_instance_of.rb",
56  
-     "lib/rspec/matchers/be_kind_of.rb",
57  
-     "lib/rspec/matchers/change.rb",
58  
-     "lib/rspec/matchers/compatibility.rb",
59  
-     "lib/rspec/matchers/dsl.rb",
60  
-     "lib/rspec/matchers/eq.rb",
61  
-     "lib/rspec/matchers/eql.rb",
62  
-     "lib/rspec/matchers/equal.rb",
63  
-     "lib/rspec/matchers/errors.rb",
64  
-     "lib/rspec/matchers/exist.rb",
65  
-     "lib/rspec/matchers/extensions/instance_exec.rb",
66  
-     "lib/rspec/matchers/generated_descriptions.rb",
67  
-     "lib/rspec/matchers/has.rb",
68  
-     "lib/rspec/matchers/have.rb",
69  
-     "lib/rspec/matchers/include.rb",
70  
-     "lib/rspec/matchers/match.rb",
71  
-     "lib/rspec/matchers/match_array.rb",
72  
-     "lib/rspec/matchers/matcher.rb",
73  
-     "lib/rspec/matchers/method_missing.rb",
74  
-     "lib/rspec/matchers/operator_matcher.rb",
75  
-     "lib/rspec/matchers/pretty.rb",
76  
-     "lib/rspec/matchers/raise_error.rb",
77  
-     "lib/rspec/matchers/respond_to.rb",
78  
-     "lib/rspec/matchers/satisfy.rb",
79  
-     "lib/rspec/matchers/throw_symbol.rb",
80  
-     "rspec-expectations.gemspec",
81  
-     "spec/rspec/expectations/differ_spec.rb",
82  
-     "spec/rspec/expectations/extensions/kernel_spec.rb",
83  
-     "spec/rspec/expectations/fail_with_spec.rb",
84  
-     "spec/rspec/expectations/handler_spec.rb",
85  
-     "spec/rspec/matchers/be_close_spec.rb",
86  
-     "spec/rspec/matchers/be_instance_of_spec.rb",
87  
-     "spec/rspec/matchers/be_kind_of_spec.rb",
88  
-     "spec/rspec/matchers/be_spec.rb",
89  
-     "spec/rspec/matchers/change_spec.rb",
90  
-     "spec/rspec/matchers/compatibility_spec.rb",
91  
-     "spec/rspec/matchers/description_generation_spec.rb",
92  
-     "spec/rspec/matchers/dsl_spec.rb",
93  
-     "spec/rspec/matchers/eq_spec.rb",
94  
-     "spec/rspec/matchers/eql_spec.rb",
95  
-     "spec/rspec/matchers/equal_spec.rb",
96  
-     "spec/rspec/matchers/exist_spec.rb",
97  
-     "spec/rspec/matchers/has_spec.rb",
98  
-     "spec/rspec/matchers/have_spec.rb",
99  
-     "spec/rspec/matchers/include_spec.rb",
100  
-     "spec/rspec/matchers/match_array_spec.rb",
101  
-     "spec/rspec/matchers/match_spec.rb",
102  
-     "spec/rspec/matchers/matcher_spec.rb",
103  
-     "spec/rspec/matchers/matchers_spec.rb",
104  
-     "spec/rspec/matchers/operator_matcher_spec.rb",
105  
-     "spec/rspec/matchers/raise_error_spec.rb",
106  
-     "spec/rspec/matchers/respond_to_spec.rb",
107  
-     "spec/rspec/matchers/satisfy_spec.rb",
108  
-     "spec/rspec/matchers/throw_symbol_spec.rb",
109  
-     "spec/spec_helper.rb",
110  
-     "spec/suite.rb",
111  
-     "spec/support/classes.rb",
112  
-     "specs.watchr"
113  
-  ]
114  
-  s.homepage = %q{http://github.com/rspec/expectations}
115  
-  s.rdoc_options = ["--charset=UTF-8"]
116  
-  s.require_paths = ["lib"]
117  
-  s.rubyforge_project = %q{rspec}
118  
-  s.rubygems_version = %q{1.3.7}
119  
-  s.summary = %q{rspec-expectations-2.0.0.beta.20}
120  
-  s.test_files = [
121  
-    "spec/rspec/expectations/differ_spec.rb",
122  
-     "spec/rspec/expectations/extensions/kernel_spec.rb",
123  
-     "spec/rspec/expectations/fail_with_spec.rb",
124  
-     "spec/rspec/expectations/handler_spec.rb",
125  
-     "spec/rspec/matchers/be_close_spec.rb",
126  
-     "spec/rspec/matchers/be_instance_of_spec.rb",
127  
-     "spec/rspec/matchers/be_kind_of_spec.rb",
128  
-     "spec/rspec/matchers/be_spec.rb",
129  
-     "spec/rspec/matchers/change_spec.rb",
130  
-     "spec/rspec/matchers/compatibility_spec.rb",
131  
-     "spec/rspec/matchers/description_generation_spec.rb",
132  
-     "spec/rspec/matchers/dsl_spec.rb",
133  
-     "spec/rspec/matchers/eq_spec.rb",
134  
-     "spec/rspec/matchers/eql_spec.rb",
135  
-     "spec/rspec/matchers/equal_spec.rb",
136  
-     "spec/rspec/matchers/exist_spec.rb",
137  
-     "spec/rspec/matchers/has_spec.rb",
138  
-     "spec/rspec/matchers/have_spec.rb",
139  
-     "spec/rspec/matchers/include_spec.rb",
140  
-     "spec/rspec/matchers/match_array_spec.rb",
141  
-     "spec/rspec/matchers/match_spec.rb",
142  
-     "spec/rspec/matchers/matcher_spec.rb",
143  
-     "spec/rspec/matchers/matchers_spec.rb",
144  
-     "spec/rspec/matchers/operator_matcher_spec.rb",
145  
-     "spec/rspec/matchers/raise_error_spec.rb",
146  
-     "spec/rspec/matchers/respond_to_spec.rb",
147  
-     "spec/rspec/matchers/satisfy_spec.rb",
148  
-     "spec/rspec/matchers/throw_symbol_spec.rb",
149  
-     "spec/spec_helper.rb",
150  
-     "spec/suite.rb",
151  
-     "spec/support/classes.rb"
152  
-  ]
  15
+  s.rubygems_version   = "1.3.7"
  16
+  s.rubyforge_project  = "rspec"
153 17
 
154  
-  if s.respond_to? :specification_version then
155  
-    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
156  
-    s.specification_version = 3
  18
+  s.files            = `git ls-files`.split("\n")
  19
+  s.test_files       = `git ls-files -- {spec,features}/*`.split("\n")
  20
+  s.executables      = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
  21
+  s.extra_rdoc_files = [ "README.markdown" ]
  22
+  s.rdoc_options     = ["--charset=UTF-8"]
  23
+  s.require_path     = "lib"
157 24
 
158  
-    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
159  
-      s.add_runtime_dependency(%q<diff-lcs>, [">= 1.1.2"])
160  
-      s.add_development_dependency(%q<cucumber>, [">= 0.6.2"])
161  
-      s.add_development_dependency(%q<aruba>, [">= 0.1.1"])
162  
-      s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.20"])
163  
-      s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.20"])
164  
-    else
165  
-      s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
166  
-      s.add_dependency(%q<cucumber>, [">= 0.6.2"])
167  
-      s.add_dependency(%q<aruba>, [">= 0.1.1"])
168  
-      s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.20"])
169  
-      s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.20"])
170  
-    end
171  
-  else
172  
-    s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
173  
-    s.add_dependency(%q<cucumber>, [">= 0.6.2"])
174  
-    s.add_dependency(%q<aruba>, [">= 0.1.1"])
175  
-    s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.20"])
176  
-    s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.20"])
177  
-  end
  25
+  s.add_runtime_dependency     'diff-lcs',    '>= 1.1.2'
  26
+  s.add_development_dependency 'cucumber',    ">= 0.6.2"
  27
+  s.add_development_dependency 'aruba',       ">= 0.1.1"
  28
+  s.add_development_dependency 'rspec-core',  ">= #{RSpec::Expectations::Version::STRING}"
  29
+  s.add_development_dependency 'rspec-mocks', ">= #{RSpec::Expectations::Version::STRING}"
178 30
 end
179 31
 
65  spec/rspec/expectations/fail_with_spec.rb
@@ -6,35 +6,62 @@
6 6
   before(:each) do
7 7
     RSpec::Expectations.stub(:differ) { differ }
8 8
   end
9  
-  
  9
+
  10
+  it "calls differ if expected/actual are not strings (or numbers or procs)" do
  11
+    differ.should_receive(:diff_as_object).and_return("diff")
  12
+    lambda {
  13
+      RSpec::Expectations.fail_with "the message", Object.new, Object.new
  14
+    }.should fail_with("the message\nDiff:diff")
  15
+  end
  16
+
  17
+  context "with two strings" do
  18
+    context "and actual is multiline" do
  19
+      it "calls differ" do
  20
+        differ.should_receive(:diff_as_string).and_return("diff")
  21
+        lambda {
  22
+          RSpec::Expectations.fail_with "the message", "expected\nthis", "actual"
  23
+        }.should fail_with("the message\nDiff:diff")
  24
+      end
  25
+    end
  26
+
  27
+    context "and expected is multiline" do
  28
+      it "calls differ" do
  29
+        differ.should_receive(:diff_as_string).and_return("diff")
  30
+        lambda {
  31
+          RSpec::Expectations.fail_with "the message", "expected", "actual\nthat"
  32
+        }.should fail_with("the message\nDiff:diff")
  33
+      end
  34
+    end
  35
+
  36
+    context "and both are single line strings" do
  37
+      it "does not call differ" do
  38
+        differ.should_not_receive(:diff_as_string)
  39
+        lambda {
  40
+          RSpec::Expectations.fail_with("the message", "expected", "actual")
  41
+        }.should fail_with("the message")
  42
+      end
  43
+    end
  44
+  end
  45
+
10 46
   it "does not call differ if no expected/actual" do
11 47
     lambda {
12 48
       RSpec::Expectations.fail_with "the message"
13 49
     }.should fail_with("the message")
14 50
   end
15  
-  
16  
-  it "calls differ if expected/actual are presented separately" do
17  
-    differ.should_receive(:diff_as_string).and_return("diff")
  51
+
  52
+  it "does not call differ expected is Numeric" do
18 53
     lambda {
19  
-      RSpec::Expectations.fail_with "the message", "expected\nthis", "actual"
20  
-    }.should fail_with("the message\nDiff:diff")
21  
-  end
22  
-  
23  
-  it "does not call differ if expected/actual are single line strings" do
24  
-    differ.should_not_receive(:diff_as_string)
25  
-    RSpec::Expectations.fail_with("the message", "expected", "actual") rescue nil
  54
+      RSpec::Expectations.fail_with "the message", 1, "1"
  55
+    }.should fail_with("the message")
26 56
   end
27  
-  
28  
-  it "calls differ if expected/actual are not strings" do
29  
-    differ.should_receive(:diff_as_object).and_return("diff")
  57
+
  58
+  it "does not call differ when actual is Numeric" do
30 59
     lambda {
31  
-      RSpec::Expectations.fail_with "the message", Object.new, Object.new
32  
-    }.should fail_with("the message\nDiff:diff")
  60
+      RSpec::Expectations.fail_with "the message", "1", 1
  61
+    }.should fail_with("the message")
33 62
   end
34  
-  
  63
+
35 64
   it "does not call differ if expected or actual are procs" do
36  
-    differ.should_not_receive(:diff_as_string)
37  
-    differ.should_not_receive(:diff_as_object)
38 65
     lambda {
39 66
       RSpec::Expectations.fail_with "the message", lambda {}, lambda {}
40 67
     }.should fail_with("the message")
20  spec/rspec/matchers/be_spec.rb
@@ -386,25 +386,16 @@
386 386
 end
387 387
 
388 388
 describe "should be(value)" do
389  
-  it "passes if actual.equal?(value)" do
  389
+  it "delegates to equal" do
  390
+    self.should_receive(:equal).with(5)
390 391
     5.should be(5)
391 392
   end
392  
-
393  
-  it "fails if !actual.equal?(value)" do
394  
-    lambda { 5.should be(6) }.should fail_with("expected 6, got 5")
395  
-  end
396  
-
397  
-  it "describes itself" do
398  
-    be(5).description.should == "be 5"
399  
-  end
400 393
 end
401 394
 
402 395
 describe "should_not be(value)" do
403  
-  it "passes if !actual.equal?(value)" do
404  
-    5.should_not be(6)
405  
-  end
406  
-  it "fails if !actual.equal?(value)" do
407  
-    lambda { 5.should_not be(5) }.should fail_with("expected not 5, got 5")
  396
+  it "delegates to equal" do
  397
+    self.should_receive(:equal).with(4)
  398
+    5.should_not be(4)
408 399
   end
409 400
 end
410 401
 
@@ -420,7 +411,6 @@
420 411
 
421 412
 describe "arbitrary predicate with DelegateClass" do
422 413
   it "accesses methods defined in the delegating class (LH[#48])" do
423  
-    pending("this fails in 1.9.2-preview3") unless RUBY_VERSION.to_s =~ /^1.8/
424 414
     require 'delegate'
425 415
     class ArrayDelegate < DelegateClass(Array)
426 416
       def initialize(array)
136  spec/rspec/matchers/change_spec.rb
... ...
@@ -1,28 +1,48 @@
1 1
 #Based on patch from Wilson Bilkovich
2 2
 
3 3
 require 'spec_helper'
  4
+
4 5
 class SomethingExpected
5 6
   attr_accessor :some_value
6 7
 end
7 8
 
8 9
 describe "should change(actual, message)" do
9  
-  before(:each) do
10  
-    @instance = SomethingExpected.new
11  
-    @instance.some_value = 5
  10
+  context "with a numeric value" do
  11
+    before(:each) do
  12
+      @instance = SomethingExpected.new
  13
+      @instance.some_value = 5
  14
+    end
  15
+
  16
+    it "passes when actual is modified by the block" do
  17
+      expect {@instance.some_value = 6}.to change(@instance, :some_value)
  18
+    end
  19
+
  20
+    it "fails when actual is not modified by the block" do
  21
+      expect do
  22
+        expect {}.to change(@instance, :some_value)
  23
+      end.to fail_with("some_value should have changed, but is still 5")
  24
+    end
  25
+    
  26
+    it "provides a #description" do
  27
+      change(@instance, :some_value).description.should == "change #some_value"
  28
+    end
12 29
   end
13 30
 
14  
-  it "passes when actual is modified by the block" do
15  
-    expect {@instance.some_value = 6}.to change(@instance, :some_value)
16  
-  end
  31
+  context "with boolean values" do
  32
+    before(:each) do
  33
+      @instance = SomethingExpected.new
  34
+      @instance.some_value = true
  35
+    end
17 36
 
18  
-  it "fails when actual is not modified by the block" do
19  
-    expect do
20  
-      expect {}.to change(@instance, :some_value)
21  
-    end.to fail_with("some_value should have changed, but is still 5")
22  
-  end
23  
-  
24  
-  it "provides a #description" do
25  
-    change(@instance, :some_value).description.should == "change #some_value"
  37
+    it "passes when actual is modified by the block" do
  38
+      expect {@instance.some_value = false}.to change(@instance, :some_value)
  39
+    end
  40
+
  41
+    it "fails when actual is not modified by the block" do
  42
+      expect do
  43
+        expect {}.to change(@instance, :some_value)
  44
+      end.to fail_with("some_value should have changed, but is still true")
  45
+    end
26 46
   end
27 47
 end
28 48
 
@@ -227,19 +247,37 @@ class SomethingExpected
227 247
 end
228 248
 
229 249
 describe "should change(actual, message).from(old)" do
230  
-  before(:each) do
231  
-    @instance = SomethingExpected.new
232  
-    @instance.some_value = 'string'
233  
-  end
234  
-
235  
-  it "passes when attribute is == to expected value before executing block" do
236  
-    expect { @instance.some_value = "astring" }.to change(@instance, :some_value).from("string")
237  
-  end
238  
-
239  
-  it "fails when attribute is not == to expected value before executing block" do
240  
-    expect do
241  
-      expect { @instance.some_value = "knot" }.to change(@instance, :some_value).from("cat")
242  
-    end.to fail_with("some_value should have initially been \"cat\", but was \"string\"")
  250
+  context "with boolean values" do
  251
+    before(:each) do
  252
+      @instance = SomethingExpected.new
  253
+      @instance.some_value = true
  254
+    end
  255
+
  256
+    it "passes when attribute is == to expected value before executing block" do
  257
+      expect { @instance.some_value = false }.to change(@instance, :some_value).from(true)
  258
+    end
  259
+
  260
+    it "fails when attribute is not == to expected value before executing block" do
  261
+      expect do
  262
+        expect { @instance.some_value = 'foo' }.to change(@instance, :some_value).from(false)
  263
+      end.to fail_with("some_value should have initially been false, but was true")
  264
+    end
  265
+  end
  266
+  context "with non-boolean values" do
  267
+    before(:each) do
  268
+      @instance = SomethingExpected.new
  269
+      @instance.some_value = 'string'
  270
+    end
  271
+
  272
+    it "passes when attribute is == to expected value before executing block" do
  273
+      expect { @instance.some_value = "astring" }.to change(@instance, :some_value).from("string")
  274
+    end
  275
+
  276
+    it "fails when attribute is not == to expected value before executing block" do
  277
+      expect do
  278
+        expect { @instance.some_value = "knot" }.to change(@instance, :some_value).from("cat")
  279
+      end.to fail_with("some_value should have initially been \"cat\", but was \"string\"")
  280
+    end
243 281
   end
244 282
 end
245 283
 
@@ -261,19 +299,37 @@ class SomethingExpected
261 299
 end
262 300
 
263 301
 describe "should change(actual, message).to(new)" do
264  
-  before(:each) do
265  
-    @instance = SomethingExpected.new
266  
-    @instance.some_value = 'string'
267  
-  end
268  
-  
269  
-  it "passes when attribute is == to expected value after executing block" do
270  
-    expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat")
271  
-  end
272  
-
273  
-  it "fails when attribute is not == to expected value after executing block" do
274  
-    expect do
275  
-      expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
276  
-    end.to fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
  302
+  context "with boolean values" do
  303
+    before(:each) do
  304
+      @instance = SomethingExpected.new
  305
+      @instance.some_value = true
  306
+    end
  307
+    
  308
+    it "passes when attribute is == to expected value after executing block" do
  309
+      expect { @instance.some_value = false }.to change(@instance, :some_value).to(false)
  310
+    end
  311
+
  312
+    it "fails when attribute is not == to expected value after executing block" do
  313
+      expect do
  314
+        expect { @instance.some_value = 1 }.to change(@instance, :some_value).from(true).to(false)
  315
+      end.to fail_with("some_value should have been changed to false, but is now 1")
  316
+    end
  317
+  end
  318
+  context "with non-boolean values" do
  319
+    before(:each) do
  320
+      @instance = SomethingExpected.new
  321
+      @instance.some_value = 'string'
  322
+    end
  323
+    
  324
+    it "passes when attribute is == to expected value after executing block" do
  325
+      expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat")
  326
+    end
  327
+
  328
+    it "fails when attribute is not == to expected value after executing block" do
  329
+      expect do
  330
+        expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
  331
+      end.to fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
  332
+    end
277 333
   end
278 334
 end
279 335
 
4  spec/rspec/matchers/eq_spec.rb
@@ -3,6 +3,10 @@
3 3
 module RSpec
4 4
   module Matchers
5 5
     describe "eq" do
  6
+      it "is diffable" do
  7
+        eq(1).should be_diffable
  8
+      end
  9
+
6 10
       it "matches when actual == expected" do
7 11
         1.should eq(1)
8 12
       end
4  spec/rspec/matchers/eql_spec.rb
@@ -3,6 +3,10 @@
3 3
 module RSpec
4 4
   module Matchers
5 5
     describe "eql" do
  6
+      it "is diffable" do
  7
+        eql(1).should be_diffable
  8
+      end
  9
+
6 10
       it "matches when actual.eql?(expected)" do
7 11
         1.should eql(1)
8 12
       end
33  spec/rspec/matchers/have_spec.rb
... ...
@@ -1,15 +1,8 @@
1 1
 require 'spec_helper'
2 2
 require 'stringio'
3 3
 
4  
-share_as :HaveSpecHelper do
5  
-  def create_collection_owner_with(n)
6  
-    owner = RSpec::Expectations::Helper::CollectionOwner.new
7  
-    (1..n).each do |number|
8  
-      owner.add_to_collection_with_length_method(number)
9  
-      owner.add_to_collection_with_size_method(number)
10  
-    end
11  
-    owner
12  
-  end
  4
+describe "have matcher" do
  5
+
13 6
   before(:each) do
14 7
     if defined?(::ActiveSupport::Inflector)
15 8
       @active_support_was_defined = true
@@ -24,10 +17,17 @@ def self.pluralize(string)
24 17
       end
25 18
     end
26 19
   end
27  
-end
  20
+
  21
+  def create_collection_owner_with(n)
  22
+    owner = RSpec::Expectations::Helper::CollectionOwner.new
  23
+    (1..n).each do |number|
  24
+      owner.add_to_collection_with_length_method(number)
  25
+      owner.add_to_collection_with_size_method(number)
  26
+    end
  27
+    owner
  28
+  end
28 29
 
29 30
 describe "should have(n).items" do
30  
-  include HaveSpecHelper
31 31
 
32 32
   it "passes if target has a collection of items with n members" do
33 33
     owner = create_collection_owner_with(3)
@@ -63,7 +63,6 @@ def self.pluralize(string)
63 63
 end
64 64
 
65 65
 describe 'should have(1).item when ActiveSupport::Inflector is defined' do
66  
-  include HaveSpecHelper
67 66
   
68 67
   it 'pluralizes the collection name' do
69 68
     owner = create_collection_owner_with(1)
@@ -78,7 +77,6 @@ def self.pluralize(string)
78 77
 end
79 78
 
80 79
 describe 'should have(1).item when Inflector is defined' do
81  
-  include HaveSpecHelper
82 80
   
83 81
   before(:each) do
84 82
     if defined?(Inflector)
@@ -119,7 +117,6 @@ def items
119 117
 end
120 118
 
121 119
 describe "should_not have(n).items" do
122  
-  include HaveSpecHelper
123 120
 
124 121
   it "passes if target has a collection of items with < n members" do
125 122
     owner = create_collection_owner_with(3)
@@ -145,7 +142,6 @@ def items
145 142
 end
146 143
 
147 144
 describe "should have_exactly(n).items" do
148  
-  include HaveSpecHelper
149 145
 
150 146
   it "passes if target has a collection of items with n members" do
151 147
     owner = create_collection_owner_with(3)
@@ -181,7 +177,6 @@ def items
181 177
 end
182 178
 
183 179
 describe "should have_at_least(n).items" do
184  
-  include HaveSpecHelper
185 180
 
186 181
   it "passes if target has a collection of items with n members" do
187 182
     owner = create_collection_owner_with(3)
@@ -235,8 +230,6 @@ def items
235 230
 end
236 231
 
237 232
 describe "should have_at_most(n).items" do
238  
-  include HaveSpecHelper
239  
-
240 233
   it "passes if target has a collection of items with n members" do
241 234
     owner = create_collection_owner_with(3)
242 235
     owner.should have_at_most(3).items_in_collection_with_length_method
@@ -330,8 +323,6 @@ def items
330 323
 end
331 324
 
332 325
 describe RSpec::Matchers::Have, "for a collection owner that implements #send" do
333  
-  include HaveSpecHelper
334  
-  
335 326
   before(:each) do
336 327
     @collection = Object.new
337 328
     def @collection.floozles; [1,2] end
@@ -406,3 +397,5 @@ module Matchers
406 397
     end
407 398
   end
408 399
 end
  400
+
  401
+end

Showing you all comments on commits in this comparison.

Justin Ko

Documentation doesn't get any better than this!

Something went wrong with that request. Please try again.