rspec-steps 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/doc/README CHANGED
@@ -106,16 +106,11 @@ diverge, you can DRY your code out with shared_steps blocks, like so:
106
106
 
107
107
  ## Versions and Dependencies
108
108
 
109
- 0.0.8: Released Jan 11, 2012.
110
- NOTES: Will not work with rspec > 2.9.
111
-
112
- CURRENT UNRELEASED Jan 31 2013:
113
- Specs pass with rspec-core 2.6.0, 2.7.0, 2.8.0, 2.9.0, 2.10.1
114
- Specs fail with rspec-core 2.11.x
115
-
116
-
117
-
118
-
119
-
109
+ 0.1.0: Released Mar 12, 2013.
110
+ Compatible with RSpec 2.10-2.13 - probably works with earlier versions
120
111
 
112
+ 0.0.9: Released Feb 22, 2013.
113
+ NOTES: works with rspec 2.6 through 2.10. Does not work with rspec >= 2.11
121
114
 
115
+ 0.0.8: Released Jan 11, 2012.
116
+ NOTES: Will not work with rspec > 2.9.
@@ -4,7 +4,12 @@ require 'rspec-steps/stepwise'
4
4
  module RSpec::Steps
5
5
  module ClassMethods
6
6
  def steps(*args, &block)
7
- options = if args.last.is_a?(Hash) then args.pop else {} end
7
+ options =
8
+ if args.last.is_a?(Hash)
9
+ args.pop
10
+ else
11
+ {}
12
+ end
8
13
  options[:stepwise] = true
9
14
  options[:caller] ||= caller
10
15
  args.push(options)
@@ -1,15 +1,63 @@
1
1
  module RSpecStepwise
2
+ class WholeListExample < RSpec::Core::Example
3
+ def initialize(example_group_class, descriptions, metadata)
4
+ super
5
+ build_example_block
6
+ end
7
+
8
+ def start(reporter)
9
+ end
10
+
11
+ def finish(reporter)
12
+ end
13
+
14
+ def build_example_block
15
+ #variables of concern: reporter, instance
16
+ @example_block = proc do
17
+ begin
18
+ self.class.filtered_examples.inject(true) do |success, example|
19
+ break if RSpec.wants_to_quit
20
+ example.extend StepExample
21
+ unless success
22
+ example.metadata[:pending] = true
23
+ example.metadata[:execution_result][:pending_message] = "Previous step failed"
24
+ end
25
+ succeeded = with_indelible_ivars do
26
+ example.run(self, reporter)
27
+ end
28
+ RSpec.wants_to_quit = true if self.class.fail_fast? && !succeeded
29
+ success && succeeded
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ module StepExample
37
+ def run_before_each
38
+ end
39
+
40
+ def run_after_each
41
+ end
42
+
43
+ def with_around_hooks
44
+ yield
45
+ end
46
+ end
47
+
2
48
  module ClassMethods
3
49
  #TODO: This is hacky and needs a more general solution
4
50
  #Something like cloning the current conf and having RSpec::Stepwise::config ?
5
51
  def suspend_transactional_fixtures
6
52
  if self.respond_to? :use_transactional_fixtures
7
- old_val = self.use_transactional_fixtures
8
- self.use_transactional_fixtures = false
53
+ begin
54
+ old_val = self.use_transactional_fixtures
55
+ self.use_transactional_fixtures = false
9
56
 
10
- yield
11
-
12
- self.use_transactional_fixtures = old_val
57
+ yield
58
+ ensure
59
+ self.use_transactional_fixtures = old_val
60
+ end
13
61
  else
14
62
  yield
15
63
  end
@@ -36,85 +84,6 @@ module RSpecStepwise
36
84
  super
37
85
  end
38
86
 
39
-
40
- def eval_before_alls(example_group_instance)
41
- super
42
- stepped_before_hooks(example_group_instance)
43
- end
44
-
45
- def run_before_all_hooks(example_group_instance)
46
- super
47
- stepped_before_hooks(example_group_instance)
48
- end
49
-
50
- def stepped_before_hooks(example_group_instance)
51
- example_group_instance.example = whole_list_example
52
-
53
- if world.respond_to?(:run_hook_filtered) # Rspec < 2.10
54
- world.run_hook_filtered(:before, :each, self, example_group_instance, whole_list_example)
55
- else # Rspec >= 2.10
56
- run_hook(:before, :each, whole_list_example)
57
- end
58
- ancestors.reverse.each { |ancestor| ancestor.run_hook(:before, :each, example_group_instance) }
59
- store_before_all_ivars(example_group_instance)
60
- end
61
-
62
- def eval_around_eachs(example)
63
- end
64
- alias run_around_each_hooks eval_around_eachs
65
-
66
- def eval_before_eachs(example)
67
- end
68
- alias run_before_each_hooks eval_before_eachs
69
-
70
- def eval_after_eachs(example)
71
- end
72
- alias run_after_each_hooks eval_after_eachs
73
-
74
- def eval_after_alls(example_group_instance)
75
- stepped_after_hooks(example_group_instance)
76
- super
77
- end
78
-
79
- def run_after_all_hooks(example_group_instance)
80
- stepped_after_hooks(example_group_instance)
81
- super
82
- end
83
-
84
- def stepped_after_hooks(example_group_instance)
85
- example_group_instance.example = whole_list_example
86
- ancestors.each { |ancestor| ancestor.run_hook(:after, :each, example_group_instance) }
87
- if world.respond_to?(:run_hook_filtered) # Rspec < 2.10
88
- world.run_hook_filtered(:before, :each, self, example_group_instance, whole_list_example)
89
- else # Rspec >= 2.10
90
- run_hook(:before, :each, whole_list_example)
91
- end
92
- end
93
-
94
- def whole_list_example
95
- @whole_list_example ||= begin
96
- RSpec::Core::Example.new(self, "step list", {})
97
- end
98
- end
99
-
100
- def with_around_hooks(instance, &block)
101
- if self.respond_to?(:around_hooks_for) # rSpec < 2.10.0
102
- hooks = around_hooks_for(self)
103
- else
104
- hooks = around_each_hooks_for(self) # rSpec >= 2.10.0
105
- end
106
-
107
- if hooks.empty?
108
- yield
109
- else
110
- hooks.reverse.inject(Example.procsy(metadata)) do |procsy, around_hook|
111
- Example.procsy(procsy.metadata) do
112
- instance.instance_eval_with_args(procsy, &around_hook)
113
- end
114
- end.call
115
- end
116
- end
117
-
118
87
  def perform_steps(name, *args, &customization_block)
