rspec 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.rdoc +31 -1
- data/Manifest.txt +14 -12
- data/Rakefile +1 -1
- data/Upgrade.rdoc +43 -3
- data/examples/failing/failing_implicit_docstrings_example.rb +5 -5
- data/examples/passing/implicit_docstrings_example.rb +3 -3
- data/features/before_and_after_blocks/before_and_after_blocks.feature +20 -21
- data/features/example_groups/example_group_with_should_methods.feature +20 -8
- data/features/example_groups/implicit_docstrings.feature +36 -20
- data/features/example_groups/nested_groups.feature +25 -10
- data/features/extensions/custom_example_group.feature +19 -0
- data/features/formatters/custom_formatter.feature +30 -0
- data/features/heckle/heckle.feature +7 -7
- data/features/interop/examples_and_tests_together.feature +63 -14
- data/features/interop/rspec_output.feature +25 -0
- data/features/interop/test_but_not_test_unit.feature +19 -7
- data/features/interop/test_case_with_should_methods.feature +37 -8
- data/features/matchers/{create_matcher.feature → define_matcher.feature} +54 -30
- data/features/matchers/{create_matcher_outside_rspec.feature → define_matcher_outside_rspec.feature} +7 -7
- data/features/mock_framework_integration/use_flexmock.feature +3 -3
- data/features/mock_framework_integration/use_mocha.feature +3 -3
- data/features/mock_framework_integration/use_rr.feature +3 -3
- data/features/mocks/mix_stubs_and_mocks.feature +4 -4
- data/features/pending/pending_examples.feature +18 -18
- data/features/runner/specify_line_number.feature +32 -0
- data/features/step_definitions/running_rspec_steps.rb +41 -0
- data/features/subject/explicit_subject.feature +4 -4
- data/features/subject/implicit_subject.feature +4 -4
- data/features/support/env.rb +64 -11
- data/features/support/matchers/smart_match.rb +10 -35
- data/lib/spec.rb +1 -0
- data/lib/spec/deprecation.rb +40 -0
- data/lib/spec/dsl/main.rb +10 -5
- data/lib/spec/example.rb +1 -27
- data/lib/spec/example/args_and_options.rb +27 -0
- data/lib/spec/example/before_and_after_hooks.rb +30 -21
- data/lib/spec/example/errors.rb +8 -18
- data/lib/spec/example/example_group_factory.rb +0 -4
- data/lib/spec/example/example_group_methods.rb +27 -41
- data/lib/spec/example/example_group_proxy.rb +12 -22
- data/lib/spec/example/example_methods.rb +8 -18
- data/lib/spec/example/example_proxy.rb +4 -4
- data/lib/spec/example/pending.rb +3 -4
- data/lib/spec/example/predicate_matchers.rb +1 -1
- data/lib/spec/example/subject.rb +2 -0
- data/lib/spec/expectations.rb +1 -26
- data/lib/spec/expectations/extensions.rb +1 -1
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/handler.rb +21 -10
- data/lib/spec/matchers/be.rb +3 -3
- data/lib/spec/matchers/be_close.rb +17 -21
- data/lib/spec/matchers/be_instance_of.rb +7 -26
- data/lib/spec/matchers/be_kind_of.rb +7 -26
- data/lib/spec/matchers/dsl.rb +9 -4
- data/lib/spec/matchers/eql.rb +24 -25
- data/lib/spec/matchers/equal.rb +25 -25
- data/lib/spec/matchers/exist.rb +5 -21
- data/lib/spec/matchers/include.rb +22 -44
- data/lib/spec/matchers/match.rb +5 -25
- data/lib/spec/matchers/match_array.rb +8 -4
- data/lib/spec/matchers/matcher.rb +13 -2
- data/lib/spec/matchers/pretty.rb +1 -0
- data/lib/spec/matchers/simple_matcher.rb +2 -2
- data/lib/spec/mocks/mock.rb +10 -10
- data/lib/spec/mocks/spec_methods.rb +1 -1
- data/lib/spec/runner/configuration.rb +53 -42
- data/lib/spec/{expectations → runner}/differs/default.rb +0 -0
- data/lib/spec/{expectations → runner}/differs/load-diff-lcs.rb +0 -0
- data/lib/spec/runner/drb_command_line.rb +1 -1
- data/lib/spec/runner/example_group_runner.rb +0 -12
- data/lib/spec/runner/formatter/base_formatter.rb +77 -30
- data/lib/spec/runner/formatter/base_text_formatter.rb +19 -24
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +1 -1
- data/lib/spec/runner/formatter/html_formatter.rb +4 -6
- data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
- data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +0 -4
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +4 -5
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +2 -2
- data/lib/spec/runner/option_parser.rb +14 -7
- data/lib/spec/runner/options.rb +17 -7
- data/lib/spec/runner/reporter.rb +69 -64
- data/lib/spec/version.rb +1 -1
- data/spec/spec/dsl/main_spec.rb +7 -0
- data/spec/spec/example/example_group_methods_spec.rb +16 -32
- data/spec/spec/example/example_group_proxy_spec.rb +25 -5
- data/spec/spec/example/example_group_spec.rb +2 -2
- data/spec/spec/example/example_methods_spec.rb +19 -24
- data/spec/spec/example/example_proxy_spec.rb +11 -1
- data/spec/spec/example/pending_module_spec.rb +2 -108
- data/spec/spec/example/predicate_matcher_spec.rb +23 -3
- data/spec/spec/expectations/extensions/object_spec.rb +9 -9
- data/spec/spec/expectations/fail_with_spec.rb +13 -13
- data/spec/spec/expectations/handler_spec.rb +44 -15
- data/spec/spec/matchers/be_close_spec.rb +9 -0
- data/spec/spec/matchers/be_instance_of_spec.rb +6 -4
- data/spec/spec/matchers/be_kind_of_spec.rb +5 -3
- data/spec/spec/matchers/be_spec.rb +1 -5
- data/spec/spec/matchers/compatibility_spec.rb +1 -1
- data/spec/spec/matchers/dsl_spec.rb +10 -1
- data/spec/spec/matchers/eql_spec.rb +8 -4
- data/spec/spec/matchers/equal_spec.rb +8 -4
- data/spec/spec/matchers/exist_spec.rb +1 -1
- data/spec/spec/matchers/include_spec.rb +1 -1
- data/spec/spec/matchers/match_array_spec.rb +26 -1
- data/spec/spec/matchers/match_spec.rb +2 -2
- data/spec/spec/matchers/matcher_methods_spec.rb +0 -3
- data/spec/spec/matchers/matcher_spec.rb +53 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
- data/spec/spec/mocks/mock_spec.rb +6 -0
- data/spec/spec/runner/configuration_spec.rb +11 -1
- data/spec/spec/runner/drb_command_line_spec.rb +13 -1
- data/spec/spec/runner/example_group_runner_spec.rb +0 -7
- data/spec/spec/runner/formatter/base_formatter_spec.rb +19 -12
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +4 -4
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +31 -34
- data/spec/spec/runner/formatter/html_formatter_spec.rb +20 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +20 -20
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +22 -3
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +24 -3
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +25 -28
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +2 -2
- data/spec/spec/runner/option_parser_spec.rb +108 -40
- data/spec/spec/runner/reporter_spec.rb +16 -17
- data/spec/spec_helper.rb +4 -1
- metadata +20 -18
- data/features/example_groups/output.feature +0 -20
- data/features/step_definitions/running_rspec.rb +0 -69
- data/lib/spec/expectations/extensions/object.rb +0 -63
- data/resources/spec/example_group_with_should_methods.rb +0 -12
- data/resources/spec/simple_spec.rb +0 -8
- data/resources/test/spec_and_test_together.rb +0 -56
- data/resources/test/spec_including_test_but_not_unit.rb +0 -11
- data/resources/test/test_case_with_should_methods.rb +0 -29
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            require File.dirname(__FILE__) + '/../../spec_helper'
         | 
