rspec 1.1.11 → 1.1.12
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/.autotest +4 -0
- data/History.txt +55 -0
- data/Manifest.txt +102 -122
- data/README.txt +30 -12
- data/Rakefile +10 -10
- data/TODO.txt +10 -2
- data/{failing_examples → examples/failing}/README.txt +0 -0
- data/{failing_examples → examples/failing}/diffing_spec.rb +0 -0
- data/{failing_examples → examples/failing}/failing_autogenerated_docstrings_example.rb +0 -0
- data/{failing_examples/failure_in_teardown.rb → examples/failing/failure_in_after.rb} +1 -1
- data/{failing_examples/failure_in_setup.rb → examples/failing/failure_in_before.rb} +1 -1
- data/{failing_examples → examples/failing}/mocking_example.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_flexmock.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_mocha.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_rr.rb +0 -0
- data/{failing_examples → examples/failing}/partial_mock_example.rb +0 -0
- data/{failing_examples → examples/failing}/predicate_example.rb +5 -0
- data/{failing_examples → examples/failing}/raising_example.rb +0 -0
- data/{failing_examples → examples/failing}/spec_helper.rb +1 -1
- data/{failing_examples → examples/failing}/syntax_error_example.rb +0 -0
- data/{failing_examples → examples/failing}/team_spec.rb +0 -0
- data/{failing_examples → examples/failing}/timeout_behaviour.rb +0 -0
- data/examples/{pure → passing}/autogenerated_docstrings_example.rb +6 -0
- data/examples/{pure → passing}/before_and_after_example.rb +0 -0
- data/examples/{pure → passing}/behave_as_example.rb +0 -0
- data/examples/{pure → passing}/custom_expectation_matchers.rb +0 -0
- data/examples/{pure → passing}/custom_formatter.rb +1 -1
- data/examples/{pure → passing}/dynamic_spec.rb +2 -2
- data/examples/{pure → passing}/file_accessor.rb +0 -0
- data/examples/{pure → passing}/file_accessor_spec.rb +0 -0
- data/examples/{pure → passing}/greeter_spec.rb +0 -0
- data/examples/{pure → passing}/helper_method_example.rb +0 -0
- data/examples/{pure → passing}/io_processor.rb +0 -0
- data/examples/{pure → passing}/io_processor_spec.rb +0 -0
- data/examples/{pure → passing}/legacy_spec.rb +0 -0
- data/examples/{pure → passing}/mocking_example.rb +0 -0
- data/examples/{pure/multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +1 -3
- data/examples/{pure → passing}/nested_classes_example.rb +0 -0
- data/examples/{pure → passing}/partial_mock_example.rb +0 -0
- data/examples/{pure → passing}/pending_example.rb +0 -0
- data/examples/{pure → passing}/predicate_example.rb +0 -0
- data/examples/{pure → passing}/priority.txt +0 -0
- data/examples/{pure → passing}/shared_example_group_example.rb +0 -0
- data/examples/{pure → passing}/shared_stack_examples.rb +1 -3
- data/examples/passing/simple_matcher_example.rb +31 -0
- data/examples/{pure → passing}/spec_helper.rb +0 -0
- data/examples/{pure → passing}/stack.rb +0 -0
- data/examples/{pure → passing}/stack_spec.rb +3 -2
- data/examples/{pure → passing}/stack_spec_with_nested_example_groups.rb +0 -0
- data/examples/{pure → passing}/stubbing_example.rb +0 -0
- data/examples/{pure → passing}/yielding_example.rb +0 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
- data/{stories/example_groups/autogenerated_docstrings → features/example_groups/autogenerated_docstrings.feature} +5 -5
- data/{stories/example_groups/example_group_with_should_methods → features/example_groups/example_group_with_should_methods.feature} +3 -3
- data/{stories/example_groups/nested_groups → features/example_groups/nested_groups.feature} +4 -4
- data/{stories/example_groups/output → features/example_groups/output.feature} +3 -8
- data/{stories/interop/examples_and_tests_together → features/interop/examples_and_tests_together.feature} +5 -4
- data/features/interop/test_but_not_test_unit.feature +14 -0
- data/{stories/interop/test_case_with_should_methods → features/interop/test_case_with_should_methods.feature} +2 -2
- data/{stories/mock_framework_integration/use_flexmock.story → features/mock_framework_integration/use_flexmock.feature} +1 -1
- data/features/step_definitions/running_rspec.rb +54 -0
- data/features/support/env.rb +26 -0
- data/{stories/resources → features/support}/helpers/cmdline.rb +0 -0
- data/{stories/resources → features/support}/helpers/story_helper.rb +1 -1
- data/{stories/resources → features/support}/matchers/smart_match.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/flexmock.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/mocha.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/rr.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/rspec.rb +2 -2
- data/lib/autotest/rspec.rb +4 -3
- data/lib/spec.rb +2 -27
- data/lib/spec/dsl.rb +1 -0
- data/lib/spec/{extensions → dsl}/main.rb +10 -10
- data/lib/spec/example.rb +175 -1
- data/lib/spec/example/before_and_after_hooks.rb +30 -24
- data/lib/spec/example/example_group.rb +1 -0
- data/lib/spec/example/example_group_factory.rb +26 -9
- data/lib/spec/example/example_group_methods.rb +138 -113
- data/lib/spec/example/example_methods.rb +88 -25
- data/lib/spec/example/shared_example_group.rb +28 -21
- data/lib/spec/expectations.rb +22 -18
- data/lib/spec/expectations/handler.rb +16 -36
- data/lib/spec/interop/test/unit/testcase.rb +19 -17
- data/lib/spec/interop/test/unit/testresult.rb +1 -1
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +1 -1
- data/lib/spec/matchers.rb +7 -28
- data/lib/spec/matchers/be.rb +103 -116
- data/lib/spec/matchers/be_close.rb +6 -22
- data/lib/spec/matchers/eql.rb +7 -25
- data/lib/spec/matchers/equal.rb +7 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +8 -14
- data/lib/spec/matchers/generated_descriptions.rb +48 -0
- data/lib/spec/matchers/has.rb +12 -28
- data/lib/spec/matchers/include.rb +12 -9
- data/lib/spec/matchers/match.rb +8 -27
- data/lib/spec/matchers/match_array.rb +79 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +39 -48
- data/lib/spec/matchers/raise_error.rb +4 -8
- data/lib/spec/matchers/respond_to.rb +33 -8
- data/lib/spec/matchers/throw_symbol.rb +49 -17
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/mocks/argument_constraints.rb +77 -5
- data/lib/spec/mocks/message_expectation.rb +7 -7
- data/lib/spec/mocks/proxy.rb +14 -12
- data/lib/spec/rake/spectask.rb +4 -6
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner.rb +37 -162
- data/lib/spec/runner/backtrace_tweaker.rb +5 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +7 -9
- data/lib/spec/runner/command_line.rb +6 -8
- data/lib/spec/{example → runner}/configuration.rb +46 -47
- data/lib/spec/runner/example_group_runner.rb +15 -4
- data/lib/spec/runner/formatter/base_text_formatter.rb +4 -3
- data/lib/spec/runner/formatter/html_formatter.rb +14 -11
- data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
- data/lib/spec/runner/heckle_runner.rb +58 -56
- data/lib/spec/runner/option_parser.rb +8 -4
- data/lib/spec/runner/options.rb +29 -14
- data/lib/spec/runner/reporter.rb +1 -1
- data/lib/spec/runner/spec_parser.rb +11 -9
- data/lib/spec/story/runner.rb +40 -42
- data/lib/spec/story/runner/story_runner.rb +10 -6
- data/lib/spec/story/world.rb +66 -70
- data/lib/spec/version.rb +4 -2
- data/{rake_tasks → resources/rake}/examples.rake +0 -0
- data/{rake_tasks → resources/rake}/examples_with_rcov.rake +0 -0
- data/{rake_tasks → resources/rake}/failing_examples_with_html.rake +0 -0
- data/{rake_tasks → resources/rake}/verify_rcov.rake +0 -0
- data/{stories/resources → resources}/spec/example_group_with_should_methods.rb +1 -1
- data/{stories/resources → resources}/spec/simple_spec.rb +1 -1
- data/resources/spec/spec_with_flexmock.rb +19 -0
- data/{stories/resources → resources}/test/spec_and_test_together.rb +1 -1
- data/resources/test/spec_including_test_but_not_unit.rb +11 -0
- data/{stories/resources → resources}/test/test_case_with_should_methods.rb +2 -2
- data/rspec.gemspec +16 -6
- data/spec/autotest/autotest_helper.rb +2 -2
- data/spec/autotest/discover_spec.rb +4 -15
- data/spec/autotest/failed_results_re_spec.rb +24 -0
- data/spec/autotest/rspec_spec.rb +2 -38
- data/spec/spec/dsl/main_spec.rb +88 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +6 -2
- data/spec/spec/example/example_group_factory_spec.rb +50 -10
- data/spec/spec/example/example_group_methods_spec.rb +210 -160
- data/spec/spec/example/example_group_spec.rb +44 -52
- data/spec/spec/example/example_matcher_spec.rb +6 -23
- data/spec/spec/example/example_methods_spec.rb +176 -54
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/pending_module_spec.rb +2 -8
- data/spec/spec/example/shared_example_group_spec.rb +56 -80
- data/spec/spec/expectations/extensions/object_spec.rb +0 -50
- data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +1 -5
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +4 -0
- data/spec/spec/matchers/be_close_spec.rb +12 -10
- data/spec/spec/matchers/be_spec.rb +62 -7
- data/spec/spec/matchers/description_generation_spec.rb +19 -0
- data/spec/spec/matchers/eql_spec.rb +7 -6
- data/spec/spec/matchers/equal_spec.rb +7 -6
- data/spec/spec/matchers/handler_spec.rb +4 -43
- data/spec/spec/matchers/has_spec.rb +1 -1
- data/spec/spec/matchers/have_spec.rb +23 -18
- data/spec/spec/matchers/include_spec.rb +24 -0
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +1 -13
- data/spec/spec/matchers/raise_error_spec.rb +18 -0
- data/spec/spec/matchers/respond_to_spec.rb +71 -9
- data/spec/spec/matchers/throw_symbol_spec.rb +85 -43
- data/spec/spec/mocks/bug_report_11545_spec.rb +4 -5
- data/spec/spec/mocks/bug_report_496.rb +11 -9
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +39 -2
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_spec.rb +5 -6
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +2 -2
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +18 -3
- data/spec/spec/mocks/stub_spec.rb +6 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
- data/spec/spec/runner/command_line_spec.rb +4 -4
- data/spec/spec/runner/configuration_spec.rb +301 -0
- data/spec/spec/runner/drb_command_line_spec.rb +4 -4
- data/spec/spec/runner/example_group_runner_spec.rb +33 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +13 -102
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +3 -3
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +6 -6
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +9 -9
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +6 -6
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +10 -10
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +39 -30
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +14 -13
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +7 -17
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +18 -17
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -30
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
- data/spec/spec/runner/heckler_spec.rb +16 -9
- data/spec/spec/runner/option_parser_spec.rb +3 -18
- data/spec/spec/runner/options_spec.rb +27 -8
- data/spec/spec/runner/reporter_spec.rb +5 -5
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
- data/spec/spec/runner/spec_parser_spec.rb +85 -79
- data/spec/spec/spec_spec.rb +21 -0
- data/spec/spec_helper.rb +9 -1
- data/story_server/prototype/javascripts/prototype.js +1 -1
- metadata +119 -131
- data/examples/stories/adder.rb +0 -13
- data/examples/stories/addition +0 -34
- data/examples/stories/addition.rb +0 -9
- data/examples/stories/calculator.rb +0 -65
- data/examples/stories/game-of-life/.loadpath +0 -5
- data/examples/stories/game-of-life/README.txt +0 -21
- data/examples/stories/game-of-life/behaviour/everything.rb +0 -6
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +0 -3
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +0 -35
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +0 -66
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +0 -21
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +0 -21
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +0 -42
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +0 -42
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +0 -17
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +0 -53
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +0 -52
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +0 -6
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +0 -26
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +0 -5
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +0 -3
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +0 -22
- data/examples/stories/game-of-life/life.rb +0 -3
- data/examples/stories/game-of-life/life/game.rb +0 -23
- data/examples/stories/game-of-life/life/grid.rb +0 -43
- data/examples/stories/helper.rb +0 -9
- data/examples/stories/steps/addition_steps.rb +0 -18
- data/lib/spec/adapters.rb +0 -1
- data/lib/spec/adapters/ruby_engine.rb +0 -26
- data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
- data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
- data/lib/spec/extensions.rb +0 -4
- data/lib/spec/extensions/class.rb +0 -24
- data/lib/spec/extensions/metaclass.rb +0 -7
- data/lib/spec/extensions/object.rb +0 -6
- data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
- data/spec/spec/example/configuration_spec.rb +0 -296
- data/spec/spec/example/example_runner_spec.rb +0 -194
- data/spec/spec/extensions/main_spec.rb +0 -71
- data/stories/all.rb +0 -5
- data/stories/configuration/before_blocks.story +0 -21
- data/stories/configuration/stories.rb +0 -7
- data/stories/example_groups/stories.rb +0 -7
- data/stories/helper.rb +0 -6
- data/stories/interop/stories.rb +0 -7
- data/stories/mock_framework_integration/stories.rb +0 -7
- data/stories/pending_stories/README +0 -3
- data/stories/resources/spec/before_blocks_example.rb +0 -32
- data/stories/resources/spec/spec_with_flexmock.rb +0 -18
- data/stories/resources/steps/running_rspec.rb +0 -50
- data/stories/resources/stories/failing_story.rb +0 -15
- data/stories/stories/multiline_steps.story +0 -23
- data/stories/stories/steps/multiline_steps.rb +0 -13
- data/stories/stories/stories.rb +0 -6
| @@ -1,38 +1,40 @@ | |
| 1 1 | 
             
            require File.dirname(__FILE__) + '/../../spec_helper.rb'
         | 
| 2 2 | 
             
            module Spec
         | 
| 3 3 | 
             
              module Matchers
         | 
| 4 | 
            -
                describe  | 
| 4 | 
            +
                describe "be_close" do
         | 
| 5 5 | 
             
                  it "should match when value == target" do
         | 
| 6 | 
            -
                     | 
| 6 | 
            +
                    be_close(5.0, 0.5).matches?(5.0).should be_true
         | 
| 7 7 | 
             
                  end
         | 
| 8 8 | 
             
                  it "should match when value < (target + delta)" do
         | 
| 9 | 
            -
                     | 
| 9 | 
            +
                    be_close(5.0, 0.5).matches?(5.49).should be_true
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                  it "should match when value > (target - delta)" do
         | 
| 12 | 
            -
                     | 
| 12 | 
            +
                    be_close(5.0, 0.5).matches?(4.51).should be_true
         | 
| 13 13 | 
             
                  end
         | 
| 14 14 | 
             
                  it "should not match when value == (target - delta)" do
         | 
| 15 | 
            -
                     | 
| 15 | 
            +
                    be_close(5.0, 0.5).matches?(4.5).should be_false
         | 
| 16 16 | 
             
                  end
         | 
| 17 17 | 
             
                  it "should not match when value < (target - delta)" do
         | 
| 18 | 
            -
                     | 
| 18 | 
            +
                    be_close(5.0, 0.5).matches?(4.49).should be_false
         | 
| 19 19 | 
             
                  end
         | 
| 20 20 | 
             
                  it "should not match when value == (target + delta)" do
         | 
| 21 | 
            -
                     | 
| 21 | 
            +
                    be_close(5.0, 0.5).matches?(5.5).should be_false
         | 
| 22 22 | 
             
                  end
         | 
| 23 23 | 
             
                  it "should not match when value > (target + delta)" do
         | 
| 24 | 
            -
                     | 
| 24 | 
            +
                    be_close(5.0, 0.5).matches?(5.51).should be_false
         | 
| 25 25 | 
             
                  end
         | 
| 26 26 | 
             
                  it "should provide a useful failure message" do
         | 
| 27 27 | 
             
                    #given
         | 
| 28 | 
            -
                      matcher =  | 
| 28 | 
            +
                      matcher = be_close(5.0, 0.5)
         | 
| 29 29 | 
             
                    #when
         | 
| 30 30 | 
             
                      matcher.matches?(5.51)
         | 
| 31 31 | 
             
                    #then
         | 
| 32 32 | 
             
                      matcher.failure_message.should == "expected 5.0 +/- (< 0.5), got 5.51"
         | 
| 33 33 | 
             
                  end
         | 
| 34 34 | 
             
                  it "should describe itself" do
         | 
| 35 | 
            -
                     | 
| 35 | 
            +
                    matcher = be_close(5.0, 0.5)
         | 
| 36 | 
            +
                    matcher.matches?(5.1)
         | 
| 37 | 
            +
                    matcher.description.should == "be close to 5.0 (within +- 0.5)"
         | 
| 36 38 | 
             
                  end
         | 
| 37 39 | 
             
                end
         | 
| 38 40 | 
             
              end
         | 
| @@ -7,7 +7,7 @@ describe "should be_predicate" do | |
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 9 | 
             
              it "should pass when actual returns true for :predicates? (present tense)" do
         | 
| 10 | 
            -
                actual = stub("actual", :exists? => true)
         | 
| 10 | 
            +
                actual = stub("actual", :exists? => true, :exist? => true)
         | 
| 11 11 | 
             
                actual.should be_exist
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| @@ -21,7 +21,23 @@ describe "should be_predicate" do | |
| 21 21 | 
             
              it "should fail when actual does not respond to :predicate?" do
         | 
| 22 22 | 
             
                lambda {
         | 
| 23 23 | 
             
                  Object.new.should be_happy
         | 
| 24 | 
            -
                }.should raise_error(NameError)
         | 
| 24 | 
            +
                }.should raise_error(NameError, /happy\?/)
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
              it "should fail on error other than NameError" do
         | 
