rspec 1.0.8 → 1.1.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/CHANGES +122 -2
- data/README +10 -9
- data/Rakefile +22 -49
- data/TODO +2 -0
- data/bin/spec +1 -1
- data/bin/spec_translator +8 -8
- data/examples/{auto_spec_description_example.rb → pure/autogenerated_docstrings_example.rb} +0 -0
- data/examples/{before_and_after_example.rb → pure/before_and_after_example.rb} +1 -0
- data/examples/{behave_as_example.rb → pure/behave_as_example.rb} +0 -0
- data/examples/{custom_expectation_matchers.rb → pure/custom_expectation_matchers.rb} +0 -0
- data/examples/{custom_formatter.rb → pure/custom_formatter.rb} +1 -0
- data/examples/{dynamic_spec.rb → pure/dynamic_spec.rb} +0 -0
- data/examples/{file_accessor.rb → pure/file_accessor.rb} +1 -0
- data/examples/{file_accessor_spec.rb → pure/file_accessor_spec.rb} +0 -0
- data/examples/{greeter_spec.rb → pure/greeter_spec.rb} +1 -0
- data/examples/{helper_method_example.rb → pure/helper_method_example.rb} +0 -0
- data/examples/{io_processor.rb → pure/io_processor.rb} +0 -0
- data/examples/{io_processor_spec.rb → pure/io_processor_spec.rb} +0 -0
- data/examples/{legacy_spec.rb → pure/legacy_spec.rb} +1 -0
- data/examples/{mocking_example.rb → pure/mocking_example.rb} +0 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/{partial_mock_example.rb → pure/partial_mock_example.rb} +0 -0
- data/examples/{pending_example.rb → pure/pending_example.rb} +0 -0
- data/examples/{predicate_example.rb → pure/predicate_example.rb} +0 -0
- data/examples/{priority.txt → pure/priority.txt} +0 -0
- data/examples/pure/shared_example_group_example.rb +66 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/{stack.rb → pure/stack.rb} +0 -0
- data/examples/{stack_spec.rb → pure/stack_spec.rb} +1 -35
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/{stubbing_example.rb → pure/stubbing_example.rb} +0 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/lib/autotest/rspec.rb +1 -2
- data/lib/spec.rb +30 -6
- data/lib/spec/example.rb +12 -0
- data/lib/spec/{dsl → example}/configuration.rb +48 -39
- data/lib/spec/{dsl → example}/errors.rb +2 -2
- data/lib/spec/example/example_group.rb +16 -0
- data/lib/spec/example/example_group_factory.rb +62 -0
- data/lib/spec/example/example_group_methods.rb +412 -0
- data/lib/spec/example/example_matcher.rb +42 -0
- data/lib/spec/example/example_methods.rb +101 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +58 -0
- data/lib/spec/expectations/differs/default.rb +15 -10
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/object.rb +12 -7
- data/lib/spec/expectations/handler.rb +13 -4
- data/lib/spec/extensions.rb +2 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +54 -0
- data/lib/spec/extensions/object.rb +5 -1
- data/lib/spec/interop/test.rb +10 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +61 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +60 -0
- data/lib/spec/matchers.rb +11 -15
- data/lib/spec/matchers/be.rb +23 -6
- data/lib/spec/matchers/change.rb +25 -1
- data/lib/spec/matchers/exist.rb +17 -0
- data/lib/spec/matchers/operator_matcher.rb +1 -0
- data/lib/spec/matchers/simple_matcher.rb +29 -0
- data/lib/spec/matchers/throw_symbol.rb +2 -0
- data/lib/spec/mocks.rb +5 -2
- data/lib/spec/mocks/argument_expectation.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +62 -44
- data/lib/spec/mocks/methods.rb +2 -2
- data/lib/spec/mocks/mock.rb +24 -3
- data/lib/spec/mocks/proxy.rb +26 -23
- data/lib/spec/mocks/space.rb +1 -1
- data/lib/spec/mocks/spec_methods.rb +20 -12
- data/lib/spec/rake/spectask.rb +19 -1
- data/lib/spec/rake/verify_rcov.rb +1 -1
- data/lib/spec/runner.rb +33 -10
- data/lib/spec/runner/backtrace_tweaker.rb +3 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +18 -12
- data/lib/spec/runner/drb_command_line.rb +4 -5
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +10 -8
- data/lib/spec/runner/formatter/base_text_formatter.rb +18 -18
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +31 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +3 -5
- data/lib/spec/runner/formatter/html_formatter.rb +37 -27
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +3 -4
- data/lib/spec/runner/formatter/specdoc_formatter.rb +27 -13
- data/lib/spec/runner/formatter/story/html_formatter.rb +124 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +123 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +9 -9
- data/lib/spec/runner/option_parser.rb +140 -138
- data/lib/spec/runner/options.rb +168 -90
- data/lib/spec/runner/reporter.rb +58 -40
- data/lib/spec/runner/spec_parser.rb +11 -8
- data/lib/spec/story.rb +10 -0
- data/lib/spec/story/extensions.rb +1 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner.rb +58 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +46 -0
- data/lib/spec/story/runner/story_mediator.rb +123 -0
- data/lib/spec/story/runner/story_parser.rb +227 -0
- data/lib/spec/story/runner/story_runner.rb +67 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +48 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +37 -0
- data/lib/spec/story/story.rb +42 -0
- data/lib/spec/story/world.rb +124 -0
- data/lib/spec/version.rb +4 -5
- data/plugins/mock_frameworks/rspec.rb +1 -1
- data/spec/autotest/rspec_spec.rb +13 -7
- data/spec/autotest_helper.rb +4 -3
- data/spec/rspec_suite.rb +7 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/example/configuration_spec.rb +290 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +129 -0
- data/spec/spec/example/example_group_methods_spec.rb +465 -0
- data/spec/spec/example/example_group_spec.rb +711 -0
- data/spec/spec/{dsl → example}/example_matcher_spec.rb +23 -18
- data/spec/spec/example/example_methods_spec.rb +75 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/example_spec.rb +53 -0
- data/spec/spec/example/nested_example_group_spec.rb +59 -0
- data/spec/spec/example/pending_module_spec.rb +31 -0
- data/spec/spec/{dsl → example}/predicate_matcher_spec.rb +1 -1
- data/spec/spec/example/shared_example_group_spec.rb +265 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +5 -3
- data/spec/spec/expectations/extensions/object_spec.rb +63 -2
- data/spec/spec/extensions/main_spec.rb +50 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +10 -0
- data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +20 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +34 -0
- data/spec/spec/matchers/be_spec.rb +15 -0
- data/spec/spec/matchers/change_spec.rb +87 -0
- data/spec/spec/matchers/description_generation_spec.rb +31 -37
- data/spec/spec/matchers/exist_spec.rb +31 -22
- data/spec/spec/matchers/handler_spec.rb +42 -1
- data/spec/spec/matchers/have_spec.rb +1 -1
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +1 -1
- data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +31 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +4 -1
- data/spec/spec/mocks/bug_report_10263.rb +24 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +2 -2
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +1 -0
- data/spec/spec/mocks/mock_spec.rb +200 -102
- data/spec/spec/mocks/multiple_return_value_spec.rb +1 -1
- data/spec/spec/mocks/options_hash_spec.rb +19 -7
- data/spec/spec/mocks/partial_mock_spec.rb +31 -9
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
- data/spec/spec/mocks/stub_spec.rb +120 -98
- data/spec/spec/package/bin_spec_spec.rb +7 -5
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +140 -27
- data/spec/spec/runner/drb_command_line_spec.rb +39 -31
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +44 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +16 -11
- data/spec/spec/runner/formatter/html_formatter_spec.rb +60 -50
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +29 -13
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +103 -39
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +56 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +289 -0
- data/spec/spec/runner/heckle_runner_spec.rb +29 -14
- data/spec/spec/runner/heckler_spec.rb +4 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +5 -5
- data/spec/spec/runner/option_parser_spec.rb +86 -58
- data/spec/spec/runner/options_spec.rb +239 -120
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +6 -6
- data/spec/spec/runner/reporter_spec.rb +147 -163
- data/spec/spec/runner/spec_parser_spec.rb +31 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +12 -5
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +92 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +142 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +133 -0
- data/spec/spec/story/runner/story_parser_spec.rb +384 -0
- data/spec/spec/story/runner/story_runner_spec.rb +219 -0
- data/spec/spec/story/runner_spec.rb +106 -0
- data/spec/spec/story/scenario_spec.rb +20 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +72 -0
- data/spec/spec/story/step_spec.rb +147 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +86 -0
- data/spec/spec/story/world_spec.rb +416 -0
- data/spec/spec/translator_spec.rb +2 -1
- data/spec/spec_helper.rb +59 -2
- data/stories/all.rb +5 -0
- data/stories/example_groups/autogenerated_docstrings +26 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +20 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- metadata +232 -106
- data/EXAMPLES.rd +0 -111
- data/examples/multi_threaded_behaviour_runner.rb +0 -25
- data/examples/shared_behaviours_example.rb +0 -39
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl.rb +0 -11
- data/lib/spec/dsl/behaviour.rb +0 -220
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -82
- data/lib/spec/dsl/behaviour_eval.rb +0 -231
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -33
- data/lib/spec/dsl/description.rb +0 -76
- data/lib/spec/dsl/example.rb +0 -135
- data/lib/spec/dsl/example_matcher.rb +0 -40
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/runner/behaviour_runner.rb +0 -123
- data/lib/spec/runner/extensions/kernel.rb +0 -50
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -29
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/test_case_adapter.rb +0 -10
- data/spec/spec/dsl/behaviour_eval_spec.rb +0 -79
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -48
- data/spec/spec/dsl/behaviour_spec.rb +0 -661
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -44
- data/spec/spec/dsl/configuration_spec.rb +0 -55
- data/spec/spec/dsl/description_spec.rb +0 -89
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -160
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -252
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -229
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/extensions/bug_report_10577_spec.rb +0 -35
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -40
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -20
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'test/unit/testresult'
|
3
|
+
|
4
|
+
require 'spec/interop/test/unit/testcase'
|
5
|
+
require 'spec/interop/test/unit/testsuite_adapter'
|
6
|
+
require 'spec/interop/test/unit/autorunner'
|
7
|
+
require 'spec/interop/test/unit/testresult'
|
8
|
+
require 'spec/interop/test/unit/ui/console/testrunner'
|
9
|
+
|
10
|
+
Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'test/unit/testcase'
|
2
|
+
|
3
|
+
module Test
|
4
|
+
module Unit
|
5
|
+
# This extension of the standard Test::Unit::TestCase makes RSpec
|
6
|
+
# available from within, so that you can do things like:
|
7
|
+
#
|
8
|
+
# require 'test/unit'
|
9
|
+
# require 'spec'
|
10
|
+
#
|
11
|
+
# class MyTest < Test::Unit::TestCase
|
12
|
+
# it "should work with Test::Unit assertions" do
|
13
|
+
# assert_equal 4, 2+1
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# def test_should_work_with_rspec_expectations
|
17
|
+
# (3+1).should == 5
|
18
|
+
# end
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# See also Spec::Example::ExampleGroup
|
22
|
+
class TestCase
|
23
|
+
extend Spec::Example::ExampleGroupMethods
|
24
|
+
include Spec::Example::ExampleMethods
|
25
|
+
|
26
|
+
before(:each) {setup}
|
27
|
+
after(:each) {teardown}
|
28
|
+
|
29
|
+
class << self
|
30
|
+
def suite
|
31
|
+
Test::Unit::TestSuiteAdapter.new(self)
|
32
|
+
end
|
33
|
+
|
34
|
+
def example_method?(method_name)
|
35
|
+
should_method?(method_name) || test_method?(method_name)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_method?(method_name)
|
39
|
+
method_name =~ /^test[_A-Z]./ && (
|
40
|
+
instance_method(method_name).arity == 0 ||
|
41
|
+
instance_method(method_name).arity == -1
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def initialize(defined_description, &implementation)
|
47
|
+
@_defined_description = defined_description
|
48
|
+
@_implementation = implementation
|
49
|
+
|
50
|
+
@_result = ::Test::Unit::TestResult.new
|
51
|
+
# @method_name is important to set here because it "complies" with Test::Unit's interface.
|
52
|
+
# Some Test::Unit extensions depend on @method_name being present.
|
53
|
+
@method_name = @_defined_description
|
54
|
+
end
|
55
|
+
|
56
|
+
def run(ignore_this_argument=nil)
|
57
|
+
super()
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Test
|
2
|
+
module Unit
|
3
|
+
class TestSuiteAdapter < TestSuite
|
4
|
+
attr_reader :example_group, :examples
|
5
|
+
alias_method :tests, :examples
|
6
|
+
def initialize(example_group)
|
7
|
+
@example_group = example_group
|
8
|
+
@examples = example_group.examples
|
9
|
+
end
|
10
|
+
|
11
|
+
def name
|
12
|
+
example_group.description
|
13
|
+
end
|
14
|
+
|
15
|
+
def run(*args)
|
16
|
+
return true unless args.empty?
|
17
|
+
example_group.run
|
18
|
+
end
|
19
|
+
|
20
|
+
def size
|
21
|
+
example_group.number_of_examples
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete(example)
|
25
|
+
examples.delete example
|
26
|
+
end
|
27
|
+
|
28
|
+
def empty?
|
29
|
+
examples.empty?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'test/unit/ui/console/testrunner'
|
2
|
+
|
3
|
+
module Test
|
4
|
+
module Unit
|
5
|
+
module UI
|
6
|
+
module Console
|
7
|
+
class TestRunner
|
8
|
+
|
9
|
+
alias_method :started_without_rspec, :started
|
10
|
+
def started_with_rspec(result)
|
11
|
+
@result = result
|
12
|
+
@need_to_output_started = true
|
13
|
+
end
|
14
|
+
alias_method :started, :started_with_rspec
|
15
|
+
|
16
|
+
alias_method :test_started_without_rspec, :test_started
|
17
|
+
def test_started_with_rspec(name)
|
18
|
+
if @need_to_output_started
|
19
|
+
if @rspec_io
|
20
|
+
@rspec_io.rewind
|
21
|
+
output(@rspec_io.read)
|
22
|
+
end
|
23
|
+
output("Started")
|
24
|
+
@need_to_output_started = false
|
25
|
+
end
|
26
|
+
test_started_without_rspec(name)
|
27
|
+
end
|
28
|
+
alias_method :test_started, :test_started_with_rspec
|
29
|
+
|
30
|
+
alias_method :test_finished_without_rspec, :test_finished
|
31
|
+
def test_finished_with_rspec(name)
|
32
|
+
test_finished_without_rspec(name)
|
33
|
+
@ran_test = true
|
34
|
+
end
|
35
|
+
alias_method :test_finished, :test_finished_with_rspec
|
36
|
+
|
37
|
+
alias_method :finished_without_rspec, :finished
|
38
|
+
def finished_with_rspec(elapsed_time)
|
39
|
+
if @ran_test
|
40
|
+
finished_without_rspec(elapsed_time)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
alias_method :finished, :finished_with_rspec
|
44
|
+
|
45
|
+
alias_method :setup_mediator_without_rspec, :setup_mediator
|
46
|
+
def setup_mediator_with_rspec
|
47
|
+
orig_io = @io
|
48
|
+
@io = StringIO.new
|
49
|
+
setup_mediator_without_rspec
|
50
|
+
ensure
|
51
|
+
@rspec_io = @io
|
52
|
+
@io = orig_io
|
53
|
+
end
|
54
|
+
alias_method :setup_mediator, :setup_mediator_with_rspec
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/spec/matchers.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
require 'spec/matchers/simple_matcher'
|
1
2
|
require 'spec/matchers/be'
|
2
3
|
require 'spec/matchers/be_close'
|
3
4
|
require 'spec/matchers/change'
|
4
5
|
require 'spec/matchers/eql'
|
5
6
|
require 'spec/matchers/equal'
|
7
|
+
require 'spec/matchers/exist'
|
6
8
|
require 'spec/matchers/has'
|
7
9
|
require 'spec/matchers/have'
|
8
10
|
require 'spec/matchers/include'
|
@@ -132,27 +134,21 @@ module Spec
|
|
132
134
|
#
|
133
135
|
module Matchers
|
134
136
|
module ModuleMethods
|
135
|
-
|
136
|
-
description_generated_callbacks << callback
|
137
|
-
end
|
138
|
-
|
139
|
-
def unregister_description_generated(callback)
|
140
|
-
description_generated_callbacks.delete(callback)
|
141
|
-
end
|
137
|
+
attr_accessor :generated_description
|
142
138
|
|
143
|
-
def
|
144
|
-
|
145
|
-
callback.call(name)
|
146
|
-
end
|
139
|
+
def clear_generated_description
|
140
|
+
self.generated_description = nil
|
147
141
|
end
|
148
142
|
|
149
|
-
|
150
|
-
|
151
|
-
|
143
|
+
def capture_generated_description
|
144
|
+
yield
|
145
|
+
description = generated_description
|
146
|
+
clear_generated_description
|
147
|
+
description
|
152
148
|
end
|
153
149
|
end
|
154
150
|
extend ModuleMethods
|
155
|
-
|
151
|
+
|
156
152
|
def method_missing(sym, *args, &block) # :nodoc:
|
157
153
|
return Matchers::Be.new(sym, *args) if sym.starts_with?("be_")
|
158
154
|
return Matchers::Has.new(sym, *args) if sym.starts_with?("have_")
|
data/lib/spec/matchers/be.rb
CHANGED
@@ -3,14 +3,17 @@ module Spec
|
|
3
3
|
|
4
4
|
class Be #:nodoc:
|
5
5
|
def initialize(*args)
|
6
|
-
|
6
|
+
if args.empty?
|
7
|
+
@expected = :satisfy_if
|
8
|
+
else
|
9
|
+
@expected = parse_expected(args.shift)
|
10
|
+
end
|
7
11
|
@args = args
|
8
12
|
@comparison = ""
|
9
13
|
end
|
10
14
|
|
11
15
|
def matches?(actual)
|
12
16
|
@actual = actual
|
13
|
-
return true if match_or_compare unless handling_predicate?
|
14
17
|
if handling_predicate?
|
15
18
|
begin
|
16
19
|
return @result = actual.__send__(predicate, *@args)
|
@@ -28,8 +31,9 @@ module Spec
|
|
28
31
|
rescue
|
29
32
|
raise predicate_error
|
30
33
|
end
|
34
|
+
else
|
35
|
+
return match_or_compare
|
31
36
|
end
|
32
|
-
return false
|
33
37
|
end
|
34
38
|
|
35
39
|
def failure_message
|
@@ -43,6 +47,7 @@ module Spec
|
|
43
47
|
end
|
44
48
|
|
45
49
|
def expected
|
50
|
+
return "if to be satisfied" if @expected == :satisfy_if
|
46
51
|
return true if @expected == :true
|
47
52
|
return false if @expected == :false
|
48
53
|
return "nil" if @expected == :nil
|
@@ -50,6 +55,7 @@ module Spec
|
|
50
55
|
end
|
51
56
|
|
52
57
|
def match_or_compare
|
58
|
+
return @actual ? true : false if @expected == :satisfy_if
|
53
59
|
return @actual == true if @expected == :true
|
54
60
|
return @actual == false if @expected == :false
|
55
61
|
return @actual.nil? if @expected == :nil
|
@@ -63,6 +69,7 @@ module Spec
|
|
63
69
|
end
|
64
70
|
|
65
71
|
def ==(expected)
|
72
|
+
@prefix = "be "
|
66
73
|
@double_equal = true
|
67
74
|
@comparison = "== "
|
68
75
|
@expected = expected
|
@@ -70,6 +77,7 @@ module Spec
|
|
70
77
|
end
|
71
78
|
|
72
79
|
def ===(expected)
|
80
|
+
@prefix = "be "
|
73
81
|
@triple_equal = true
|
74
82
|
@comparison = "=== "
|
75
83
|
@expected = expected
|
@@ -77,6 +85,7 @@ module Spec
|
|
77
85
|
end
|
78
86
|
|
79
87
|
def <(expected)
|
88
|
+
@prefix = "be "
|
80
89
|
@less_than = true
|
81
90
|
@comparison = "< "
|
82
91
|
@expected = expected
|
@@ -84,6 +93,7 @@ module Spec
|
|
84
93
|
end
|
85
94
|
|
86
95
|
def <=(expected)
|
96
|
+
@prefix = "be "
|
87
97
|
@less_than_or_equal = true
|
88
98
|
@comparison = "<= "
|
89
99
|
@expected = expected
|
@@ -91,6 +101,7 @@ module Spec
|
|
91
101
|
end
|
92
102
|
|
93
103
|
def >=(expected)
|
104
|
+
@prefix = "be "
|
94
105
|
@greater_than_or_equal = true
|
95
106
|
@comparison = ">= "
|
96
107
|
@expected = expected
|
@@ -98,6 +109,7 @@ module Spec
|
|
98
109
|
end
|
99
110
|
|
100
111
|
def >(expected)
|
112
|
+
@prefix = "be "
|
101
113
|
@greater_than = true
|
102
114
|
@comparison = "> "
|
103
115
|
@expected = expected
|
@@ -113,10 +125,12 @@ module Spec
|
|
113
125
|
if Symbol === expected
|
114
126
|
@handling_predicate = true
|
115
127
|
["be_an_","be_a_","be_"].each do |@prefix|
|
116
|
-
|
128
|
+
if expected.starts_with?(@prefix)
|
129
|
+
return "#{expected.to_s.sub(@prefix,"")}".to_sym
|
130
|
+
end
|
117
131
|
end
|
118
132
|
end
|
119
|
-
@prefix = "
|
133
|
+
@prefix = ""
|
120
134
|
return expected
|
121
135
|
end
|
122
136
|
|
@@ -169,6 +183,7 @@ module Spec
|
|
169
183
|
end
|
170
184
|
|
171
185
|
# :call-seq:
|
186
|
+
# should be
|
172
187
|
# should be_true
|
173
188
|
# should be_false
|
174
189
|
# should be_nil
|
@@ -177,7 +192,8 @@ module Spec
|
|
177
192
|
# should_not be_arbitrary_predicate(*args)
|
178
193
|
#
|
179
194
|
# Given true, false, or nil, will pass if actual is
|
180
|
-
# true, false or nil (respectively).
|
195
|
+
# true, false or nil (respectively). Given no args means
|
196
|
+
# the caller should satisfy an if condition (to be or not to be).
|
181
197
|
#
|
182
198
|
# Predicates are any Ruby method that ends in a "?" and returns true or false.
|
183
199
|
# Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
|
@@ -189,6 +205,7 @@ module Spec
|
|
189
205
|
#
|
190
206
|
# == Examples
|
191
207
|
#
|
208
|
+
# target.should be
|
192
209
|
# target.should be_true
|
193
210
|
# target.should be_false
|
194
211
|
# target.should be_nil
|
data/lib/spec/matchers/change.rb
CHANGED
@@ -21,6 +21,8 @@ EOF
|
|
21
21
|
return false if @from && (@from != @before)
|
22
22
|
return false if @to && (@to != @after)
|
23
23
|
return (@before + @amount == @after) if @amount
|
24
|
+
return ((@after - @before) >= @minimum) if @minimum
|
25
|
+
return ((@after - @before) <= @maximum) if @maximum
|
24
26
|
return @before != @after
|
25
27
|
end
|
26
28
|
|
@@ -37,6 +39,10 @@ EOF
|
|
37
39
|
"#{result} should have initially been #{@from.inspect}, but was #{@before.inspect}"
|
38
40
|
elsif @amount
|
39
41
|
"#{result} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
|
42
|
+
elsif @minimum
|
43
|
+
"#{result} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
|
44
|
+
elsif @maximum
|
45
|
+
"#{result} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
|
40
46
|
else
|
41
47
|
"#{result} should have changed, but is still #{@before.inspect}"
|
42
48
|
end
|
@@ -59,6 +65,16 @@ EOF
|
|
59
65
|
self
|
60
66
|
end
|
61
67
|
|
68
|
+
def by_at_least(minimum)
|
69
|
+
@minimum = minimum
|
70
|
+
self
|
71
|
+
end
|
72
|
+
|
73
|
+
def by_at_most(maximum)
|
74
|
+
@maximum = maximum
|
75
|
+
self
|
76
|
+
end
|
77
|
+
|
62
78
|
def to(to)
|
63
79
|
@to = to
|
64
80
|
self
|
@@ -88,6 +104,14 @@ EOF
|
|
88
104
|
# team.add_player(player)
|
89
105
|
# }.should change(roster, :count).by(1)
|
90
106
|
#
|
107
|
+
# lambda {
|
108
|
+
# team.add_player(player)
|
109
|
+
# }.should change(roster, :count).by_at_least(1)
|
110
|
+
#
|
111
|
+
# lambda {
|
112
|
+
# team.add_player(player)
|
113
|
+
# }.should change(roster, :count).by_at_most(1)
|
114
|
+
#
|
91
115
|
# string = "string"
|
92
116
|
# lambda {
|
93
117
|
# string.reverse
|
@@ -109,7 +133,7 @@ EOF
|
|
109
133
|
#
|
110
134
|
# == Warning
|
111
135
|
# +should_not+ +change+ only supports the form with no subsequent calls to
|
112
|
-
# +
|
136
|
+
# +by+, +by_at_least+, +by_at_most+, +to+ or +from+.
|
113
137
|
#
|
114
138
|
# blocks passed to +should+ +change+ and +should_not+ +change+
|
115
139
|
# must use the <tt>{}</tt> form (<tt>do/end</tt> is not supported)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
class Exist
|
4
|
+
def matches? actual
|
5
|
+
@actual = actual
|
6
|
+
@actual.exist?
|
7
|
+
end
|
8
|
+
def failure_message
|
9
|
+
"expected #{@actual.inspect} to exist, but it doesn't."
|
10
|
+
end
|
11
|
+
def negative_failure_message
|
12
|
+
"expected #{@actual.inspect} to not exist, but it does."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
def exist; Exist.new; end
|
16
|
+
end
|
17
|
+
end
|