| 1 | 
            +
              require File.dirname(__FILE__) + '/../../spec_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Spec
         | 
| 4 4 | 
             
              module Example
         | 
| @@ -47,6 +47,14 @@ module Spec | |
| 47 47 | 
             
                            @child_example_group.location.should =~ /#{__FILE__}:#{__LINE__ - 15}/
         | 
| 48 48 | 
             
                          end
         | 
| 49 49 | 
             
                        end
         | 
| 50 | 
            +
                        
         | 
| 51 | 
            +
                        describe "when creating an example group with no description" do
         | 
| 52 | 
            +
                          it "raises an ArgumentError" do
         | 
| 53 | 
            +
                            lambda do
         | 
| 54 | 
            +
                              Class.new(ExampleGroupDouble).describe
         | 
| 55 | 
            +
                            end.should raise_error(Spec::Example::NoDescriptionError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
         | 
| 56 | 
            +
                          end
         | 
| 57 | 
            +
                        end
         | 
| 50 58 |  | 
| 51 59 | 
             
                        describe "when creating a SharedExampleGroup" do
         | 
| 52 60 | 
             
                          before(:each) do
         | 
| @@ -79,6 +87,7 @@ module Spec | |
| 79 87 | 
             
                            before(:all) do
         | 
| 80 88 | 
             
                              @example_group = Class.new(ExampleGroupDouble).describe("bar")
         | 
| 81 89 | 
             
                              @example_proxy = @example_group.__send__(method, "foo", {:this => :that}) {}
         | 
| 90 | 
            +
                              @location = "#{__FILE__}:#{__LINE__ - 1}"
         | 
| 82 91 | 
             
                            end
         | 
| 83 92 |  | 
| 84 93 | 
             
                            specify "with a description" do
         | 
| @@ -89,12 +98,13 @@ module Spec | |
| 89 98 | 
             
                              @example_proxy.options.should == {:this => :that}
         | 
| 90 99 | 
             
                            end
         | 
| 91 100 |  | 
| 92 | 
            -
                            specify "with a default backtrace" do
         | 
| 93 | 
            -
                               | 
| 101 | 
            +
                            specify "with a default backtrace (DEPRECATED)" do
         | 
| 102 | 
            +
                              Spec.stub!(:deprecate)
         | 
| 103 | 
            +
                              @example_proxy.backtrace.should =~ /#{@location}/
         | 
| 94 104 | 
             
                            end
         | 
| 95 105 |  | 
| 96 106 | 
             
                            specify "with a default location" do
         | 
| 97 | 
            -
                              @example_proxy.location.should =~ /#{ | 
| 107 | 
            +
                              @example_proxy.location.should =~ /#{@location}/
         | 
| 98 108 | 
             
                            end
         | 
| 99 109 | 
             
                          end
         | 
| 100 110 | 
             
                        end
         | 
| @@ -106,7 +116,8 @@ module Spec | |
| 106 116 | 
             
                              @example_proxy = @example_group.__send__(method, "foo", {:this => :that}, "the location") {}
         | 
| 107 117 | 
             
                            end
         | 
| 108 118 |  | 
| 109 | 
            -
                            specify "with the supplied location as #backtrace" do
         | 
| 119 | 
            +
                            specify "with the supplied location as #backtrace (DEPRECATED)" do
         | 
| 120 | 
            +
                              Spec.stub!(:deprecate)
         | 
| 110 121 | 
             
                              @example_proxy.backtrace.should == "the location"
         | 
| 111 122 | 
             
                            end
         | 
| 112 123 |  | 
| @@ -593,33 +604,6 @@ module Spec | |
| 593 604 | 
             
                      end
         | 
| 594 605 | 
             
                    end
         | 
| 595 606 |  | 
| 596 | 
            -
                    describe "#backtrace" do        
         | 
| 597 | 
            -
                      it "returns the backtrace from where the example group was defined" do
         | 
| 598 | 
            -
                        example_group = Class.new(ExampleGroupDouble).describe("foo") do
         | 
| 599 | 
            -
                          example "bar" do; end
         | 
| 600 | 
            -
                        end
         | 
| 601 | 
            -
                        example_group.backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-3}")
         | 