| 28 | 
            +
                actual = stub("actual")
         | 
| 29 | 
            +
                actual.should_receive(:foo?).and_raise("aaaah")
         | 
| 30 | 
            +
                lambda {
         | 
| 31 | 
            +
                  actual.should be_foo
         | 
| 32 | 
            +
                }.should raise_error(/aaaah/)
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
              
         | 
| 35 | 
            +
              it "should fail on error other than NameError (with the present tense predicate)" do
         | 
| 36 | 
            +
                actual = Object.new
         | 
| 37 | 
            +
                actual.should_receive(:foos?).and_raise("aaaah")
         | 
| 38 | 
            +
                lambda {
         | 
| 39 | 
            +
                  actual.should be_foo
         | 
| 40 | 
            +
                }.should raise_error(/aaaah/)
         | 
| 25 41 | 
             
              end
         | 
| 26 42 | 
             
            end
         | 
| 27 43 |  | 
| @@ -121,7 +137,7 @@ describe "should be_nil" do | |
| 121 137 | 
             
              it "should fail when actual is not nil" do
         | 
| 122 138 | 
             
                lambda {
         | 
| 123 139 | 
             
                  :not_nil.should be_nil
         | 
| 124 | 
            -
                }.should fail_with("expected nil, got  | 
| 140 | 
            +
                }.should fail_with("expected nil? to return true, got false")
         | 
