rbehave 0.2.0 → 0.2.1

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.
Files changed (32) hide show
  1. data/Manifest.txt +2 -0
  2. data/behaviour/examples/builders.rb +44 -0
  3. data/behaviour/examples/helper.rb +1 -0
  4. data/behaviour/examples/rbehave/documenter/plain_text_documenter_behaviour.rb +2 -1
  5. data/behaviour/examples/rbehave/given_scenario_behaviour.rb +3 -3
  6. data/behaviour/examples/rbehave/reporter/plain_text_reporter_behaviour.rb +1 -1
  7. data/behaviour/examples/rbehave/runner/options_behaviour.rb +13 -3
  8. data/behaviour/examples/rbehave/runner/runner_behaviour.rb +5 -4
  9. data/behaviour/examples/rbehave/runner/scenario_runner_behaviour.rb +9 -2
  10. data/behaviour/examples/rbehave/runner/story_runner_behaviour.rb +3 -3
  11. data/behaviour/examples/rbehave/scenario_behaviour.rb +18 -0
  12. data/behaviour/examples/rbehave/story_behaviour.rb +10 -0
  13. data/behaviour/examples/rbehave/world_behaviour.rb +54 -28
  14. data/examples/game-of-life/README.txt +5 -5
  15. data/examples/game-of-life/behaviour/examples/game_behaviour.rb +1 -4
  16. data/examples/game-of-life/behaviour/examples/grid_behaviour.rb +1 -1
  17. data/examples/game-of-life/behaviour/stories/ICanCreateACell.story +1 -1
  18. data/examples/game-of-life/behaviour/stories/create_a_cell.rb +2 -2
  19. data/examples/game-of-life/life/grid.rb +5 -4
  20. data/lib/rbehave/documenter/plain_text_documenter.rb +2 -1
  21. data/lib/rbehave/exceptions.rb +1 -2
  22. data/lib/rbehave/given_scenario.rb +1 -1
  23. data/lib/rbehave/reporter/plain_text_reporter.rb +4 -0
  24. data/lib/rbehave/runner.rb +6 -10
  25. data/lib/rbehave/runner/options.rb +4 -1
  26. data/lib/rbehave/runner/story_runner.rb +3 -1
  27. data/lib/rbehave/scenario.rb +1 -0
  28. data/lib/rbehave/simple_step.rb +7 -0
  29. data/lib/rbehave/story.rb +7 -1
  30. data/lib/rbehave/version.rb +1 -1
  31. data/lib/rbehave/world.rb +17 -5
  32. metadata +4 -2
data/Manifest.txt CHANGED
@@ -31,6 +31,8 @@ behaviour/examples/rbehave/reporter/plain_text_reporter_behaviour.rb
31
31
  behaviour/examples/rbehave/step_mother_behaviour.rb
32
32
  behaviour/examples/rbehave/documenter/plain_text_documenter_behaviour.rb
33
33
  behaviour/examples/rbehave/simple_step_behaviour.rb
34
+ behaviour/examples/rbehave/scenario_behaviour.rb
35
+ behaviour/examples/builders.rb
34
36
  examples/game-of-life/life/game.rb
35
37
  examples/game-of-life/life/grid.rb
36
38
  examples/game-of-life/.loadpath
@@ -0,0 +1,44 @@
1
+ module RBehave
2
+ class StoryBuilder
3
+ def initialize
4
+ @title = 'a story'
5
+ @narrative = 'narrative'
6
+ end
7
+
8
+ def title(value)
9
+ @title = value
10
+ self
11
+ end
12
+
13
+ def narrative(value)
14
+ @narrative = value
15
+ self
16
+ end
17
+
18
+ def to_story(&block)
19
+ block = lambda {} unless block_given?
20
+ Story.new @title, @narrative, &block
21
+ end
22
+ end
23
+
24
+ class ScenarioBuilder
25
+ def initialize
26
+ @name = 'a scenario'
27
+ @story = StoryBuilder.new.to_story
28
+ end
29
+
30
+ def name(value)
31
+ @name = value
32
+ self
33
+ end
34
+
35
+ def story(value)
36
+ @story = value
37
+ self
38
+ end
39
+
40
+ def to_scenario(&block)
41
+ Scenario.new @story, @name, &block
42
+ end
43
+ end
44
+ end
@@ -1,2 +1,3 @@
1
1
  require 'behaviour/examples/rspec_adapter'
2
2
  require 'lib/rbehave'
