rspec-core 2.0.0.beta.13 → 2.0.0.beta.14
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/Gemfile +8 -1
- data/README.markdown +9 -0
- data/VERSION +1 -1
- data/features/command_line/exit_status.feature +18 -0
- data/features/example_groups/nested_groups.feature +18 -0
- data/features/hooks/around_hooks.feature +277 -0
- data/lib/rspec/core/configuration.rb +2 -2
- data/lib/rspec/core/example.rb +30 -22
- data/lib/rspec/core/example_group.rb +3 -2
- data/lib/rspec/core/hooks.rb +0 -1
- data/lib/rspec/core/rake_task.rb +16 -31
- data/rspec-core.gemspec +11 -10
- data/spec/rspec/core/configuration_spec.rb +11 -5
- data/spec/rspec/core/example_group_spec.rb +20 -1
- data/spec/rspec/core/example_spec.rb +23 -0
- data/spec/rspec/core/hooks_spec.rb +48 -4
- metadata +10 -9
data/Gemfile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
1
3
|
gem "bundler"
|
2
4
|
gem "rake"
|
3
5
|
gem "jeweler"
|
@@ -11,4 +13,9 @@ gem "flexmock"
|
|
11
13
|
gem "rspec-core", :path => "."
|
12
14
|
gem "rspec-expectations", :path => "../rspec-expectations"
|
13
15
|
gem "rspec-mocks", :path => "../rspec-mocks"
|
14
|
-
|
16
|
+
if RUBY_VERSION.to_s =~ /1.9.1/
|
17
|
+
gem "ruby-debug19"
|
18
|
+
elsif RUBY_VERSION.to_s =~ /1.9.2/
|
19
|
+
else
|
20
|
+
gem "ruby-debug"
|
21
|
+
end
|
data/README.markdown
CHANGED
@@ -63,6 +63,15 @@ Use the documentation formatter to see the resulting spec:
|
|
63
63
|
Finished in 0.000379 seconds
|
64
64
|
1 example, 0 failures
|
65
65
|
|
66
|
+
## Learn more
|
67
|
+
|
68
|
+
While not comprehensive yet, you can learn quite a lot from the Cucumber
|
69
|
+
features in the [features
|
70
|
+
directory](http://github.com/rspec/rspec-core/tree/master/features/). If there
|
71
|
+
is a feature that is not documented there, or you find them insufficient to
|
72
|
+
understand how to use a feature, please submit issues to
|
73
|
+
[http://github.com/rspec/rspec-core/issues](http://github.com/rspec/rspec-core/issues).
|
74
|
+
|
66
75
|
#### Also see
|
67
76
|
|
68
77
|
* [http://github.com/rspec/rspec](http://github.com/rspec/rspec)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.0.beta.
|
1
|
+
2.0.0.beta.14
|
@@ -47,3 +47,21 @@ Feature: exit status
|
|
47
47
|
"""
|
48
48
|
1 example, 1 failure
|
49
49
|
"""
|
50
|
+
|
51
|
+
Scenario: exit with 0 when no examples are run
|
52
|
+
Given a file named "spec/a_no_examples_spec.rb" with:
|
53
|
+
"""
|
54
|
+
"""
|
55
|
+
And a file named "spec/b_one_example_spec.rb" with:
|
56
|
+
"""
|
57
|
+
describe "something" do
|
58
|
+
it "does something" do
|
59
|
+
end
|
60
|
+
end
|
61
|
+
"""
|
62
|
+
|
63
|
+
When I run "rspec spec"
|
64
|
+
Then it should pass with:
|
65
|
+
"""
|
66
|
+
1 example, 0 failures
|
67
|
+
"""
|
@@ -24,3 +24,21 @@ Feature: Nested example groups
|
|
24
24
|
Then I should see matching /^Some Object/
|
25
25
|
And I should see matching /^\s+with some more context/
|
26
26
|
And I should see matching /^\s+with some other context/
|
27
|
+
|
28
|
+
Scenario: failure in outer group continues to run inner groups
|
29
|
+
Given a file named "nested_example_groups.rb" with:
|
30
|
+
"""
|
31
|
+
describe "something" do
|
32
|
+
it "fails" do
|
33
|
+
raise "failure"
|
34
|
+
end
|
35
|
+
|
36
|
+
context "nested" do
|
37
|
+
it "passes" do
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
"""
|
42
|
+
When I run "rspec ./nested_example_groups.rb -fdoc"
|
43
|
+
Then I should see "2 examples, 1 failure"
|
44
|
+
And I should see "passes"
|
@@ -0,0 +1,277 @@
|
|
1
|
+
Feature: around hooks
|
2
|
+
|
3
|
+
As a developer using RSpec
|
4
|
+
I want to run the examples as part of a block given to a an arbitary function
|
5
|
+
So that I can control the environment in which it is run
|
6
|
+
|
7
|
+
Scenario: around hooks defined in a group are run
|
8
|
+
Given a file named "ensure_around_blocks_are_run.rb" with:
|
9
|
+
"""
|
10
|
+
describe "around filter" do
|
11
|
+
around(:each) do |example|
|
12
|
+
puts "around each before"
|
13
|
+
example.run
|
14
|
+
puts "around each after"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "gets run in order" do
|
18
|
+
puts "in the example"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
"""
|
22
|
+
When I run "rspec ./ensure_around_blocks_are_run.rb"
|
23
|
+
Then I should see matching:
|
24
|
+
"""
|
25
|
+
around each before
|
26
|
+
in the example
|
27
|
+
around each after
|
28
|
+
"""
|
29
|
+
|
30
|
+
Scenario: around hooks defined globally are run
|
31
|
+
Given a file named "ensure_around_blocks_are_run.rb" with:
|
32
|
+
"""
|
33
|
+
RSpec.configure do |c|
|
34
|
+
c.around(:each) do |example|
|
35
|
+
puts "around each before"
|
36
|
+
example.run
|
37
|
+
puts "around each after"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "around filter" do
|
42
|
+
it "gets run in order" do
|
43
|
+
puts "in the example"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
"""
|
47
|
+
When I run "rspec ./ensure_around_blocks_are_run.rb"
|
48
|
+
Then I should see matching:
|
49
|
+
"""
|
50
|
+
around each before
|
51
|
+
in the example
|
52
|
+
around each after
|
53
|
+
"""
|
54
|
+
|
55
|
+
Scenario: before/after(:each) hooks are wrapped by the around hook
|
56
|
+
Given a file named "ensure_around_blocks_are_run.rb" with:
|
57
|
+
"""
|
58
|
+
describe "around filter" do
|
59
|
+
around(:each) do |example|
|
60
|
+
puts "around each before"
|
61
|
+
example.run
|
62
|
+
puts "around each after"
|
63
|
+
end
|
64
|
+
|
65
|
+
before(:each) do
|
66
|
+
puts "before each"
|
67
|
+
end
|
68
|
+
|
69
|
+
after(:each) do
|
70
|
+
puts "after each"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "gets run in order" do
|
74
|
+
puts "in the example"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
"""
|
78
|
+
When I run "rspec ./ensure_around_blocks_are_run.rb"
|
79
|
+
Then I should see matching:
|
80
|
+
"""
|
81
|
+
around each before
|
82
|
+
before each
|
83
|
+
in the example
|
84
|
+
after each
|
85
|
+
around each after
|
86
|
+
"""
|
87
|
+
|
88
|
+
Scenario: before/after(:hooks) hooks are NOT wrapped by the around hook
|
89
|
+
Given a file named "ensure_around_blocks_are_run.rb" with:
|
90
|
+
"""
|
91
|
+
describe "around filter" do
|
92
|
+
around(:each) do |example|
|
93
|
+
puts "around each before"
|
94
|
+
example.run
|
95
|
+
puts "around each after"
|
96
|
+
end
|
97
|
+
|
98
|
+
before(:all) do
|
99
|
+
puts "before all"
|
100
|
+
end
|
101
|
+
|
102
|
+
after(:all) do
|
103
|
+
puts "after all"
|
104
|
+
end
|
105
|
+
|
106
|
+
it "gets run in order" do
|
107
|
+
puts "in the example"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
"""
|
111
|
+
When I run "rspec ./ensure_around_blocks_are_run.rb"
|
112
|
+
Then I should see matching:
|
113
|
+
"""
|
114
|
+
before all
|
115
|
+
around each before
|
116
|
+
in the example
|
117
|
+
around each after
|
118
|
+
.after all
|
119
|
+
"""
|
120
|
+
|
121
|
+
Scenario: examples run by an around block should run in the configured context
|
122
|
+
Given a file named "around_block_with_context.rb" with:
|
123
|
+
"""
|
124
|
+
module IncludedInConfigureBlock
|
125
|
+
def included_in_configure_block; true; end
|
126
|
+
end
|
127
|
+
|
128
|
+
Rspec.configure do |c|
|
129
|
+
c.include IncludedInConfigureBlock
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "around filter" do
|
133
|
+
around(:each) do |example|
|
134
|
+
example.run
|
135
|
+
end
|
136
|
+
|
137
|
+
it "runs the example in the correct context" do
|
138
|
+
included_in_configure_block.should be_true
|
139
|
+
end
|
140
|
+
end
|
141
|
+
"""
|
142
|
+
When I run "rspec ./around_block_with_context.rb"
|
143
|
+
Then I should see "1 example, 0 failure"
|
144
|
+
|
145
|
+
Scenario: implicitly pending examples should be detected as Not Yet Implemented
|
146
|
+
Given a file named "around_block_with_implicit_pending_example.rb" with:
|
147
|
+
"""
|
148
|
+
describe "implicit pending example" do
|
149
|
+
around(:each) do |example|
|
150
|
+
example.run
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should be detected as Not Yet Implemented"
|
154
|
+
end
|
155
|
+
"""
|
156
|
+
When I run "rspec ./around_block_with_implicit_pending_example.rb"
|
157
|
+
Then I should see "1 example, 0 failures, 1 pending"
|
158
|
+
And I should see "implicit pending example should be detected as Not Yet Implemented (Not Yet Implemented)"
|
159
|
+
|
160
|
+
|
161
|
+
Scenario: explicitly pending examples should be detected as pending
|
162
|
+
Given a file named "around_block_with_explicit_pending_example.rb" with:
|
163
|
+
"""
|
164
|
+
describe "explicit pending example" do
|
165
|
+
around(:each) do |example|
|
166
|
+
example.run
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should be detected as pending" do
|
170
|
+
pending
|
171
|
+
end
|
172
|
+
end
|
173
|
+
"""
|
174
|
+
When I run "rspec ./around_block_with_explicit_pending_example.rb"
|
175
|
+
Then I should see "1 example, 0 failures, 1 pending"
|
176
|
+
And I should see "explicit pending example should be detected as pending (No reason given)"
|
177
|
+
|
178
|
+
Scenario: multiple around hooks in the same scope are all run
|
179
|
+
Given a file named "around_hooks_in_same_scope.rb" with:
|
180
|
+
"""
|
181
|
+
describe "if there are multiple around hooks in the same scope" do
|
182
|
+
around(:each) do |example|
|
183
|
+
puts "first around hook before"
|
184
|
+
example.run
|
185
|
+
puts "first around hook after"
|
186
|
+
end
|
187
|
+
|
188
|
+
around(:each) do |example|
|
189
|
+
puts "second around hook before"
|
190
|
+
example.run
|
191
|
+
puts "second around hook after"
|
192
|
+
end
|
193
|
+
|
194
|
+
it "they should all be run" do
|
195
|
+
puts "in the example"
|
196
|
+
1.should == 1
|
197
|
+
end
|
198
|
+
end
|
199
|
+
"""
|
200
|
+
When I run "rspec ./around_hooks_in_same_scope.rb"
|
201
|
+
Then I should see "1 example, 0 failure"
|
202
|
+
And I should see matching:
|
203
|
+
"""
|
204
|
+
first around hook before
|
205
|
+
second around hook before
|
206
|
+
in the example
|
207
|
+
second around hook after
|
208
|
+
first around hook after
|
209
|
+
"""
|
210
|
+
|
211
|
+
Scenario: around hooks in outer scopes are run
|
212
|
+
Given a file named "around_hooks_in_outer_scope.rb" with:
|
213
|
+
"""
|
214
|
+
describe "if there are around hooks in an outer scope" do
|
215
|
+
around(:each) do |example|
|
216
|
+
puts "first outermost around hook before"
|
217
|
+
example.run
|
218
|
+
puts "first outermost around hook after"
|
219
|
+
end
|
220
|
+
|
221
|
+
around(:each) do |example|
|
222
|
+
puts "second outermost around hook before"
|
223
|
+
example.run
|
224
|
+
puts "second outermost around hook after"
|
225
|
+
end
|
226
|
+
|
227
|
+
describe "outer scope" do
|
228
|
+
around(:each) do |example|
|
229
|
+
puts "first outer around hook before"
|
230
|
+
example.run
|
231
|
+
puts "first outer around hook after"
|
232
|
+
end
|
233
|
+
|
234
|
+
around(:each) do |example|
|
235
|
+
puts "second outer around hook before"
|
236
|
+
example.run
|
237
|
+
puts "second outer around hook after"
|
238
|
+
end
|
239
|
+
|
240
|
+
describe "inner scope" do
|
241
|
+
around(:each) do |example|
|
242
|
+
puts "first inner around hook before"
|
243
|
+
example.run
|
244
|
+
puts "first inner around hook after"
|
245
|
+
end
|
246
|
+
|
247
|
+
around(:each) do |example|
|
248
|
+
puts "second inner around hook before"
|
249
|
+
example.run
|
250
|
+
puts "second inner around hook after"
|
251
|
+
end
|
252
|
+
|
253
|
+
it "they should all be run" do
|
254
|
+
puts "in the example"
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
259
|
+
"""
|
260
|
+
When I run "rspec ./around_hooks_in_outer_scope.rb"
|
261
|
+
Then I should see "1 example, 0 failure"
|
262
|
+
And I should see matching:
|
263
|
+
"""
|
264
|
+
first outermost around hook before
|
265
|
+
second outermost around hook before
|
266
|
+
first outer around hook before
|
267
|
+
second outer around hook before
|
268
|
+
first inner around hook before
|
269
|
+
second inner around hook before
|
270
|
+
in the example
|
271
|
+
second inner around hook after
|
272
|
+
first inner around hook after
|
273
|
+
second outer around hook after
|
274
|
+
first outer around hook after
|
275
|
+
second outermost around hook after
|
276
|
+
first outermost around hook after
|
277
|
+
"""
|
@@ -169,8 +169,8 @@ EOM
|
|
169
169
|
end
|
170
170
|
|
171
171
|
def formatter=(formatter_to_use)
|
172
|
-
if string_const?(formatter_to_use) &&
|
173
|
-
formatter_class =
|
172
|
+
if string_const?(formatter_to_use) && (class_name = eval(formatter_to_use)).is_a?(Class)
|
173
|
+
formatter_class = class_name
|
174
174
|
elsif formatter_to_use.is_a?(Class)
|
175
175
|
formatter_class = formatter_to_use
|
176
176
|
else
|
data/lib/rspec/core/example.rb
CHANGED
@@ -31,70 +31,78 @@ module RSpec
|
|
31
31
|
alias_method :behaviour, :example_group
|
32
32
|
|
33
33
|
def run(example_group_instance, reporter)
|
34
|
+
start
|
34
35
|
@in_block = false
|
35
36
|
@example_group_instance = example_group_instance
|
36
37
|
@example_group_instance.example = self
|
37
38
|
|
38
|
-
run_started
|
39
|
-
|
40
39
|
exception = nil
|
41
40
|
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
the_example = lambda do
|
42
|
+
begin
|
43
|
+
run_before_each
|
45
44
|
@in_block = true
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
@example_group_instance.instance_eval(&example_block) unless pending
|
46
|
+
rescue Exception => e
|
47
|
+
exception = e
|
48
|
+
ensure
|
49
|
+
@in_block = false
|
50
|
+
run_after_each
|
52
51
|
end
|
53
|
-
rescue Exception => e
|
54
|
-
exception = e
|
55
|
-
ensure
|
56
|
-
@in_block = false
|
57
|
-
assign_auto_description
|
58
52
|
end
|
59
53
|
|
60
54
|
begin
|
61
|
-
|
55
|
+
pending_declared_in_example = catch(:pending_declared_in_example) do
|
56
|
+
around_hooks(@example_group_class, @example_group_instance, the_example).call
|
57
|
+
throw :pending_declared_in_example, false
|
58
|
+
end
|
62
59
|
rescue Exception => e
|
63
|
-
exception
|
60
|
+
exception = e
|
64
61
|
ensure
|
65
62
|
@example_group_instance.example = nil
|
63
|
+
assign_auto_description
|
66
64
|
end
|
67
65
|
|
68
66
|
if exception
|
69
67
|
run_failed(reporter, exception)
|
68
|
+
false
|
70
69
|
elsif pending_declared_in_example
|
71
70
|
run_pending(reporter, pending_declared_in_example)
|
71
|
+
true
|
72
72
|
elsif pending
|
73
73
|
run_pending(reporter, 'Not Yet Implemented')
|
74
|
+
true
|
74
75
|
else
|
75
76
|
run_passed(reporter)
|
77
|
+
true
|
76
78
|
end
|
77
79
|
end
|
78
80
|
|
79
81
|
private
|
80
82
|
|
81
|
-
def
|
83
|
+
def around_hooks(example_group_class, example_group_instance, the_example)
|
84
|
+
hooks = RSpec.configuration.hooks[:around][:each]
|
85
|
+
hooks.push example_group_class.ancestors.reverse.map{|a| a.hooks[:around][:each]}
|
86
|
+
hooks.flatten.reverse.inject(the_example) do |accum, hook|
|
87
|
+
def accum.run; call; end
|
88
|
+
lambda { example_group_instance.instance_exec(accum, &hook) }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def start
|
82
93
|
record_results :started_at => Time.now
|
83
94
|
end
|
84
95
|
|
85
96
|
def run_passed(reporter=nil)
|
86
97
|
run_finished reporter, 'passed'
|
87
|
-
true
|
88
98
|
end
|
89
99
|
|
90
100
|
def run_pending(reporter, message)
|
91
101
|
run_finished reporter, 'pending', :pending_message => message
|
92
|
-
true
|
93
102
|
end
|
94
103
|
|
95
104
|
def run_failed(reporter, exception)
|
96
105
|
run_finished reporter, 'failed', :exception_encountered => exception
|
97
|
-
false
|
98
106
|
end
|
99
107
|
|
100
108
|
def run_finished(reporter, status, results={})
|
@@ -171,8 +171,9 @@ module RSpec
|
|
171
171
|
reporter.add_example_group(self)
|
172
172
|
begin
|
173
173
|
eval_before_alls(example_group_instance)
|
174
|
-
run_examples(example_group_instance, reporter)
|
175
|
-
|
174
|
+
result_for_this_group = run_examples(example_group_instance, reporter)
|
175
|
+
results_for_descendants = children.map {|child| child.run(reporter)}.all?
|
176
|
+
result_for_this_group && results_for_descendants
|
176
177
|
ensure
|
177
178
|
eval_after_alls(example_group_instance)
|
178
179
|
end
|
data/lib/rspec/core/hooks.rb
CHANGED
data/lib/rspec/core/rake_task.rb
CHANGED
@@ -62,30 +62,11 @@ module RSpec
|
|
62
62
|
if files_to_run.empty?
|
63
63
|
puts "No examples matching #{pattern} could be found"
|
64
64
|
else
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
command_to_run = rcov_command(cmd_parts)
|
70
|
-
command_to_run.inspect if verbose
|
71
|
-
|
72
|
-
unless system(command_to_run)
|
73
|
-
STDERR.puts failure_message if failure_message
|
74
|
-
raise("#{command_to_run} failed") if fail_on_error
|
75
|
-
end
|
76
|
-
else
|
77
|
-
cmd_parts.concat(files_to_run)
|
78
|
-
puts cmd.inspect if verbose
|
79
|
-
|
80
|
-
require 'rspec/core'
|
81
|
-
RSpec::Core::Runner.disable_at_exit_hook!
|
82
|
-
|
83
|
-
unless RSpec::Core::Runner.run(cmd_parts, $stderr, $stdout)
|
84
|
-
STDERR.puts failure_message if failure_message
|
85
|
-
raise("RSpec::Core::Runner.run with args #{cmd_parts.inspect} failed") if fail_on_error
|
86
|
-
end
|
65
|
+
puts spec_command.inspect if verbose
|
66
|
+
unless system(spec_command)
|
67
|
+
STDERR.puts failure_message if failure_message
|
68
|
+
raise("#{spec_command} failed") if fail_on_error
|
87
69
|
end
|
88
|
-
|
89
70
|
end
|
90
71
|
end
|
91
72
|
end
|
@@ -97,14 +78,18 @@ module RSpec
|
|
97
78
|
FileList[ pattern ].to_a
|
98
79
|
end
|
99
80
|
|
100
|
-
|
101
|
-
|
102
|
-
def
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
81
|
+
private
|
82
|
+
|
83
|
+
def spec_command
|
84
|
+
@spec_command ||= begin
|
85
|
+
cmd_parts = %w[-Ilib -Ispec]
|
86
|
+
cmd_parts << "-w" if warning
|
87
|
+
cmd_parts.unshift runner_options
|
88
|
+
cmd_parts.unshift runner
|
89
|
+
cmd_parts.unshift bundler
|
90
|
+
cmd_parts += files_to_run.map { |fn| %["#{fn}"] }
|
91
|
+
cmd_parts.join(" ")
|
92
|
+
end
|
108
93
|
end
|
109
94
|
|
110
95
|
def runner
|
data/rspec-core.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rspec-core}
|
8
|
-
s.version = "2.0.0.beta.
|
8
|
+
s.version = "2.0.0.beta.14"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chad Humphries", "David Chelimsky"]
|
12
|
-
s.date = %q{2010-06-
|
12
|
+
s.date = %q{2010-06-27}
|
13
13
|
s.description = %q{RSpec runner and example groups}
|
14
14
|
s.email = %q{dchelimsky@gmail.com;chad.humphries@gmail.com}
|
15
15
|
s.executables = ["rspec", "spec"]
|
@@ -41,6 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
"features/example_groups/nested_groups.feature",
|
42
42
|
"features/filtering/inclusion_filters.feature",
|
43
43
|
"features/formatters/custom_formatter.feature",
|
44
|
+
"features/hooks/around_hooks.feature",
|
44
45
|
"features/hooks/before_and_after_hooks.feature",
|
45
46
|
"features/hooks/described_class.feature",
|
46
47
|
"features/hooks/halt.feature",
|
@@ -134,7 +135,7 @@ Gem::Specification.new do |s|
|
|
134
135
|
s.homepage = %q{http://github.com/rspec/rspec-core}
|
135
136
|
s.post_install_message = %q{**************************************************
|
136
137
|
|
137
|
-
Thank you for installing rspec-core-2.0.0.beta.
|
138
|
+
Thank you for installing rspec-core-2.0.0.beta.14
|
138
139
|
|
139
140
|
**************************************************
|
140
141
|
}
|
@@ -142,7 +143,7 @@ Gem::Specification.new do |s|
|
|
142
143
|
s.require_paths = ["lib"]
|
143
144
|
s.rubyforge_project = %q{rspec}
|
144
145
|
s.rubygems_version = %q{1.3.6}
|
145
|
-
s.summary = %q{rspec-core-2.0.0.beta.
|
146
|
+
s.summary = %q{rspec-core-2.0.0.beta.14}
|
146
147
|
s.test_files = [
|
147
148
|
"spec/autotest/failed_results_re_spec.rb",
|
148
149
|
"spec/autotest/rspec_spec.rb",
|
@@ -185,19 +186,19 @@ Gem::Specification.new do |s|
|
|
185
186
|
s.specification_version = 3
|
186
187
|
|
187
188
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
188
|
-
s.add_development_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.
|
189
|
-
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
189
|
+
s.add_development_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.14"])
|
190
|
+
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.14"])
|
190
191
|
s.add_development_dependency(%q<cucumber>, [">= 0.5.3"])
|
191
192
|
s.add_development_dependency(%q<autotest>, [">= 4.2.9"])
|
192
193
|
else
|
193
|
-
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.
|
194
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
194
|
+
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.14"])
|
195
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.14"])
|
195
196
|
s.add_dependency(%q<cucumber>, [">= 0.5.3"])
|
196
197
|
s.add_dependency(%q<autotest>, [">= 4.2.9"])
|
197
198
|
end
|
198
199
|
else
|
199
|
-
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.
|
200
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
200
|
+
s.add_dependency(%q<rspec-expectations>, [">= 2.0.0.beta.14"])
|
201
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.14"])
|
201
202
|
s.add_dependency(%q<cucumber>, [">= 0.5.3"])
|
202
203
|
s.add_dependency(%q<autotest>, [">= 4.2.9"])
|
203
204
|
end
|
@@ -247,11 +247,17 @@ module RSpec::Core
|
|
247
247
|
end
|
248
248
|
|
249
249
|
it "sets a formatter based on its class name" do
|
250
|
-
Object.const_set("CustomFormatter",Class.new(Formatters::BaseFormatter))
|
250
|
+
Object.const_set("CustomFormatter", Class.new(Formatters::BaseFormatter))
|
251
251
|
config.formatter = "CustomFormatter"
|
252
252
|
config.formatter.should be_an_instance_of(CustomFormatter)
|
253
253
|
end
|
254
|
-
|
254
|
+
|
255
|
+
it "sets a formatter based on its class fully qualified name" do
|
256
|
+
RSpec.const_set("CustomFormatter", Class.new(Formatters::BaseFormatter))
|
257
|
+
config.formatter = "RSpec::CustomFormatter"
|
258
|
+
config.formatter.should be_an_instance_of(RSpec::CustomFormatter)
|
259
|
+
end
|
260
|
+
|
255
261
|
it "raises ArgumentError if formatter is unknown" do
|
256
262
|
lambda { config.formatter = :progresss }.should raise_error(ArgumentError)
|
257
263
|
end
|
@@ -277,13 +283,13 @@ module RSpec::Core
|
|
277
283
|
config.line_number = '37'
|
278
284
|
config.filter.should == {:line_number => 37}
|
279
285
|
end
|
280
|
-
|
286
|
+
|
281
287
|
it "overrides :focused" do
|
282
288
|
config.filter_run :focused => true
|
283
289
|
config.line_number = '37'
|
284
290
|
config.filter.should == {:line_number => 37}
|
285
291
|
end
|
286
|
-
|
292
|
+
|
287
293
|
it "prevents :focused" do
|
288
294
|
config.line_number = '37'
|
289
295
|
config.filter_run :focused => true
|
@@ -319,7 +325,7 @@ module RSpec::Core
|
|
319
325
|
config.debug = false
|
320
326
|
end
|
321
327
|
end
|
322
|
-
|
328
|
+
|
323
329
|
describe "#output=" do
|
324
330
|
it "sets the output" do
|
325
331
|
output = mock("output")
|
@@ -29,6 +29,26 @@ module RSpec::Core
|
|
29
29
|
examples_run.should have(1).example
|
30
30
|
end
|
31
31
|
|
32
|
+
context "with a failure in the top level group" do
|
33
|
+
it "runs its children " do
|
34
|
+
examples_run = []
|
35
|
+
group = ExampleGroup.describe("parent") do
|
36
|
+
it "fails" do
|
37
|
+
examples_run << example
|
38
|
+
raise "fail"
|
39
|
+
end
|
40
|
+
describe("child") do
|
41
|
+
it "does something" do
|
42
|
+
examples_run << example
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
group.run_all
|
48
|
+
examples_run.should have(2).examples
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
32
52
|
describe "descendants" do
|
33
53
|
it "returns self + all descendants" do
|
34
54
|
group = ExampleGroup.describe("parent") do
|
@@ -133,7 +153,6 @@ module RSpec::Core
|
|
133
153
|
group = ExampleGroup.describe(String) do
|
134
154
|
describe :symbol do
|
135
155
|
example "describes is String" do
|
136
|
-
debugger
|
137
156
|
described_class.should eq(String)
|
138
157
|
end
|
139
158
|
end
|
@@ -96,6 +96,29 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
|
|
96
96
|
group.run_all
|
97
97
|
after_run.should be_true, "expected after(:each) to be run"
|
98
98
|
end
|
99
|
+
|
100
|
+
it "wraps before/after(:each) inside around" do
|
101
|
+
results = []
|
102
|
+
group = RSpec::Core::ExampleGroup.describe do
|
103
|
+
around(:each) do |e|
|
104
|
+
results << "around (before)"
|
105
|
+
e.run
|
106
|
+
results << "around (after)"
|
107
|
+
end
|
108
|
+
before(:each) { results << "before" }
|
109
|
+
after(:each) { results << "after" }
|
110
|
+
example { results << "example" }
|
111
|
+
end
|
112
|
+
|
113
|
+
group.run_all
|
114
|
+
results.should eq([
|
115
|
+
"around (before)",
|
116
|
+
"before",
|
117
|
+
"example",
|
118
|
+
"after",
|
119
|
+
"around (after)"
|
120
|
+
])
|
121
|
+
end
|
99
122
|
end
|
100
123
|
|
101
124
|
describe "#in_block?" do
|
@@ -3,10 +3,54 @@ require "spec_helper"
|
|
3
3
|
module RSpec::Core
|
4
4
|
describe Hooks do
|
5
5
|
describe "#around" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
context "when not running the example within the arond block" do
|
7
|
+
it "does not run the example" do
|
8
|
+
examples = []
|
9
|
+
group = ExampleGroup.describe do
|
10
|
+
around do |example|
|
11
|
+
end
|
12
|
+
it "foo" do
|
13
|
+
examples << self
|
14
|
+
end
|
15
|
+
end
|
16
|
+
group.run_all
|
17
|
+
examples.should have(0).example
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when running the example within the around block" do
|
22
|
+
it "runs the example" do
|
23
|
+
examples = []
|
24
|
+
group = ExampleGroup.describe do
|
25
|
+
around do |example|
|
26
|
+
example.run
|
27
|
+
end
|
28
|
+
it "foo" do
|
29
|
+
examples << self
|
30
|
+
end
|
31
|
+
end
|
32
|
+
group.run_all
|
33
|
+
examples.should have(1).example
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "when running the example within a block passed to a method" do
|
38
|
+
it "runs the example" do
|
39
|
+
examples = []
|
40
|
+
group = ExampleGroup.describe do
|
41
|
+
def yielder
|
42
|
+
yield
|
43
|
+
end
|
44
|
+
around do |example|
|
45
|
+
yielder { example.run }
|
46
|
+
end
|
47
|
+
it "foo" do
|
48
|
+
examples << self
|
49
|
+
end
|
50
|
+
end
|
51
|
+
group.run_all
|
52
|
+
examples.should have(1).example
|
53
|
+
end
|
10
54
|
end
|
11
55
|
end
|
12
56
|
end
|
metadata
CHANGED
@@ -7,8 +7,8 @@ version: !ruby/object:Gem::Version
|
|
7
7
|
- 0
|
8
8
|
- 0
|
9
9
|
- beta
|
10
|
-
-
|
11
|
-
version: 2.0.0.beta.
|
10
|
+
- 14
|
11
|
+
version: 2.0.0.beta.14
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Chad Humphries
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-06-
|
20
|
+
date: 2010-06-27 00:00:00 -05:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -32,8 +32,8 @@ dependencies:
|
|
32
32
|
- 0
|
33
33
|
- 0
|
34
34
|
- beta
|
35
|
-
-
|
36
|
-
version: 2.0.0.beta.
|
35
|
+
- 14
|
36
|
+
version: 2.0.0.beta.14
|
37
37
|
requirement: *id001
|
38
38
|
prerelease: false
|
39
39
|
- !ruby/object:Gem::Dependency
|
@@ -48,8 +48,8 @@ dependencies:
|
|
48
48
|
- 0
|
49
49
|
- 0
|
50
50
|
- beta
|
51
|
-
-
|
52
|
-
version: 2.0.0.beta.
|
51
|
+
- 14
|
52
|
+
version: 2.0.0.beta.14
|
53
53
|
requirement: *id002
|
54
54
|
prerelease: false
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- features/example_groups/nested_groups.feature
|
115
115
|
- features/filtering/inclusion_filters.feature
|
116
116
|
- features/formatters/custom_formatter.feature
|
117
|
+
- features/hooks/around_hooks.feature
|
117
118
|
- features/hooks/before_and_after_hooks.feature
|
118
119
|
- features/hooks/described_class.feature
|
119
120
|
- features/hooks/halt.feature
|
@@ -210,7 +211,7 @@ licenses: []
|
|
210
211
|
post_install_message: |
|
211
212
|
**************************************************
|
212
213
|
|
213
|
-
Thank you for installing rspec-core-2.0.0.beta.
|
214
|
+
Thank you for installing rspec-core-2.0.0.beta.14
|
214
215
|
|
215
216
|
**************************************************
|
216
217
|
|
@@ -240,7 +241,7 @@ rubyforge_project: rspec
|
|
240
241
|
rubygems_version: 1.3.6
|
241
242
|
signing_key:
|
242
243
|
specification_version: 3
|
243
|
-
summary: rspec-core-2.0.0.beta.
|
244
|
+
summary: rspec-core-2.0.0.beta.14
|
244
245
|
test_files:
|
245
246
|
- spec/autotest/failed_results_re_spec.rb
|
246
247
|
- spec/autotest/rspec_spec.rb
|