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
@@ -5,6 +5,10 @@ describe "should include(expected)" do
|
|
5
5
|
[1,2,3].should include(3)
|
6
6
|
"abc".should include("a")
|
7
7
|
end
|
8
|
+
|
9
|
+
it 'should pass if target is a Hash and has the expected as a key' do
|
10
|
+
{:key => 'value'}.should include(:key)
|
11
|
+
end
|
8
12
|
|
9
13
|
it "should fail if target does not include expected" do
|
10
14
|
lambda {
|
@@ -13,6 +17,9 @@ describe "should include(expected)" do
|
|
13
17
|
lambda {
|
14
18
|
"abc".should include("d")
|
15
19
|
}.should fail_with("expected \"abc\" to include \"d\"")
|
20
|
+
lambda {
|
21
|
+
{:key => 'value'}.should include(:other)
|
22
|
+
}.should fail_with(%Q|expected {:key=>"value"} to include :other|)
|
16
23
|
end
|
17
24
|
end
|
18
25
|
|
@@ -20,12 +27,22 @@ describe "should include(with, multiple, args)" do
|
|
20
27
|
it "should pass if target includes all items" do
|
21
28
|
[1,2,3].should include(1,2,3)
|
22
29
|
end
|
30
|
+
|
31
|
+
it 'should pass if target is a Hash including all items as keys' do
|
32
|
+
{:key => 'value', :other => 'value'}.should include(:key, :other)
|
33
|
+
end
|
23
34
|
|
24
35
|
it "should fail if target does not include any one of the items" do
|
25
36
|
lambda {
|
26
37
|
[1,2,3].should include(1,2,4)
|
27
38
|
}.should fail_with("expected [1, 2, 3] to include 1, 2 and 4")
|
28
39
|
end
|
40
|
+
|
41
|
+
it 'should pass if target is a Hash missing any item as a key' do
|
42
|
+
lambda {
|
43
|
+
{:key => 'value'}.should include(:key, :other)
|
44
|
+
}.should fail_with(%Q|expected {:key=>"value"} to include :key and :other|)
|
45
|
+
end
|
29
46
|
end
|
30
47
|
|
31
48
|
describe "should_not include(expected)" do
|
@@ -33,6 +50,10 @@ describe "should_not include(expected)" do
|
|
33
50
|
[1,2,3].should_not include(4)
|
34
51
|
"abc".should_not include("d")
|
35
52
|
end
|
53
|
+
|
54
|
+
it 'should pass if target is a Hash and does not have the expected as a key' do
|
55
|
+
{:other => 'value'}.should_not include(:key)
|
56
|
+
end
|
36
57
|
|
37
58
|
it "should fail if target includes expected" do
|
38
59
|
lambda {
|
@@ -41,6 +62,9 @@ describe "should_not include(expected)" do
|
|
41
62
|
lambda {
|
42
63
|
"abc".should_not include("c")
|
43
64
|
}.should fail_with("expected \"abc\" not to include \"c\"")
|
65
|
+
lambda {
|
66
|
+
{:key => 'value'}.should_not include(:key)
|
67
|
+
}.should fail_with(%Q|expected {:key=>"value"} not to include :key|)
|
44
68
|
end
|
45
69
|
end
|
46
70
|
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
|
3
|
+
describe "array.should =~ other_array" do
|
4
|
+
it "should pass if target contains all items" do
|
5
|
+
[1,2,3].should =~ [1,2,3]
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should pass if target contains all items out of order" do
|
9
|
+
[1,3,2].should =~ [1,2,3]
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should fail if target includes extra items" do
|
13
|
+
lambda {
|
14
|
+
[1,2,3,4].should =~ [1,2,3]
|
15
|
+
}.should fail_with(<<-MESSAGE)
|
16
|
+
expected collection contained: [1, 2, 3]
|
17
|
+
actual collection contained: [1, 2, 3, 4]
|
18
|
+
the extra elements were: [4]
|
19
|
+
MESSAGE
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should fail if target is missing items" do
|
23
|
+
lambda {
|
24
|
+
[1,2].should =~ [1,2,3]
|
25
|
+
}.should fail_with(<<-MESSAGE)
|
26
|
+
expected collection contained: [1, 2, 3]
|
27
|
+
actual collection contained: [1, 2]
|
28
|
+
the missing elements were: [3]
|
29
|
+
MESSAGE
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should fail if target is missing items and has extra items" do
|
33
|
+
|
34
|
+
lambda {
|
35
|
+
[1,2,4].should =~ [1,2,3]
|
36
|
+
}.should fail_with(<<-MESSAGE)
|
37
|
+
expected collection contained: [1, 2, 3]
|
38
|
+
actual collection contained: [1, 2, 4]
|
39
|
+
the missing elements were: [3]
|
40
|
+
the extra elements were: [4]
|
41
|
+
MESSAGE
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should sort items in the error message" do
|
45
|
+
lambda {
|
46
|
+
[6,2,1,5].should =~ [4,1,2,3]
|
47
|
+
}.should fail_with(<<-MESSAGE)
|
48
|
+
expected collection contained: [1, 2, 3, 4]
|
49
|
+
actual collection contained: [1, 2, 5, 6]
|
50
|
+
the missing elements were: [3, 4]
|
51
|
+
the extra elements were: [5, 6]
|
52
|
+
MESSAGE
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should accurately report extra elements when there are duplicates" do
|
56
|
+
lambda {
|
57
|
+
[1,1,1,5].should =~ [1,5]
|
58
|
+
}.should fail_with(<<-MESSAGE)
|
59
|
+
expected collection contained: [1, 5]
|
60
|
+
actual collection contained: [1, 1, 1, 5]
|
61
|
+
the extra elements were: [1, 1]
|
62
|
+
MESSAGE
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should accurately report missing elements when there are duplicates" do
|
66
|
+
lambda {
|
67
|
+
[1,5].should =~ [1,1,5]
|
68
|
+
}.should fail_with(<<-MESSAGE)
|
69
|
+
expected collection contained: [1, 1, 5]
|
70
|
+
actual collection contained: [1, 5]
|
71
|
+
the missing elements were: [1]
|
72
|
+
MESSAGE
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "should_not =~ [:with, :multiple, :args]" do
|
78
|
+
it "should not be supported" do
|
79
|
+
lambda {
|
80
|
+
[1,2,3].should_not =~ [1,2,3]
|
81
|
+
}.should fail_with(/Matcher does not support should_not/)
|
82
|
+
end
|
83
|
+
end
|
@@ -16,18 +16,9 @@ This module should provide the following methods, each of which returns a Matche
|
|
16
16
|
it "be_arbitrary_predicate" do
|
17
17
|
be_arbitrary_predicate.should be_an_instance_of(Be)
|
18
18
|
end
|
19
|
-
it "be_close" do
|
20
|
-
be_close(1,2).should be_an_instance_of(BeClose)
|
21
|
-
end
|
22
19
|
it "change" do
|
23
20
|
change("target", :message).should be_an_instance_of(Change)
|
24
21
|
end
|
25
|
-
it "eql" do
|
26
|
-
eql(:expected).should be_an_instance_of(Eql)
|
27
|
-
end
|
28
|
-
it "equal" do
|
29
|
-
equal(:expected).should be_an_instance_of(Equal)
|
30
|
-
end
|
31
22
|
it "have" do
|
32
23
|
have(0).should be_an_instance_of(Have)
|
33
24
|
end
|
@@ -43,9 +34,6 @@ This module should provide the following methods, each of which returns a Matche
|
|
43
34
|
it "include" do
|
44
35
|
include(:value).should be_an_instance_of(Include)
|
45
36
|
end
|
46
|
-
it "match" do
|
47
|
-
match(:value).should be_an_instance_of(Match)
|
48
|
-
end
|
49
37
|
it "raise_error" do
|
50
38
|
raise_error.should be_an_instance_of(RaiseError)
|
51
39
|
raise_error(NoMethodError).should be_an_instance_of(RaiseError)
|
@@ -70,7 +58,7 @@ This module should provide the following methods, each of which returns a Matche
|
|
70
58
|
end
|
71
59
|
|
72
60
|
it "should convert have_xyz to Has(:have_xyz)" do
|
73
|
-
|
61
|
+
self.should_receive(:has).with(:have_whatever)
|
74
62
|
have_whatever
|
75
63
|
end
|
76
64
|
end
|
@@ -12,6 +12,24 @@ describe "should raise_error" do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
describe "should raise_error {|err| ... }" do
|
16
|
+
it "passes if there is an error" do
|
17
|
+
ran = false
|
18
|
+
lambda { non_existent_method }.should raise_error {|e|
|
19
|
+
ran = true
|
20
|
+
}
|
21
|
+
ran.should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "passes the error to the block" do
|
25
|
+
error = nil
|
26
|
+
lambda { non_existent_method }.should raise_error {|e|
|
27
|
+
error = e
|
28
|
+
}
|
29
|
+
error.should be_an_instance_of(NameError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
describe "should_not raise_error" do
|
16
34
|
it "should pass if nothing is raised" do
|
17
35
|
lambda {}.should_not raise_error
|
@@ -2,50 +2,112 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
3
3
|
describe "should respond_to(:sym)" do
|
4
4
|
|
5
|
-
it "
|
5
|
+
it "passes if target responds to :sym" do
|
6
6
|
Object.new.should respond_to(:methods)
|
7
7
|
end
|
8
8
|
|
9
|
-
it "
|
9
|
+
it "fails if target does not respond to :sym" do
|
10
10
|
lambda {
|
11
11
|
"this string".should respond_to(:some_method)
|
12
|
-
}.should fail_with(
|
12
|
+
}.should fail_with(%q|expected "this string" to respond to :some_method|)
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
16
16
|
|
17
|
+
describe "should respond_to(:sym).with(1).argument" do
|
18
|
+
it "passes if target responds to :sym with 1 arg" do
|
19
|
+
obj = Object.new
|
20
|
+
def obj.foo(arg); end
|
21
|
+
obj.should respond_to(:foo).with(1).argument
|
22
|
+
end
|
23
|
+
|
24
|
+
it "fails if target does not respond to :sym" do
|
25
|
+
obj = Object.new
|
26
|
+
lambda {
|
27
|
+
obj.should respond_to(:some_method).with(1).argument
|
28
|
+
}.should fail_with(/expected .* to respond to :some_method/)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "fails if :sym expects 0 args" do
|
32
|
+
obj = Object.new
|
33
|
+
def obj.foo; end
|
34
|
+
lambda {
|
35
|
+
obj.should respond_to(:foo).with(1).argument
|
36
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "fails if :sym expects 2 args" do
|
40
|
+
obj = Object.new
|
41
|
+
def obj.foo(arg, arg2); end
|
42
|
+
lambda {
|
43
|
+
obj.should respond_to(:foo).with(1).argument
|
44
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
17
48
|
describe "should respond_to(message1, message2)" do
|
18
49
|
|
19
|
-
it "
|
50
|
+
it "passes if target responds to both messages" do
|
20
51
|
Object.new.should respond_to('methods', 'inspect')
|
21
52
|
end
|
22
53
|
|
23
|
-
it "
|
54
|
+
it "fails if target does not respond to first message" do
|
24
55
|
lambda {
|
25
56
|
Object.new.should respond_to('method_one', 'inspect')
|
26
57
|
}.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
|
27
58
|
end
|
28
59
|
|
29
|
-
it "
|
60
|
+
it "fails if target does not respond to second message" do
|
30
61
|
lambda {
|
31
62
|
Object.new.should respond_to('inspect', 'method_one')
|
32
63
|
}.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
|
33
64
|
end
|
34
65
|
|
35
|
-
it "
|
66
|
+
it "fails if target does not respond to either message" do
|
36
67
|
lambda {
|
37
68
|
Object.new.should respond_to('method_one', 'method_two')
|
38
69
|
}.should fail_with(/expected #<Object:.*> to respond to "method_one", "method_two"/)
|
39
70
|
end
|
40
71
|
end
|
41
72
|
|
73
|
+
describe "should respond_to(:sym).with(2).arguments" do
|
74
|
+
it "passes if target responds to :sym with 2 args" do
|
75
|
+
obj = Object.new
|
76
|
+
def obj.foo(a1, a2); end
|
77
|
+
obj.should respond_to(:foo).with(2).arguments
|
78
|
+
end
|
79
|
+
|
80
|
+
it "fails if target does not respond to :sym" do
|
81
|
+
obj = Object.new
|
82
|
+
lambda {
|
83
|
+
obj.should respond_to(:some_method).with(2).arguments
|
84
|
+
}.should fail_with(/expected .* to respond to :some_method/)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "fails if :sym expects 0 args" do
|
88
|
+
obj = Object.new
|
89
|
+
def obj.foo; end
|
90
|
+
lambda {
|
91
|
+
obj.should respond_to(:foo).with(2).arguments
|
92
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "fails if :sym expects 2 args" do
|
96
|
+
obj = Object.new
|
97
|
+
def obj.foo(arg); end
|
98
|
+
lambda {
|
99
|
+
obj.should respond_to(:foo).with(2).arguments
|
100
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
42
104
|
describe "should_not respond_to(:sym)" do
|
43
105
|
|
44
|
-
it "
|
106
|
+
it "passes if target does not respond to :sym" do
|
45
107
|
Object.new.should_not respond_to(:some_method)
|
46
108
|
end
|
47
109
|
|
48
|
-
it "
|
110
|
+
it "fails if target responds to :sym" do
|
49
111
|
lambda {
|
50
112
|
Object.new.should_not respond_to(:methods)
|
51
113
|
}.should fail_with(/expected #<Object:.*> not to respond to :methods/)
|
@@ -2,52 +2,94 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
3
3
|
module Spec
|
4
4
|
module Matchers
|
5
|
-
describe ThrowSymbol
|
6
|
-
|
7
|
-
|
8
|
-
it "should match if any Symbol is thrown" do
|
9
|
-
@matcher.matches?(lambda{ throw :sym }).should be_true
|
10
|
-
end
|
11
|
-
it "should not match if no Symbol is thrown" do
|
12
|
-
@matcher.matches?(lambda{ }).should be_false
|
13
|
-
end
|
14
|
-
it "should provide a failure message" do
|
15
|
-
@matcher.matches?(lambda{})
|
16
|
-
@matcher.failure_message.should == "expected a Symbol but nothing was thrown"
|
17
|
-
end
|
18
|
-
it "should provide a negative failure message" do
|
19
|
-
@matcher.matches?(lambda{ throw :sym})
|
20
|
-
@matcher.negative_failure_message.should == "expected no Symbol, got :sym"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe ThrowSymbol, "(constructed with a Symbol)" do
|
25
|
-
before(:each) { @matcher = ThrowSymbol.new(:sym) }
|
5
|
+
describe ThrowSymbol do
|
6
|
+
describe "with no args" do
|
7
|
+
before(:each) { @matcher = ThrowSymbol.new }
|
26
8
|
|
27
|
-
|
28
|
-
|
9
|
+
it "should match if any Symbol is thrown" do
|
10
|
+
@matcher.matches?(lambda{ throw :sym }).should be_true
|
11
|
+
end
|
12
|
+
it "should match if any Symbol is thrown with an arg" do
|
13
|
+
@matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
|
14
|
+
end
|
15
|
+
it "should not match if no Symbol is thrown" do
|
16
|
+
@matcher.matches?(lambda{ }).should be_false
|
17
|
+
end
|
18
|
+
it "should provide a failure message" do
|
19
|
+
@matcher.matches?(lambda{})
|
20
|
+
@matcher.failure_message.should == "expected a Symbol but nothing was thrown"
|
21
|
+
end
|
22
|
+
it "should provide a negative failure message" do
|
23
|
+
@matcher.matches?(lambda{ throw :sym})
|
24
|
+
@matcher.negative_failure_message.should == "expected no Symbol, got :sym"
|
25
|
+
end
|
29
26
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
27
|
+
|
28
|
+
describe "with a symbol" do
|
29
|
+
before(:each) { @matcher = ThrowSymbol.new(:sym) }
|
30
|
+
|
31
|
+
it "should match if correct Symbol is thrown" do
|
32
|
+
@matcher.matches?(lambda{ throw :sym }).should be_true
|
33
|
+
end
|
34
|
+
it "should match if correct Symbol is thrown with an arg" do
|
35
|
+
@matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
|
36
|
+
end
|
37
|
+
it "should not match if no Symbol is thrown" do
|
38
|
+
@matcher.matches?(lambda{ }).should be_false
|
39
|
+
end
|
40
|
+
it "should not match if correct Symbol is thrown" do
|
41
|
+
@matcher.matches?(lambda{ throw :other_sym }).should be_false
|
42
|
+
end
|
43
|
+
it "should provide a failure message when no Symbol is thrown" do
|
44
|
+
@matcher.matches?(lambda{})
|
45
|
+
@matcher.failure_message.should == "expected :sym but nothing was thrown"
|
46
|
+
end
|
47
|
+
it "should provide a failure message when wrong Symbol is thrown" do
|
48
|
+
@matcher.matches?(lambda{ throw :other_sym })
|
49
|
+
@matcher.failure_message.should == "expected :sym, got :other_sym"
|
50
|
+
end
|
51
|
+
it "should provide a negative failure message" do
|
52
|
+
@matcher.matches?(lambda{ throw :sym })
|
53
|
+
@matcher.negative_failure_message.should == "expected :sym not to be thrown"
|
54
|
+
end
|
55
|
+
it "should only match NameErrors raised by uncaught throws" do
|
56
|
+
@matcher.matches?(lambda{ sym }).should be_false
|
57
|
+
end
|
48
58
|
end
|
49
|
-
|
50
|
-
|
59
|
+
|
60
|
+
describe "with a symbol and an arg" do
|
61
|
+
before(:each) { @matcher = ThrowSymbol.new(:sym, "a") }
|
62
|
+
|
63
|
+
it "should match if correct Symbol and args are thrown" do
|
64
|
+
@matcher.matches?(lambda{ throw :sym, "a" }).should be_true
|
65
|
+
end
|
66
|
+
it "should not match if nothing is thrown" do
|
67
|
+
@matcher.matches?(lambda{ }).should be_false
|
68
|
+
end
|
69
|
+
it "should not match if other Symbol is thrown" do
|
70
|
+
@matcher.matches?(lambda{ throw :other_sym, "a" }).should be_false
|
71
|
+
end
|
72
|
+
it "should not match if no arg is thrown" do
|
73
|
+
@matcher.matches?(lambda{ throw :sym }).should be_false
|
74
|
+
end
|
75
|
+
it "should not match if wrong arg is thrown" do
|
76
|
+
@matcher.matches?(lambda{ throw :sym, "b" }).should be_false
|
77
|
+
end
|
78
|
+
it "should provide a failure message when no Symbol is thrown" do
|
79
|
+
@matcher.matches?(lambda{})
|
80
|
+
@matcher.failure_message.should == %q[expected :sym with "a" but nothing was thrown]
|
81
|
+
end
|
82
|
+
it "should provide a failure message when wrong Symbol is thrown" do
|
83
|
+
@matcher.matches?(lambda{ throw :other_sym })
|
84
|
+
@matcher.failure_message.should == %q[expected :sym with "a", got :other_sym]
|
85
|
+
end
|
86
|
+
it "should provide a negative failure message" do
|
87
|
+
@matcher.matches?(lambda{ throw :sym })
|
88
|
+
@matcher.negative_failure_message.should == %q[expected :sym with "a" not to be thrown]
|
89
|
+
end
|
90
|
+
it "should only match NameErrors raised by uncaught throws" do
|
91
|
+
@matcher.matches?(lambda{ sym }).should be_false
|
92
|
+
end
|
51
93
|
end
|
52
94
|
end
|
53
95
|
end
|