3
+ require 'behaviour/examples/builders'
@@ -4,7 +4,8 @@ require 'lib/rbehave/documenter/plain_text_documenter'
4
4
  module RBehave
5
5
  module Documenter
6
6
  describe PlainTextDocumenter do
7
- setup do
7
+ before :each do
8
+ # given
8
9
  @out = String.new
9
10
  @documenter = PlainTextDocumenter.new(@out)
10
11
  end
@@ -1,4 +1,5 @@
1
1
  require 'behaviour/examples/helper'
2
+ require 'spec'
2
3
 
3
4
  module RBehave
4
5
  describe GivenScenario do
@@ -8,11 +9,10 @@ module RBehave
8
9
  attr :scenario_ran
9
10
  end
10
11
  instance = MyWorld.new
11
- story = Story.new 'title', 'narrative' do end
12
- scenario = Scenario.new story, 'scenario name' do
12
+ scenario = ScenarioBuilder.new.to_scenario do
13
13
  @scenario_ran = true
14
14
  end
15
- Runner::StoryRunner.expects(:scenario_from_current_story).with('scenario name').returns(scenario)
15
+ Runner::StoryRunner.stubs(:scenario_from_current_story).with('scenario name').returns(scenario)
16
16
 
17
17
  step = GivenScenario.new 'scenario name'
18
18
 
@@ -3,7 +3,7 @@ require 'behaviour/examples/helper'
3
3
  module RBehave
4
4
  module Reporter
5
5
  describe PlainTextReporter do
6
- setup do
6
+ before :each do
7
7
  # given
8
8
  @out = String.new
9
9
  @reporter = PlainTextReporter.new(@out)
@@ -3,11 +3,14 @@ require 'behaviour/examples/helper'
3
3
  module RBehave
4
4
  module Runner
5
5
  describe Options do
6
- setup do
6
+ before :each do
7
7
  @options = Options.new
8
8
  end
9
9
 
10
10
  it 'should parse -n as dry run' do
11
+ # given
12
+ @options.dry_run.nil?
13
+
11
14
  # when
12
15
  @options.parse %w[ -n ]
13
16
  # then
@@ -21,19 +24,26 @@ module RBehave
21
24
  ensure_that @options.dry_run, is(true)
22
25
  end
23
26
 
24
- it 'should parse "-f fmt as format' do
27
+ it 'should parse -f fmt as format' do
25
28
  # when
26
29
  @options.parse %w[ -f s ]
27
30
  # then
28
31
  ensure_that @options.format, is(:simple)
29
32
  end
30
33
 
31
- it 'should parse "--format fmt as format' do
34
+ it 'should parse --format fmt as format' do
32
35
  # when
33
36
  @options.parse %w[ --format h ]
34
37
  # then
35
38
  ensure_that @options.format, is(:html)
36
39
  end
40
+
41
+ it 'should parse --debug' do
42
+ # when
43
+ @options.parse %w[ --debug ]
44
+ # then
45
+ ensure_that @options.debug, is(true)
46
+ end
37
47
  end
38
48
  end
39
49
  end
@@ -10,14 +10,16 @@ module RBehave
10
10
  return io
11
11
  end
12
12
 
13
- setup do
13
+ before :each do
14
14
  @stdout, $stdout = $stdout, dev_null
15
15
  @argv = Array.new(ARGV)
16
+ Runner.module_eval { @options = nil }
16
17
  end
17
18
 
18
- teardown do
19
+ after :each do
19
20
  $stdout = @stdout
20
- ARGV.clear; ARGV << @argv
21
+ ARGV.replace @argv
22
+ Runner.module_eval { @options = nil }
21
23
  end
22
24
 
23
25
  it 'should wire up a singleton StoryRunner' do
@@ -26,7 +28,6 @@ module RBehave
26
28
 
27
29
  it 'should set its options based on ARGV' do
28
30
  # given
29
- Runner.module_eval { @options = nil }
30
31
  ARGV << '--dry-run'
31
32
 
32
33
  # when
@@ -3,6 +3,14 @@ require 'behaviour/examples/helper'
3
3
  module RBehave
4
4
  module Runner
5
5
  describe ScenarioRunner do
6
+ before do
7
+ mocha_setup
8
+ end
9
+
10
+ after do
11
+ mocha_teardown
12
+ end
13
+
6
14
  it 'should run a scenario in its story' do
7
15
  # given
8
16
  world = stub_everything
@@ -117,8 +125,7 @@ module RBehave
117
125
  verify_mocks
118
126
  end
119
127
 