| 602 | 
            -
                      end
         | 
| 603 | 
            -
                    end
         | 
| 604 | 
            -
             | 
| 605 | 
            -
                    describe "#example_group_backtrace (deprecated)" do        
         | 
| 606 | 
            -
                      before(:each) do
         | 
| 607 | 
            -
                        Kernel.stub!(:warn)
         | 
| 608 | 
            -
                      end
         | 
| 609 | 
            -
                      it "sends a deprecation warning" do
         | 
| 610 | 
            -
                        example_group = Class.new(ExampleGroupDouble) {}
         | 
| 611 | 
            -
                        Kernel.should_receive(:warn).with(/#example_group_backtrace.*deprecated.*#backtrace instead/m)
         | 
| 612 | 
            -
                        example_group.example_group_backtrace
         | 
| 613 | 
            -
                      end
         | 
| 614 | 
            -
             | 
| 615 | 
            -
                      it "returns the backtrace from where the example group was defined" do
         | 
| 616 | 
            -
                        example_group = Class.new(ExampleGroupDouble).describe("foo") do
         | 
| 617 | 
            -
                          example "bar" do; end
         | 
| 618 | 
            -
                        end
         | 
| 619 | 
            -
                        example_group.example_group_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-3}")
         | 
| 620 | 
            -
                      end
         | 