| 125 141 | 
             
              end
         | 
| 126 142 | 
             
            end
         | 
| 127 143 |  | 
| @@ -133,7 +149,7 @@ describe "should_not be_nil" do | |
| 133 149 | 
             
              it "should fail when actual is nil" do
         | 
| 134 150 | 
             
                lambda {
         | 
| 135 151 | 
             
                  nil.should_not be_nil
         | 
| 136 | 
            -
                }.should fail_with("expected  | 
| 152 | 
            +
                }.should fail_with("expected nil? to return false, got true")
         | 
| 137 153 | 
             
              end
         | 
| 138 154 | 
             
            end
         | 
| 139 155 |  | 
| @@ -195,7 +211,15 @@ describe "should be ===" do | |
| 195 211 | 
             
              end
         | 
| 196 212 |  | 
| 197 213 | 
             
              it "should fail when === operator returns false" do
         | 
| 198 | 
            -
                lambda { Hash.should be === "not a hash" }.should fail_with(%[expected ===  | 
| 214 | 
            +
                lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === not a hash, got Hash])
         | 
| 215 | 
            +
              end
         | 
| 216 | 
            +
            end
         | 
| 217 | 
            +
             | 
| 218 | 
            +
            describe "should_not with operators" do
         | 
| 219 | 
            +
              it "should coach user to stop using operators with should_not" do
         | 