120
-
121
- it 'should notify listeners when a scenario raises an error' do
128
+ it 'should notify listeners when a scenario is pending' do
122
129
  # given
123
130
  story = Story.new 'title', 'narrative' do end
124
131
  scenario = Scenario.new story, 'scenario1' do
@@ -197,18 +197,18 @@ module RBehave
197
197
  scenario_world_catcher.worlds[0].size.should == 3
198
198
  end
199
199
 
200
- it 'should store the current running story' do
200
+ it 'should store the current running story in the world' do
201
201
  # given
202
202
  $stories = []
203
203
  story_runner = StoryRunner.new(ScenarioRunner.new)
204
204
  story_runner.Story 'title1', 'narrative1' do
205
205
  Scenario 'scenario1' do
206
- $stories << StoryRunner.current_story
206
+ $stories << @current_story
207
207
  end
208
208
  end
209
209
  story_runner.Story 'title2', 'narrative2' do
210
210
  Scenario 'scenario2' do
211
- $stories << StoryRunner.current_story
211
+ $stories << @current_story
212
212
  end
213
213
  end
214
214
 
@@ -0,0 +1,18 @@
1
+ require 'behaviour/examples/helper'
2
+
3
+ module RBehave
4
+ describe Scenario do
5
+ it 'should fail to construct if no body is supplied' do
6
+ # given
7
+ story = StoryBuilder.new.to_story
8
+
9
+ # when
10
+ error = exception_from do
11
+ Scenario.new story, 'name'
12
+ end
13
+
14
+ # then
15
+ error.should be_kind_of(ArgumentError)
16
+ end
17
+ end
18
+ end
@@ -16,5 +16,15 @@ module RBehave
16
16
  # then
17
17
  $instance.should be(object)
18
18
  end
19
+
20
+ it 'should raise an error if no block is supplied' do
21
+ # when
22
+ error = exception_from do
23
+ Story.new 'title', 'narrative'
24
+ end
25
+
26
+ # then
27
+ error.should be_kind_of(ArgumentError)
28
+ end
19
29
  end
20
30
  end
@@ -2,14 +2,14 @@ require 'behaviour/examples/helper'
2
2
 
3
3
  module RBehave
4
4
  describe World do
5
- setup do
5
+ before :each do
6
+ mocha_setup
6
7
  World.listeners.clear
7
- RBehave::Runner.dry_run = false
8
8
  end
9
9
 
10
- teardown do
10
+ after :each do
11
11
  World.listeners.clear
12
- RBehave::Runner.dry_run = false
12
+ mocha_teardown
13
13
  end
14
14
 
15
15
  it 'should create an object that mixes in a World' do
@@ -31,12 +31,7 @@ module RBehave
31
31
 
32
32
  it 'should pass arguments to #new when creating an object of a specified type that mixes in a world' do
33
33
  # given
34
- class Thing
35
- attr_reader :name, :age
36
- def initialize(name, age)
37
- @name, @age = name, age
38
- end
39
- end
34
+ Thing = Struct.new(:name, :age)
40
35
 
41
36
  # when
42
37
  obj = World::create Thing, "David", "I'm not telling"
@@ -170,6 +165,7 @@ module RBehave
170
165
  it 'should invoke a reused step in the new object instance' do
171
166
  # given
172
167
  $instances = []
168
+ $debug = true
173
169
  world1 = World.create
174
170
  world1.instance_eval do
175
171
  Given 'a given' do
@@ -182,10 +178,10 @@ module RBehave
182
178
  world2.instance_eval do
183
179
  Given 'a given' # reused
184
180
  Then 'an outcome' do
185
- $instances << self.__id__
181
+ $instances << __id__
186
182
  end
187
183
  end
188
-
184
+ $debug = false
189
185
  # then
190
186
  $instances.should == [ world1.__id__, world2.__id__, world2.__id__ ]
191
187
  end
@@ -254,7 +250,7 @@ module RBehave
254
250
 
255
251
  it 'should tell listeners but not execute the step in dry-run mode' do
256
252
  # given
257
- RBehave::Runner.dry_run = true
253
+ RBehave::Runner.stubs(:dry_run).returns(true)
258
254
  mock_listener = mock('listener')
259
255
  World.add_listener(mock_listener)
260
256
  $step_invoked = false
@@ -276,23 +272,53 @@ module RBehave
276
272
  end
277
273
 
278
274
  it 'should ignore pending() calls in dry-run mode' do
