dchelimsky-rspec 1.1.11.7 → 1.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/History.txt +1 -1
  2. data/features/support/helpers/story_helper.rb +0 -3
  3. data/lib/spec/example/example_group_methods.rb +1 -1
  4. data/lib/spec/matchers.rb +1 -1
  5. data/lib/spec/mocks.rb +3 -3
  6. data/lib/spec/mocks/argument_expectation.rb +14 -14
  7. data/lib/spec/mocks/framework.rb +1 -1
  8. data/lib/spec/mocks/message_expectation.rb +1 -1
  9. data/lib/spec/mocks/mock.rb +3 -4
  10. data/lib/spec/mocks/spec_methods.rb +10 -1
  11. data/lib/spec/version.rb +2 -2
  12. data/rspec.gemspec +3 -3
  13. data/spec/spec/mocks/hash_including_matcher_spec.rb +4 -4
  14. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +3 -3
  15. data/spec/spec/mocks/mock_spec.rb +25 -0
  16. data/spec/spec/runner/reporter_spec.rb +1 -1
  17. data/spec/spec_helper.rb +0 -1
  18. metadata +3 -3
  19. data/lib/spec/mocks/argument_constraints.rb +0 -237
  20. data/lib/spec/runner/formatter/story/html_formatter.rb +0 -174
  21. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +0 -194
  22. data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +0 -42
  23. data/lib/spec/story.rb +0 -10
  24. data/lib/spec/story/extensions.rb +0 -3
  25. data/lib/spec/story/extensions/main.rb +0 -86
  26. data/lib/spec/story/extensions/regexp.rb +0 -9
  27. data/lib/spec/story/extensions/string.rb +0 -9
  28. data/lib/spec/story/given_scenario.rb +0 -14
  29. data/lib/spec/story/runner.rb +0 -57
  30. data/lib/spec/story/runner/plain_text_story_runner.rb +0 -48
  31. data/lib/spec/story/runner/scenario_collector.rb +0 -18
  32. data/lib/spec/story/runner/scenario_runner.rb +0 -54
  33. data/lib/spec/story/runner/story_mediator.rb +0 -137
  34. data/lib/spec/story/runner/story_parser.rb +0 -247
  35. data/lib/spec/story/runner/story_runner.rb +0 -74
  36. data/lib/spec/story/scenario.rb +0 -14
  37. data/lib/spec/story/step.rb +0 -70
  38. data/lib/spec/story/step_group.rb +0 -89
  39. data/lib/spec/story/step_mother.rb +0 -38
  40. data/lib/spec/story/story.rb +0 -39
  41. data/lib/spec/story/world.rb +0 -124
  42. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +0 -24
  43. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -95
  44. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -145
  45. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +0 -135
  46. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +0 -600
  47. data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +0 -82
  48. data/spec/spec/story/builders.rb +0 -46
  49. data/spec/spec/story/extensions/main_spec.rb +0 -161
  50. data/spec/spec/story/extensions_spec.rb +0 -14
  51. data/spec/spec/story/given_scenario_spec.rb +0 -27
  52. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +0 -90
  53. data/spec/spec/story/runner/scenario_collector_spec.rb +0 -27
  54. data/spec/spec/story/runner/scenario_runner_spec.rb +0 -214
  55. data/spec/spec/story/runner/story_mediator_spec.rb +0 -143
  56. data/spec/spec/story/runner/story_parser_spec.rb +0 -401
  57. data/spec/spec/story/runner/story_runner_spec.rb +0 -294
  58. data/spec/spec/story/runner_spec.rb +0 -93
  59. data/spec/spec/story/scenario_spec.rb +0 -18
  60. data/spec/spec/story/step_group_spec.rb +0 -157
  61. data/spec/spec/story/step_mother_spec.rb +0 -84
  62. data/spec/spec/story/step_spec.rb +0 -272
  63. data/spec/spec/story/story_helper.rb +0 -2
  64. data/spec/spec/story/story_spec.rb +0 -84
  65. data/spec/spec/story/world_spec.rb +0 -423
  66. data/story_server/prototype/javascripts/builder.js +0 -136
  67. data/story_server/prototype/javascripts/controls.js +0 -972
  68. data/story_server/prototype/javascripts/dragdrop.js +0 -976
  69. data/story_server/prototype/javascripts/effects.js +0 -1117
  70. data/story_server/prototype/javascripts/prototype.js +0 -4140
  71. data/story_server/prototype/javascripts/rspec.js +0 -149
  72. data/story_server/prototype/javascripts/scriptaculous.js +0 -58
  73. data/story_server/prototype/javascripts/slider.js +0 -276
  74. data/story_server/prototype/javascripts/sound.js +0 -55
  75. data/story_server/prototype/javascripts/unittest.js +0 -568
  76. data/story_server/prototype/lib/server.rb +0 -24
  77. data/story_server/prototype/stories.html +0 -176
  78. data/story_server/prototype/stylesheets/rspec.css +0 -136
  79. data/story_server/prototype/stylesheets/test.css +0 -90
