rspec-core 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +16 -11
- data/History.markdown +22 -0
- data/License.txt +2 -1
- data/{README.markdown → README.md} +11 -3
- data/Rakefile +1 -0
- data/Upgrade.markdown +35 -2
- data/features/hooks/around_hooks.feature +18 -2
- data/lib/rspec/core/configuration.rb +38 -36
- data/lib/rspec/core/configuration_options.rb +2 -1
- data/lib/rspec/core/deprecation.rb +1 -1
- data/lib/rspec/core/example.rb +19 -9
- data/lib/rspec/core/example_group.rb +14 -26
- data/lib/rspec/core/extensions/kernel.rb +23 -3
- data/lib/rspec/core/formatters/base_text_formatter.rb +43 -30
- data/lib/rspec/core/formatters/documentation_formatter.rb +1 -1
- data/lib/rspec/core/formatters/html_formatter.rb +10 -8
- data/lib/rspec/core/hooks.rb +2 -2
- data/lib/rspec/core/metadata.rb +46 -34
- data/lib/rspec/core/option_parser.rb +2 -2
- data/lib/rspec/core/rake_task.rb +1 -1
- data/lib/rspec/core/ruby_project.rb +2 -2
- data/lib/rspec/core/runner.rb +2 -2
- data/lib/rspec/core/subject.rb +4 -3
- data/lib/rspec/core/version.rb +1 -1
- data/rspec-core.gemspec +1 -1
- data/spec/rspec/core/configuration_options_spec.rb +7 -5
- data/spec/rspec/core/configuration_spec.rb +58 -69
- data/spec/rspec/core/example_group_spec.rb +22 -7
- data/spec/rspec/core/example_spec.rb +1 -1
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +2 -2
- data/spec/rspec/core/kernel_extensions_spec.rb +6 -3
- data/spec/rspec/core/metadata_spec.rb +13 -0
- data/spec/rspec/core/pending_example_spec.rb +1 -1
- data/spec/rspec/core/rake_task_spec.rb +2 -3
- data/spec/spec_helper.rb +1 -0
- metadata +9 -11
- data/.treasure_map.rb +0 -23
- data/specs.watchr +0 -58
@@ -7,11 +7,26 @@ module RSpec::Core
|
|
7
7
|
let(:config) { subject }
|
8
8
|
|
9
9
|
describe "#load_spec_files" do
|
10
|
+
|
10
11
|
it "loads files using load" do
|
11
12
|
config.files_to_run = ["foo.bar", "blah_spec.rb"]
|
12
13
|
config.should_receive(:load).twice
|
13
14
|
config.load_spec_files
|
14
15
|
end
|
16
|
+
|
17
|
+
context "with rspec-1 loaded" do
|
18
|
+
before do
|
19
|
+
Object.const_set(:Spec, Module.new)
|
20
|
+
::Spec::const_set(:VERSION, Module.new)
|
21
|
+
::Spec::VERSION::const_set(:MAJOR, 1)
|
22
|
+
end
|
23
|
+
after { Object.__send__(:remove_const, :Spec) }
|
24
|
+
it "raises with a helpful message" do
|
25
|
+
expect {
|
26
|
+
config.load_spec_files
|
27
|
+
}.to raise_error(/rspec-1 has been loaded/)
|
28
|
+
end
|
29
|
+
end
|
15
30
|
end
|
16
31
|
|
17
32
|
describe "mock_framework" do
|
@@ -226,12 +241,12 @@ module RSpec::Core
|
|
226
241
|
describe "run_all_when_everything_filtered?" do
|
227
242
|
|
228
243
|
it "defaults to false" do
|
229
|
-
config.run_all_when_everything_filtered?.should
|
244
|
+
config.run_all_when_everything_filtered?.should be_false
|
230
245
|
end
|
231
246
|
|
232
247
|
it "can be queried with question method" do
|
233
248
|
config.run_all_when_everything_filtered = true
|
234
|
-
config.run_all_when_everything_filtered?.should
|
249
|
+
config.run_all_when_everything_filtered?.should be_true
|
235
250
|
end
|
236
251
|
end
|
237
252
|
|
@@ -241,7 +256,7 @@ module RSpec::Core
|
|
241
256
|
it "does not set color_enabled" do
|
242
257
|
config.output_stream = StringIO.new
|
243
258
|
config.output_stream.stub(:tty?) { false }
|
244
|
-
config.
|
259
|
+
config.tty = false
|
245
260
|
config.color_enabled = true
|
246
261
|
config.color_enabled.should be_false
|
247
262
|
end
|
@@ -251,17 +266,17 @@ module RSpec::Core
|
|
251
266
|
it "does not set color_enabled" do
|
252
267
|
config.output_stream = StringIO.new
|
253
268
|
config.output_stream.stub(:tty?) { true }
|
254
|
-
config.
|
269
|
+
config.tty = false
|
255
270
|
config.color_enabled = true
|
256
271
|
config.color_enabled.should be_true
|
257
272
|
end
|
258
273
|
end
|
259
274
|
|
260
|
-
context "with
|
275
|
+
context "with tty set" do
|
261
276
|
it "does not set color_enabled" do
|
262
277
|
config.output_stream = StringIO.new
|
263
278
|
config.output_stream.stub(:tty?) { false }
|
264
|
-
config.
|
279
|
+
config.tty = true
|
265
280
|
config.color_enabled = true
|
266
281
|
config.color_enabled.should be_true
|
267
282
|
end
|
@@ -270,75 +285,47 @@ module RSpec::Core
|
|
270
285
|
context "on windows" do
|
271
286
|
before do
|
272
287
|
@original_host = RbConfig::CONFIG['host_os']
|
273
|
-
|
274
|
-
@original_stderr = $stderr
|
275
|
-
RbConfig::CONFIG['host_os'] = 'mswin'
|
288
|
+
RbConfig::CONFIG['host_os'] = 'mingw'
|
276
289
|
config.stub(:require)
|
277
290
|
config.stub(:warn)
|
278
291
|
end
|
279
292
|
|
280
293
|
after do
|
281
294
|
RbConfig::CONFIG['host_os'] = @original_host
|
282
|
-
$stdout = @original_stdout
|
283
|
-
$stderr = @original_stderr
|
284
295
|
end
|
285
296
|
|
286
|
-
context "with
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
config.color_enabled = true
|
297
|
+
context "with ANSICON available" do
|
298
|
+
before(:all) do
|
299
|
+
@original_ansicon = ENV['ANSICON']
|
300
|
+
ENV['ANSICON'] = 'ANSICON'
|
291
301
|
end
|
292
302
|
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
end
|
303
|
-
|
304
|
-
it "reassigns new $stderr to error_stream" do
|
305
|
-
config.error_stream = $stderr
|
306
|
-
substitute_stderr = StringIO.new
|
307
|
-
config.stub(:require) do |what|
|
308
|
-
$stderr = substitute_stderr if what =~ /Win32/
|
309
|
-
end
|
310
|
-
config.color_enabled = true
|
311
|
-
config.error_stream.should eq(substitute_stderr)
|
312
|
-
end
|
303
|
+
after(:all) do
|
304
|
+
ENV['ANSICON'] = @original_ansicon
|
305
|
+
end
|
306
|
+
|
307
|
+
it "enables colors" do
|
308
|
+
config.output_stream = StringIO.new
|
309
|
+
config.output_stream.stub(:tty?) { true }
|
310
|
+
config.color_enabled = true
|
311
|
+
config.color_enabled.should be_true
|
313
312
|
end
|
314
313
|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
config.
|
319
|
-
$stdout = StringIO.new if what =~ /Win32/
|
320
|
-
end
|
321
|
-
config.color_enabled = true
|
322
|
-
config.output_stream.should eq(output_stream)
|
323
|
-
end
|
324
|
-
|
325
|
-
it "leaves error stream intact" do
|
326
|
-
config.error_stream = error_stream = StringIO.new
|
327
|
-
config.stub(:require) do |what|
|
328
|
-
$stderr = StringIO.new if what =~ /Win32/
|
329
|
-
end
|
330
|
-
config.color_enabled = true
|
331
|
-
config.error_stream.should eq(error_stream)
|
314
|
+
it "leaves output stream intact" do
|
315
|
+
config.output_stream = $stdout
|
316
|
+
config.stub(:require) do |what|
|
317
|
+
config.output_stream = 'foo' if what =~ /Win32/
|
332
318
|
end
|
319
|
+
config.color_enabled = true
|
320
|
+
config.output_stream.should eq($stdout)
|
333
321
|
end
|
334
|
-
|
335
322
|
end
|
336
323
|
|
337
|
-
context "with
|
338
|
-
it "warns to install
|
324
|
+
context "with ANSICON NOT available" do
|
325
|
+
it "warns to install ANSICON" do
|
339
326
|
config.stub(:require) { raise LoadError }
|
340
327
|
config.should_receive(:warn).
|
341
|
-
with(/You must
|
328
|
+
with(/You must use ANSICON/)
|
342
329
|
config.color_enabled = true
|
343
330
|
end
|
344
331
|
|
@@ -516,20 +503,13 @@ module RSpec::Core
|
|
516
503
|
end
|
517
504
|
end
|
518
505
|
|
519
|
-
describe "#debug=
|
520
|
-
it "
|
521
|
-
|
506
|
+
describe "#debug=" do
|
507
|
+
it "is deprecated" do
|
508
|
+
RSpec.should_receive(:warn_deprecation)
|
522
509
|
config.debug = true
|
523
510
|
end
|
524
511
|
end
|
525
512
|
|
526
|
-
describe "#debug=false" do
|
527
|
-
it "does not require 'ruby-debug'" do
|
528
|
-
config.should_not_receive(:require).with('ruby-debug')
|
529
|
-
config.debug = false
|
530
|
-
end
|
531
|
-
end
|
532
|
-
|
533
513
|
describe "#output=" do
|
534
514
|
it "sets the output" do
|
535
515
|
output = mock("output")
|
@@ -623,7 +603,7 @@ module RSpec::Core
|
|
623
603
|
end
|
624
604
|
|
625
605
|
describe "#configure_group" do
|
626
|
-
it "extends with
|
606
|
+
it "extends with 'extend'" do
|
627
607
|
mod = Module.new
|
628
608
|
group = ExampleGroup.describe("group", :foo => :bar)
|
629
609
|
|
@@ -632,7 +612,7 @@ module RSpec::Core
|
|
632
612
|
group.should be_a(mod)
|
633
613
|
end
|
634
614
|
|
635
|
-
it "
|
615
|
+
it "extends with 'module'" do
|
636
616
|
mod = Module.new
|
637
617
|
group = ExampleGroup.describe("group", :foo => :bar)
|
638
618
|
|
@@ -641,6 +621,15 @@ module RSpec::Core
|
|
641
621
|
group.included_modules.should include(mod)
|
642
622
|
end
|
643
623
|
|
624
|
+
it "requires only one matching filter" do
|
625
|
+
mod = Module.new
|
626
|
+
group = ExampleGroup.describe("group", :foo => :bar)
|
627
|
+
|
628
|
+
config.include(mod, :foo => :bar, :baz => :bam)
|
629
|
+
config.configure_group(group)
|
630
|
+
group.included_modules.should include(mod)
|
631
|
+
end
|
632
|
+
|
644
633
|
it "includes each one before deciding whether to include the next" do
|
645
634
|
mod1 = Module.new do
|
646
635
|
def self.included(host)
|
@@ -176,6 +176,21 @@ module RSpec::Core
|
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
179
|
+
context "in a nested group" do
|
180
|
+
it "inherits the described class/module from the outer group" do
|
181
|
+
group = ExampleGroup.describe(String) do
|
182
|
+
describe Array do
|
183
|
+
example "desribes is String" do
|
184
|
+
described_class.should eq(String)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
group.run.should be_true, "expected examples in group to pass"
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
|
179
194
|
end
|
180
195
|
|
181
196
|
describe '#described_class' do
|
@@ -359,7 +374,7 @@ module RSpec::Core
|
|
359
374
|
example = group.example("equality") { 1.should == 2}
|
360
375
|
group.run
|
361
376
|
|
362
|
-
example.metadata[:execution_result][:
|
377
|
+
example.metadata[:execution_result][:exception].message.should == "error in before each"
|
363
378
|
end
|
364
379
|
|
365
380
|
it "treats an error in before(:all) as a failure" do
|
@@ -370,8 +385,8 @@ module RSpec::Core
|
|
370
385
|
|
371
386
|
example.metadata.should_not be_nil
|
372
387
|
example.metadata[:execution_result].should_not be_nil
|
373
|
-
example.metadata[:execution_result][:
|
374
|
-
example.metadata[:execution_result][:
|
388
|
+
example.metadata[:execution_result][:exception].should_not be_nil
|
389
|
+
example.metadata[:execution_result][:exception].message.should == "error in before all"
|
375
390
|
end
|
376
391
|
|
377
392
|
it "treats an error in before(:all) as a failure for a spec in a nested group" do
|
@@ -387,8 +402,8 @@ module RSpec::Core
|
|
387
402
|
|
388
403
|
example.metadata.should_not be_nil
|
389
404
|
example.metadata[:execution_result].should_not be_nil
|
390
|
-
example.metadata[:execution_result][:
|
391
|
-
example.metadata[:execution_result][:
|
405
|
+
example.metadata[:execution_result][:exception].should_not be_nil
|
406
|
+
example.metadata[:execution_result][:exception].message.should == "error in before all"
|
392
407
|
end
|
393
408
|
|
394
409
|
context "when an error occurs in an after(:all) hook" do
|
@@ -492,8 +507,8 @@ module RSpec::Core
|
|
492
507
|
describe Object, "describing nested example_groups", :little_less_nested => 'yep' do
|
493
508
|
|
494
509
|
describe "A sample nested group", :nested_describe => "yep" do
|
495
|
-
it "sets the described class to the
|
496
|
-
example.example_group.describes.should
|
510
|
+
it "sets the described class to the described class of the outer most group" do
|
511
|
+
example.example_group.describes.should eq(ExampleGroup)
|
497
512
|
end
|
498
513
|
|
499
514
|
it "sets the description to 'A sample nested describe'" do
|
@@ -82,7 +82,7 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
|
|
82
82
|
|
83
83
|
group.run
|
84
84
|
|
85
|
-
example.metadata[:execution_result][:
|
85
|
+
example.metadata[:execution_result][:exception].message.should == "FOO"
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -8,11 +8,11 @@ module RSpec::Core::Formatters
|
|
8
8
|
examples = [
|
9
9
|
double("example 1",
|
10
10
|
:description => "first example",
|
11
|
-
:execution_result => {:status => 'failed', :
|
11
|
+
:execution_result => {:status => 'failed', :exception => Exception.new }
|
12
12
|
),
|
13
13
|
double("example 2",
|
14
14
|
:description => "second example",
|
15
|
-
:execution_result => {:status => 'failed', :
|
15
|
+
:execution_result => {:status => 'failed', :exception => Exception.new }
|
16
16
|
)
|
17
17
|
]
|
18
18
|
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "extensions" do
|
4
|
-
describe "debugger" do
|
5
|
-
it "is
|
6
|
-
|
4
|
+
describe "#debugger" do
|
5
|
+
it "warns if ruby-debug is not installed" do
|
6
|
+
object = Object.new
|
7
|
+
object.should_receive(:warn).with(/debugger .* ignored:\n.* ruby-debug/m)
|
8
|
+
object.stub(:require) { raise LoadError }
|
9
|
+
object.__send__ :method_missing, :debugger
|
7
10
|
end
|
8
11
|
end
|
9
12
|
end
|
@@ -157,6 +157,19 @@ module RSpec
|
|
157
157
|
m[:example_group][:describes].should be(String)
|
158
158
|
end
|
159
159
|
end
|
160
|
+
|
161
|
+
context "with describes from a superclass metadata" do
|
162
|
+
it "returns the superclass' described class" do
|
163
|
+
sm = Metadata.new
|
164
|
+
sm.process(String)
|
165
|
+
|
166
|
+
m = Metadata.new(sm)
|
167
|
+
m.process(Array)
|
168
|
+
|
169
|
+
m = m.for_example("example", {})
|
170
|
+
m[:example_group][:describes].should be(String)
|
171
|
+
end
|
172
|
+
end
|
160
173
|
end
|
161
174
|
|
162
175
|
describe ":description" do
|
@@ -24,7 +24,7 @@ RSpec::Matchers.define :fail_with do |exception_klass|
|
|
24
24
|
case
|
25
25
|
when example.metadata[:pending] then "was pending"
|
26
26
|
when result[:status] != 'failed' then result[:status]
|
27
|
-
when !result[:
|
27
|
+
when !result[:exception].is_a?(exception_klass) then "failed with a #{result[:exception].class}"
|
28
28
|
else nil
|
29
29
|
end
|
30
30
|
end
|
@@ -97,11 +97,10 @@ module RSpec::Core
|
|
97
97
|
spec_command.should =~ /rcov.*--exclude "mocks"/
|
98
98
|
end
|
99
99
|
|
100
|
-
it "ensures that -Ispec
|
100
|
+
it "ensures that -Ispec:lib is in the resulting command" do
|
101
101
|
task.rcov = true
|
102
102
|
task.rcov_opts = '--exclude "mocks"'
|
103
|
-
spec_command.should =~ /rcov.*-Ispec/
|
104
|
-
spec_command.should =~ /rcov.*-Ilib/
|
103
|
+
spec_command.should =~ /rcov.*-Ispec:lib/
|
105
104
|
end
|
106
105
|
end
|
107
106
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 2
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 2.
|
9
|
+
version: 2.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Chad Humphries
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-28 00:00:00 -06:00
|
19
19
|
default_executable: rspec
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -27,16 +27,15 @@ executables:
|
|
27
27
|
extensions: []
|
28
28
|
|
29
29
|
extra_rdoc_files:
|
30
|
-
- README.
|
30
|
+
- README.md
|
31
31
|
files:
|
32
32
|
- .document
|
33
33
|
- .gitignore
|
34
|
-
- .treasure_map.rb
|
35
34
|
- Gemfile
|
36
35
|
- Guardfile
|
37
36
|
- History.markdown
|
38
37
|
- License.txt
|
39
|
-
- README.
|
38
|
+
- README.md
|
40
39
|
- Rakefile
|
41
40
|
- Upgrade.markdown
|
42
41
|
- autotest/discover.rb
|
@@ -179,7 +178,6 @@ files:
|
|
179
178
|
- spec/ruby_forker.rb
|
180
179
|
- spec/spec_helper.rb
|
181
180
|
- spec/support/matchers.rb
|
182
|
-
- specs.watchr
|
183
181
|
has_rdoc: true
|
184
182
|
homepage: http://github.com/rspec/rspec-core
|
185
183
|
licenses: []
|
@@ -187,7 +185,7 @@ licenses: []
|
|
187
185
|
post_install_message: |
|
188
186
|
**************************************************
|
189
187
|
|
190
|
-
Thank you for installing rspec-core-2.
|
188
|
+
Thank you for installing rspec-core-2.2.0
|
191
189
|
|
192
190
|
Please be sure to look at the upgrade instructions to see what might have
|
193
191
|
changed since the last release:
|
@@ -205,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
205
203
|
requirements:
|
206
204
|
- - ">="
|
207
205
|
- !ruby/object:Gem::Version
|
208
|
-
hash: -
|
206
|
+
hash: -1519645400680950494
|
209
207
|
segments:
|
210
208
|
- 0
|
211
209
|
version: "0"
|
@@ -214,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
212
|
requirements:
|
215
213
|
- - ">="
|
216
214
|
- !ruby/object:Gem::Version
|
217
|
-
hash: -
|
215
|
+
hash: -1519645400680950494
|
218
216
|
segments:
|
219
217
|
- 0
|
220
218
|
version: "0"
|
@@ -224,7 +222,7 @@ rubyforge_project: rspec
|
|
224
222
|
rubygems_version: 1.3.7
|
225
223
|
signing_key:
|
226
224
|
specification_version: 3
|
227
|
-
summary: rspec-core-2.
|
225
|
+
summary: rspec-core-2.2.0
|
228
226
|
test_files:
|
229
227
|
- features/README.markdown
|
230
228
|
- features/command_line/configure.feature
|