| 621 | 
            -
                    end
         | 
| 622 | 
            -
                    
         | 
| 623 607 | 
             
                    describe "#before" do
         | 
| 624 608 | 
             
                      it "stores before(:each) blocks" do
         | 
| 625 609 | 
             
                        example_group = Class.new(ExampleGroupDouble) {}
         | 
| @@ -26,14 +26,24 @@ module Spec | |
| 26 26 | 
             
                    end
         | 
| 27 27 | 
             
                  end
         | 
| 28 28 |  | 
| 29 | 
            -
                  describe "#filtered_description" do
         | 
| 29 | 
            +
                  describe "#filtered_description (DEPRECATED)" do
         | 
| 30 | 
            +
                    before(:each) do
         | 
| 31 | 
            +
                      Spec.stub!(:deprecate)
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                    
         | 
| 34 | 
            +
                    it "is deprecated" do
         | 
| 35 | 
            +
                      Spec.should_receive(:deprecate)
         | 
| 36 | 
            +
                      proxy.filtered_description(/(ignore)/)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                    
         | 
| 30 39 | 
             
                    it "builds the description from the group's nested_descriptions" do
         | 
| 31 40 | 
             
                      group.stub!(:nested_descriptions => ["ignore","the","description"])
         | 
| 32 | 
            -
                      proxy.filtered_description(/ignore/).should == "the description"
         | 
| 41 | 
            +
                      proxy.filtered_description(/(ignore)/).should == "the description"
         | 
| 33 42 | 
             
                    end
         | 
| 43 | 
            +
                    
         | 
| 34 44 | 
             
                    it "filters out description parts that match the supplied regexp" do
         | 