@@ -1,9 +0,0 @@
1
- class Regexp
2
- def step_name
3
- self.source.gsub '\\$', '$$'
4
- end
5
-
6
- def arg_regexp
7
- ::Spec::Story::Step::PARAM_OR_GROUP_PATTERN
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- class String
2
- def step_name
3
- self
4
- end
5
-
6
- def arg_regexp
7
- ::Spec::Story::Step::PARAM_OR_GROUP_PATTERN
8
- end
9
- end
@@ -1,14 +0,0 @@
1
- module Spec
2
- module Story
3
- class GivenScenario
4
- def initialize(name)
5
- @name = name
6
- end
7
-
8
- def perform(instance, ignore_name)
9
- scenario = Runner::StoryRunner.scenario_from_current_story(@name)
10
- Runner::ScenarioRunner.new.run(scenario, instance)
11
- end
12
- end
13
- end
14
- end
@@ -1,57 +0,0 @@
1
- require 'spec/story/runner/scenario_collector.rb'
2
- require 'spec/story/runner/scenario_runner.rb'
3
- require 'spec/story/runner/story_runner.rb'
4
- require 'spec/story/runner/story_parser.rb'
5
- require 'spec/story/runner/story_mediator.rb'
6
- require 'spec/story/runner/plain_text_story_runner.rb'
7
-
8
- module Spec
9
- module Story
10
- module Runner
11
- def self.run_options # :nodoc:
12
- Spec::Runner.options
13
- end
14
-
15
- def self.story_runner # :nodoc:
16
- unless @story_runner
17
- @story_runner = create_story_runner
18
- run_options.story_formatters.each do |formatter|
19
- register_listener(formatter)
20
- end
21
- self.register_exit_hook
22
- end
23
- @story_runner
24
- end
25
-
26
- def self.scenario_runner # :nodoc:
27
- @scenario_runner ||= ScenarioRunner.new
28
- end
29
-
30
- def self.world_creator # :nodoc:
31
- @world_creator ||= World
32
- end
33
-
34
- def self.create_story_runner
35
- Runner::StoryRunner.new(scenario_runner, world_creator)
36
- end
37
-
38
- # Use this to register a customer output formatter.
39
- def self.register_listener(listener)
40
- story_runner.add_listener(listener) # run_started, story_started, story_ended, #run_ended
41
- world_creator.add_listener(listener) # found_scenario, step_succeeded, step_failed, step_failed
42
- scenario_runner.add_listener(listener) # scenario_started, scenario_succeeded, scenario_pending, scenario_failed
43
- end
44
-
45
- def self.register_exit_hook # :nodoc:
46
- at_exit do
47
- exit Runner.story_runner.run_stories unless $!
48
- end
49
- end
50
-
51
- def self.dry_run
52
- run_options.dry_run
53
- end
54
-
55
- end
56
- end
57
- end
@@ -1,48 +0,0 @@
1
- module Spec
2
- module Story
3
- module Runner
4
- class PlainTextStoryRunner
5
- # You can initialize a PlainTextStoryRunner with the path to the
6
- # story file or a block, in which you can define the path using load.
7
- #
8
- # == Examples
9
- #
10
- # PlainTextStoryRunner.new('path/to/file')
11
- #
12
- # PlainTextStoryRunner.new do |runner|
13
- # runner.load 'path/to/file'
14
- # end
15
- def initialize(*args)
16
- @options = Hash === args.last ? args.pop : {}
17
- @story_file = args.empty? ? nil : args.shift
18
- yield self if block_given?
19
- end
20
-
21
- def []=(key, value)
22
- @options[key] = value
23
- end
24
-
25
- def load(path)
26
- @story_file = path
27
- end
28
-
29
- def run(story_runner=Spec::Story::Runner.story_runner)
30
- raise "You must set a path to the file with the story. See the RDoc." if @story_file.nil?
31
- mediator = Spec::Story::Runner::StoryMediator.new(steps, story_runner, @options)
32
- parser = Spec::Story::Runner::StoryParser.new(mediator)
33
-
34
- story_text = File.read(@story_file)
35
- parser.parse(story_text.split("\n"))
36
-
37
- mediator.run_stories
38
- end
39
-
40
- def steps
41
- @step_group ||= Spec::Story::StepGroup.new
42
- yield @step_group if block_given?
43
- @step_group
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,18 +0,0 @@
1
- module Spec
2
- module Story
3
- module Runner
4
- class ScenarioCollector
5
- attr_accessor :scenarios
6
-
7
- def initialize(story)
8
- @story = story
9
- @scenarios = []
10
- end
11
-
12
- def Scenario(name, &body)
13
- @scenarios << Scenario.new(@story, name, &body)
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,54 +0,0 @@
1
- module Spec
2
- module Story
3
- module Runner
4
- class ScenarioRunner
5
- def initialize
6
- @listeners = []
7
- end
8
-
9
- def run(scenario, world)
10
- @listeners.each { |l| l.scenario_started(scenario.story.title, scenario.name) }
11
- run_story_ignoring_scenarios(scenario.story, world)
12
-
13
- world.start_collecting_errors
14
-
15
- unless scenario.body
16
- @listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, '') }
17
- return true
18
- end
19
-
20
- world.instance_eval(&scenario.body)
21
- if world.errors.empty?
22
- @listeners.each { |l| l.scenario_succeeded(scenario.story.title, scenario.name) }
23
- else
24
- if Spec::Example::ExamplePendingError === (e = world.errors.first)
25
- @listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, e.message) }
26
- else
27
- @listeners.each { |l| l.scenario_failed(scenario.story.title, scenario.name, e) }
28
- return false
29
- end
30
- end
31
- true
32
- end
33
-
34
- def add_listener(listener)
35
- @listeners << listener
36
- end
37
-
38
- private
39
-
40
- def run_story_ignoring_scenarios(story, world)
41
- class << world
42
- def Scenario(name, &block)
43
- # do nothing
44
- end
45
- end
46
- story.run_in(world)
47
- class << world
48
- remove_method(:Scenario)
49
- end
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,137 +0,0 @@
1
- module Spec
2
- module Story
3
- module Runner
4
-
5
- class StoryMediator
6
- def initialize(step_group, runner, options={})
7
- @step_group = step_group
8
- @stories = []
9
- @runner = runner
10
- @options = options
11
- end
12
-
13
- def stories
14
- @stories.collect { |p| p.to_proc }
15
- end
16
-
17
- def create_story(title, narrative)
18
- @stories << Story.new(title, narrative, @step_group, @options)
19
- end
20
-
21
- def create_scenario(title)
22
- current_story.add_scenario Scenario.new(title)
23
- end
24
-
25
- def create_given(name)
26
- current_scenario.add_step Step.new('Given', name)
27
- end
28
-
29
- def create_given_scenario(name)
30
- current_scenario.add_step Step.new('GivenScenario', name)
31
- end
32
-
33
- def create_when(name)
34
- current_scenario.add_step Step.new('When', name)
35
- end
36
-
37
- def create_then(name)
38
- current_scenario.add_step Step.new('Then', name)
39
- end
40
-
41
- def last_step
42
- current_scenario.last_step
43
- end
44
-
45
- def add_to_last(name)
46
- last_step.name << name
47
- end
48
-
49
- def run_stories
50
- stories.each { |story| @runner.instance_eval(&story) }
51
- end
52
-
53
- private
54
- def current_story
55
- @stories.last
56
- end
57
-
58
- def current_scenario
59
- current_story.current_scenario
60
- end
61
-
62
- class Story
63
- def initialize(title, narrative, step_group, options)
64
- @title = title
65
- @narrative = narrative
66
- @scenarios = []
67
- @step_group = step_group
68
- @options = options
69
- end
70
-
71
- def to_proc
72
- title = @title
73
- narrative = @narrative
74
- scenarios = @scenarios.collect { |scenario| scenario.to_proc }
75
- options = @options.merge(:steps_for => @step_group)
76
- lambda do
77
- Story title, narrative, options do
78
- scenarios.each { |scenario| instance_eval(&scenario) }
79
- end
80
- end
81
- end
82
-
83
- def add_scenario(scenario)
84
- @scenarios << scenario
85
- end
86
-
87
- def current_scenario
88
- @scenarios.last
89
- end
90
- end
91
-
92
- class Scenario
93
- def initialize(name)
94
- @name = name
95
- @steps = []
96
- end
97
-
98
- def to_proc
99
- name = @name
100
- steps = @steps.collect { |step| step.to_proc }
101
- lambda do
102
- Scenario name do
103
- steps.each { |step| instance_eval(&step) }
104
- end
105
- end
106
- end
107
-
108
- def add_step(step)
109
- @steps << step
110
- end
111
-
112
- def last_step
113
- @steps.last
114
- end
115
- end
116
-
117
- class Step
118
- attr_reader :name
119
-
120
- def initialize(type, name)
121
- @type = type
122
- @name = name
123
- end
124
-
125
- def to_proc
126
- type = @type
127
- name = @name
128
- lambda do
129
- send(type, name)
130
- end
131
- end
132
- end
133
- end
134
-
135
- end
136
- end
137
- end
@@ -1,247 +0,0 @@
1
- module Spec
2
- module Story
3
- module Runner
4
-
5
- class IllegalStepError < StandardError
6
- def initialize(state, event)
7
- super("Illegal attempt to create a #{event} after a #{state}")
8
- end
9
- end
10
-
11
- class StoryParser
12
- def initialize(story_mediator)
13
- @story_mediator = story_mediator
14
- @current_story_lines = []
15
- transition_to(:starting_state)
16
- end
17
-
18
- def parse(lines)
19
- lines.reject! {|line| line == ""}
20
- until lines.empty?
21
- process_line(lines.shift)
22
- end
23
- @state.eof
24
- end
25
-
26
- def process_line(line)
27
- line.strip!
28
- case line
29
- when /^#/ then @state.comment(line)
30
- when /^Story: / then @state.story(line)
31
- when /^Scenario: / then @state.scenario(line)
32
- when /^Given:? / then @state.given(line)
33
- when /^GivenScenario:? / then @state.given_scenario(line)
34
- when /^When:? / then @state.event(line)
35
- when /^Then:? / then @state.outcome(line)
36
- when /^And:? / then @state.one_more_of_the_same(line)
37
- else @state.other(line)
38
- end
39
- end
40
-
41
- def init_story(title)
42
- @current_story_lines.clear
43
- add_story_line(title)
44
- end
45
-
46
- def add_story_line(line)
47
- @current_story_lines << line
48
- end
49
-
50
- def create_story()
51
- unless @current_story_lines.empty?
52
- @story_mediator.create_story(@current_story_lines[0].gsub("Story: ",""), @current_story_lines[1..-1].join("\n"))
53
- @current_story_lines.clear
54
- end
55
- end
56
-
57
- def create_scenario(title)
58
- @story_mediator.create_scenario(title.gsub("Scenario: ",""))
59
- end
60
-
61
- def create_given(name)
62
- @story_mediator.create_given(name)
63
- end
64
-
65
- def create_given_scenario(name)
66
- @story_mediator.create_given_scenario(name)
67
- end
68
-
69
- def create_when(name)
70
- @story_mediator.create_when(name)
71
- end
72
-
73
- def create_then(name)
74
- @story_mediator.create_then(name)
75
- end
76
-
77
- def add_to_last(line)
78
- @story_mediator.add_to_last("\n#{line}")
79
- end
80
-
81
- def transition_to(key)
82
- @state = states[key]
83
- end
84
-
85
- def states
86
- @states ||= {
87
- :starting_state => StartingState.new(self),
88
- :story_state => StoryState.new(self),
89
- :scenario_state => ScenarioState.new(self),
90
- :given_state => GivenState.new(self),
91
- :when_state => WhenState.new(self),
92
- :then_state => ThenState.new(self)
93
- }
94
- end
95
-
96
- class State
97
- def initialize(parser)
98
- @parser = parser
99
- end
100
-
101
- def story(line)
102
- @parser.init_story(line)
103
- @parser.transition_to(:story_state)
104
- end
105
-
106
- def scenario(line)
107
- @parser.create_scenario(line)
108
- @parser.transition_to(:scenario_state)
109
- end
110
-
111
- def given(line)
112
- @parser.create_given(remove_tag_from(:given, line))
113
- @parser.transition_to(:given_state)
114
- end
115
-
116
- def given_scenario(line)
117
- @parser.create_given_scenario(remove_tag_from(:givenscenario, line))
118
- @parser.transition_to(:given_state)
119
- end
120
-
121
- def event(line)
122
- @parser.create_when(remove_tag_from(:when, line))
123
- @parser.transition_to(:when_state)
124
- end
125
-
126
- def outcome(line)
127
- @parser.create_then(remove_tag_from(:then, line))
128
- @parser.transition_to(:then_state)
129
- end
130
-
131
- def remove_tag_from(tag, line)
132
- tokens = line.split
133
- # validation of tag can go here
134
- tokens[0].downcase.match(/#{tag.to_s}:?/) ?
135
- (tokens[1..-1].join(' ')) : line
136
- end
137
-
138
- def eof
139
- end
140
-
141
- def other(line)
142
- # no-op - supports header text before the first story in a file
143
- end
144
-
145
- def comment(line)
146
- end
147
- end
148
-
149
- class StartingState < State
150
- def initialize(parser)
151
- @parser = parser
152
- end
153
- end
154
-
155
- class StoryState < State
156
- def one_more_of_the_same(line)
157
- other(line)
158
- end
159
-
160
- def story(line)
161
- @parser.create_story
162
- @parser.add_story_line(line)
163
- end
164
-
165
- def scenario(line)
166
- @parser.create_story
167
- @parser.create_scenario(line)
168
- @parser.transition_to(:scenario_state)
169
- end
170
-
171
- def given(line)
172
- other(line)
173
- end
174
-
175
- def event(line)
176
- other(line)
177
- end
178
-
179
- def outcome(line)
180
- other(line)
181
- end
182
-
183
- def other(line)
184
- @parser.add_story_line(line)
185
- end
186
-
187
- def eof
188
- @parser.create_story
189
- end
190
- end
191
-
192
- class ScenarioState < State
193
- def one_more_of_the_same(line)
194
- raise IllegalStepError.new("Scenario", "And")
195
- end
196
-
197
- def scenario(line)
198
- @parser.create_scenario(line)
199
- end
200
- end
201
-
202
- class GivenState < State
203
- def one_more_of_the_same(line)
204
- @parser.create_given(remove_tag_from(:and, line))
205
- end
206
-
207
- def given(line)
208
- @parser.create_given(remove_tag_from(:given, line))
209
- end
210
-
211
- def other(line)
212
- @parser.add_to_last(line)
213
- end
214
- end
215
-
216
- class WhenState < State
217
- def one_more_of_the_same(line)
218
- @parser.create_when(remove_tag_from(:and ,line))
219
- end
220
-
221
- def event(line)
222
- @parser.create_when(remove_tag_from(:when ,line))
223
- end
224
-
225
- def other(line)
226
- @parser.add_to_last(line)
227
- end
228
- end
229
-
230
- class ThenState < State
231
- def one_more_of_the_same(line)
232
- @parser.create_then(remove_tag_from(:and ,line))
233
- end
234
-
235
- def outcome(line)
236
- @parser.create_then(remove_tag_from(:then ,line))
237
- end
238
-
239
- def other(line)
240
- @parser.add_to_last(line)
241
- end
242
- end
243
-
244
- end
245
- end
246
- end
247
- end