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
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'spec/runner/formatter/base_formatter'
|
2
|
-
require 'spec/runner/formatter/base_text_formatter'
|
3
|
-
require 'spec/runner/formatter/progress_bar_formatter'
|
4
|
-
require 'spec/runner/formatter/rdoc_formatter'
|
5
|
-
require 'spec/runner/formatter/specdoc_formatter'
|
6
|
-
require 'spec/runner/formatter/html_formatter'
|
7
|
-
require 'spec/runner/formatter/failing_examples_formatter'
|
8
|
-
require 'spec/runner/formatter/failing_behaviours_formatter'
|
9
|
-
require 'spec/runner/formatter/snippet_extractor'
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Runner
|
3
|
-
module Formatter
|
4
|
-
class FailingBehavioursFormatter < BaseTextFormatter
|
5
|
-
def add_behaviour(behaviour_name)
|
6
|
-
if behaviour_name =~ /(.*) \(druby.*\)$/
|
7
|
-
@behaviour_name = $1
|
8
|
-
else
|
9
|
-
@behaviour_name = behaviour_name
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def example_failed(example, counter, failure)
|
14
|
-
unless @behaviour_name.nil?
|
15
|
-
@output.puts @behaviour_name
|
16
|
-
@behaviour_name = nil
|
17
|
-
@output.flush
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def dump_failure(counter, failure)
|
22
|
-
end
|
23
|
-
|
24
|
-
def dump_summary(duration, example_count, failure_count, pending_count)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Runner
|
3
|
-
module Formatter
|
4
|
-
class RdocFormatter < BaseTextFormatter
|
5
|
-
def add_behaviour(name)
|
6
|
-
@output.puts "# #{name}"
|
7
|
-
end
|
8
|
-
|
9
|
-
def example_passed(example)
|
10
|
-
@output.puts "# * #{example.description}"
|
11
|
-
@output.flush
|
12
|
-
end
|
13
|
-
|
14
|
-
def example_failed(example, counter, failure)
|
15
|
-
@output.puts "# * #{example.description} [#{counter} - FAILED]"
|
16
|
-
end
|
17
|
-
|
18
|
-
def example_pending(behaviour_name, example_name, message)
|
19
|
-
@output.puts "# * #{behaviour_name} #{example_name} [PENDING: #{message}]"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module DSL
|
5
|
-
describe BehaviourEval do
|
6
|
-
def count
|
7
|
-
@count ||= 0
|
8
|
-
@count = @count + 1
|
9
|
-
@count
|
10
|
-
end
|
11
|
-
|
12
|
-
before(:all) do
|
13
|
-
count.should == 1
|
14
|
-
end
|
15
|
-
|
16
|
-
before(:all) do
|
17
|
-
count.should == 2
|
18
|
-
end
|
19
|
-
|
20
|
-
before(:each) do
|
21
|
-
count.should == 3
|
22
|
-
end
|
23
|
-
|
24
|
-
before(:each) do
|
25
|
-
count.should == 4
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
|
29
|
-
count.should == 5
|
30
|
-
end
|
31
|
-
|
32
|
-
after(:each) do
|
33
|
-
count.should == 7
|
34
|
-
end
|
35
|
-
|
36
|
-
after(:each) do
|
37
|
-
count.should == 6
|
38
|
-
end
|
39
|
-
|
40
|
-
after(:all) do
|
41
|
-
count.should == 9
|
42
|
-
end
|
43
|
-
|
44
|
-
after(:all) do
|
45
|
-
count.should == 8
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe BehaviourEval, "instance methods" do
|
50
|
-
it "should support pending" do
|
51
|
-
lambda {
|
52
|
-
pending("something")
|
53
|
-
}.should raise_error(Spec::DSL::ExamplePendingError, "something")
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should have #pending raise a Pending error when its block fails" do
|
57
|
-
block_ran = false
|
58
|
-
lambda {
|
59
|
-
pending("something") do
|
60
|
-
block_ran = true
|
61
|
-
raise "something wrong with my example"
|
62
|
-
end
|
63
|
-
}.should raise_error(Spec::DSL::ExamplePendingError, "something")
|
64
|
-
block_ran.should == true
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should have #pending raise Spec::DSL::PendingFixedError when its block does not fail" do
|
68
|
-
block_ran = false
|
69
|
-
lambda {
|
70
|
-
pending("something") do
|
71
|
-
block_ran = true
|
72
|
-
end
|
73
|
-
}.should raise_error(Spec::DSL::PendingFixedError, "Expected pending 'something' to fail. No Error was raised.")
|
74
|
-
block_ran.should == true
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module DSL
|
5
|
-
describe BehaviourFactory do
|
6
|
-
it "should create a Spec::DSL::Behaviour by default" do
|
7
|
-
Spec::DSL::BehaviourFactory.create("behaviour") {
|
8
|
-
}.should be_an_instance_of(Spec::DSL::Behaviour)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should create a Spec::DSL::Behaviour when :behaviour_type => :default" do
|
12
|
-
Spec::DSL::BehaviourFactory.create("behaviour", :behaviour_type => :default) {
|
13
|
-
}.should be_an_instance_of(Spec::DSL::Behaviour)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should create specified type when :behaviour_type => :something_other_than_default" do
|
17
|
-
behaviour_class = Class.new do
|
18
|
-
def initialize(*args, &block); end
|
19
|
-
end
|
20
|
-
Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
|
21
|
-
Spec::DSL::BehaviourFactory.create("behaviour", :behaviour_type => :something_other_than_default) {
|
22
|
-
}.should be_an_instance_of(behaviour_class)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should type indicated by spec_path" do
|
26
|
-
behaviour_class = Class.new do
|
27
|
-
def initialize(*args, &block); end
|
28
|
-
end
|
29
|
-
Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
|
30
|
-
Spec::DSL::BehaviourFactory.create("behaviour", :spec_path => "./spec/something_other_than_default/some_spec.rb") {
|
31
|
-
}.should be_an_instance_of(behaviour_class)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should type indicated by spec_path (with spec_path generated by caller on windows)" do
|
35
|
-
behaviour_class = Class.new do
|
36
|
-
def initialize(*args, &block); end
|
37
|
-
end
|
38
|
-
Spec::DSL::BehaviourFactory.add_behaviour_class(:something_other_than_default, behaviour_class)
|
39
|
-
Spec::DSL::BehaviourFactory.create("behaviour", :spec_path => "./spec\\something_other_than_default\\some_spec.rb") {
|
40
|
-
}.should be_an_instance_of(behaviour_class)
|
41
|
-
end
|
42
|
-
|
43
|
-
after(:each) do
|
44
|
-
Spec::DSL::BehaviourFactory.remove_behaviour_class(:something_other_than_default)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,661 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module DSL
|
5
|
-
class FakeReporter < Spec::Runner::Reporter
|
6
|
-
attr_reader :added_behaviour
|
7
|
-
def add_behaviour(description)
|
8
|
-
@added_behaviour = description
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe Behaviour, "class methods" do
|
13
|
-
before :each do
|
14
|
-
@reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
|
15
|
-
@behaviour = Behaviour.new("example") {}
|
16
|
-
end
|
17
|
-
|
18
|
-
after :each do
|
19
|
-
Behaviour.clear_before_and_after!
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should not run before(:all) or after(:all) on dry run" do
|
23
|
-
before_all_ran = false
|
24
|
-
after_all_ran = false
|
25
|
-
Behaviour.before(:all) { before_all_ran = true }
|
26
|
-
Behaviour.after(:all) { after_all_ran = true }
|
27
|
-
@behaviour.it("should") {}
|
28
|
-
@behaviour.run(@reporter, true)
|
29
|
-
before_all_ran.should be_false
|
30
|
-
after_all_ran.should be_false
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should not run any example if before(:all) fails" do
|
34
|
-
spec_ran = false
|
35
|
-
Behaviour.before(:all) { raise NonStandardError }
|
36
|
-
@behaviour.it("test") {spec_ran = true}
|
37
|
-
@behaviour.run(@reporter)
|
38
|
-
spec_ran.should be_false
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should run after(:all) if before(:all) fails" do
|
42
|
-
after_all_ran = false
|
43
|
-
Behaviour.before(:all) { raise NonStandardError }
|
44
|
-
Behaviour.after(:all) { after_all_ran = true }
|
45
|
-
@behaviour.run(@reporter)
|
46
|
-
after_all_ran.should be_true
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should run after(:all) if before(:each) fails" do
|
50
|
-
after_all_ran = false
|
51
|
-
Behaviour.before(:each) { raise NonStandardError }
|
52
|
-
Behaviour.after(:all) { after_all_ran = true }
|
53
|
-
@behaviour.run(@reporter)
|
54
|
-
after_all_ran.should be_true
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should run after(:all) if any example fails" do
|
58
|
-
after_all_ran = false
|
59
|
-
@behaviour.it("should") { raise NonStandardError }
|
60
|
-
Behaviour.after(:all) { after_all_ran = true }
|
61
|
-
@behaviour.run(@reporter)
|
62
|
-
after_all_ran.should be_true
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
it "should unregister a given after(:each) block" do
|
67
|
-
after_all_ran = false
|
68
|
-
@behaviour.it("example") {}
|
69
|
-
proc = Proc.new { after_all_ran = true }
|
70
|
-
Behaviour.after(:each, &proc)
|
71
|
-
@behaviour.run(@reporter)
|
72
|
-
after_all_ran.should be_true
|
73
|
-
|
74
|
-
after_all_ran = false
|
75
|
-
Behaviour.remove_after(:each, &proc)
|
76
|
-
@behaviour.run(@reporter)
|
77
|
-
after_all_ran.should be_false
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should run second after(:each) block even if the first one fails" do
|
81
|
-
example = @behaviour.it("example") {}
|
82
|
-
second_after_ran = false
|
83
|
-
@behaviour.after(:each) do
|
84
|
-
second_after_ran = true
|
85
|
-
raise "second"
|
86
|
-
end
|
87
|
-
first_after_ran = false
|
88
|
-
@behaviour.after(:each) do
|
89
|
-
first_after_ran = true
|
90
|
-
raise "first"
|
91
|
-
end
|
92
|
-
|
93
|
-
@reporter.should_receive(:example_finished) do |example, error, location, example_not_implemented|
|
94
|
-
example.should equal(example)
|
95
|
-
error.message.should eql("first")
|
96
|
-
location.should eql("after(:each)")
|
97
|
-
example_not_implemented.should be_false
|
98
|
-
end
|
99
|
-
@behaviour.run(@reporter)
|
100
|
-
first_after_ran.should be_true
|
101
|
-
second_after_ran.should be_true
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should not run second before(:each) if the first one fails" do
|
105
|
-
@behaviour.it("example") {}
|
106
|
-
first_before_ran = false
|
107
|
-
@behaviour.before(:each) do
|
108
|
-
first_before_ran = true
|
109
|
-
raise "first"
|
110
|
-
end
|
111
|
-
second_before_ran = false
|
112
|
-
@behaviour.before(:each) do
|
113
|
-
second_before_ran = true
|
114
|
-
raise "second"
|
115
|
-
end
|
116
|
-
|
117
|
-
@reporter.should_receive(:example_finished) do |name, error, location, example_not_implemented|
|
118
|
-
name.should eql("example")
|
119
|
-
error.message.should eql("first")
|
120
|
-
location.should eql("before(:each)")
|
121
|
-
example_not_implemented.should be_false
|
122
|
-
end
|
123
|
-
@behaviour.run(@reporter)
|
124
|
-
first_before_ran.should be_true
|
125
|
-
second_before_ran.should be_false
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should supply before(:all) as description if failure in before(:all)" do
|
129
|
-
@reporter.should_receive(:example_finished) do |example, error, location|
|
130
|
-
example.description.should eql("before(:all)")
|
131
|
-
error.message.should == "in before(:all)"
|
132
|
-
location.should eql("before(:all)")
|
133
|
-
end
|
134
|
-
|
135
|
-
Behaviour.before(:all) { raise NonStandardError.new("in before(:all)") }
|
136
|
-
@behaviour.it("test") {true}
|
137
|
-
@behaviour.run(@reporter)
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should provide after(:all) as description if failure in after(:all)" do
|
141
|
-
@reporter.should_receive(:example_finished) do |example, error, location|
|
142
|
-
example.description.should eql("after(:all)")
|
143
|
-
error.message.should eql("in after(:all)")
|
144
|
-
location.should eql("after(:all)")
|
145
|
-
end
|
146
|
-
|
147
|
-
Behaviour.after(:all) { raise NonStandardError.new("in after(:all)") }
|
148
|
-
@behaviour.run(@reporter)
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
describe Behaviour do
|
153
|
-
before :each do
|
154
|
-
@reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
|
155
|
-
@behaviour = Behaviour.new("example") {}
|
156
|
-
end
|
157
|
-
|
158
|
-
after :each do
|
159
|
-
Behaviour.clear_before_and_after!
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should send reporter add_behaviour" do
|
163
|
-
@behaviour.run(@reporter)
|
164
|
-
@reporter.added_behaviour.should == "example"
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should run example on run" do
|
168
|
-
example_ran = false
|
169
|
-
@behaviour.it("should") {example_ran = true}
|
170
|
-
@behaviour.run(@reporter)
|
171
|
-
example_ran.should be_true
|
172
|
-
end
|
173
|
-
|
174
|
-
it "should not run example on dry run" do
|
175
|
-
example_ran = false
|
176
|
-
@behaviour.it("should") {example_ran = true}
|
177
|
-
@behaviour.run(@reporter, true)
|
178
|
-
example_ran.should be_false
|
179
|
-
end
|
180
|
-
|
181
|
-
it "should not run before(:all) or after(:all) on dry run" do
|
182
|
-
before_all_ran = false
|
183
|
-
after_all_ran = false
|
184
|
-
@behaviour.before(:all) { before_all_ran = true }
|
185
|
-
@behaviour.after(:all) { after_all_ran = true }
|
186
|
-
@behaviour.it("should") {}
|
187
|
-
@behaviour.run(@reporter, true)
|
188
|
-
before_all_ran.should be_false
|
189
|
-
after_all_ran.should be_false
|
190
|
-
end
|
191
|
-
|
192
|
-
it "should not run any example if before(:all) fails" do
|
193
|
-
spec_ran = false
|
194
|
-
@behaviour.before(:all) { raise "help" }
|
195
|
-
@behaviour.it("test") {spec_ran = true}
|
196
|
-
@behaviour.run(@reporter)
|
197
|
-
spec_ran.should be_false
|
198
|
-
end
|
199
|
-
|
200
|
-
it "should run after(:all) if before(:all) fails" do
|
201
|
-
after_all_ran = false
|
202
|
-
@behaviour.before(:all) { raise }
|
203
|
-
@behaviour.after(:all) { after_all_ran = true }
|
204
|
-
@behaviour.run(@reporter)
|
205
|
-
after_all_ran.should be_true
|
206
|
-
end
|
207
|
-
|
208
|
-
it "should run after(:all) if before(:each) fails" do
|
209
|
-
after_all_ran = false
|
210
|
-
@behaviour.before(:each) { raise }
|
211
|
-
@behaviour.after(:all) { after_all_ran = true }
|
212
|
-
@behaviour.run(@reporter)
|
213
|
-
after_all_ran.should be_true
|
214
|
-
end
|
215
|
-
|
216
|
-
it "should run after(:all) if any example fails" do
|
217
|
-
after_all_ran = false
|
218
|
-
@behaviour.it("should") { raise "before all error" }
|
219
|
-
@behaviour.after(:all) { after_all_ran = true }
|
220
|
-
@behaviour.run(@reporter)
|
221
|
-
after_all_ran.should be_true
|
222
|
-
end
|
223
|
-
|
224
|
-
it "should supply before(:all) as description if failure in before(:all)" do
|
225
|
-
@reporter.should_receive(:example_finished) do |example, error, location|
|
226
|
-
example.description.should eql("before(:all)")
|
227
|
-
error.message.should eql("in before(:all)")
|
228
|
-
location.should eql("before(:all)")
|
229
|
-
end
|
230
|
-
|
231
|
-
@behaviour.before(:all) { raise "in before(:all)" }
|
232
|
-
@behaviour.it("test") {true}
|
233
|
-
@behaviour.run(@reporter)
|
234
|
-
end
|
235
|
-
|
236
|
-
it "should provide after(:all) as description if failure in after(:all)" do
|
237
|
-
@reporter.should_receive(:example_finished) do |example, error, location|
|
238
|
-
example.description.should eql("after(:all)")
|
239
|
-
error.message.should eql("in after(:all)")
|
240
|
-
location.should eql("after(:all)")
|
241
|
-
end
|
242
|
-
|
243
|
-
@behaviour.after(:all) { raise "in after(:all)" }
|
244
|
-
@behaviour.run(@reporter)
|
245
|
-
end
|
246
|
-
|
247
|
-
it "should run before(:all) block only once" do
|
248
|
-
before_all_run_count_run_count = 0
|
249
|
-
@behaviour.before(:all) {before_all_run_count_run_count += 1}
|
250
|
-
@behaviour.it("test") {true}
|
251
|
-
@behaviour.it("test2") {true}
|
252
|
-
@behaviour.run(@reporter)
|
253
|
-
before_all_run_count_run_count.should == 1
|
254
|
-
end
|
255
|
-
|
256
|
-
it "calls spec_inherited class method" do
|
257
|
-
super_class_before_ran = false
|
258
|
-
super_class = Class.new do
|
259
|
-
def self.spec_inherited(mod)
|
260
|
-
mod.before {setup}
|
261
|
-
end
|
262
|
-
|
263
|
-
define_method :setup do
|
264
|
-
super_class_before_ran = true
|
265
|
-
end
|
266
|
-
end
|
267
|
-
@behaviour.inherit super_class
|
268
|
-
|
269
|
-
before_ran = false
|
270
|
-
@behaviour.before {before_ran = true}
|
271
|
-
@behaviour.it("test") {true}
|
272
|
-
@behaviour.run(@reporter)
|
273
|
-
super_class_before_ran.should be_true
|
274
|
-
before_ran.should be_true
|
275
|
-
end
|
276
|
-
|
277
|
-
it "should run after(:all) block only once" do
|
278
|
-
after_all_run_count = 0
|
279
|
-
@behaviour.after(:all) {after_all_run_count += 1}
|
280
|
-
@behaviour.it("test") {true}
|
281
|
-
@behaviour.it("test2") {true}
|
282
|
-
@behaviour.run(@reporter)
|
283
|
-
after_all_run_count.should == 1
|
284
|
-
@reporter.rspec_verify
|
285
|
-
end
|
286
|
-
|
287
|
-
it "after(:all) should have access to all instance variables defined in before(:all)" do
|
288
|
-
context_instance_value_in = "Hello there"
|
289
|
-
context_instance_value_out = ""
|
290
|
-
@behaviour.before(:all) { @instance_var = context_instance_value_in }
|
291
|
-
@behaviour.after(:all) { context_instance_value_out = @instance_var }
|
292
|
-
@behaviour.it("test") {true}
|
293
|
-
@behaviour.run(@reporter)
|
294
|
-
context_instance_value_in.should == context_instance_value_out
|
295
|
-
end
|
296
|
-
|
297
|
-
it "should copy instance variables from before(:all)'s execution context into spec's execution context" do
|
298
|
-
context_instance_value_in = "Hello there"
|
299
|
-
context_instance_value_out = ""
|
300
|
-
@behaviour.before(:all) { @instance_var = context_instance_value_in }
|
301
|
-
@behaviour.it("test") {context_instance_value_out = @instance_var}
|
302
|
-
@behaviour.run(@reporter)
|
303
|
-
context_instance_value_in.should == context_instance_value_out
|
304
|
-
end
|
305
|
-
|
306
|
-
it "should not add global before callbacks for untargetted behaviours" do
|
307
|
-
fiddle = []
|
308
|
-
|
309
|
-
Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
|
310
|
-
Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
|
311
|
-
Behaviour.before(:each, :behaviour_type => :special) { fiddle << "Behaviour.before(:each, :behaviour_type => :special)" }
|
312
|
-
Behaviour.prepend_before(:each, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:each, :behaviour_type => :special)" }
|
313
|
-
Behaviour.before(:all, :behaviour_type => :special) { fiddle << "Behaviour.before(:all, :behaviour_type => :special)" }
|
314
|
-
Behaviour.prepend_before(:all, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:all, :behaviour_type => :special)" }
|
315
|
-
|
316
|
-
behaviour = Behaviour.new("I'm not special", :behaviour_type => :not_special) {}
|
317
|
-
behaviour.run(@reporter)
|
318
|
-
fiddle.should == [
|
319
|
-
'Behaviour.prepend_before(:all)',
|
320
|
-
'Behaviour.before(:all)',
|
321
|
-
]
|
322
|
-
end
|
323
|
-
|
324
|
-
it "should add global before callbacks for targetted behaviours" do
|
325
|
-
fiddle = []
|
326
|
-
|
327
|
-
Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
|
328
|
-
Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
|
329
|
-
Behaviour.before(:each, :behaviour_type => :special) { fiddle << "Behaviour.before(:each, :behaviour_type => :special)" }
|
330
|
-
Behaviour.prepend_before(:each, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:each, :behaviour_type => :special)" }
|
331
|
-
Behaviour.before(:all, :behaviour_type => :special) { fiddle << "Behaviour.before(:all, :behaviour_type => :special)" }
|
332
|
-
Behaviour.prepend_before(:all, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:all, :behaviour_type => :special)" }
|
333
|
-
|
334
|
-
Behaviour.append_before(:behaviour_type => :special) { fiddle << "Behaviour.append_before(:each, :behaviour_type => :special)" }
|
335
|
-
|
336
|
-
behaviour = Behaviour.new("I'm not special", :behaviour_type => :special) {}
|
337
|
-
behaviour.it("test") {true}
|
338
|
-
behaviour.run(@reporter)
|
339
|
-
fiddle.should == [
|
340
|
-
'Behaviour.prepend_before(:all)',
|
341
|
-
'Behaviour.before(:all)',
|
342
|
-
'Behaviour.prepend_before(:all, :behaviour_type => :special)',
|
343
|
-
'Behaviour.before(:all, :behaviour_type => :special)',
|
344
|
-
'Behaviour.prepend_before(:each, :behaviour_type => :special)',
|
345
|
-
'Behaviour.before(:each, :behaviour_type => :special)',
|
346
|
-
'Behaviour.append_before(:each, :behaviour_type => :special)',
|
347
|
-
]
|
348
|
-
end
|
349
|
-
|
350
|
-
it "before callbacks are ordered from global to local" do
|
351
|
-
fiddle = []
|
352
|
-
super_class = Class.new do
|
353
|
-
define_method :setup do
|
354
|
-
fiddle << "superclass setup"
|
355
|
-
end
|
356
|
-
end
|
357
|
-
@behaviour.inherit super_class
|
358
|
-
|
359
|
-
Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
|
360
|
-
Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
|
361
|
-
@behaviour.prepend_before(:all) { fiddle << "prepend_before(:all)" }
|
362
|
-
@behaviour.before(:all) { fiddle << "before(:all)" }
|
363
|
-
@behaviour.prepend_before(:each) { fiddle << "prepend_before(:each)" }
|
364
|
-
@behaviour.before(:each) { fiddle << "before(:each)" }
|
365
|
-
@behaviour.it("test") {true}
|
366
|
-
@behaviour.run(@reporter)
|
367
|
-
fiddle.should == [
|
368
|
-
'Behaviour.prepend_before(:all)',
|
369
|
-
'Behaviour.before(:all)',
|
370
|
-
'prepend_before(:all)',
|
371
|
-
'before(:all)',
|
372
|
-
'prepend_before(:each)',
|
373
|
-
'before(:each)'
|
374
|
-
]
|
375
|
-
end
|
376
|
-
|
377
|
-
it "after callbacks are ordered from local to global" do
|
378
|
-
@reporter.should_receive(:add_behaviour).with any_args()
|
379
|
-
@reporter.should_receive(:example_finished).with any_args()
|
380
|
-
|
381
|
-
fiddle = []
|
382
|
-
super_class = Class.new do
|
383
|
-
define_method :teardown do
|
384
|
-
fiddle << "superclass teardown"
|
385
|
-
end
|
386
|
-
end
|
387
|
-
@behaviour.inherit super_class
|
388
|
-
|
389
|
-
@behaviour.after(:each) { fiddle << "after(:each)" }
|
390
|
-
@behaviour.append_after(:each) { fiddle << "append_after(:each)" }
|
391
|
-
@behaviour.after(:all) { fiddle << "after(:all)" }
|
392
|
-
@behaviour.append_after(:all) { fiddle << "append_after(:all)" }
|
393
|
-
Behaviour.after(:all) { fiddle << "Behaviour.after(:all)" }
|
394
|
-
Behaviour.append_after(:all) { fiddle << "Behaviour.append_after(:all)" }
|
395
|
-
@behaviour.it("test") {true}
|
396
|
-
@behaviour.run(@reporter)
|
397
|
-
fiddle.should == [
|
398
|
-
'after(:each)',
|
399
|
-
'append_after(:each)',
|
400
|
-
'after(:all)',
|
401
|
-
'append_after(:all)',
|
402
|
-
'Behaviour.after(:all)',
|
403
|
-
'Behaviour.append_after(:all)'
|
404
|
-
]
|
405
|
-
end
|
406
|
-
|
407
|
-
it "should run superclass teardown method and after block" do
|
408
|
-
super_class_teardown_ran = false
|
409
|
-
super_class = Class.new do
|
410
|
-
define_method :teardown do
|
411
|
-
super_class_teardown_ran = true
|
412
|
-
end
|
413
|
-
end
|
414
|
-
@behaviour.inherit super_class
|
415
|
-
|
416
|
-
teardown_ran = false
|
417
|
-
@behaviour.after {teardown_ran = true}
|
418
|
-
@behaviour.it("test") {true}
|
419
|
-
@behaviour.run(@reporter)
|
420
|
-
super_class_teardown_ran.should be_false
|
421
|
-
teardown_ran.should be_true
|
422
|
-
@reporter.rspec_verify
|
423
|
-
end
|
424
|
-
|
425
|
-
it "should have accessible methods from inherited superclass" do
|
426
|
-
helper_method_ran = false
|
427
|
-
super_class = Class.new do
|
428
|
-
define_method :helper_method do
|
429
|
-
helper_method_ran = true
|
430
|
-
end
|
431
|
-
end
|
432
|
-
@behaviour.inherit super_class
|
433
|
-
|
434
|
-
@behaviour.it("test") {helper_method}
|
435
|
-
@behaviour.run(@reporter)
|
436
|
-
helper_method_ran.should be_true
|
437
|
-
end
|
438
|
-
|
439
|
-
it "should have accessible class methods from inherited superclass" do
|
440
|
-
class_method_ran = false
|
441
|
-
super_class = Class.new
|
442
|
-
(class << super_class; self; end).class_eval do
|
443
|
-
define_method :class_method do
|
444
|
-
class_method_ran = true
|
445
|
-
end
|
446
|
-
end
|
447
|
-
@behaviour.inherit super_class
|
448
|
-
@behaviour.class_method
|
449
|
-
class_method_ran.should be_true
|
450
|
-
|
451
|
-
lambda {@behaviour.foobar}.should raise_error(NoMethodError)
|
452
|
-
end
|
453
|
-
|
454
|
-
it "should include inherited class methods" do
|
455
|
-
class_method_ran = false
|
456
|
-
super_class = Class.new
|
457
|
-
class << super_class
|
458
|
-
def super_class_class_method; end
|
459
|
-
end
|
460
|
-
@behaviour.inherit super_class
|
461
|
-
|
462
|
-
@behaviour.methods.should include("super_class_class_method")
|
463
|
-
end
|
464
|
-
|
465
|
-
it "should have accessible instance methods from included module" do
|
466
|
-
@reporter.should_receive(:add_behaviour).with any_args()
|
467
|
-
@reporter.should_receive(:example_finished).with any_args()
|
468
|
-
|
469
|
-
mod1_method_called = false
|
470
|
-
mod1 = Module.new do
|
471
|
-
define_method :mod1_method do
|
472
|
-
mod1_method_called = true
|
473
|
-
end
|
474
|
-
end
|
475
|
-
|
476
|
-
mod2_method_called = false
|
477
|
-
mod2 = Module.new do
|
478
|
-
define_method :mod2_method do
|
479
|
-
mod2_method_called = true
|
480
|
-
end
|
481
|
-
end
|
482
|
-
|
483
|
-
@behaviour.include mod1, mod2
|
484
|
-
|
485
|
-
@behaviour.it("test") do
|
486
|
-
mod1_method
|
487
|
-
mod2_method
|
488
|
-
end
|
489
|
-
@behaviour.run(@reporter)
|
490
|
-
mod1_method_called.should be_true
|
491
|
-
mod2_method_called.should be_true
|
492
|
-
end
|
493
|
-
|
494
|
-
it "should have accessible class methods from included module" do
|
495
|
-
mod1_method_called = false
|
496
|
-
mod1 = Module.new do
|
497
|
-
class_methods = Module.new do
|
498
|
-
define_method :mod1_method do
|
499
|
-
mod1_method_called = true
|
500
|
-
end
|
501
|
-
end
|
502
|
-
|
503
|
-
metaclass.class_eval do
|
504
|
-
define_method(:included) do |receiver|
|
505
|
-
receiver.extend class_methods
|
506
|
-
end
|
507
|
-
end
|
508
|
-
end
|
509
|
-
|
510
|
-
mod2_method_called = false
|
511
|
-
mod2 = Module.new do
|
512
|
-
class_methods = Module.new do
|
513
|
-
define_method :mod2_method do
|
514
|
-
mod2_method_called = true
|
515
|
-
end
|
516
|
-
end
|
517
|
-
|
518
|
-
metaclass.class_eval do
|
519
|
-
define_method(:included) do |receiver|
|
520
|
-
receiver.extend class_methods
|
521
|
-
end
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
@behaviour.include mod1, mod2
|
526
|
-
|
527
|
-
@behaviour.mod1_method
|
528
|
-
@behaviour.mod2_method
|
529
|
-
mod1_method_called.should be_true
|
530
|
-
mod2_method_called.should be_true
|
531
|
-
end
|
532
|
-
|
533
|
-
it "should count number of specs" do
|
534
|
-
@behaviour.it("one") {}
|
535
|
-
@behaviour.it("two") {}
|
536
|
-
@behaviour.it("three") {}
|
537
|
-
@behaviour.it("four") {}
|
538
|
-
@behaviour.number_of_examples.should == 4
|
539
|
-
end
|
540
|
-
|
541
|
-
it "should not match anything when there are no examples" do
|
542
|
-
@behaviour.should_not be_matches(['context'])
|
543
|
-
end
|
544
|
-
|
545
|
-
it "should match when one of the examples match" do
|
546
|
-
example = mock('my example')
|
547
|
-
example.should_receive(:matches?).and_return(true)
|
548
|
-
@behaviour.stub!(:examples).and_return([example])
|
549
|
-
@behaviour.should be_matches(['jalla'])
|
550
|
-
end
|
551
|
-
|
552
|
-
it "should include targetted modules included using configuration" do
|
553
|
-
$included_modules = []
|
554
|
-
|
555
|
-
mod1 = Module.new do
|
556
|
-
class << self
|
557
|
-
def included(mod)
|
558
|
-
$included_modules << self
|
559
|
-
end
|
560
|
-
end
|
561
|
-
end
|
562
|
-
|
563
|
-
mod2 = Module.new do
|
564
|
-
class << self
|
565
|
-
def included(mod)
|
566
|
-
$included_modules << self
|
567
|
-
end
|
568
|
-
end
|
569
|
-
end
|
570
|
-
|
571
|
-
mod3 = Module.new do
|
572
|
-
class << self
|
573
|
-
def included(mod)
|
574
|
-
$included_modules << self
|
575
|
-
end
|
576
|
-
end
|
577
|
-
end
|
578
|
-
|
579
|
-
begin
|
580
|
-
Spec::Runner.configuration.include(mod1, mod2)
|
581
|
-
Spec::Runner.configuration.include(mod3, :behaviour_type => :cat)
|
582
|
-
|
583
|
-
behaviour = Behaviour.new("I'm special", :behaviour_type => :dog) do
|
584
|
-
end.run(@reporter)
|
585
|
-
|
586
|
-
$included_modules.should include(mod1)
|
587
|
-
$included_modules.should include(mod2)
|
588
|
-
$included_modules.should_not include(mod3)
|
589
|
-
ensure
|
590
|
-
Spec::Runner.configuration.exclude(mod1, mod2, mod3)
|
591
|
-
end
|
592
|
-
end
|
593
|
-
|
594
|
-
it "should include any predicate_matchers included using configuration" do
|
595
|
-
$included_predicate_matcher_found = false
|
596
|
-
Spec::Runner.configuration.predicate_matchers[:do_something] = :does_something?
|
597
|
-
Behaviour.new('example') do
|
598
|
-
it "should respond to do_something" do
|
599
|
-
$included_predicate_matcher_found = respond_to?(:do_something)
|
600
|
-
end
|
601
|
-
end.run(@reporter)
|
602
|
-
$included_predicate_matcher_found.should be(true)
|
603
|
-
end
|
604
|
-
|
605
|
-
it "should use a mock framework set up in config" do
|
606
|
-
mod = Module.new do
|
607
|
-
class << self
|
608
|
-
def included(mod)
|
609
|
-
$included_module = mod
|
610
|
-
end
|
611
|
-
end
|
612
|
-
end
|
613
|
-
|
614
|
-
begin
|
615
|
-
$included_module = nil
|
616
|
-
Spec::Runner.configuration.mock_with mod
|
617
|
-
|
618
|
-
behaviour = Behaviour.new('example') do
|
619
|
-
end.run(@reporter)
|
620
|
-
|
621
|
-
$included_module.should_not be_nil
|
622
|
-
ensure
|
623
|
-
Spec::Runner.configuration.mock_with :rspec
|
624
|
-
end
|
625
|
-
end
|
626
|
-
|
627
|
-
end
|
628
|
-
|
629
|
-
class BehaviourSubclass < Behaviour
|
630
|
-
public :described_type
|
631
|
-
end
|
632
|
-
|
633
|
-
describe Behaviour, " subclass" do
|
634
|
-
it "should have access to the described_type" do
|
635
|
-
BehaviourSubclass.new(Example){}.described_type.should == Example
|
636
|
-
end
|
637
|
-
|
638
|
-
it "should figure out its behaviour_type based on its name ()" do
|
639
|
-
BehaviourSubclass.new(Object){}.behaviour_type.should == :subclass
|
640
|
-
end
|
641
|
-
|
642
|
-
# TODO - add an example about shared behaviours
|
643
|
-
end
|
644
|
-
|
645
|
-
describe Enumerable do
|
646
|
-
def each(&block)
|
647
|
-
["4", "2", "1"].each(&block)
|
648
|
-
end
|
649
|
-
|
650
|
-
it "should be included in examples because it is a module" do
|
651
|
-
map{|e| e.to_i}.should == [4,2,1]
|
652
|
-
end
|
653
|
-
end
|
654
|
-
|
655
|
-
describe String do
|
656
|
-
it "should not be included in examples because it is not a module" do
|
657
|
-
lambda{self.map}.should raise_error(NoMethodError, /undefined method `map' for/)
|
658
|
-
end
|
659
|
-
end
|
660
|
-
end
|
661
|
-
end
|