| 35 | 
            -
                      group.stub!(:nested_descriptions => ["ignore  | 
| 36 | 
            -
                      proxy.filtered_description(/ignore/).should == "the description"
         | 
| 45 | 
            +
                      group.stub!(:nested_descriptions => ["ignore the","description"])
         | 
| 46 | 
            +
                      proxy.filtered_description(/(ignore )/).should == "the description"
         | 
| 37 47 | 
             
                    end
         | 
| 38 48 | 
             
                  end
         | 
| 39 49 |  | 
| @@ -45,10 +55,20 @@ module Spec | |
| 45 55 | 
             
                  end
         | 
| 46 56 |  | 
| 47 57 | 
             
                  describe "#backtrace (deprecated - use #location)" do
         | 
| 58 | 
            +
                    before(:each) do
         | 
| 59 | 
            +
                      Spec.stub!(:deprecate)
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
             | 
| 48 62 | 
             
                    it "provides the location of the declaration of this group" do
         | 
| 49 | 
            -
                      group.stub!(: | 
| 63 | 
            +
                      group.stub!(:location => "path/to/location:37")
         | 
| 50 64 | 
             
                      proxy.backtrace.should == "path/to/location:37"
         | 
| 51 65 | 
             
                    end
         | 
| 66 | 
            +
                    
         | 
| 67 | 
            +
                    it "warns deprecation" do
         | 
| 68 | 
            +
                      Spec.should_receive(:deprecate)
         | 
| 69 | 
            +
                      group.stub!(:location => "path/to/location:37")
         | 
| 70 | 
            +
                      proxy.backtrace
         | 
| 71 | 
            +
                    end
         | 
| 52 72 | 
             
                  end
         | 
| 53 73 |  | 
| 54 74 | 
             
                  describe "#location" do
         | 
| @@ -278,9 +278,9 @@ module Spec | |
| 278 278 | 
             
                        ExampleGroupFactory.reset
         | 
| 279 279 | 
             
                      end
         | 
| 280 280 |  | 
| 281 | 
            -
                      it "should send reporter  | 
| 281 | 
            +
                      it "should send reporter example_group_started" do
         | 
| 282 | 
            +
                        reporter.should_receive(:example_group_started)
         | 
| 282 283 | 
             
                        example_group.run(options)
         | 
| 283 | 
            -
                        reporter.example_groups.should == [example_group]
         | 
| 284 284 | 
             
                      end
         | 
| 285 285 |  | 
| 286 286 | 
             
                      it "should run example on run" do
         | 
| @@ -32,30 +32,6 @@ module Spec | |
| 32 32 | 
             
                    end
         | 
| 33 33 | 
             
                  end
         | 
| 34 34 |  | 
| 35 | 
            -
                  describe "#backtrace" do        
         | 
| 36 | 
            -
                    it "returns the backtrace from where the example was defined" do
         | 
| 37 | 
            -
                      example = ExampleGroup.dup.new ExampleProxy.new
         | 
| 38 | 
            -
                      example.backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
                  end
         | 
| 41 | 
            -
                  
         | 
| 42 | 
            -
                  describe "#implementation_backtrace (deprecated)" do
         | 
| 43 | 
            -
                    before(:each) do
         | 
| 44 | 
            -
                      Kernel.stub!(:warn)
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    it "sends a deprecation warning" do
         | 
| 48 | 
            -
                      Kernel.should_receive(:warn).with(/#implementation_backtrace.*deprecated.*#backtrace instead/m)
         | 
| 49 | 
            -
                      example = ExampleGroup.dup.new ExampleProxy.new
         | 
| 50 | 
            -
                      example.implementation_backtrace
         | 
| 51 | 
            -
                    end
         | 
| 52 | 
            -
                    
         | 
| 53 | 
            -
                    it "returns the backtrace from where the example was defined" do
         | 
| 54 | 
            -
                      example = ExampleGroup.dup.new ExampleProxy.new
         | 
| 55 | 
            -
                      example.implementation_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
         | 
| 56 | 
            -
                    end
         | 
| 57 | 
            -
                  end
         | 
| 58 | 
            -
             | 
| 59 35 | 
             
                  describe "#should" do
         | 
| 60 36 | 
             
                    before(:each) do
         | 
| 61 37 | 
             
                      @example_group = Class.new(ExampleGroupDouble)
         | 
| @@ -122,6 +98,25 @@ module Spec | |
| 122 98 | 
             
                    example.options[:this].should == 'that'
         | 
| 123 99 | 
             
                  end
         | 
| 124 100 | 
             
                end
         | 
| 101 | 
            +
                
         | 
| 102 | 
            +
                describe "#description" do
         | 
| 103 | 
            +
                  it "returns the supplied description" do
         | 
| 104 | 
            +
                    example = ExampleGroupDouble.new ExampleProxy.new("name") do; end
         | 
| 105 | 
            +
                    example.description.should == "name"
         | 
| 106 | 
            +
                  end
         | 
| 107 | 
            +
                  it "returns the generated description if there is no description supplied" do
         | 
| 108 | 
            +
                    example = ExampleGroupDouble.new ExampleProxy.new do; end
         | 
| 109 | 
            +
                    Spec::Matchers.stub!(:generated_description).and_return('this message')
         | 
| 110 | 
            +
                    example.description.should == "this message"
         | 
| 111 | 
            +
                  end
         | 
| 112 | 
            +
                  it "raises if there is no supplied or generated description" do
         | 
| 113 | 
            +
                    example = ExampleGroupDouble.new ExampleProxy.new(nil, {}, "this backtrace") do; end
         | 
| 114 | 
            +
                    Spec::Matchers.stub!(:generated_description).and_return(nil)
         | 
| 115 | 
            +
                    lambda do
         | 
| 116 | 
            +
                      example.description
         | 
| 117 | 
            +
                    end.should raise_error(/No description supplied for example declared on this backtrace/)
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                end
         | 
| 125 120 |  | 
| 126 121 | 
             
              end
         | 
| 127 122 | 
             
            end
         | 
| @@ -27,7 +27,17 @@ module Spec | |
| 27 27 | 
             
                    end
         | 
| 28 28 | 
             
                  end
         | 
| 29 29 |  | 
| 30 | 
            -
                  describe "#backtrace ( | 
| 30 | 
            +
                  describe "#backtrace (DEPRECATED - use #location)" do
         | 
| 31 | 
            +
                    before(:each) do
         | 
| 32 | 
            +
                      Spec.stub!(:deprecate)
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
                    
         | 
| 35 | 
            +
                    it "is deprecated" do
         | 
| 36 | 
            +
                      Spec.should_receive(:deprecate)
         | 
| 37 | 
            +
                      proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
         | 
| 38 | 
            +
                      proxy.backtrace
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                    
         | 
| 31 41 | 
             
                    it "provides the location of the declaration of this group" do
         | 
| 32 42 | 
             
                      proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
         | 
| 33 43 | 
             
                      proxy.backtrace.should             == "path/to/location:37"
         | 
| @@ -8,17 +8,6 @@ module Spec | |
| 8 8 | 
             
                        pending "TODO"
         | 
| 9 9 | 
             
                      }.should raise_error(ExamplePendingError, /TODO/)
         | 
| 10 10 | 
             
                    end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                    it "reports the file and line number" do
         | 
| 13 | 
            -
                      file = __FILE__
         | 
| 14 | 
            -
                      line_number = __LINE__ + 2
         | 
| 15 | 
            -
                      begin
         | 
| 16 | 
            -
                        pending("TODO")
         | 
| 17 | 
            -
                      rescue => error
         | 
| 18 | 
            -
                      ensure
         | 
| 19 | 
            -
                        error.pending_caller.should =~ /^#{file}:#{line_number}/
         | 
| 20 | 
            -
                      end
         | 
| 21 | 
            -
                    end
         | 
| 22 11 | 
             
                  end
         | 
| 23 12 |  | 
| 24 13 | 
             
                  context "when the supplied block fails" do
         | 
| @@ -29,19 +18,6 @@ module Spec | |
| 29 18 | 
             
                        end
         | 
| 30 19 | 
             
                      }.should raise_error(ExamplePendingError, /TODO/)
         | 
| 31 20 | 
             
                    end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    it "reports the file and line number" do
         | 
| 34 | 
            -
                      file = __FILE__
         | 
| 35 | 
            -
                      line_number = __LINE__ + 2
         | 
| 36 | 
            -
                      begin
         | 
| 37 | 
            -
                        pending do
         | 
| 38 | 
            -
                          raise
         | 
| 39 | 
            -
                        end
         | 
| 40 | 
            -
                      rescue => error
         | 
| 41 | 
            -
                      ensure
         | 
| 42 | 
            -
                        error.pending_caller.should =~ /#{file}:#{line_number}/
         | 
| 43 | 
            -
                      end
         | 
| 44 | 
            -
                    end
         | 
| 45 21 | 
             
                  end
         | 
| 46 22 |  | 
| 47 23 | 
             
                  context "when the supplied block fails with a mock" do
         | 
| @@ -54,21 +30,6 @@ module Spec | |
| 54 30 | 
             
                        end
         | 
| 55 31 | 
             
                      }.should raise_error(ExamplePendingError, /TODO/)
         | 
| 56 32 | 
             
                    end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                    it "reports the file and line number" do
         | 
| 59 | 
            -
                      file = __FILE__
         | 
| 60 | 
            -
                      line_number = __LINE__ + 2
         | 
| 61 | 
            -
                      begin
         | 
| 62 | 
            -
                        pending do
         | 
| 63 | 
            -
                          m = mock("thing")
         | 
| 64 | 
            -
                          m.should_receive(:foo)
         | 
| 65 | 
            -
                          m.rspec_verify
         | 
| 66 | 
            -
                        end
         | 
| 67 | 
            -
                      rescue => error
         | 
| 68 | 
            -
                      ensure
         | 
| 69 | 
            -
                        error.pending_caller.should =~ /#{file}:#{line_number}/
         | 
| 70 | 
            -
                      end
         | 
| 71 | 
            -
                    end
         | 
| 72 33 | 
             
                  end
         | 
| 73 34 |  | 
| 74 35 | 
             
                  context "when the supplied block passes" do
         | 
| @@ -83,81 +44,14 @@ module Spec | |
| 83 44 | 
             
                end
         | 
| 84 45 |  | 
| 85 46 | 
             
                describe ExamplePendingError do
         | 
| 86 | 
            -
                  it "should have the caller (from two calls from initialization)" do
         | 
| 87 | 
            -
                    two_calls_ago = caller[0]
         | 
| 88 | 
            -
                    ExamplePendingError.new("a message").pending_caller.should == two_calls_ago
         | 
| 89 | 
            -
                  end
         | 
| 90 | 
            -
                  
         | 
| 91 | 
            -
                  it "should keep the trace information from initialization" do
         | 
| 92 | 
            -
                    two_calls_ago = caller[0]
         | 
| 93 | 
            -
                    obj = ExamplePendingError.new("a message")
         | 
| 94 | 
            -
                    obj.pending_caller
         | 
| 95 | 
            -
                    def another_caller(obj)
         | 
| 96 | 
            -
                      obj.pending_caller
         | 
| 97 | 
            -
                    end
         | 
| 98 | 
            -
                    
         | 
| 99 | 
            -
                    another_caller(obj).should == two_calls_ago
         | 
| 100 | 
            -
                  end
         | 
| 101 | 
            -
                  
         | 
| 102 47 | 
             
                  it "should have the message provided" do
         | 
| 103 48 | 
             
                    ExamplePendingError.new("a message").message.should == "a message"
         | 
| 104 49 | 
             
                  end
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                  it "should use a 'ExamplePendingError' as it's default message" do
         | 
| 107 | 
            -
                    ExamplePendingError.new.message.should == "Spec::Example::ExamplePendingError"
         | 
| 108 | 
            -
                  end
         | 
| 109 50 | 
             
                end
         | 
| 110 51 |  | 
| 111 52 | 
             
                describe NotYetImplementedError do
         | 
| 112 | 
            -
                   | 
| 113 | 
            -
                     | 
| 114 | 
            -
                  end
         | 
| 115 | 
            -
                  
         | 
| 116 | 
            -
                  it "should have the root rspec path" do
         | 
| 117 | 
            -
                    NotYetImplementedError::RSPEC_ROOT_LIB.should == rspec_root
         | 
| 118 | 
            -
                  end
         | 
| 119 | 
            -
                  
         | 
| 120 | 
            -
                  it "should always have the error 'Not Yet Implemented'" do
         | 
| 121 | 
            -
                    NotYetImplementedError.new([]).message.should == "Not Yet Implemented"
         | 
| 122 | 
            -
                  end
         | 
| 123 | 
            -
                  
         | 
| 124 | 
            -
                  describe "pending_caller" do
         | 
| 125 | 
            -
                    it "should select an element out of the backtrace" do
         | 
| 126 | 
            -
                      error = NotYetImplementedError.new(["foo/bar.rb:18"])
         | 
| 127 | 
            -
                      
         | 
| 128 | 
            -
                      error.pending_caller.should == "foo/bar.rb:18"
         | 
| 129 | 
            -
                    end
         | 
| 130 | 
            -
                    
         | 
| 131 | 
            -
                    it "should actually report the element from the backtrace" do
         | 
| 132 | 
            -
                      error = NotYetImplementedError.new(["bar.rb:18"])
         | 
| 133 | 
            -
                      
         | 
| 134 | 
            -
                      error.pending_caller.should == "bar.rb:18"
         | 
| 135 | 
            -
                    end
         | 
| 136 | 
            -
                    
         | 
| 137 | 
            -
                    it "should not use an element with the rspec root path" do
         | 
| 138 | 
            -
                      error = NotYetImplementedError.new(["#{rspec_root}:8"])
         | 
| 139 | 
            -
                      
         | 
| 140 | 
            -
                      error.pending_caller.should be_nil
         | 
| 141 | 
            -
                    end
         | 
| 142 | 
            -
                    
         | 
| 143 | 
            -
                    it "should select the first line in the backtrace which isn't in the rspec root" do
         | 
| 144 | 
            -
                      error = NotYetImplementedError.new([
         | 
| 145 | 
            -
                        "#{rspec_root}/foo.rb:2",
         | 
| 146 | 
            -
                        "#{rspec_root}/foo/bar.rb:18",
         | 
| 147 | 
            -
                        "path1.rb:22",
         | 
| 148 | 
            -
                        "path2.rb:33"
         | 
| 149 | 
            -
                      ])
         | 
| 150 | 
            -
                      
         | 
| 151 | 
            -
                      error.pending_caller.should == "path1.rb:22"
         | 
| 152 | 
            -
                    end
         | 
| 153 | 
            -
                    
         | 
| 154 | 
            -
                    it "should cache the caller" do
         | 
| 155 | 
            -
                      backtrace = mock('backtrace')
         | 
| 156 | 
            -
                      backtrace.should_receive(:detect).once
         | 
| 157 | 
            -
                      
         | 
| 158 | 
            -
                      error = NotYetImplementedError.new(backtrace)
         | 
| 159 | 
            -
                      error.pending_caller.should == error.pending_caller
         | 
| 160 | 
            -
                    end
         | 
| 53 | 
            +
                  it "should have the message 'Not Yet Implemented'" do
         | 
| 54 | 
            +
                    NotYetImplementedError.new.message.should == "Not Yet Implemented"
         | 
| 161 55 | 
             
                  end
         | 
| 162 56 | 
             
                end
         | 
| 163 57 | 
             
              end
         | 
| @@ -9,12 +9,32 @@ module Spec | |
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 11 | 
             
                describe "predicate_matcher[method_on_object] = matcher_method" do
         | 
| 12 | 
            -
                   | 
| 12 | 
            +
                  before(:each) do
         | 
| 13 | 
            +
                    Spec.stub!(:deprecate)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                  
         | 
| 16 | 
            +
                  it "is deprecated" do
         | 
| 17 | 
            +
                    Spec.should_receive(:deprecate)
         | 
| 18 | 
            +
                    group = ExampleGroupDouble.describe("foo") do
         | 
| 19 | 
            +
                      predicate_matchers[:swim] = :can_swim?
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                    group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 13 24 | 
             
                  it "should match matcher_method if method_on_object returns true" do
         | 
| 14 | 
            -
                     | 
| 25 | 
            +
                    group = ExampleGroupDouble.describe(Fish) do
         | 
| 26 | 
            +
                      predicate_matchers[:swim] = :can_swim?
         | 
| 27 | 
            +
                      it { should swim(100) }
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                    group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
         | 
| 15 30 | 
             
                  end
         | 
| 31 | 
            +
             | 
| 16 32 | 
             
                  it "should not match matcher_method if method_on_object returns false" do
         | 
| 17 | 
            -
                     | 
| 33 | 
            +
                    group = ExampleGroupDouble.describe(Fish) do
         | 
| 34 | 
            +
                      predicate_matchers[:swim] = :can_swim?
         | 
| 35 | 
            +
                      it { should_not swim(1000) }
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                    group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
         | 
| 18 38 | 
             
                  end
         | 
| 19 39 | 
             
                end
         | 
| 20 40 | 
             
              end
         | 
| @@ -5,17 +5,17 @@ describe Object, "#should" do | |
| 5 5 | 
             
                @target = "target"
         | 
| 6 6 | 
             
                @matcher = mock("matcher")
         | 
| 7 7 | 
             
                @matcher.stub!(:matches?).and_return(true)
         | 
| 8 | 
            -
                @matcher.stub!(: | 
| 8 | 
            +
                @matcher.stub!(:failure_message_for_should)
         | 
| 9 9 | 
             
              end
         | 
| 10 10 |  | 
| 11 | 
            -
              it " | 
| 11 | 
            +
              it "accepts and interacts with a matcher" do
         | 
| 12 12 | 
             
                @matcher.should_receive(:matches?).with(@target).and_return(true)    
         | 
| 13 13 | 
             
                @target.should @matcher
         | 
| 14 14 | 
             
              end
         | 
| 15 15 |  | 
| 16 | 
            -
              it " | 
| 16 | 
            +
              it "asks for a failure_message_for_should when matches? returns false" do
         | 
| 17 17 | 
             
                @matcher.should_receive(:matches?).with(@target).and_return(false)
         | 
| 18 | 
            -
                @matcher.should_receive(: | 
| 18 | 
            +
                @matcher.should_receive(:failure_message_for_should).and_return("the failure message")
         | 
| 19 19 | 
             
                lambda {
         | 
| 20 20 | 
             
                  @target.should @matcher
         | 
| 21 21 | 
             
                }.should fail_with("the failure message")
         | 
| @@ -28,18 +28,18 @@ describe Object, "#should_not" do | |
| 28 28 | 
             
                @matcher = mock("matcher")
         | 
| 29 29 | 
             
              end
         | 
| 30 30 |  | 
| 31 | 
            -
              it " | 
| 31 | 
            +
              it "accepts and interacts with a matcher" do
         | 
| 32 32 | 
             
                @matcher.should_receive(:matches?).with(@target).and_return(false)
         | 
| 33 | 
            -
                @matcher.stub!(: | 
| 33 | 
            +
                @matcher.stub!(:failure_message_for_should_not)
         | 
| 34 34 |  | 
| 35 35 | 
             
                @target.should_not @matcher
         | 
| 36 36 | 
             
              end
         | 
| 37 37 |  | 
| 38 | 
            -
              it " | 
| 38 | 
            +
              it "asks for a failure_message_for_should_not when matches? returns true" do
         | 
| 39 39 | 
             
                @matcher.should_receive(:matches?).with(@target).and_return(true)
         | 
| 40 | 
            -
                @matcher.should_receive(: | 
| 40 | 
            +
                @matcher.should_receive(:failure_message_for_should_not).and_return("the failure message for should not")
         | 
| 41 41 | 
             
                lambda {
         | 
| 42 42 | 
             
                  @target.should_not @matcher
         | 
| 43 | 
            -
                }.should fail_with("the  | 
| 43 | 
            +
                }.should fail_with("the failure message for should not")
         | 
| 44 44 | 
             
              end
         | 
| 45 45 | 
             
            end
         |