279
- begin
280
- # given
281
- world = World.create
282
- RBehave::Runner::dry_run = true
283
-
284
- # when
285
- ex = exception_from do
286
- world.instance_eval do
287
- pending 'todo'
288
- end
275
+ # given
276
+ world = World.create
277
+ RBehave::Runner.stubs(:dry_run).returns(true)
278
+
279
+ # when
280
+ ex = exception_from do
281
+ world.instance_eval do
282
+ pending 'todo'
289
283
  end
290
-
291
- # then
292
- ex.should be_nil
293
- ensure
294
- RBehave::Runner::dry_run = false
295
284
  end
285
+
286
+ # then
287
+ ex.should be_nil
288
+ end
289
+
290
+ it 'should suppress listeners while it runs a GivenScenario' do
291
+ # given
292
+ $scenario_ran = false
293
+
294
+ scenario = ScenarioBuilder.new.name('a scenario').to_scenario do
295
+ $scenario_ran = true
296
+ Given 'given' do end
297
+ When 'event' do end
298
+ Then 'outcome' do end
299
+ end
300
+
301
+ given_scenario = GivenScenario.new('a scenario')
302
+
303
+ world = World.create
304
+ listener = mock('listener')
305
+ World.add_listener(listener)
306
+
307
+ Runner::StoryRunner.stubs(:scenario_from_current_story).
308
+ with('a scenario').returns(scenario)
309
+
310
+ # expect
311
+ listener.expects(:found_step).with(:'given scenario', 'a scenario')
312
+ listener.expects(:found_step).never.with(:given, 'given')
313
+ listener.expects(:found_step).never.with(:when, 'event')
314
+ listener.expects(:found_step).never.with(:then, 'outcome')
315
+
316
+ # when
317
+ world.GivenScenario 'a scenario'
318
+
319
+ # then
320
+ verify_mocks
321
+ $scenario_ran.should == true
296
322
  end
297
323
  end
298
324
  end
@@ -7,15 +7,15 @@ The game is played on a field of cells, each of which has eight neighbors (adjac
7
7
  A cell is either occupied (by an organism) or not.
8
8
  The rules for deriving a generation from the previous one are these:
9
9
 
10
+ Survival
11
+ --------
12
+ If an occupied cell has 2 or 3 neighbors, the organism survives to the next generation.
13
+
10
14
  Death
11
15
  -----
12
16
  If an occupied cell has 0, 1, 4, 5, 6, 7, or 8 occupied neighbors, the organism dies
13
17
  (0, 1: of loneliness; 4 thru 8: of overcrowding).
14
18
 
15
- Survival
16
- --------
17
- If an occupied cell has two or three neighbors, the organism survives to the next generation.
18
-
19
19
  Birth
20
20
  -----
21
- If an unoccupied cell has three occupied neighbors, it becomes occupied.
21
+ If an unoccupied cell has 3 occupied neighbors, it becomes occupied.
@@ -8,10 +8,7 @@ describe Game do
8
8
  # given
9
9
  game = Game.new(5, 5)
10
10
 
11
- # when
12
- grid = game.grid
13
-
14
11
  # then
15
- grid.should be_kind_of(Grid)
12
+ game.grid.should be_kind_of(Grid)
16
13
  end
17
14
  end
@@ -60,7 +60,7 @@ describe Grid do
60
60
  expected.create_at(2,2)
61
61
 
62
62
  # when
63
- actual = Grid.from_s "X.. X.. ..X"
63
+ actual = Grid.from_string "X.. X.. ..X"
64
64
 
65
65
  # then
66
66
  actual.should == expected
@@ -21,7 +21,7 @@ Then the grid should look like
21
21
  .X.
22
22
  ...
23
23
 
24
- Scenario: some friends arrive
24
+ Scenario: the grid has three cells
25
25
 
26
26
  Given a 3 x 3 game
27
27
  When I create a cell at 0, 0
@@ -18,8 +18,8 @@ Story "I can create a cell",
18
18
  ...
19
19
  ...
20
20
  ...
21
- ) do |grid_str|
22
- @game.grid.should == Grid.from_s(grid_str)
21
+ ) do |dots|
22
+ @game.grid.should == Grid.from_string(dots)
23
23
  end
24
24
  end
25
25
 
@@ -23,13 +23,14 @@ class Grid
23
23
  @contents[row][col] = 1
24
24
  end
25
25
 
26
- def self.from_s(str)
26
+ def self.from_string(str)
27
27
  row_strings = str.split
28
28
  grid = Grid.new(row_strings.size, row_strings[0].size)
