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,31 @@
|
|
1
|
+
module Spec
|
2
|
+
module Example
|
3
|
+
describe Pending do
|
4
|
+
|
5
|
+
it 'should raise an ExamplePendingError if no block is supplied' do
|
6
|
+
lambda {
|
7
|
+
include Pending
|
8
|
+
pending "TODO"
|
9
|
+
}.should raise_error(ExamplePendingError, /TODO/)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should raise an ExamplePendingError if a supplied block fails as expected' do
|
13
|
+
lambda {
|
14
|
+
include Pending
|
15
|
+
pending "TODO" do
|
16
|
+
raise "oops"
|
17
|
+
end
|
18
|
+
}.should raise_error(ExamplePendingError, /TODO/)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should raise a PendingExampleFixedError if a supplied block starts working' do
|
22
|
+
lambda {
|
23
|
+
include Pending
|
24
|
+
pending "TODO" do
|
25
|
+
# success!
|
26
|
+
end
|
27
|
+
}.should raise_error(PendingExampleFixedError, /TODO/)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,265 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
describe ExampleGroup, "with :shared => true" do
|
6
|
+
it_should_behave_like "sandboxed rspec_options"
|
7
|
+
attr_reader :formatter, :example_group
|
8
|
+
before(:each) do
|
9
|
+
@formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
|
10
|
+
options.formatters << formatter
|
11
|
+
@example_group = Class.new(ExampleGroup).describe("example_group")
|
12
|
+
class << example_group
|
13
|
+
public :include
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
after(:each) do
|
18
|
+
@formatter.rspec_verify
|
19
|
+
@example_group = nil
|
20
|
+
$shared_example_groups.clear unless $shared_example_groups.nil?
|
21
|
+
end
|
22
|
+
|
23
|
+
def make_shared_example_group(name, opts=nil, &block)
|
24
|
+
example_group = SharedExampleGroup.new(name, :shared => true, &block)
|
25
|
+
SharedExampleGroup.add_shared_example_group(example_group)
|
26
|
+
example_group
|
27
|
+
end
|
28
|
+
|
29
|
+
def non_shared_example_group()
|
30
|
+
@non_shared_example_group ||= Class.new(ExampleGroup).describe("example_group")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should accept an optional options hash" do
|
34
|
+
lambda { Class.new(ExampleGroup).describe("context") }.should_not raise_error(Exception)
|
35
|
+
lambda { Class.new(ExampleGroup).describe("context", :shared => true) }.should_not raise_error(Exception)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should return all shared example_groups" do
|
39
|
+
b1 = make_shared_example_group("b1", :shared => true) {}
|
40
|
+
b2 = make_shared_example_group("b2", :shared => true) {}
|
41
|
+
|
42
|
+
b1.should_not be(nil)
|
43
|
+
b2.should_not be(nil)
|
44
|
+
|
45
|
+
SharedExampleGroup.find_shared_example_group("b1").should equal(b1)
|
46
|
+
SharedExampleGroup.find_shared_example_group("b2").should equal(b2)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should register as shared example_group" do
|
50
|
+
example_group = make_shared_example_group("example_group") {}
|
51
|
+
SharedExampleGroup.shared_example_groups.should include(example_group)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should not be shared when not configured as shared" do
|
55
|
+
example_group = non_shared_example_group
|
56
|
+
SharedExampleGroup.shared_example_groups.should_not include(example_group)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should complain when adding a second shared example_group with the same description" do
|
60
|
+
describe "shared example_group", :shared => true do
|
61
|
+
end
|
62
|
+
lambda do
|
63
|
+
describe "shared example_group", :shared => true do
|
64
|
+
end
|
65
|
+
end.should raise_error(ArgumentError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should NOT complain when adding the same shared example_group instance again" do
|
69
|
+
shared_example_group = Class.new(ExampleGroup).describe("shared example_group", :shared => true)
|
70
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group)
|
71
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
|
75
|
+
lambda do
|
76
|
+
2.times do
|
77
|
+
describe "shared example_group which gets loaded twice", :shared => true do
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end.should_not raise_error(ArgumentError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should NOT complain when adding the same shared example_group in same file with different absolute path" do
|
84
|
+
shared_example_group_1 = Class.new(ExampleGroup).describe(
|
85
|
+
"shared example_group",
|
86
|
+
:shared => true,
|
87
|
+
:spec_path => "/my/spec/a/../shared.rb"
|
88
|
+
)
|
89
|
+
shared_example_group_2 = Class.new(ExampleGroup).describe(
|
90
|
+
"shared example_group",
|
91
|
+
:shared => true,
|
92
|
+
:spec_path => "/my/spec/b/../shared.rb"
|
93
|
+
)
|
94
|
+
|
95
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_1)
|
96
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_2)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should complain when adding a different shared example_group with the same name in a different file with the same basename" do
|
100
|
+
shared_example_group_1 = Class.new(ExampleGroup).describe(
|
101
|
+
"shared example_group",
|
102
|
+
:shared => true,
|
103
|
+
:spec_path => "/my/spec/a/shared.rb"
|
104
|
+
)
|
105
|
+
shared_example_group_2 = Class.new(ExampleGroup).describe(
|
106
|
+
"shared example_group",
|
107
|
+
:shared => true,
|
108
|
+
:spec_path => "/my/spec/b/shared.rb"
|
109
|
+
)
|
110
|
+
|
111
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_1)
|
112
|
+
lambda do
|
113
|
+
SharedExampleGroup.add_shared_example_group(shared_example_group_2)
|
114
|
+
end.should raise_error(ArgumentError, /already exists/)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should add examples to current example_group using it_should_behave_like" do
|
118
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
119
|
+
it("shared example") {}
|
120
|
+
it("shared example 2") {}
|
121
|
+
end
|
122
|
+
|
123
|
+
example_group.it("example") {}
|
124
|
+
example_group.number_of_examples.should == 1
|
125
|
+
example_group.it_should_behave_like("shared example_group")
|
126
|
+
example_group.number_of_examples.should == 3
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should add examples to current example_group using include" do
|
130
|
+
shared_example_group = describe "all things", :shared => true do
|
131
|
+
it "should do stuff" do end
|
132
|
+
end
|
133
|
+
|
134
|
+
example_group = describe "one thing" do
|
135
|
+
include shared_example_group
|
136
|
+
end
|
137
|
+
|
138
|
+
example_group.number_of_examples.should == 1
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should add examples to current example_group using it_should_behave_like with a module" do
|
142
|
+
AllThings = describe "all things", :shared => true do
|
143
|
+
it "should do stuff" do end
|
144
|
+
end
|
145
|
+
|
146
|
+
example_group = describe "one thing" do
|
147
|
+
it_should_behave_like AllThings
|
148
|
+
end
|
149
|
+
|
150
|
+
example_group.number_of_examples.should == 1
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should run shared examples" do
|
154
|
+
shared_example_ran = false
|
155
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
156
|
+
it("shared example") { shared_example_ran = true }
|
157
|
+
end
|
158
|
+
|
159
|
+
example_ran = false
|
160
|
+
|
161
|
+
example_group.it_should_behave_like("shared example_group")
|
162
|
+
example_group.it("example") {example_ran = true}
|
163
|
+
example_group.run
|
164
|
+
example_ran.should be_true
|
165
|
+
shared_example_ran.should be_true
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should run setup and teardown from shared example_group" do
|
169
|
+
shared_setup_ran = false
|
170
|
+
shared_teardown_ran = false
|
171
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
172
|
+
before { shared_setup_ran = true }
|
173
|
+
after { shared_teardown_ran = true }
|
174
|
+
it("shared example") { shared_example_ran = true }
|
175
|
+
end
|
176
|
+
|
177
|
+
example_ran = false
|
178
|
+
|
179
|
+
example_group.it_should_behave_like("shared example_group")
|
180
|
+
example_group.it("example") {example_ran = true}
|
181
|
+
example_group.run
|
182
|
+
example_ran.should be_true
|
183
|
+
shared_setup_ran.should be_true
|
184
|
+
shared_teardown_ran.should be_true
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should run before(:all) and after(:all) only once from shared example_group" do
|
188
|
+
shared_before_all_run_count = 0
|
189
|
+
shared_after_all_run_count = 0
|
190
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
191
|
+
before(:all) { shared_before_all_run_count += 1}
|
192
|
+
after(:all) { shared_after_all_run_count += 1}
|
193
|
+
it("shared example") { shared_example_ran = true }
|
194
|
+
end
|
195
|
+
|
196
|
+
example_ran = false
|
197
|
+
|
198
|
+
example_group.it_should_behave_like("shared example_group")
|
199
|
+
example_group.it("example") {example_ran = true}
|
200
|
+
example_group.run
|
201
|
+
example_ran.should be_true
|
202
|
+
shared_before_all_run_count.should == 1
|
203
|
+
shared_after_all_run_count.should == 1
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should include modules, included into shared example_group, into current example_group" do
|
207
|
+
@formatter.should_receive(:add_example_group).with(any_args)
|
208
|
+
|
209
|
+
shared_example_group = make_shared_example_group("shared example_group") do
|
210
|
+
it("shared example") { shared_example_ran = true }
|
211
|
+
end
|
212
|
+
|
213
|
+
mod1_method_called = false
|
214
|
+
mod1 = Module.new do
|
215
|
+
define_method :mod1_method do
|
216
|
+
mod1_method_called = true
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
mod2_method_called = false
|
221
|
+
mod2 = Module.new do
|
222
|
+
define_method :mod2_method do
|
223
|
+
mod2_method_called = true
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
shared_example_group.include mod2
|
228
|
+
|
229
|
+
example_group.it_should_behave_like("shared example_group")
|
230
|
+
example_group.include mod1
|
231
|
+
|
232
|
+
example_group.it("test") do
|
233
|
+
mod1_method
|
234
|
+
mod2_method
|
235
|
+
end
|
236
|
+
example_group.run
|
237
|
+
mod1_method_called.should be_true
|
238
|
+
mod2_method_called.should be_true
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should make methods defined in the shared example_group available in consuming example_group" do
|
242
|
+
shared_example_group = make_shared_example_group("shared example_group xyz") do
|
243
|
+
def a_shared_helper_method
|
244
|
+
"this got defined in a shared example_group"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
example_group.it_should_behave_like("shared example_group xyz")
|
248
|
+
success = false
|
249
|
+
example_group.it("should access a_shared_helper_method") do
|
250
|
+
a_shared_helper_method
|
251
|
+
success = true
|
252
|
+
end
|
253
|
+
example_group.run
|
254
|
+
success.should be_true
|
255
|
+
end
|
256
|
+
|
257
|
+
it "should raise when named shared example_group can not be found" do
|
258
|
+
lambda {
|
259
|
+
example_group.it_should_behave_like("non-existent shared example group")
|
260
|
+
violated
|
261
|
+
}.should raise_error("Shared Example Group 'non-existent shared example group' can not be found")
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
class GrandParentExampleGroup < Spec::Example::ExampleGroup
|
6
|
+
describe "Grandparent ExampleGroup"
|
7
|
+
end
|
8
|
+
|
9
|
+
class ParentExampleGroup < GrandParentExampleGroup
|
10
|
+
describe "Parent ExampleGroup"
|
11
|
+
it "should bar" do
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class ChildExampleGroup < ParentExampleGroup
|
16
|
+
describe "Child ExampleGroup"
|
17
|
+
it "should bam" do
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe ChildExampleGroup do
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
-
require File.dirname(__FILE__) + '/../../../../lib/spec/expectations/differs/default'
|
3
2
|
|
4
3
|
module Spec
|
5
4
|
module Fixtures
|
@@ -22,7 +21,8 @@ end
|
|
22
21
|
|
23
22
|
describe "Diff" do
|
24
23
|
before(:each) do
|
25
|
-
@
|
24
|
+
@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
25
|
+
@differ = Spec::Expectations::Differs::Default.new(@options)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should output unified diff of two strings" do
|
@@ -79,7 +79,9 @@ end
|
|
79
79
|
|
80
80
|
describe "Diff in context format" do
|
81
81
|
before(:each) do
|
82
|
-
@
|
82
|
+
@options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
83
|
+
@options.diff_format = :context
|
84
|
+
@differ = Spec::Expectations::Differs::Default.new(@options)
|
83
85
|
end
|
84
86
|
|
85
87
|
it "should output unified diff message of two objects" do
|
@@ -9,8 +9,7 @@ describe Object, "#should" do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should accept and interact with a matcher" do
|
12
|
-
@matcher.should_receive(:matches?).with(@target).and_return(true)
|
13
|
-
|
12
|
+
@matcher.should_receive(:matches?).with(@target).and_return(true)
|
14
13
|
@target.should @matcher
|
15
14
|
end
|
16
15
|
|
@@ -21,6 +20,37 @@ describe Object, "#should" do
|
|
21
20
|
@target.should @matcher
|
22
21
|
}.should fail_with("the failure message")
|
23
22
|
end
|
23
|
+
|
24
|
+
it "should raise error if it receives false directly" do
|
25
|
+
lambda {
|
26
|
+
@target.should false
|
27
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should raise error if it receives false (evaluated)" do
|
31
|
+
lambda {
|
32
|
+
@target.should eql?("foo")
|
33
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise error if it receives true" do
|
37
|
+
lambda {
|
38
|
+
@target.should true
|
39
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should raise error if it receives nil" do
|
43
|
+
lambda {
|
44
|
+
@target.should nil
|
45
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should raise error if it receives no argument and it is not used as a left side of an operator" do
|
49
|
+
pending "Is it even possible to catch this?"
|
50
|
+
lambda {
|
51
|
+
@target.should
|
52
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
53
|
+
end
|
24
54
|
end
|
25
55
|
|
26
56
|
describe Object, "#should_not" do
|
@@ -43,4 +73,35 @@ describe Object, "#should_not" do
|
|
43
73
|
@target.should_not @matcher
|
44
74
|
}.should fail_with("the negative failure message")
|
45
75
|
end
|
76
|
+
|
77
|
+
it "should raise error if it receives false directly" do
|
78
|
+
lambda {
|
79
|
+
@target.should_not false
|
80
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should raise error if it receives false (evaluated)" do
|
84
|
+
lambda {
|
85
|
+
@target.should_not eql?("foo")
|
86
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should raise error if it receives true" do
|
90
|
+
lambda {
|
91
|
+
@target.should_not true
|
92
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should raise error if it receives nil" do
|
96
|
+
lambda {
|
97
|
+
@target.should_not nil
|
98
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should raise error if it receives no argument and it is not used as a left side of an operator" do
|
102
|
+
pending "Is it even possible to catch this?"
|
103
|
+
lambda {
|
104
|
+
@target.should_not
|
105
|
+
}.should raise_error(Spec::Expectations::InvalidMatcherError)
|
106
|
+
end
|
46
107
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Extensions
|
5
|
+
describe Main do
|
6
|
+
it_should_behave_like "sandboxed rspec_options"
|
7
|
+
before(:each) do
|
8
|
+
@main = Class.new do; include Main; end
|
9
|
+
end
|
10
|
+
|
11
|
+
after(:each) do
|
12
|
+
$rspec_story_steps = @original_rspec_story_steps
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should create an Options object" do
|
16
|
+
@main.send(:rspec_options).should be_instance_of(Spec::Runner::Options)
|
17
|
+
@main.send(:rspec_options).should === $rspec_options
|
18
|
+
end
|
19
|
+
|
20
|
+
specify {@main.should respond_to(:describe)}
|
21
|
+
specify {@main.should respond_to(:context)}
|
22
|
+
|
23
|
+
it "should raise when no block given to describe" do
|
24
|
+
lambda { @main.describe "foo" }.should raise_error(ArgumentError)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should raise when no description given to describe" do
|
28
|
+
lambda { @main.describe do; end }.should raise_error(ArgumentError)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should registered ExampleGroups by default" do
|
32
|
+
example_group = @main.describe("The ExampleGroup") do end
|
33
|
+
rspec_options.example_groups.should include(example_group)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should not run unregistered ExampleGroups" do
|
37
|
+
example_group = @main.describe("The ExampleGroup") do
|
38
|
+
unregister
|
39
|
+
end
|
40
|
+
|
41
|
+
rspec_options.example_groups.should_not include(example_group)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should create a shared ExampleGroup with shared_examples_for" do
|
45
|
+
group = @main.shared_examples_for "all things" do end
|
46
|
+
group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|