rspec 1.1.12 → 1.2.0
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 +2 -1
- data/.document +7 -0
- data/History.txt +58 -0
- data/License.txt +1 -1
- data/Manifest.txt +45 -82
- data/README.txt +3 -6
- data/Rakefile +33 -13
- data/Ruby1.9.markdown +32 -0
- data/TODO.txt +10 -4
- data/Upgrade.markdown +63 -0
- data/bin/spec +1 -1
- data/cucumber.yml +3 -0
- data/examples/failing/{failing_autogenerated_docstrings_example.rb → failing_implicit_docstrings_example.rb} +0 -0
- data/examples/failing/pending_example.rb +9 -0
- data/examples/failing/spec_helper.rb +1 -1
- data/examples/passing/{custom_expectation_matchers.rb → custom_matchers.rb} +0 -0
- data/examples/passing/filtered_formatter.rb +18 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/passing/implicit_docstrings_example.rb +18 -0
- data/examples/passing/spec_helper.rb +1 -1
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +17 -18
- data/features/before_and_after_blocks/before_and_after_blocks.feature +4 -4
- data/features/example_groups/example_group_with_should_methods.feature +1 -1
- data/features/example_groups/{autogenerated_docstrings.feature → implicit_docstrings.feature} +7 -9
- data/features/example_groups/nested_groups.feature +1 -1
- data/features/heckle/heckle.feature +56 -0
- data/features/interop/examples_and_tests_together.feature +1 -1
- data/features/interop/test_but_not_test_unit.feature +1 -1
- data/features/interop/test_case_with_should_methods.feature +1 -1
- data/features/matchers/create_matcher.feature +115 -0
- data/features/mock_framework_integration/use_flexmock.feature +22 -4
- data/features/mock_framework_integration/use_mocha.feature +27 -0
- data/features/mock_framework_integration/use_rr.feature +27 -0
- data/features/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features/pending/pending_examples.feature +81 -0
- data/features/step_definitions/running_rspec.rb +5 -3
- data/features/support/env.rb +1 -1
- data/features/support/matchers/smart_match.rb +2 -2
- data/lib/autotest/rspec.rb +1 -1
- data/lib/spec.rb +1 -1
- data/lib/{adapters → spec/adapters}/mock_frameworks/flexmock.rb +0 -0
- data/lib/{adapters → spec/adapters}/mock_frameworks/mocha.rb +0 -0
- data/lib/{adapters → spec/adapters}/mock_frameworks/rr.rb +0 -0
- data/lib/{adapters → spec/adapters}/mock_frameworks/rspec.rb +0 -1
- data/lib/spec/autorun.rb +3 -0
- data/lib/spec/dsl.rb +3 -1
- data/lib/spec/dsl/matchers.rb +13 -0
- data/lib/spec/example.rb +4 -0
- data/lib/spec/example/before_and_after_hooks.rb +5 -20
- data/lib/spec/example/errors.rb +3 -3
- data/lib/spec/example/example_description.rb +15 -0
- data/lib/spec/example/example_group.rb +0 -15
- data/lib/spec/example/example_group_factory.rb +34 -46
- data/lib/spec/example/example_group_hierarchy.rb +53 -0
- data/lib/spec/example/example_group_methods.rb +101 -211
- data/lib/spec/example/example_methods.rb +61 -81
- data/lib/spec/example/module_reopening_fix.rb +23 -1
- data/lib/spec/example/pending.rb +3 -2
- data/lib/spec/example/predicate_matchers.rb +47 -0
- data/lib/spec/example/subject.rb +91 -0
- data/lib/spec/expectations.rb +1 -1
- data/lib/spec/expectations/differs/default.rb +0 -1
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/handler.rb +13 -6
- data/lib/spec/interop/test.rb +5 -0
- data/lib/spec/interop/test/unit/testcase.rb +5 -22
- data/lib/spec/matchers.rb +22 -8
- data/lib/spec/matchers/be.rb +4 -9
- data/lib/spec/matchers/be_close.rb +20 -5
- data/lib/spec/matchers/be_instance_of.rb +45 -0
- data/lib/spec/matchers/be_kind_of.rb +45 -0
- data/lib/spec/matchers/change.rb +8 -6
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/eql.rb +24 -6
- data/lib/spec/matchers/equal.rb +24 -6
- data/lib/spec/matchers/exist.rb +21 -5
- data/lib/spec/matchers/extensions/instance_exec.rb +25 -0
- data/lib/spec/matchers/generated_descriptions.rb +2 -2
- data/lib/spec/matchers/has.rb +28 -11
- data/lib/spec/matchers/have.rb +2 -2
- data/lib/spec/matchers/include.rb +2 -2
- data/lib/spec/matchers/match.rb +25 -7
- data/lib/spec/matchers/match_array.rb +3 -3
- data/lib/spec/matchers/matcher.rb +51 -0
- data/lib/spec/matchers/method_missing.rb +2 -2
- data/lib/spec/matchers/operator_matcher.rb +12 -5
- data/lib/spec/matchers/raise_error.rb +3 -3
- data/lib/spec/matchers/respond_to.rb +3 -3
- data/lib/spec/matchers/satisfy.rb +7 -7
- data/lib/spec/matchers/throw_symbol.rb +3 -5
- data/lib/spec/mocks.rb +3 -3
- data/lib/spec/mocks/argument_expectation.rb +15 -15
- data/lib/spec/mocks/{argument_constraints.rb → argument_matchers.rb} +19 -23
- data/lib/spec/mocks/error_generator.rb +5 -8
- data/lib/spec/mocks/framework.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +5 -13
- data/lib/spec/mocks/mock.rb +4 -5
- data/lib/spec/mocks/proxy.rb +9 -5
- data/lib/spec/mocks/spec_methods.rb +10 -1
- data/lib/spec/rake/spectask.rb +0 -1
- data/lib/spec/runner.rb +6 -28
- data/lib/spec/runner/configuration.rb +3 -3
- data/lib/spec/runner/drb_command_line.rb +2 -1
- data/lib/spec/runner/example_group_runner.rb +3 -2
- data/lib/spec/runner/formatter/base_text_formatter.rb +34 -19
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +3 -5
- data/lib/spec/runner/formatter/html_formatter.rb +2 -3
- data/lib/spec/runner/formatter/nested_text_formatter.rb +7 -25
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +1 -1
- data/lib/spec/runner/formatter/snippet_extractor.rb +1 -1
- data/lib/spec/runner/formatter/specdoc_formatter.rb +1 -7
- data/lib/spec/runner/heckle_runner.rb +3 -6
- data/lib/spec/runner/heckle_runner_unsupported.rb +1 -1
- data/lib/spec/runner/option_parser.rb +19 -21
- data/lib/spec/runner/options.rb +32 -27
- data/lib/spec/runner/reporter.rb +8 -9
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +2 -2
- data/{features/support → resources}/helpers/cmdline.rb +2 -2
- data/resources/rake/verify_rcov.rake +1 -1
- data/resources/spec/example_group_with_should_methods.rb +1 -1
- data/resources/spec/simple_spec.rb +1 -1
- data/resources/test/spec_and_test_together.rb +2 -3
- data/resources/test/spec_including_test_but_not_unit.rb +1 -1
- data/resources/test/test_case_with_should_methods.rb +2 -3
- data/spec/autotest/autotest_helper.rb +0 -1
- data/spec/autotest/rspec_spec.rb +95 -98
- data/spec/spec/dsl/main_spec.rb +3 -3
- data/spec/spec/dsl/matchers_spec.rb +25 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +14 -15
- data/spec/spec/example/example_group_factory_spec.rb +31 -44
- data/spec/spec/example/example_group_methods_spec.rb +86 -52
- data/spec/spec/example/example_group_spec.rb +32 -79
- data/spec/spec/example/example_matcher_spec.rb +10 -10
- data/spec/spec/example/example_methods_spec.rb +108 -242
- data/spec/spec/example/nested_example_group_spec.rb +2 -2
- data/spec/spec/example/pending_module_spec.rb +66 -41
- data/spec/spec/example/shared_example_group_spec.rb +4 -4
- data/spec/spec/{matchers → expectations}/handler_spec.rb +52 -4
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +2 -2
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +2 -2
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +2 -2
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +2 -2
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +2 -2
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +2 -2
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +2 -2
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +2 -2
- data/spec/spec/interop/test/unit/testcase_spec.rb +0 -4
- data/spec/spec/matchers/be_close_spec.rb +1 -1
- data/spec/spec/matchers/be_instance_of_spec.rb +29 -0
- data/spec/spec/matchers/be_kind_of_spec.rb +29 -0
- data/spec/spec/matchers/change_spec.rb +20 -0
- data/spec/spec/matchers/compatibility_spec.rb +34 -0
- data/spec/spec/matchers/description_generation_spec.rb +0 -12
- data/spec/spec/matchers/eql_spec.rb +2 -2
- data/spec/spec/matchers/equal_spec.rb +2 -2
- data/spec/spec/matchers/exist_spec.rb +8 -4
- data/spec/spec/matchers/have_spec.rb +4 -4
- data/spec/spec/matchers/match_spec.rb +2 -2
- data/spec/spec/matchers/matcher_methods_spec.rb +1 -1
- data/spec/spec/matchers/matcher_spec.rb +97 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +8 -8
- data/spec/spec/mocks/{bug_report_496.rb → bug_report_496_spec.rb} +0 -0
- data/spec/spec/mocks/{failing_mock_argument_constraints_spec.rb → failing_argument_matchers_spec.rb} +2 -2
- data/spec/spec/mocks/hash_including_matcher_spec.rb +4 -4
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +3 -3
- data/spec/spec/mocks/mock_spec.rb +27 -2
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +1 -1
- data/spec/spec/mocks/partial_mock_spec.rb +18 -3
- data/spec/spec/mocks/{passing_mock_argument_constraints_spec.rb → passing_argument_matchers_spec.rb} +6 -6
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +13 -1
- data/spec/spec/package/bin_spec_spec.rb +2 -2
- data/spec/spec/runner/configuration_spec.rb +12 -12
- data/spec/spec/runner/drb_command_line_spec.rb +71 -73
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +82 -1
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +8 -8
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +4 -4
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +8 -8
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +38 -26
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +61 -53
- data/spec/spec/runner/formatter/html_formatter_spec.rb +100 -48
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +20 -34
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +2 -1
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +9 -6
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +20 -20
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +38 -26
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +55 -47
- data/spec/spec/runner/formatter/{spec_mate_formatter_spec.rb → text_mate_formatter_spec.rb} +11 -9
- data/spec/spec/runner/heckle_runner_spec.rb +1 -1
- data/spec/spec/runner/heckler_spec.rb +1 -1
- data/spec/spec/runner/option_parser_spec.rb +28 -11
- data/spec/spec/runner/options_spec.rb +34 -0
- data/spec/spec/runner/reporter_spec.rb +66 -62
- data/spec/spec/runner/resources/utf8_encoded.rb +1 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner_spec.rb +7 -5
- data/spec/spec_helper.rb +24 -2
- metadata +49 -90
- data/examples/passing/autogenerated_docstrings_example.rb +0 -25
- data/examples/passing/before_and_after_example.rb +0 -40
- data/examples/passing/behave_as_example.rb +0 -45
- data/examples/passing/legacy_spec.rb +0 -11
- data/examples/passing/priority.txt +0 -1
- data/features/support/helpers/story_helper.rb +0 -16
- data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/lib/spec/runner/formatter/story/html_formatter.rb +0 -174
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +0 -194
- data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +0 -42
- data/lib/spec/story.rb +0 -10
- data/lib/spec/story/extensions.rb +0 -3
- data/lib/spec/story/extensions/main.rb +0 -86
- data/lib/spec/story/extensions/regexp.rb +0 -9
- data/lib/spec/story/extensions/string.rb +0 -9
- data/lib/spec/story/given_scenario.rb +0 -14
- data/lib/spec/story/runner.rb +0 -57
- data/lib/spec/story/runner/plain_text_story_runner.rb +0 -48
- data/lib/spec/story/runner/scenario_collector.rb +0 -18
- data/lib/spec/story/runner/scenario_runner.rb +0 -54
- data/lib/spec/story/runner/story_mediator.rb +0 -137
- data/lib/spec/story/runner/story_parser.rb +0 -247
- data/lib/spec/story/runner/story_runner.rb +0 -74
- data/lib/spec/story/scenario.rb +0 -14
- data/lib/spec/story/step.rb +0 -70
- data/lib/spec/story/step_group.rb +0 -89
- data/lib/spec/story/step_mother.rb +0 -38
- data/lib/spec/story/story.rb +0 -39
- data/lib/spec/story/world.rb +0 -124
- data/resources/spec/spec_with_flexmock.rb +0 -19
- data/rspec.gemspec +0 -32
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +0 -24
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +0 -135
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +0 -600
- data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +0 -82
- data/spec/spec/spec_spec.rb +0 -21
- data/spec/spec/story/builders.rb +0 -46
- data/spec/spec/story/extensions/main_spec.rb +0 -161
- data/spec/spec/story/extensions_spec.rb +0 -14
- data/spec/spec/story/given_scenario_spec.rb +0 -27
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +0 -90
- data/spec/spec/story/runner/scenario_collector_spec.rb +0 -27
- data/spec/spec/story/runner/scenario_runner_spec.rb +0 -214
- data/spec/spec/story/runner/story_mediator_spec.rb +0 -143
- data/spec/spec/story/runner/story_parser_spec.rb +0 -401
- data/spec/spec/story/runner/story_runner_spec.rb +0 -294
- data/spec/spec/story/runner_spec.rb +0 -93
- data/spec/spec/story/scenario_spec.rb +0 -18
- data/spec/spec/story/step_group_spec.rb +0 -157
- data/spec/spec/story/step_mother_spec.rb +0 -84
- data/spec/spec/story/step_spec.rb +0 -272
- data/spec/spec/story/story_helper.rb +0 -2
- data/spec/spec/story/story_spec.rb +0 -84
- data/spec/spec/story/world_spec.rb +0 -423
- data/story_server/prototype/javascripts/builder.js +0 -136
- data/story_server/prototype/javascripts/controls.js +0 -972
- data/story_server/prototype/javascripts/dragdrop.js +0 -976
- data/story_server/prototype/javascripts/effects.js +0 -1117
- data/story_server/prototype/javascripts/prototype.js +0 -4140
- data/story_server/prototype/javascripts/rspec.js +0 -149
- data/story_server/prototype/javascripts/scriptaculous.js +0 -58
- data/story_server/prototype/javascripts/slider.js +0 -276
- data/story_server/prototype/javascripts/sound.js +0 -55
- data/story_server/prototype/javascripts/unittest.js +0 -568
- data/story_server/prototype/lib/server.rb +0 -24
- data/story_server/prototype/stories.html +0 -176
- data/story_server/prototype/stylesheets/rspec.css +0 -136
- data/story_server/prototype/stylesheets/test.css +0 -90
@@ -20,7 +20,7 @@ Feature: Spec and test together
|
|
20
20
|
Scenario: Run with spec
|
21
21
|
Given the file ../../resources/test/spec_and_test_together.rb
|
22
22
|
|
23
|
-
When I run it with the spec
|
23
|
+
When I run it with the spec command -fs
|
24
24
|
|
25
25
|
Then the exit code should be 256
|
26
26
|
And the stdout should match "ATest"
|
@@ -10,5 +10,5 @@ Story: Test is defined, but not Test::Unit
|
|
10
10
|
|
11
11
|
Scenario: Run with spec
|
12
12
|
Given the file ../../resources/test/spec_including_test_but_not_unit.rb
|
13
|
-
When I run it with the spec
|
13
|
+
When I run it with the spec command
|
14
14
|
Then the stderr should not match "Test::Unit"
|
@@ -12,6 +12,6 @@ Story: Test::Unit::TestCase extended by rspec with should methods
|
|
12
12
|
|
13
13
|
Scenario: Run with spec
|
14
14
|
Given the file ../../resources/test/test_case_with_should_methods.rb
|
15
|
-
When I run it with the spec
|
15
|
+
When I run it with the spec command
|
16
16
|
Then the exit code should be 256
|
17
17
|
And the stdout should match "5 examples, 3 failures"
|
@@ -0,0 +1,115 @@
|
|
1
|
+
Feature: custom matcher shortcut
|
2
|
+
|
3
|
+
In order to express my domain clearly in my code examples
|
4
|
+
As an RSpec user
|
5
|
+
I want a shortcut for create custom matchers
|
6
|
+
|
7
|
+
Scenario: creating a matcher with default messages
|
8
|
+
Given the following spec:
|
9
|
+
"""
|
10
|
+
Spec::Matchers.create :be_a_multiple_of do |expected|
|
11
|
+
match do |actual|
|
12
|
+
actual % expected == 0
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 9 do
|
17
|
+
it {should be_a_multiple_of(3)}
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 9 do
|
21
|
+
it {should_not be_a_multiple_of(4)}
|
22
|
+
end
|
23
|
+
|
24
|
+
# fail intentionally to generate expected output
|
25
|
+
describe 9 do
|
26
|
+
it {should be_a_multiple_of(4)}
|
27
|
+
end
|
28
|
+
|
29
|
+
# fail intentionally to generate expected output
|
30
|
+
describe 9 do
|
31
|
+
it {should_not be_a_multiple_of(3)}
|
32
|
+
end
|
33
|
+
|
34
|
+
"""
|
35
|
+
When I run it with the spec command --format specdoc
|
36
|
+
Then the exit code should be 256
|
37
|
+
|
38
|
+
And the stdout should match "should be a multiple of 3"
|
39
|
+
And the stdout should match "should not be a multiple of 4"
|
40
|
+
And the stdout should match "should be a multiple of 4 (FAILED - 1)"
|
41
|
+
And the stdout should match "should not be a multiple of 3 (FAILED - 2)"
|
42
|
+
|
43
|
+
And the stdout should match "4 examples, 2 failures"
|
44
|
+
And the stdout should match "expected 9 to be a multiple of 4"
|
45
|
+
And the stdout should match "expected 9 not to be a multiple of 3"
|
46
|
+
|
47
|
+
Scenario: overriding the failure_message_for_should
|
48
|
+
Given the following spec:
|
49
|
+
"""
|
50
|
+
Spec::Matchers.create :be_a_multiple_of do |expected|
|
51
|
+
match do |actual|
|
52
|
+
actual % expected == 0
|
53
|
+
end
|
54
|
+
failure_message_for_should do |actual|
|
55
|
+
"expected that #{actual} would be a multiple of #{expected}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# fail intentionally to generate expected output
|
60
|
+
describe 9 do
|
61
|
+
it {should be_a_multiple_of(4)}
|
62
|
+
end
|
63
|
+
"""
|
64
|
+
When I run it with the spec command
|
65
|
+
Then the exit code should be 256
|
66
|
+
And the stdout should match "1 example, 1 failure"
|
67
|
+
And the stdout should match "expected that 9 would be a multiple of 4"
|
68
|
+
|
69
|
+
Scenario: overriding the failure_message_for_should_not
|
70
|
+
Given the following spec:
|
71
|
+
"""
|
72
|
+
Spec::Matchers.create :be_a_multiple_of do |expected|
|
73
|
+
match do |actual|
|
74
|
+
actual % expected == 0
|
75
|
+
end
|
76
|
+
failure_message_for_should_not do |actual|
|
77
|
+
"expected that #{actual} would not be a multiple of #{expected}"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# fail intentionally to generate expected output
|
82
|
+
describe 9 do
|
83
|
+
it {should_not be_a_multiple_of(3)}
|
84
|
+
end
|
85
|
+
"""
|
86
|
+
When I run it with the spec command
|
87
|
+
Then the exit code should be 256
|
88
|
+
And the stdout should match "1 example, 1 failure"
|
89
|
+
And the stdout should match "expected that 9 would not be a multiple of 3"
|
90
|
+
|
91
|
+
Scenario: overriding the description
|
92
|
+
Given the following spec:
|
93
|
+
"""
|
94
|
+
Spec::Matchers.create :be_a_multiple_of do |expected|
|
95
|
+
match do |actual|
|
96
|
+
actual % expected == 0
|
97
|
+
end
|
98
|
+
description do
|
99
|
+
"be multiple of #{expected}"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 9 do
|
104
|
+
it {should be_a_multiple_of(3)}
|
105
|
+
end
|
106
|
+
|
107
|
+
describe 9 do
|
108
|
+
it {should_not be_a_multiple_of(4)}
|
109
|
+
end
|
110
|
+
"""
|
111
|
+
When I run it with the spec command --format specdoc
|
112
|
+
Then the exit code should be 0
|
113
|
+
And the stdout should match "2 examples, 0 failures"
|
114
|
+
And the stdout should match "should be multiple of 3"
|
115
|
+
And the stdout should match "should not be multiple of 4"
|
@@ -1,9 +1,27 @@
|
|
1
|
-
|
1
|
+
Feature: mock with flexmock
|
2
2
|
|
3
3
|
As an RSpec user who prefers flexmock
|
4
4
|
I want to be able to use flexmock without rspec mocks interfering
|
5
5
|
|
6
6
|
Scenario: Mock with flexmock
|
7
|
-
Given the
|
8
|
-
|
9
|
-
|
7
|
+
Given the following spec:
|
8
|
+
"""
|
9
|
+
Spec::Runner.configure do |config|
|
10
|
+
config.mock_with :flexmock
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "plugging in flexmock" do
|
14
|
+
it "allows flexmock to be used" do
|
15
|
+
target = Object.new
|
16
|
+
flexmock(target).should_receive(:foo).once
|
17
|
+
target.foo
|
18
|
+
end
|
19
|
+
|
20
|
+
it "does not include rspec mocks" do
|
21
|
+
Spec.const_defined?(:Mocks).should be_false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
"""
|
25
|
+
When I run it with the spec command
|
26
|
+
Then the exit code should be 0
|
27
|
+
And the stdout should match "2 examples, 0 failures"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Feature: mock with mocha
|
2
|
+
|
3
|
+
As an RSpec user who prefers mocha
|
4
|
+
I want to be able to use mocha without rspec mocks interfering
|
5
|
+
|
6
|
+
Scenario: Mock with mocha
|
7
|
+
Given the following spec:
|
8
|
+
"""
|
9
|
+
Spec::Runner.configure do |config|
|
10
|
+
config.mock_with :mocha
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "plugging in mocha" do
|
14
|
+
it "allows mocha to be used" do
|
15
|
+
target = Object.new
|
16
|
+
target.expects(:foo).once
|
17
|
+
target.foo
|
18
|
+
end
|
19
|
+
|
20
|
+
it "does not include rspec mocks" do
|
21
|
+
Spec.const_defined?(:Mocks).should be_false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
"""
|
25
|
+
When I run it with the spec command
|
26
|
+
Then the exit code should be 0
|
27
|
+
And the stdout should match "2 examples, 0 failures"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Feature: mock with rr
|
2
|
+
|
3
|
+
As an RSpec user who prefers rr
|
4
|
+
I want to be able to use rr without rspec mocks interfering
|
5
|
+
|
6
|
+
Scenario: Mock with rr
|
7
|
+
Given the following spec:
|
8
|
+
"""
|
9
|
+
Spec::Runner.configure do |config|
|
10
|
+
config.mock_with :rr
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "plugging in rr" do
|
14
|
+
it "allows rr to be used" do
|
15
|
+
target = Object.new
|
16
|
+
mock(target).foo
|
17
|
+
target.foo
|
18
|
+
end
|
19
|
+
|
20
|
+
it "does not include rspec mocks" do
|
21
|
+
Spec.const_defined?(:Mocks).should be_false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
"""
|
25
|
+
When I run it with the spec command
|
26
|
+
Then the exit code should be 0
|
27
|
+
And the stdout should match "2 examples, 0 failures"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Feature: Spec and test together
|
2
|
+
|
3
|
+
As an RSpec user
|
4
|
+
I want to use stubs and mocks together
|
5
|
+
|
6
|
+
Scenario: stub in before
|
7
|
+
Given the following spec:
|
8
|
+
"""
|
9
|
+
describe "a stub in before" do
|
10
|
+
before(:each) do
|
11
|
+
@messenger = mock('messenger').as_null_object
|
12
|
+
end
|
13
|
+
|
14
|
+
it "a" do
|
15
|
+
@messenger.should_receive(:foo).with('first')
|
16
|
+
@messenger.foo('second')
|
17
|
+
@messenger.foo('third')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
"""
|
21
|
+
When I run it with the spec command --format nested
|
22
|
+
Then the stdout should match "expected :foo with (\"first\") but received it with ([\"second\"], [\"third\"])"
|
@@ -0,0 +1,81 @@
|
|
1
|
+
Feature: pending examples
|
2
|
+
|
3
|
+
RSpec offers three ways to indicate that an example is disabled pending
|
4
|
+
some action.
|
5
|
+
|
6
|
+
Scenario: pending implementation
|
7
|
+
Given the following spec:
|
8
|
+
"""
|
9
|
+
describe "an example" do
|
10
|
+
it "has not yet been implemented"
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
When I run it with the spec command
|
14
|
+
Then the exit code should be 0
|
15
|
+
And the stdout should match "1 example, 0 failures, 1 pending"
|
16
|
+
And the stdout should match "Not Yet Implemented"
|
17
|
+
And the stdout should match "current_example.rb:2"
|
18
|
+
|
19
|
+
Scenario: pending implementation with spec/test/unit
|
20
|
+
Given the following spec:
|
21
|
+
"""
|
22
|
+
require 'spec/test/unit'
|
23
|
+
describe "an example" do
|
24
|
+
it "has not yet been implemented"
|
25
|
+
end
|
26
|
+
"""
|
27
|
+
When I run it with the spec command
|
28
|
+
Then the exit code should be 0
|
29
|
+
And the stdout should match "1 example, 0 failures, 1 pending"
|
30
|
+
And the stdout should match "Not Yet Implemented"
|
31
|
+
And the stdout should match "current_example.rb:3"
|
32
|
+
|
33
|
+
Scenario: pending any arbitary reason, with no block
|
34
|
+
Given the following spec:
|
35
|
+
"""
|
36
|
+
describe "an example" do
|
37
|
+
it "is implemented but waiting" do
|
38
|
+
pending("something else getting finished")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
"""
|
42
|
+
When I run it with the spec command
|
43
|
+
Then the exit code should be 0
|
44
|
+
And the stdout should match "1 example, 0 failures, 1 pending"
|
45
|
+
And the stdout should match "(something else getting finished)"
|
46
|
+
And the stdout should match "current_example.rb:3"
|
47
|
+
|
48
|
+
Scenario: pending any arbitary reason, with a block
|
49
|
+
Given the following spec:
|
50
|
+
"""
|
51
|
+
describe "an example" do
|
52
|
+
it "is implemented but waiting" do
|
53
|
+
pending("something else getting finished") do
|
54
|
+
raise "this is the failure"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
"""
|
59
|
+
When I run it with the spec command
|
60
|
+
Then the exit code should be 0
|
61
|
+
And the stdout should match "1 example, 0 failures, 1 pending"
|
62
|
+
And the stdout should match "(something else getting finished)"
|
63
|
+
And the stdout should match "current_example.rb:3"
|
64
|
+
|
65
|
+
Scenario: pending any arbitary reason, with a block that passes
|
66
|
+
Given the following spec:
|
67
|
+
"""
|
68
|
+
describe "an example" do
|
69
|
+
it "is implemented but waiting" do
|
70
|
+
pending("something else getting finished") do
|
71
|
+
true.should be(true)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
"""
|
76
|
+
When I run it with the spec command
|
77
|
+
Then the exit code should be 256
|
78
|
+
And the stdout should match "1 example, 1 failure"
|
79
|
+
And the stdout should match "FIXED"
|
80
|
+
And the stdout should match "Expected pending 'something else getting finished' to fail. No Error was raised."
|
81
|
+
And the stdout should match "current_example.rb:3"
|
@@ -6,7 +6,9 @@ Given /^the file (.*)$/ do |relative_path|
|
|
6
6
|
end
|
7
7
|
|
8
8
|
Given /^the following spec:$/ do |spec|
|
9
|
-
|
9
|
+
dir = File.join(File.dirname(__FILE__), "/../../tmp")
|
10
|
+
FileUtils.mkdir(dir) unless test ?d, dir
|
11
|
+
@path = "#{dir}/current_example.rb"
|
10
12
|
File.open(@path, "w") do |f|
|
11
13
|
f.write spec
|
12
14
|
end
|
@@ -19,8 +21,8 @@ When /^I run it with the (.*)$/ do |interpreter|
|
|
19
21
|
when /^ruby interpreter/
|
20
22
|
args = interpreter.gsub('ruby interpreter','')
|
21
23
|
ruby("#{@path}#{args}", stderr_file.path)
|
22
|
-
when /^spec
|
23
|
-
args = interpreter.gsub('spec
|
24
|
+
when /^spec command/
|
25
|
+
args = interpreter.gsub('spec command','')
|
24
26
|
spec("#{@path}#{args}", stderr_file.path)
|
25
27
|
when 'CommandLine object' then cmdline(@path, stderr_file.path)
|
26
28
|
else raise "Unknown interpreter: #{interpreter}"
|
data/features/support/env.rb
CHANGED
@@ -22,11 +22,11 @@ module Spec
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def failure_message
|
25
|
-
"expected #{@actual
|
25
|
+
"expected #{@actual} to smart_match #{@expected}"
|
26
26
|
end
|
27
27
|
|
28
28
|
def negative_failure_message
|
29
|
-
"expected #{@actual
|
29
|
+
"expected #{@actual} not to smart_match #{@expected}"
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
data/lib/autotest/rspec.rb
CHANGED
@@ -38,7 +38,7 @@ class Autotest::Rspec < Autotest
|
|
38
38
|
def make_test_cmd(files_to_test)
|
39
39
|
return '' if files_to_test.empty?
|
40
40
|
spec_program = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec'))
|
41
|
-
return "#{ruby} #{spec_program} #{files_to_test.keys.flatten.join(' ')} #{add_options_if_present}"
|
41
|
+
return "#{ruby} #{spec_program} --autospec #{files_to_test.keys.flatten.join(' ')} #{add_options_if_present}"
|
42
42
|
end
|
43
43
|
|
44
44
|
def add_options_if_present # :nodoc:
|
data/lib/spec.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/lib/spec/autorun.rb
ADDED
data/lib/spec/dsl.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spec
|
2
|
+
module DSL
|
3
|
+
module Matchers
|
4
|
+
def create(name, &block_passed_to_create)
|
5
|
+
define_method name do |expected|
|
6
|
+
Spec::Matchers::Matcher.new name, expected, &block_passed_to_create
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
Spec::Matchers.extend Spec::DSL::Matchers
|
data/lib/spec/example.rb
CHANGED
@@ -173,9 +173,13 @@ module Spec
|
|
173
173
|
end
|
174
174
|
|
175
175
|
require 'timeout'
|
176
|
+
require 'spec/example/predicate_matchers'
|
177
|
+
require 'spec/example/example_description'
|
178
|
+
require 'spec/example/subject'
|
176
179
|
require 'spec/example/before_and_after_hooks'
|
177
180
|
require 'spec/example/pending'
|
178
181
|
require 'spec/example/module_reopening_fix'
|
182
|
+
require 'spec/example/example_group_hierarchy'
|
179
183
|
require 'spec/example/example_group_methods'
|
180
184
|
require 'spec/example/example_methods'
|
181
185
|
require 'spec/example/example_group'
|