29
29
 
30
- row_strings.each_with_index do |row, r|
31
- row.split(//).each_with_index do |col, c|
32
- grid.create_at(r,c) if col == 'X'
30
+ row_strings.each_with_index do |row, row_index|
31
+ row_chars = row.split(//)
32
+ row_chars.each_with_index do |col_char, col_index|
33
+ grid.create_at(row_index, col_index) if col_char == 'X'
33
34
  end
34
35
  end
35
36
  return grid
@@ -18,7 +18,8 @@ module RBehave
18
18
  end
19
19
 
20
20
  def found_step(name, description, *args)
21
- @out << " #{name.to_s.capitalize} #{description} #{args.join ','}\n"
21
+ args_txt = args.empty? ? "" : " #{args.join ','}"
22
+ @out << " #{name.to_s.capitalize} #{description}#{args_txt}\n"
22
23
  end
23
24
 
24
25
  def method_missing(meth, *args, &block)
@@ -14,8 +14,7 @@ class Exception
14
14
  end
15
15
 
16
16
  def filtered_backtrace
17
- return trace = backtrace || []
18
- trace.reject do |line|
17
+ backtrace.reject do |line|
19
18
  Exception.backtrace_filters.inject(false) do |already_matched, filter|
20
19
  already_matched || line =~ filter
21
20
  end
@@ -4,7 +4,7 @@ module RBehave
4
4
  @name = name
5
5
  end
6
6
 
7
- def perform(instance, *args)
7
+ def perform(instance)
8
8
  scenario = Runner::StoryRunner.scenario_from_current_story @name
9
9
  Runner::ScenarioRunner.new.run(scenario, instance)
10
10
  end
@@ -8,6 +8,10 @@ module RBehave
8
8
  @pending = []
9
9
  end
10
10
 
11
+ def scenario_started(story_title, scenario_name)
12
+ @out << "#{scenario_name} (#{story_title})\n" if RBehave::Runner.options.debug
13
+ end
14
+
11
15
  def scenario_succeeded(story_title, scenario_name)
12
16
  @out << '.'
13
17
  @succeeded += 1
@@ -17,9 +17,9 @@ module RBehave
17
17
  @story_runner.add_listener(reporter)
18
18
  end
19
19
  case options.format
20
- when :simple then documenter = RBehave::Documenter::PlainTextDocumenter.new($stdout)
21
- when nil ;
22
- else raise "Unimplemented format - #{options.format.to_s}"
20
+ when :simple then documenter = RBehave::Documenter::PlainTextDocumenter.new($stdout)
21
+ when nil ;
22
+ else raise "Unimplemented format - #{options.format.to_s}"
23
23
  end
24
24
  if documenter
25
25
  scenario_runner.add_listener(documenter)
@@ -40,13 +40,9 @@ module RBehave
40
40
  end
41
41
  end
42
42
 
43
- def dry_run?
44
- @dry_run ||= false
45
- end
46
-
47
- def dry_run=(value)
48
- @dry_run = value
43
+ def dry_run
44
+ options.dry_run
49
45
  end
50
46
  end
51
47
  end
52
- end
48
+ end
@@ -3,7 +3,7 @@ require 'optparse'
3
3
  module RBehave
4
4
  module Runner
5
5
  class Options
6
- attr_accessor :format, :dry_run
6
+ attr_reader :format, :dry_run, :debug
7
7
 
8
8
  def parse(args)
9
9
  parser = OptionParser.new do |p|
@@ -17,6 +17,9 @@ module RBehave
17
17
  p.on "-f", "--format ", formats, "format (#{formats.join(',')})" do |fmt|
18
18
  @format = fmt.to_sym
19
19
  end
20
+ p.on '--debug' do
21
+ @debug = true
22
+ end
20
23
  end
21
24
  parser.parse(args)
22
25
  self
@@ -46,7 +46,9 @@ module RBehave
46
46
  scenarios.each do |scenario|
47
47
  type = story[:type] || Object
48
48
  args = story[:args] || []
49
- @scenario_runner.run(scenario, @world_creator.create(type, *args))
49
+ world = @world_creator.create(type, *args)
50
+ world.instance_variable_set :@current_story, story
51
+ @scenario_runner.run(scenario, world)
50
52
  end
51
53
  @listeners.each { |l| l.story_ended(story.title, story.narrative) }
52
54
  end
@@ -3,6 +3,7 @@ module RBehave
3
3
  attr_accessor :name, :body, :story
4
4
 
5
5
  def initialize(story, name, &body)
6
+ raise ArgumentError, 'Scenario must have a body' unless block_given?
6
7
  @story = story
7
8
  @name = name
8
9
  @body = body
@@ -2,6 +2,7 @@ module RBehave
2
2
  class SimpleStep
3
3
  def initialize(name, &block)
4
4
  @name = name
5
+ # @block = block
5
6
  @mod = Module.new
6
7
  @mod.__send__(:define_method, @name, &block)
7
8
  end
@@ -9,6 +10,12 @@ module RBehave
9
10
  def perform(instance, *args)
10
11
  instance.extend(@mod)
11
12
  instance.__send__(@name, *args)
13
+ # block = @block
14
+ # instance.instance_eval do
15
+ # puts __id__ if $debug
16
+ # block.call(*args)
17
+ # end
12
18
  end
19
+
13
20
  end
14
21
  end
data/lib/rbehave/story.rb CHANGED
@@ -3,6 +3,7 @@ module RBehave
3
3
  attr_reader :title, :narrative
4
4
 
5
5
  def initialize(title, narrative, params = {}, &body)
6
+ raise(ArgumentError, 'A story needs a body') unless block_given?
6
7
  @body = body
7
8
  @title = title
8
9
  @narrative = narrative
@@ -14,7 +15,12 @@ module RBehave
14
15
  end
15
16
 
16
17
  def run_in(obj)
17
- obj.instance_eval(&@body)
18
+ begin
19
+ obj.instance_eval(&@body)
20
+ rescue Exception => e
21
+ p e
22
+ raise
23
+ end
18
24
  end
19
25
  end
20
26
  end
@@ -2,7 +2,7 @@ module Rbehave #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/rbehave/world.rb CHANGED
@@ -28,20 +28,32 @@ module RBehave
28
28
  @step_mother ||= StepMother.new
29
29
  end
30
30
 
31
+ # TODO: lots of duplication between #run_with_suspended_listeners and #store_and_call
32
+
33
+ def run_with_suspended_listeners(instance, type, name, step)
34
+ current_listeners = Array.new(@listeners)
35
+ begin
36
+ listeners.each { |l| l.found_step(type, name) }
37
+ @listeners.clear
38
+ step.perform(instance) unless RBehave::Runner.dry_run
39
+ ensure
40
+ @listeners.replace(current_listeners)
41
+ end
42
+ end
43
+
31
44
  def store_and_call(instance, type, name, *args, &block)
32
45
  if block_given?
33
46
  step_mother.store(type, name, SimpleStep.new(name, &block))
34
47
  end
35
48
  step = step_mother.find(type, name)
36
49
  listeners.each { |l| l.found_step(type, name, *args) }
37
- step.perform(instance, *args) unless RBehave::Runner.dry_run?
50
+ step.perform(instance, *args) unless RBehave::Runner.dry_run
38
51
  end
39
52
  end
40
53
 
41
54
  def GivenScenario(name)
42
- step = GivenScenario.new name
43
- World.step_mother.store(:given_scenario, name, step)
44
- World.store_and_call self, :given_scenario, name
55
+ World.run_with_suspended_listeners(
56
+ self, :'given scenario', name, GivenScenario.new(name))
45
57
  end
46
58
 
47
59
  def Given(name, *args, &block)
@@ -57,7 +69,7 @@ module RBehave
57
69
  end
58
70
 
59
71
  def pending(message = 'todo')
60
- raise PendingException, message unless RBehave::Runner.dry_run?
72
+ raise PendingException, message unless RBehave::Runner.dry_run
61
73
  end
62
74
  end
63
75
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: rbehave
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
7
- date: 2007-05-30 00:00:00 +01:00
6
+ version: 0.2.1
7
+ date: 2007-06-04 00:00:00 +01:00
8
8
  summary: RBehave
9
9
  require_paths:
10
10
  - lib
@@ -62,6 +62,8 @@ files:
62
62
  - behaviour/examples/rbehave/step_mother_behaviour.rb
63
63
  - behaviour/examples/rbehave/documenter/plain_text_documenter_behaviour.rb
64
64
  - behaviour/examples/rbehave/simple_step_behaviour.rb
65
+ - behaviour/examples/rbehave/scenario_behaviour.rb
66
+ - behaviour/examples/builders.rb
65
67
  - examples/game-of-life/life/game.rb
66
68
  - examples/game-of-life/life/grid.rb
67
69
  - examples/game-of-life/.loadpath