| 220 | 
            +
                lambda {
         | 
| 221 | 
            +
                  5.should_not be < 6
         | 
| 222 | 
            +
                }.should raise_error(/not only FAILED,\nit reads really poorly./m)
         | 
| 199 223 | 
             
              end
         | 
| 200 224 | 
             
            end
         | 
| 201 225 |  | 
| @@ -206,11 +230,11 @@ describe "should be" do | |
| 206 230 | 
             
              end
         | 
| 207 231 |  | 
| 208 232 | 
             
              it "should fail if actual is false" do
         | 
| 209 | 
            -
                lambda {false.should be}.should fail_with("expected  | 
| 233 | 
            +
                lambda {false.should be}.should fail_with("expected true, got false")
         | 
| 210 234 | 
             
              end
         | 
| 211 235 |  | 
| 212 236 | 
             
              it "should fail if actual is nil" do
         | 
| 213 | 
            -
                lambda {nil.should be}.should fail_with("expected  | 
| 237 | 
            +
                lambda {nil.should be}.should fail_with("expected true, got nil")
         | 
| 214 238 | 
             
              end
         | 
| 215 239 | 
             
            end
         | 
| 216 240 |  | 
| @@ -223,6 +247,15 @@ describe "should be(value)" do | |
| 223 247 | 
             
              end
         | 
| 224 248 | 
             
            end
         | 
| 225 249 |  | 
| 250 | 
            +
            describe "'should be' with operator" do
         | 
| 251 | 
            +
              it "should include 'be' in the description" do
         | 
| 252 | 
            +
                (be > 6).description.should =~ /be > 6/
         | 
| 253 | 
            +
                (be >= 6).description.should =~ /be >= 6/
         | 
| 254 | 
            +
                (be <= 6).description.should =~ /be <= 6/
         | 
| 255 | 
            +
                (be < 6).description.should =~ /be < 6/
         | 
| 256 | 
            +
              end
         | 
| 257 | 
            +
            end
         | 
| 258 | 
            +
             | 
| 226 259 |  | 
| 227 260 | 
             
            describe "arbitrary predicate with DelegateClass" do
         | 
| 228 261 | 
             
              it "should access methods defined in the delegating class (LH[#48])" do
         | 
| @@ -246,3 +279,25 @@ describe "arbitrary predicate with DelegateClass" do | |
| 246 279 | 
             
                delegate.should be_large
         | 
| 247 280 | 
             
              end
         | 
| 248 281 | 
             
            end
         | 
| 282 | 
            +
             | 
| 283 | 
            +
            describe "be_a, be_an" do
         | 
| 284 | 
            +
              it "should pass when class matches" do
         | 
| 285 | 
            +
                "foobar".should be_a(String)
         | 
| 286 | 
            +
                [1,2,3].should be_an(Array)
         | 
| 287 | 
            +
              end
         | 
| 288 | 
            +
             | 
| 289 | 
            +
              it "should fail when class does not match" do
         | 
| 290 | 
            +
                "foobar".should_not be_a(Hash)
         | 
| 291 | 
            +
                [1,2,3].should_not be_an(Integer)
         | 
| 292 | 
            +
              end
         | 
| 293 | 
            +
            end
         | 
| 294 | 
            +
             | 
| 295 | 
            +
            describe "be_an_instance_of" do
         | 
| 296 | 
            +
              it "passes when direct class matches" do
         | 
| 297 | 
            +
                5.should be_an_instance_of(Fixnum)
         | 
| 298 | 
            +
              end
         | 
| 299 | 
            +
              
         | 
| 300 | 
            +
              it "fails when class is higher up hierarchy" do
         | 
| 301 | 
            +
                5.should_not be_an_instance_of(Numeric)
         | 
| 302 | 
            +
              end
         | 
| 303 | 
            +
            end
         | 
| @@ -107,6 +107,11 @@ describe "Matchers should be able to generate their own descriptions" do | |
| 107 107 | 
             
                [1,2,3].should include(3)
         | 
| 108 108 | 
             
                Spec::Matchers.generated_description.should == "should include 3"
         | 
| 109 109 | 
             
              end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
              it "array.should =~ [1,2,3]" do
         | 
| 112 | 
            +
                [1,2,3].should =~ [1,2,3]
         | 
| 113 | 
            +
                Spec::Matchers.generated_description.should == "should contain exactly 1, 2 and 3"
         | 
| 114 | 
            +
              end
         | 
| 110 115 |  | 
| 111 116 | 
             
              it "should match" do
         | 
| 112 117 | 
             
                "this string".should match(/this string/)
         | 
| @@ -151,3 +156,17 @@ describe "Matchers should be able to generate their own descriptions" do | |
| 151 156 | 
             
                end.new
         | 
| 152 157 | 
             
              end
         | 
| 153 158 | 
             
            end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
            describe "a Matcher with no description" do
         | 
| 161 | 
            +
              def matcher
         | 
| 162 | 
            +
                 Class.new do
         | 
| 163 | 
            +
                   def matches?(ignore); true; end
         | 
| 164 | 
            +
                   def failure_message; ""; end
         | 
| 165 | 
            +
                 end.new
         | 
| 166 | 
            +
              end
         | 
| 167 | 
            +
              
         | 
| 168 | 
            +
              it "should provide a helpful message when used in a string-less example block" do
         | 
| 169 | 
            +
                5.should matcher
         | 
| 170 | 
            +
                Spec::Matchers.generated_description.should =~ /When you call.*description method/m
         | 
| 171 | 
            +
              end
         | 
| 172 | 
            +
            end
         | 
| @@ -2,24 +2,25 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb' | |
| 2 2 |  | 
| 3 3 | 
             
            module Spec
         | 
| 4 4 | 
             
              module Matchers
         | 
| 5 | 
            -
                describe  | 
| 5 | 
            +
                describe "eql" do
         | 
| 6 6 | 
             
                  it "should match when actual.eql?(expected)" do
         | 
| 7 | 
            -
                     | 
| 7 | 
            +
                    eql(1).matches?(1).should be_true
         | 
| 8 8 | 
             
                  end
         | 
| 9 9 | 
             
                  it "should not match when !actual.eql?(expected)" do
         | 
| 10 | 
            -
                     | 
| 10 | 
            +
                    eql(1).matches?(2).should be_false
         | 
| 11 11 | 
             
                  end
         | 
| 12 12 | 
             
                  it "should describe itself" do
         | 
| 13 | 
            -
                    matcher =  | 
| 13 | 
            +
                    matcher = eql(1)
         | 
| 14 | 
            +
                    matcher.matches?(1)
         | 
| 14 15 | 
             
                    matcher.description.should == "eql 1"
         | 
| 15 16 | 
             
                  end
         | 
| 16 17 | 
             
                  it "should provide message, expected and actual on #failure_message" do
         | 
| 17 | 
            -
                    matcher =  | 
| 18 | 
            +
                    matcher = eql("1")
         | 
| 18 19 | 
             
                    matcher.matches?(1)
         | 
| 19 20 | 
             
                    matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
         | 
| 20 21 | 
             
                  end
         | 
| 21 22 | 
             
                  it "should provide message, expected and actual on #negative_failure_message" do
         | 
| 22 | 
            -
                    matcher =  | 
| 23 | 
            +
                    matcher = eql(1)
         | 
| 23 24 | 
             
                    matcher.matches?(1)
         | 
| 24 25 | 
             
                    matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
         | 
| 25 26 | 
             
                  end
         | 
| @@ -2,24 +2,25 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb' | |
| 2 2 |  | 
| 3 3 | 
             
            module Spec
         | 
| 4 4 | 
             
              module Matchers
         | 
| 5 | 
            -
                describe  | 
| 5 | 
            +
                describe "equal" do
         | 
| 6 6 | 
             
                  it "should match when actual.equal?(expected)" do
         | 
| 7 | 
            -
                     | 
| 7 | 
            +
                    equal(1).matches?(1).should be_true
         | 
| 8 8 | 
             
                  end
         | 
| 9 9 | 
             
                  it "should not match when !actual.equal?(expected)" do
         | 
| 10 | 
            -
                     | 
| 10 | 
            +
                    equal("1").matches?("1").should be_false
         | 
| 11 11 | 
             
                  end
         | 
| 12 12 | 
             
                  it "should describe itself" do
         | 
| 13 | 
            -
                    matcher =  | 
| 13 | 
            +
                    matcher = equal(1)
         | 
| 14 | 
            +
                    matcher.matches?(1)
         | 
| 14 15 | 
             
                    matcher.description.should == "equal 1"
         | 
| 15 16 | 
             
                  end
         | 
| 16 17 | 
             
                  it "should provide message, expected and actual on #failure_message" do
         | 
| 17 | 
            -
                    matcher =  | 
| 18 | 
            +
                    matcher = equal("1")
         | 
| 18 19 | 
             
                    matcher.matches?(1)
         | 
| 19 20 | 
             
                    matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
         | 
| 20 21 | 
             
                  end
         | 
| 21 22 | 
             
                  it "should provide message, expected and actual on #negative_failure_message" do
         | 
| 22 | 
            -
                    matcher =  | 
| 23 | 
            +
                    matcher = equal(1)
         | 
| 23 24 | 
             
                    matcher.matches?(1)
         | 
| 24 25 | 
             
                    matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
         | 
| 25 26 | 
             
                  end
         | 
| @@ -54,66 +54,34 @@ module Spec | |
| 54 54 | 
             
                      matcher = mock("matcher")
         | 
| 55 55 | 
             
                      actual = Object.new
         | 
| 56 56 | 
             
                      matcher.should_receive(:matches?).with(actual).and_return(true)
         | 
| 57 | 
            -
                      ExpectationMatcherHandler.handle_matcher(actual, matcher)
         | 
| 57 | 
            +
                      Spec::Expectations::ExpectationMatcherHandler.handle_matcher(actual, matcher)
         | 
| 58 58 | 
             
                    end
         | 
| 59 59 |  | 
| 60 | 
            -
                    it "should explain when the matcher parameter is not a matcher" do
         | 
| 61 | 
            -
                      begin
         | 
| 62 | 
            -
                        nonmatcher = mock("nonmatcher")
         | 
| 63 | 
            -
                        actual = Object.new
         | 
| 64 | 
            -
                        ExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
         | 
| 65 | 
            -
                      rescue Spec::Expectations::InvalidMatcherError => e
         | 
| 66 | 
            -
                      end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                      e.message.should =~ /^Expected a matcher, got /
         | 
| 69 | 
            -
                    end
         | 
| 70 | 
            -
                    
         | 
| 71 60 | 
             
                    it "should return the match value" do
         | 
| 72 61 | 
             
                      matcher = mock("matcher")
         | 
| 73 62 | 
             
                      actual = Object.new
         | 
| 74 63 | 
             
                      matcher.should_receive(:matches?).with(actual).and_return(:this_value)
         | 
| 75 | 
            -
                      ExpectationMatcherHandler.handle_matcher(actual, matcher).should == :this_value
         | 
| 64 | 
            +
                      Spec::Expectations::ExpectationMatcherHandler.handle_matcher(actual, matcher).should == :this_value
         | 
| 76 65 | 
             
                    end
         | 
| 77 66 | 
             
                  end
         | 
| 78 67 | 
             
                end
         | 
| 79 68 |  | 
| 80 69 | 
             
                describe NegativeExpectationMatcherHandler do
         | 
| 81 70 | 
             
                  describe "#handle_matcher" do
         | 
| 82 | 
            -
                    it "should explain when matcher does not support should_not" do
         | 
| 83 | 
            -
                      matcher = mock("matcher")
         | 
| 84 | 
            -
                      matcher.stub!(:matches?)
         | 
| 85 | 
            -
                      actual = Object.new
         | 
| 86 | 
            -
                      lambda {
         | 
| 87 | 
            -
                        NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
         | 
| 88 | 
            -
                      }.should fail_with(/Matcher does not support should_not.\n/)
         | 
| 89 | 
            -
                    end      
         | 
| 90 | 
            -
                  
         | 
| 91 71 | 
             
                    it "should ask the matcher if it matches" do
         | 
| 92 72 | 
             
                      matcher = mock("matcher")
         | 
| 93 73 | 
             
                      actual = Object.new
         | 
| 94 74 | 
             
                      matcher.stub!(:negative_failure_message)
         | 
| 95 75 | 
             
                      matcher.should_receive(:matches?).with(actual).and_return(false)
         | 
| 96 | 
            -
                      NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
         | 
| 76 | 
            +
                      Spec::Expectations::NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
         | 
| 97 77 | 
             
                    end
         | 
| 98 78 |  | 
| 99 | 
            -
                    it "should explain when the matcher parameter is not a matcher" do
         | 
| 100 | 
            -
                      begin
         | 
| 101 | 
            -
                        nonmatcher = mock("nonmatcher")
         | 
| 102 | 
            -
                        actual = Object.new
         | 
| 103 | 
            -
                        NegativeExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
         | 
| 104 | 
            -
                      rescue Spec::Expectations::InvalidMatcherError => e
         | 
| 105 | 
            -
                      end
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                      e.message.should =~ /^Expected a matcher, got /
         | 
| 108 | 
            -
                    end
         | 
| 109 | 
            -
             | 
| 110 | 
            -
                    
         | 
| 111 79 | 
             
                    it "should return the match value" do
         | 
| 112 80 | 
             
                      matcher = mock("matcher")
         | 
| 113 81 | 
             
                      actual = Object.new
         | 
| 114 82 | 
             
                      matcher.should_receive(:matches?).with(actual).and_return(false)
         | 
| 115 83 | 
             
                      matcher.stub!(:negative_failure_message).and_return("ignore")
         | 
| 116 | 
            -
                      NegativeExpectationMatcherHandler.handle_matcher(actual, matcher).should be_false
         | 
| 84 | 
            +
                      Spec::Expectations::NegativeExpectationMatcherHandler.handle_matcher(actual, matcher).should be_false
         | 
| 117 85 | 
             
                    end
         | 
| 118 86 | 
             
                  end
         | 
| 119 87 | 
             
                end
         | 
| @@ -138,13 +106,6 @@ module Spec | |
| 138 106 | 
             
                    5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
         | 
| 139 107 | 
             
                  end
         | 
| 140 108 |  | 
| 141 | 
            -
                  it "should explain when matcher does not support should_not" do
         | 
| 142 | 
            -
                    lambda {
         | 
| 143 | 
            -
                      5.should_not positive_only_matcher(:expected => 5)
         | 
| 144 | 
            -
                    }.should fail_with(/Matcher does not support should_not.\n/)
         | 
| 145 | 
            -
                  end
         | 
| 146 | 
            -
             | 
| 147 | 
            -
             | 
| 148 109 | 
             
                end
         | 
| 149 110 | 
             
              end
         | 
| 150 111 | 
             
            end
         | 
| @@ -52,7 +52,7 @@ describe "should_not have_sym(*args)" do | |
| 52 52 | 
             
              end
         | 
| 53 53 | 
             
            end
         | 
| 54 54 |  | 
| 55 | 
            -
            describe  | 
| 55 | 
            +
            describe "has" do
         | 
| 56 56 | 
             
              it "should work when the target implements #send" do
         | 
| 57 57 | 
             
                o = {:a => "A"}
         | 
| 58 58 | 
             
                def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            require File.dirname(__FILE__) + '/../../spec_helper.rb'
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 3 | 
            +
            share_as :HaveSpecHelper do
         | 
| 4 4 | 
             
              def create_collection_owner_with(n)
         | 
| 5 5 | 
             
                owner = Spec::Expectations::Helper::CollectionOwner.new
         | 
| 6 6 | 
             
                (1..n).each do |n|
         | 
| @@ -9,8 +9,21 @@ module HaveSpecHelper | |
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
                owner
         | 
| 11 11 | 
             
              end
         | 
| 12 | 
            +
              before(:each) do
         | 
| 13 | 
            +
                unless defined?(::ActiveSupport::Inflector)
         | 
| 14 | 
            +
                  @active_support_was_not_defined
         | 
| 15 | 
            +
                  module ::ActiveSupport
         | 
| 16 | 
            +
                    class Inflector
         | 
| 17 | 
            +
                      def self.pluralize(string)
         | 
| 18 | 
            +
                        string.to_s + 's'
         | 
| 19 | 
            +
                      end
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 12 24 | 
             
            end
         | 
| 13 25 |  | 
| 26 | 
            +
             | 
| 14 27 | 
             
            describe "should have(n).items" do
         | 
| 15 28 | 
             
              include HaveSpecHelper
         | 
| 16 29 |  | 
| @@ -50,19 +63,6 @@ end | |
| 50 63 | 
             
            describe 'should have(1).item when ActiveSupport::Inflector is defined' do
         | 
| 51 64 | 
             
              include HaveSpecHelper
         | 
| 52 65 |  | 
| 53 | 
            -
              before(:each) do
         | 
| 54 | 
            -
                unless defined?(ActiveSupport::Inflector)
         | 
| 55 | 
            -
                  @active_support_was_not_defined
         | 
| 56 | 
            -
                  module ActiveSupport
         | 
| 57 | 
            -
                    class Inflector
         | 
| 58 | 
            -
                      def self.pluralize(string)
         | 
| 59 | 
            -
                        string.to_s + 's'
         | 
| 60 | 
            -
                      end
         | 
| 61 | 
            -
                    end
         | 
| 62 | 
            -
                  end
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
              end
         | 
| 65 | 
            -
              
         | 
| 66 66 | 
             
              it 'should pluralize the collection name' do
         | 
| 67 67 | 
             
                owner = create_collection_owner_with(1)
         | 
| 68 68 | 
             
                owner.should have(1).item
         | 
| @@ -70,7 +70,7 @@ describe 'should have(1).item when ActiveSupport::Inflector is defined' do | |
| 70 70 |  | 
| 71 71 | 
             
              after(:each) do
         | 
| 72 72 | 
             
                if @active_support_was_not_defined
         | 
| 73 | 
            -
                  Object. | 
| 73 | 
            +
                  Object.__send__ :remove_const, :ActiveSupport
         | 
| 74 74 | 
             
                end
         | 
| 75 75 | 
             
              end
         | 
| 76 76 | 
             
            end
         | 
| @@ -96,7 +96,7 @@ describe 'should have(1).item when Inflector is defined' do | |
| 96 96 |  | 
| 97 97 | 
             
              after(:each) do
         | 
| 98 98 | 
             
                if @inflector_was_not_defined
         | 
| 99 | 
            -
                  Object. | 
| 99 | 
            +
                  Object.__send__ :remove_const, :Inflector
         | 
| 100 100 | 
             
                end
         | 
| 101 101 | 
             
              end
         | 
| 102 102 | 
             
            end
         | 
| @@ -327,7 +327,7 @@ end | |
| 327 327 |  | 
| 328 328 | 
             
            describe Spec::Matchers::Have, "for a collection owner that implements #send" do
         | 
| 329 329 | 
             
              include HaveSpecHelper
         | 
| 330 | 
            -
             | 
| 330 | 
            +
              
         | 
| 331 331 | 
             
              before(:each) do
         | 
| 332 332 | 
             
                @collection = Object.new
         | 
| 333 333 | 
             
                def @collection.floozles; [1,2] end
         | 
| @@ -357,7 +357,12 @@ module Spec | |
| 357 357 | 
             
              module Matchers
         | 
| 358 358 | 
             
                describe Have do
         | 
| 359 359 | 
             
                  it "should have method_missing as private" do
         | 
| 360 | 
            -
                     | 
| 360 | 
            +
                    with_ruby '1.8' do
         | 
| 361 | 
            +
                      Have.private_instance_methods.should include("method_missing")
         | 
| 362 | 
            +
                    end
         | 
| 363 | 
            +
                    with_ruby '1.9' do
         | 
| 364 | 
            +
                      Have.private_instance_methods.should include(:method_missing)
         | 
| 365 | 
            +
                    end
         | 
| 361 366 | 
             
                  end
         | 
| 362 367 |  | 
| 363 368 | 
             
                  describe "respond_to?" do
         |