119
88
  shared_block = world.shared_example_groups[name]
120
89
  raise "Could not find shared example group named \#{name.inspect}" unless shared_block
@@ -124,36 +93,21 @@ module RSpecStepwise
124
93
  end
125
94
 
126
95
  def run_examples(reporter)
127
- instance = new
96
+ whole_list_example = WholeListExample.new(self, "step list", {})
128
97
 
98
+ instance = new
129
99
  set_ivars(instance, before_all_ivars)
130
-
131
100
  instance.example = whole_list_example
101
+ instance.reporter = reporter
132
102
 
133
103
  suspend_transactional_fixtures do
134
- with_around_hooks(instance) do
135
- filtered_examples.inject(true) do |success, example|
136
- break if RSpec.wants_to_quit
137
- unless success
138
- reporter.example_started(example)
139
- example.metadata[:pending] = true
140
- example.metadata[:execution_result][:pending_message] = "Previous step failed"
141
- example.metadata[:execution_result][:started_at] = Time.now
142
- example.instance_eval{ record_finished :pending, :pending_message => "Previous step failed" }
143
- reporter.example_pending(example)
144
- next
145
- end
146
- succeeded = instance.with_indelible_ivars do
147
- example.run(instance, reporter)
148
- end
149
- RSpec.wants_to_quit = true if fail_fast? && !succeeded
150
- success && succeeded
151
- end
152
- end
104
+ whole_list_example.run(instance, reporter)
153
105
  end
154
106
  end
155
107
  end
156
108
 
109
+ attr_accessor :reporter
110
+
157
111
  def with_indelible_ivars
158
112
  old_value, @ivars_indelible = @ivars_indelible, true
159
113
  result = yield
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-steps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-02-22 00:00:00.000000000 Z
13
+ date: 2013-03-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: corundum
17
- requirement: &90293470 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: 0.0.25
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *90293470
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: 0.0.25
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: rspec
28
- requirement: &90291650 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ! '>='
@@ -34,9 +39,31 @@ dependencies:
34
39
  segments:
35
40
  - 2
36
41
  - 6
42
+ - - <
43
+ - !ruby/object:Gem::Version
44
+ version: 2.14.0
45
+ segments:
46
+ - 2
47
+ - 14
48
+ - 0
37
49
  type: :runtime
38
50
  prerelease: false
39
- version_requirements: *90291650
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '2.6'
57
+ segments:
58
+ - 2
59
+ - 6
60
+ - - <
61
+ - !ruby/object:Gem::Version
62
+ version: 2.14.0
63
+ segments:
64
+ - 2
65
+ - 14
66
+ - 0
40
67
  description: ! " I don't like Cucumber. I don't need plain text stories. My clients
41
68
  either\n read code or don't read any test documents, so Cucumber is mostly useless.\n
42
69
  \ But often, especially in full integration tests, it would be nice to have\n steps
@@ -304,7 +331,7 @@ rdoc_options:
304
331
  - --main
305
332
  - doc/README
306
333
  - --title
307
- - rspec-steps-0.0.9 RDoc
334
+ - rspec-steps-0.1.0 RDoc
308
335
  require_paths:
309
336
  - lib/
310
337
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -315,7 +342,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
315
342
  version: '0'
316
343
  segments:
317
344
  - 0
318
- hash: 472080701
345
+ hash: -87716783
319
346
  required_rubygems_version: !ruby/object:Gem::Requirement
320
347
  none: false
321
348
  requirements:
@@ -324,7 +351,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
324
351
  version: '0'
325
352
  requirements: []
326
353
  rubyforge_project: rspec-steps
327
- rubygems_version: 1.8.15
354
+ rubygems_version: 1.8.24
328
355
  signing_key:
329
356
  specification_version: 3
330
357
  summary: I want steps in RSpec