rspec 1.1.12 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +2 -1
- data/.document +7 -0
- data/History.txt +58 -0
- data/License.txt +1 -1
- data/Manifest.txt +45 -82
- data/README.txt +3 -6
- data/Rakefile +33 -13
- data/Ruby1.9.markdown +32 -0
- data/TODO.txt +10 -4
- data/Upgrade.markdown +63 -0
- data/bin/spec +1 -1
- data/cucumber.yml +3 -0
- data/examples/failing/{failing_autogenerated_docstrings_example.rb → failing_implicit_docstrings_example.rb} +0 -0
- data/examples/failing/pending_example.rb +9 -0
- data/examples/failing/spec_helper.rb +1 -1
- data/examples/passing/{custom_expectation_matchers.rb → custom_matchers.rb} +0 -0
- data/examples/passing/filtered_formatter.rb +18 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/passing/implicit_docstrings_example.rb +18 -0
- data/examples/passing/spec_helper.rb +1 -1
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +17 -18
- data/features/before_and_after_blocks/before_and_after_blocks.feature +4 -4
- data/features/example_groups/example_group_with_should_methods.feature +1 -1
- data/features/example_groups/{autogenerated_docstrings.feature → implicit_docstrings.feature} +7 -9
- data/features/example_groups/nested_groups.feature +1 -1
- data/features/heckle/heckle.feature +56 -0
- data/features/interop/examples_and_tests_together.feature +1 -1
- data/features/interop/test_but_not_test_unit.feature +1 -1
- data/features/interop/test_case_with_should_methods.feature +1 -1
- data/features/matchers/create_matcher.feature +115 -0
- data/features/mock_framework_integration/use_flexmock.feature +22 -4
- data/features/mock_framework_integration/use_mocha.feature +27 -0
- data/features/mock_framework_integration/use_rr.feature +27 -0
- data/features/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features/pending/pending_examples.feature +81 -0
- data/features/step_definitions/running_rspec.rb +5 -3
- data/features/support/env.rb +1 -1
- data/features/support/matchers/smart_match.rb +2 -2
- data/lib/autotest/rspec.rb +1 -1
- data/lib/spec.rb +1 -1
- data/lib/{adapters → spec/adapters}/mock_frameworks/flexmock.rb +0 -0
- data/lib/{adapters → spec/adapters}/mock_frameworks/mocha.rb +0 -0
- data/lib/{adapters → spec/adapters}/mock_frameworks/rr.rb +0 -0
- data/lib/{adapters → spec/adapters}/mock_frameworks/rspec.rb +0 -1
- data/lib/spec/autorun.rb +3 -0
- data/lib/spec/dsl.rb +3 -1
- data/lib/spec/dsl/matchers.rb +13 -0
- data/lib/spec/example.rb +4 -0
- data/lib/spec/example/before_and_after_hooks.rb +5 -20
- data/lib/spec/example/errors.rb +3 -3
- data/lib/spec/example/example_description.rb +15 -0
- data/lib/spec/example/example_group.rb +0 -15
- data/lib/spec/example/example_group_factory.rb +34 -46
- data/lib/spec/example/example_group_hierarchy.rb +53 -0
- data/lib/spec/example/example_group_methods.rb +101 -211
- data/lib/spec/example/example_methods.rb +61 -81
- data/lib/spec/example/module_reopening_fix.rb +23 -1
- data/lib/spec/example/pending.rb +3 -2
- data/lib/spec/example/predicate_matchers.rb +47 -0
- data/lib/spec/example/subject.rb +91 -0
- data/lib/spec/expectations.rb +1 -1
- data/lib/spec/expectations/differs/default.rb +0 -1
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/handler.rb +13 -6
- data/lib/spec/interop/test.rb +5 -0
- data/lib/spec/interop/test/unit/testcase.rb +5 -22
- data/lib/spec/matchers.rb +22 -8
- data/lib/spec/matchers/be.rb +4 -9
- data/lib/spec/matchers/be_close.rb +20 -5
- data/lib/spec/matchers/be_instance_of.rb +45 -0
- data/lib/spec/matchers/be_kind_of.rb +45 -0
- data/lib/spec/matchers/change.rb +8 -6
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/eql.rb +24 -6
- data/lib/spec/matchers/equal.rb +24 -6
- data/lib/spec/matchers/exist.rb +21 -5
- data/lib/spec/matchers/extensions/instance_exec.rb +25 -0
- data/lib/spec/matchers/generated_descriptions.rb +2 -2
- data/lib/spec/matchers/has.rb +28 -11
- data/lib/spec/matchers/have.rb +2 -2
- data/lib/spec/matchers/include.rb +2 -2
- data/lib/spec/matchers/match.rb +25 -7
- data/lib/spec/matchers/match_array.rb +3 -3
- data/lib/spec/matchers/matcher.rb +51 -0
- data/lib/spec/matchers/method_missing.rb +2 -2
- data/lib/spec/matchers/operator_matcher.rb +12 -5
- data/lib/spec/matchers/raise_error.rb +3 -3
- data/lib/spec/matchers/respond_to.rb +3 -3
- data/lib/spec/matchers/satisfy.rb +7 -7
- data/lib/spec/matchers/throw_symbol.rb +3 -5
- data/lib/spec/mocks.rb +3 -3
- data/lib/spec/mocks/argument_expectation.rb +15 -15
- data/lib/spec/mocks/{argument_constraints.rb → argument_matchers.rb} +19 -23
- data/lib/spec/mocks/error_generator.rb +5 -8
- data/lib/spec/mocks/framework.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +5 -13
- data/lib/spec/mocks/mock.rb +4 -5
- data/lib/spec/mocks/proxy.rb +9 -5
- data/lib/spec/mocks/spec_methods.rb +10 -1
- data/lib/spec/rake/spectask.rb +0 -1
- data/lib/spec/runner.rb +6 -28
- data/lib/spec/runner/configuration.rb +3 -3
- data/lib/spec/runner/drb_command_line.rb +2 -1
- data/lib/spec/runner/example_group_runner.rb +3 -2
- data/lib/spec/runner/formatter/base_text_formatter.rb +34 -19
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +3 -5
- data/lib/spec/runner/formatter/html_formatter.rb +2 -3
- data/lib/spec/runner/formatter/nested_text_formatter.rb +7 -25
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +1 -1
- data/lib/spec/runner/formatter/snippet_extractor.rb +1 -1
- data/lib/spec/runner/formatter/specdoc_formatter.rb +1 -7
- data/lib/spec/runner/heckle_runner.rb +3 -6
- data/lib/spec/runner/heckle_runner_unsupported.rb +1 -1
- data/lib/spec/runner/option_parser.rb +19 -21
- data/lib/spec/runner/options.rb +32 -27
- data/lib/spec/runner/reporter.rb +8 -9
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +2 -2
- data/{features/support → resources}/helpers/cmdline.rb +2 -2
- data/resources/rake/verify_rcov.rake +1 -1
- data/resources/spec/example_group_with_should_methods.rb +1 -1
- data/resources/spec/simple_spec.rb +1 -1
- data/resources/test/spec_and_test_together.rb +2 -3
- data/resources/test/spec_including_test_but_not_unit.rb +1 -1
- data/resources/test/test_case_with_should_methods.rb +2 -3
- data/spec/autotest/autotest_helper.rb +0 -1
- data/spec/autotest/rspec_spec.rb +95 -98
- data/spec/spec/dsl/main_spec.rb +3 -3
- data/spec/spec/dsl/matchers_spec.rb +25 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +14 -15
- data/spec/spec/example/example_group_factory_spec.rb +31 -44
- data/spec/spec/example/example_group_methods_spec.rb +86 -52
- data/spec/spec/example/example_group_spec.rb +32 -79
- data/spec/spec/example/example_matcher_spec.rb +10 -10
- data/spec/spec/example/example_methods_spec.rb +108 -242
- data/spec/spec/example/nested_example_group_spec.rb +2 -2
- data/spec/spec/example/pending_module_spec.rb +66 -41
- data/spec/spec/example/shared_example_group_spec.rb +4 -4
- data/spec/spec/{matchers → expectations}/handler_spec.rb +52 -4
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +2 -2
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +2 -2
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +2 -2
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +2 -2
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +2 -2
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +2 -2
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +2 -2
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +2 -2
- data/spec/spec/interop/test/unit/testcase_spec.rb +0 -4
- data/spec/spec/matchers/be_close_spec.rb +1 -1
- data/spec/spec/matchers/be_instance_of_spec.rb +29 -0
- data/spec/spec/matchers/be_kind_of_spec.rb +29 -0
- data/spec/spec/matchers/change_spec.rb +20 -0
- data/spec/spec/matchers/compatibility_spec.rb +34 -0
- data/spec/spec/matchers/description_generation_spec.rb +0 -12
- data/spec/spec/matchers/eql_spec.rb +2 -2
- data/spec/spec/matchers/equal_spec.rb +2 -2
- data/spec/spec/matchers/exist_spec.rb +8 -4
- data/spec/spec/matchers/have_spec.rb +4 -4
- data/spec/spec/matchers/match_spec.rb +2 -2
- data/spec/spec/matchers/matcher_methods_spec.rb +1 -1
- data/spec/spec/matchers/matcher_spec.rb +97 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +8 -8
- data/spec/spec/mocks/{bug_report_496.rb → bug_report_496_spec.rb} +0 -0
- data/spec/spec/mocks/{failing_mock_argument_constraints_spec.rb → failing_argument_matchers_spec.rb} +2 -2
- data/spec/spec/mocks/hash_including_matcher_spec.rb +4 -4
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +3 -3
- data/spec/spec/mocks/mock_spec.rb +27 -2
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +1 -1
- data/spec/spec/mocks/partial_mock_spec.rb +18 -3
- data/spec/spec/mocks/{passing_mock_argument_constraints_spec.rb → passing_argument_matchers_spec.rb} +6 -6
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +13 -1
- data/spec/spec/package/bin_spec_spec.rb +2 -2
- data/spec/spec/runner/configuration_spec.rb +12 -12
- data/spec/spec/runner/drb_command_line_spec.rb +71 -73
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +82 -1
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +8 -8
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +4 -4
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +8 -8
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +38 -26
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +61 -53
- data/spec/spec/runner/formatter/html_formatter_spec.rb +100 -48
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +20 -34
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +2 -1
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +9 -6
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +20 -20
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +38 -26
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +55 -47
- data/spec/spec/runner/formatter/{spec_mate_formatter_spec.rb → text_mate_formatter_spec.rb} +11 -9
- data/spec/spec/runner/heckle_runner_spec.rb +1 -1
- data/spec/spec/runner/heckler_spec.rb +1 -1
- data/spec/spec/runner/option_parser_spec.rb +28 -11
- data/spec/spec/runner/options_spec.rb +34 -0
- data/spec/spec/runner/reporter_spec.rb +66 -62
- data/spec/spec/runner/resources/utf8_encoded.rb +1 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner_spec.rb +7 -5
- data/spec/spec_helper.rb +24 -2
- metadata +49 -90
- data/examples/passing/autogenerated_docstrings_example.rb +0 -25
- data/examples/passing/before_and_after_example.rb +0 -40
- data/examples/passing/behave_as_example.rb +0 -45
- data/examples/passing/legacy_spec.rb +0 -11
- data/examples/passing/priority.txt +0 -1
- data/features/support/helpers/story_helper.rb +0 -16
- data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/lib/spec/runner/formatter/story/html_formatter.rb +0 -174
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +0 -194
- data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +0 -42
- data/lib/spec/story.rb +0 -10
- data/lib/spec/story/extensions.rb +0 -3
- data/lib/spec/story/extensions/main.rb +0 -86
- data/lib/spec/story/extensions/regexp.rb +0 -9
- data/lib/spec/story/extensions/string.rb +0 -9
- data/lib/spec/story/given_scenario.rb +0 -14
- data/lib/spec/story/runner.rb +0 -57
- data/lib/spec/story/runner/plain_text_story_runner.rb +0 -48
- data/lib/spec/story/runner/scenario_collector.rb +0 -18
- data/lib/spec/story/runner/scenario_runner.rb +0 -54
- data/lib/spec/story/runner/story_mediator.rb +0 -137
- data/lib/spec/story/runner/story_parser.rb +0 -247
- data/lib/spec/story/runner/story_runner.rb +0 -74
- data/lib/spec/story/scenario.rb +0 -14
- data/lib/spec/story/step.rb +0 -70
- data/lib/spec/story/step_group.rb +0 -89
- data/lib/spec/story/step_mother.rb +0 -38
- data/lib/spec/story/story.rb +0 -39
- data/lib/spec/story/world.rb +0 -124
- data/resources/spec/spec_with_flexmock.rb +0 -19
- data/rspec.gemspec +0 -32
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +0 -24
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +0 -135
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +0 -600
- data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +0 -82
- data/spec/spec/spec_spec.rb +0 -21
- data/spec/spec/story/builders.rb +0 -46
- data/spec/spec/story/extensions/main_spec.rb +0 -161
- data/spec/spec/story/extensions_spec.rb +0 -14
- data/spec/spec/story/given_scenario_spec.rb +0 -27
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +0 -90
- data/spec/spec/story/runner/scenario_collector_spec.rb +0 -27
- data/spec/spec/story/runner/scenario_runner_spec.rb +0 -214
- data/spec/spec/story/runner/story_mediator_spec.rb +0 -143
- data/spec/spec/story/runner/story_parser_spec.rb +0 -401
- data/spec/spec/story/runner/story_runner_spec.rb +0 -294
- data/spec/spec/story/runner_spec.rb +0 -93
- data/spec/spec/story/scenario_spec.rb +0 -18
- data/spec/spec/story/step_group_spec.rb +0 -157
- data/spec/spec/story/step_mother_spec.rb +0 -84
- data/spec/spec/story/step_spec.rb +0 -272
- data/spec/spec/story/story_helper.rb +0 -2
- data/spec/spec/story/story_spec.rb +0 -84
- data/spec/spec/story/world_spec.rb +0 -423
- data/story_server/prototype/javascripts/builder.js +0 -136
- data/story_server/prototype/javascripts/controls.js +0 -972
- data/story_server/prototype/javascripts/dragdrop.js +0 -976
- data/story_server/prototype/javascripts/effects.js +0 -1117
- data/story_server/prototype/javascripts/prototype.js +0 -4140
- data/story_server/prototype/javascripts/rspec.js +0 -149
- data/story_server/prototype/javascripts/scriptaculous.js +0 -58
- data/story_server/prototype/javascripts/slider.js +0 -276
- data/story_server/prototype/javascripts/sound.js +0 -55
- data/story_server/prototype/javascripts/unittest.js +0 -568
- data/story_server/prototype/lib/server.rb +0 -24
- data/story_server/prototype/stories.html +0 -176
- data/story_server/prototype/stylesheets/rspec.css +0 -136
- data/story_server/prototype/stylesheets/test.css +0 -90
@@ -1,82 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../../../spec_helper'
|
2
|
-
require 'spec/runner/formatter/story/progress_bar_formatter'
|
3
|
-
|
4
|
-
module Spec
|
5
|
-
module Runner
|
6
|
-
module Formatter
|
7
|
-
module Story
|
8
|
-
describe ProgressBarFormatter do
|
9
|
-
before :each do
|
10
|
-
# given
|
11
|
-
@out = StringIO.new
|
12
|
-
@out.stub!(:tty?).and_return(true)
|
13
|
-
@tweaker = mock('tweaker')
|
14
|
-
@tweaker.stub!(:tweak_backtrace)
|
15
|
-
@options = mock('options')
|
16
|
-
@options.stub!(:colour).and_return(true)
|
17
|
-
@options.stub!(:backtrace_tweaker).and_return(@tweaker)
|
18
|
-
|
19
|
-
@formatter = ProgressBarFormatter.new(@options, @out)
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should print some white space before test summary' do
|
23
|
-
#when
|
24
|
-
@formatter.run_started(1)
|
25
|
-
@formatter.run_ended
|
26
|
-
|
27
|
-
#then
|
28
|
-
@out.string.should =~ /^\n{2}/
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should print how long tests took to complete" do
|
32
|
-
#when
|
33
|
-
now = Time.now
|
34
|
-
future = now+1
|
35
|
-
Time.stub!(:now).and_return(now)
|
36
|
-
@formatter.run_started(1)
|
37
|
-
Time.stub!(:now).and_return(future)
|
38
|
-
@formatter.run_ended
|
39
|
-
|
40
|
-
#then
|
41
|
-
@out.string.should include("Finished in %f seconds" % (future-now))
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
it "should push green dot for passing scenario" do
|
46
|
-
#when
|
47
|
-
@formatter.scenario_started('','')
|
48
|
-
@formatter.step_succeeded('', '')
|
49
|
-
@formatter.scenario_ended
|
50
|
-
@formatter.story_ended '', ''
|
51
|
-
|
52
|
-
#then
|
53
|
-
@out.string.should eql("\e[32m.\e[0m")
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should push red F for failure scenario" do
|
57
|
-
#when
|
58
|
-
@formatter.scenario_started('','')
|
59
|
-
@formatter.step_failed('', '')
|
60
|
-
@formatter.scenario_failed('', '', '')
|
61
|
-
@formatter.story_ended '', ''
|
62
|
-
|
63
|
-
#then
|
64
|
-
@out.string.should eql("\e[31mF\e[0m")
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should push yellow P for pending scenario" do
|
68
|
-
#when
|
69
|
-
@formatter.scenario_started('','')
|
70
|
-
@formatter.step_pending('', '')
|
71
|
-
@formatter.scenario_pending('story', '', '')
|
72
|
-
@formatter.story_ended '', ''
|
73
|
-
|
74
|
-
#then
|
75
|
-
@out.string.should eql("\e[33mP\e[0m")
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
data/spec/spec/spec_spec.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
-
|
3
|
-
describe Spec::Runner, "#exit?" do
|
4
|
-
describe "when ::Test is absent during loading but present when running exit?" do
|
5
|
-
# believe it or not, this can happen when ActiveSupport is loaded after RSpec is,
|
6
|
-
# since it loads active_support/core_ext/test/unit/assertions.rb which defines
|
7
|
-
# Test::Unit but doesn't actually load test/unit
|
8
|
-
|
9
|
-
before(:each) do
|
10
|
-
Object.const_set(:Test, Module.new)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "does not attempt to access the non-loaded test/unit library" do
|
14
|
-
lambda { Spec::Runner.exit? }.should_not raise_error
|
15
|
-
end
|
16
|
-
|
17
|
-
after(:each) do
|
18
|
-
Object.send(:remove_const, :Test)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/spec/spec/story/builders.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
class StoryBuilder
|
4
|
-
def initialize
|
5
|
-
@title = 'a story'
|
6
|
-
@narrative = 'narrative'
|
7
|
-
end
|
8
|
-
|
9
|
-
def title(value)
|
10
|
-
@title = value
|
11
|
-
self
|
12
|
-
end
|
13
|
-
|
14
|
-
def narrative(value)
|
15
|
-
@narrative = value
|
16
|
-
self
|
17
|
-
end
|
18
|
-
|
19
|
-
def to_story(&block)
|
20
|
-
block = lambda {} unless block_given?
|
21
|
-
Story.new @title, @narrative, &block
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
class ScenarioBuilder
|
26
|
-
def initialize
|
27
|
-
@name = 'a scenario'
|
28
|
-
@story = StoryBuilder.new.to_story
|
29
|
-
end
|
30
|
-
|
31
|
-
def name(value)
|
32
|
-
@name = value
|
33
|
-
self
|
34
|
-
end
|
35
|
-
|
36
|
-
def story(value)
|
37
|
-
@story = value
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
def to_scenario(&block)
|
42
|
-
Scenario.new @story, @name, &block
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,161 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Story
|
5
|
-
module Extensions
|
6
|
-
describe "the main object extended with Main", :shared => true do
|
7
|
-
before(:each) do
|
8
|
-
@main = Class.new do; include Main; end
|
9
|
-
@original_rspec_story_steps, $rspec_story_steps = $rspec_story_steps, nil
|
10
|
-
end
|
11
|
-
|
12
|
-
after(:each) do
|
13
|
-
$rspec_story_steps = @original_rspec_story_steps
|
14
|
-
end
|
15
|
-
|
16
|
-
def have_step(type, name)
|
17
|
-
return simple_matcher(%[step group containing a #{type} named #{name.inspect}]) do |actual|
|
18
|
-
Spec::Story::Step === actual.find(type, name)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe Main, "#run_story" do
|
24
|
-
it_should_behave_like "the main object extended with Main"
|
25
|
-
|
26
|
-
it "should create a PlainTextStoryRunner with run_story" do
|
27
|
-
Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).and_return(mock("runner", :null_object => true))
|
28
|
-
@main.run_story
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should yield the runner if arity == 1" do
|
32
|
-
File.should_receive(:read).with("some/path").and_return("Story: foo")
|
33
|
-
$main_spec_runner = nil
|
34
|
-
@main.run_story("some/path") do |runner|
|
35
|
-
$main_spec_runner = runner
|
36
|
-
end
|
37
|
-
$main_spec_runner.should be_an_instance_of(Spec::Story::Runner::PlainTextStoryRunner)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should run in the runner if arity == 0" do
|
41
|
-
File.should_receive(:read).with("some/path").and_return("Story: foo")
|
42
|
-
$main_spec_runner = nil
|
43
|
-
@main.run_story("some/path") do
|
44
|
-
$main_spec_runner = self
|
45
|
-
end
|
46
|
-
$main_spec_runner.should be_an_instance_of(Spec::Story::Runner::PlainTextStoryRunner)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should tell the PlainTextStoryRunner to run with run_story" do
|
50
|
-
runner = mock("runner")
|
51
|
-
Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).and_return(runner)
|
52
|
-
runner.should_receive(:run)
|
53
|
-
@main.run_story
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
describe Main, "#steps_for" do
|
58
|
-
it_should_behave_like "the main object extended with Main"
|
59
|
-
|
60
|
-
it "should have no steps for a non existent key" do
|
61
|
-
@main.steps_for(:key).find(:given, "foo").should be_nil
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should create steps for a key" do
|
65
|
-
$main_spec_invoked = false
|
66
|
-
@main.steps_for(:key) do
|
67
|
-
Given("foo") {
|
68
|
-
$main_spec_invoked = true
|
69
|
-
}
|
70
|
-
end
|
71
|
-
@main.steps_for(:key).find(:given, "foo").perform(Object.new, "foo")
|
72
|
-
$main_spec_invoked.should be_true
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should append steps to steps_for a given key" do
|
76
|
-
@main.steps_for(:key) do
|
77
|
-
Given("first") {}
|
78
|
-
end
|
79
|
-
@main.steps_for(:key) do
|
80
|
-
Given("second") {}
|
81
|
-
end
|
82
|
-
@main.steps_for(:key).should have_step(:given, "first")
|
83
|
-
@main.steps_for(:key).should have_step(:given, "second")
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe Main, "#with_steps_for adding new steps" do
|
88
|
-
it_should_behave_like "the main object extended with Main"
|
89
|
-
|
90
|
-
it "should result in a group containing pre-existing steps and newly defined steps" do
|
91
|
-
first_group = @main.steps_for(:key) do
|
92
|
-
Given("first") {}
|
93
|
-
end
|
94
|
-
second_group = @main.with_steps_for(:key) do
|
95
|
-
Given("second") {}
|
96
|
-
end
|
97
|
-
|
98
|
-
second_group.should have_step(:given, "first")
|
99
|
-
second_group.should have_step(:given, "second")
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should not add its steps to the existing group" do
|
103
|
-
first_group = @main.steps_for(:key) do
|
104
|
-
Given("first") {}
|
105
|
-
end
|
106
|
-
second_group = @main.with_steps_for(:key) do
|
107
|
-
Given("second") {}
|
108
|
-
end
|
109
|
-
|
110
|
-
first_group.should have_step(:given, "first")
|
111
|
-
first_group.should_not have_step(:given, "second")
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
describe Main, "#with_steps_for running a story" do
|
116
|
-
it_should_behave_like "the main object extended with Main"
|
117
|
-
|
118
|
-
before(:each) do
|
119
|
-
@runner = mock("runner")
|
120
|
-
@runner_step_group = StepGroup.new
|
121
|
-
@runner.stub!(:steps).and_return(@runner_step_group)
|
122
|
-
@runner.stub!(:run)
|
123
|
-
Spec::Story::Runner::PlainTextStoryRunner.stub!(:new).and_return(@runner)
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should create a PlainTextStoryRunner with a path" do
|
127
|
-
Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).with('path/to/file',{}).and_return(@runner)
|
128
|
-
@main.with_steps_for(:foo) do
|
129
|
-
run 'path/to/file'
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
it "should create a PlainTextStoryRunner with a path and options" do
|
134
|
-
Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).with(anything,{:bar => :baz}).and_return(@runner)
|
135
|
-
@main.with_steps_for(:foo) do
|
136
|
-
run 'path/to/file', :bar => :baz
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should pass the group it creates to the runner's steps" do
|
141
|
-
steps = @main.steps_for(:ice_cream) do
|
142
|
-
Given("vanilla") {}
|
143
|
-
end
|
144
|
-
@main.with_steps_for(:ice_cream) do
|
145
|
-
run 'foo'
|
146
|
-
end
|
147
|
-
@runner_step_group.should have_step(:given, "vanilla")
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should run a story" do
|
151
|
-
@runner.should_receive(:run)
|
152
|
-
Spec::Story::Runner::PlainTextStoryRunner.should_receive(:new).and_return(@runner)
|
153
|
-
@main.with_steps_for(:foo) do
|
154
|
-
run 'path/to/file'
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/story_helper'
|
2
|
-
|
3
|
-
require 'spec/story'
|
4
|
-
|
5
|
-
describe Kernel, "#Story" do
|
6
|
-
before(:each) do
|
7
|
-
Kernel.stub!(:at_exit)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should delegate to ::Spec::Story::Runner.story_runner" do
|
11
|
-
::Spec::Story::Runner.story_runner.should_receive(:Story)
|
12
|
-
story = Story("title","narrative"){}
|
13
|
-
end
|
14
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/story_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Story
|
5
|
-
describe GivenScenario do
|
6
|
-
it 'should execute a scenario from the current story in its world' do
|
7
|
-
# given
|
8
|
-
class MyWorld
|
9
|
-
attr :scenario_ran
|
10
|
-
end
|
11
|
-
instance = World.create(MyWorld)
|
12
|
-
scenario = ScenarioBuilder.new.to_scenario do
|
13
|
-
@scenario_ran = true
|
14
|
-
end
|
15
|
-
Runner::StoryRunner.should_receive(:scenario_from_current_story).with('scenario name').and_return(scenario)
|
16
|
-
|
17
|
-
step = GivenScenario.new 'scenario name'
|
18
|
-
|
19
|
-
# when
|
20
|
-
step.perform(instance, nil)
|
21
|
-
|
22
|
-
# then
|
23
|
-
instance.scenario_ran.should be_true
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../story_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Story
|
5
|
-
module Runner
|
6
|
-
describe PlainTextStoryRunner do
|
7
|
-
before(:each) do
|
8
|
-
StoryParser.stub!(:new).and_return(@parser = mock("parser"))
|
9
|
-
@parser.stub!(:parse).and_return([])
|
10
|
-
File.stub!(:read).with("path").and_return("this\nand that")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should provide access to steps" do
|
14
|
-
runner = PlainTextStoryRunner.new("path")
|
15
|
-
|
16
|
-
runner.steps do |add|
|
17
|
-
add.given("baz") {}
|
18
|
-
end
|
19
|
-
|
20
|
-
runner.steps.find(:given, "baz").should_not be_nil
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should parse a story file" do
|
24
|
-
runner = PlainTextStoryRunner.new("path")
|
25
|
-
@parser.should_receive(:parse).with(["this", "and that"])
|
26
|
-
runner.run(mock('runner'))
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should build up a mediator with its own steps and the singleton story_runner" do
|
30
|
-
@story_runner = mock('story runner', :null_object => true)
|
31
|
-
|
32
|
-
runner = PlainTextStoryRunner.new("path")
|
33
|
-
|
34
|
-
Spec::Story::Runner::StoryMediator.should_receive(:new).with(
|
35
|
-
runner.steps, @story_runner, {}
|
36
|
-
).and_return(mediator = stub("mediator", :run_stories => nil))
|
37
|
-
runner.run(@story_runner)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should build up a parser with the mediator" do
|
41
|
-
runner = PlainTextStoryRunner.new("path")
|
42
|
-
Spec::Story::Runner::StoryMediator.should_receive(:new).and_return(mediator = stub("mediator", :run_stories => nil))
|
43
|
-
Spec::Story::Runner::StoryParser.should_receive(:new).with(mediator).and_return(@parser)
|
44
|
-
runner.run(stub("story_runner"))
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should tell the mediator to run the stories" do
|
48
|
-
runner = PlainTextStoryRunner.new("path")
|
49
|
-
mediator = mock("mediator")
|
50
|
-
Spec::Story::Runner::StoryMediator.should_receive(:new).and_return(mediator)
|
51
|
-
mediator.should_receive(:run_stories)
|
52
|
-
runner.run(mock('runner'))
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should accept a block instead of a path" do
|
56
|
-
runner = PlainTextStoryRunner.new do |runner|
|
57
|
-
runner.load("path/to/story")
|
58
|
-
end
|
59
|
-
File.should_receive(:read).with("path/to/story").and_return("this\nand that")
|
60
|
-
runner.run(mock('runner'))
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should tell you if you try to run with no path set" do
|
64
|
-
runner = PlainTextStoryRunner.new
|
65
|
-
lambda {
|
66
|
-
runner.run(mock('runner'))
|
67
|
-
}.should raise_error(RuntimeError, "You must set a path to the file with the story. See the RDoc.")
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should pass options to the mediator" do
|
71
|
-
runner = PlainTextStoryRunner.new("path", :foo => :bar)
|
72
|
-
Spec::Story::Runner::StoryMediator.should_receive(:new).
|
73
|
-
with(anything, anything, :foo => :bar).
|
74
|
-
and_return(mediator = stub("mediator", :run_stories => nil))
|
75
|
-
runner.run(mock('runner'))
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should provide access to its options" do
|
79
|
-
runner = PlainTextStoryRunner.new("path")
|
80
|
-
runner[:foo] = :bar
|
81
|
-
Spec::Story::Runner::StoryMediator.should_receive(:new).
|
82
|
-
with(anything, anything, :foo => :bar).
|
83
|
-
and_return(mediator = stub("mediator", :run_stories => nil))
|
84
|
-
runner.run mock('runner')
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|