rspec-core 2.0.0.beta.17 → 2.0.0.beta.18
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +5 -1
- data/Rakefile +4 -1
- data/Upgrade.markdown +28 -2
- data/VERSION +1 -1
- data/autotest/discover.rb +1 -1
- data/features/command_line/configure.feature +19 -0
- data/features/example_groups/shared_example_group.feature +125 -0
- data/features/hooks/around_hooks.feature +11 -2
- data/features/pending/pending_examples.feature +18 -6
- data/lib/autotest/rspec2.rb +1 -1
- data/lib/rspec/core.rb +1 -0
- data/lib/rspec/core/command_line_configuration.rb +62 -0
- data/lib/rspec/core/configuration.rb +39 -12
- data/lib/rspec/core/configuration_options.rb +5 -5
- data/lib/rspec/core/deprecation.rb +6 -6
- data/lib/rspec/core/errors.rb +1 -1
- data/lib/rspec/core/example.rb +25 -25
- data/lib/rspec/core/example_group.rb +30 -14
- data/lib/rspec/core/formatters/base_formatter.rb +25 -25
- data/lib/rspec/core/formatters/base_text_formatter.rb +11 -10
- data/lib/rspec/core/formatters/documentation_formatter.rb +2 -2
- data/lib/rspec/core/formatters/helpers.rb +6 -6
- data/lib/rspec/core/formatters/html_formatter.rb +13 -12
- data/lib/rspec/core/formatters/progress_formatter.rb +1 -1
- data/lib/rspec/core/formatters/snippet_extractor.rb +5 -5
- data/lib/rspec/core/hooks.rb +3 -3
- data/lib/rspec/core/kernel_extensions.rb +1 -1
- data/lib/rspec/core/let.rb +5 -5
- data/lib/rspec/core/metadata.rb +2 -2
- data/lib/rspec/core/mocking/with_absolutely_nothing.rb +3 -3
- data/lib/rspec/core/mocking/with_mocha.rb +5 -5
- data/lib/rspec/core/mocking/with_rr.rb +3 -3
- data/lib/rspec/core/mocking/with_rspec.rb +3 -3
- data/lib/rspec/core/option_parser.rb +8 -4
- data/lib/rspec/core/rake_task.rb +5 -0
- data/lib/rspec/core/ruby_project.rb +1 -1
- data/lib/rspec/core/shared_example_group.rb +2 -2
- data/lib/rspec/core/subject.rb +10 -4
- data/lib/rspec/core/world.rb +5 -5
- data/rspec-core.gemspec +19 -11
- data/spec/autotest/rspec_spec.rb +14 -14
- data/spec/rspec/core/command_line_configuration_spec.rb +26 -0
- data/spec/rspec/core/command_line_spec.rb +5 -5
- data/spec/rspec/core/configuration_options_spec.rb +20 -20
- data/spec/rspec/core/configuration_spec.rb +10 -10
- data/spec/rspec/core/core_spec.rb +8 -8
- data/spec/rspec/core/deprecations_spec.rb +2 -2
- data/spec/rspec/core/drb_command_line_spec.rb +10 -10
- data/spec/rspec/core/example_group_spec.rb +46 -10
- data/spec/rspec/core/example_spec.rb +46 -12
- data/spec/rspec/core/formatters/base_formatter_spec.rb +2 -46
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +4 -3
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +1 -1
- data/spec/rspec/core/formatters/helpers_spec.rb +2 -2
- data/spec/rspec/core/formatters/html_formatted-1.8.7.html +1 -1
- data/spec/rspec/core/formatters/html_formatted-1.9.1.html +1 -1
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +1 -1
- data/spec/rspec/core/formatters/progress_formatter_spec.rb +10 -9
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +13 -13
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +1 -1
- data/spec/rspec/core/let_spec.rb +1 -1
- data/spec/rspec/core/metadata_spec.rb +9 -9
- data/spec/rspec/core/option_parser_spec.rb +3 -3
- data/spec/rspec/core/pending_example_spec.rb +1 -1
- data/spec/rspec/core/resources/custom_example_group_runner.rb +1 -1
- data/spec/rspec/core/runner_spec.rb +4 -4
- data/spec/rspec/core/shared_example_group_spec.rb +66 -162
- data/spec/rspec/core/subject_spec.rb +4 -4
- data/spec/rspec/core/world_spec.rb +38 -38
- metadata +21 -13
@@ -3,29 +3,29 @@ require 'spec_helper'
|
|
3
3
|
describe RSpec::Core do
|
4
4
|
|
5
5
|
describe "#configuration" do
|
6
|
-
|
6
|
+
|
7
7
|
it "returns the same object every time" do
|
8
8
|
RSpec.configuration.should equal(RSpec.configuration)
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
describe "#configure" do
|
14
|
-
|
14
|
+
|
15
15
|
it "yields the current configuration" do
|
16
16
|
RSpec.configure do |config|
|
17
17
|
config.should == RSpec::configuration
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
describe "#world" do
|
24
|
-
|
24
|
+
|
25
25
|
it "returns the RSpec::Core::World instance the current run is using" do
|
26
26
|
RSpec.world.should be_instance_of(RSpec::Core::World)
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
end
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe "deprecations" do
|
4
4
|
describe "Spec" do
|
5
5
|
it "is deprecated" do
|
6
|
-
RSpec.should_receive(:warn_deprecation).with
|
6
|
+
RSpec.should_receive(:warn_deprecation).with(/Spec .* RSpec/i)
|
7
7
|
Spec
|
8
8
|
end
|
9
9
|
|
@@ -16,7 +16,7 @@ describe "deprecations" do
|
|
16
16
|
describe RSpec::Core::ExampleGroup do
|
17
17
|
describe 'running_example' do
|
18
18
|
it 'is deprecated' do
|
19
|
-
RSpec.should_receive(:warn_deprecation).with
|
19
|
+
RSpec.should_receive(:warn_deprecation).with(/running_example.*example/m)
|
20
20
|
self.running_example
|
21
21
|
end
|
22
22
|
|
@@ -26,13 +26,13 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
26
26
|
err.rewind
|
27
27
|
err.read.should =~ /No DRb server is running/
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "returns false" do
|
31
31
|
result = run_with []
|
32
32
|
result.should be_false
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
describe "--drb-port" do
|
37
37
|
def with_RSPEC_DRB_set_to(val)
|
38
38
|
original = ENV['RSPEC_DRB']
|
@@ -50,7 +50,7 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
50
50
|
drb_command_line([]).drb_port.should == 8989
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "sets the DRb port" do
|
55
55
|
with_RSPEC_DRB_set_to(nil) do
|
56
56
|
drb_command_line(["--drb-port", "1234"]).drb_port.should == 1234
|
@@ -68,7 +68,7 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
context "and config variable set" do
|
73
73
|
it "uses configured value" do
|
74
74
|
with_RSPEC_DRB_set_to('9000') do
|
@@ -81,7 +81,7 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
81
81
|
|
82
82
|
context "with server running" do
|
83
83
|
class ::FakeDrbSpecServer
|
84
|
-
def self.run(argv, err, out)
|
84
|
+
def self.run(argv, err, out)
|
85
85
|
options = RSpec::Core::ConfigurationOptions.new(argv)
|
86
86
|
options.parse_options
|
87
87
|
RSpec::Core::CommandLine.new(options, RSpec::Core::Configuration.new).run(err, out)
|
@@ -91,7 +91,7 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
91
91
|
def dummy_spec_filename
|
92
92
|
@dummy_spec_filename ||= File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@drb_example_file_counter}.rb"
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
before(:all) do
|
96
96
|
@drb_port = 8990
|
97
97
|
@drb_example_file_counter = 0
|
@@ -132,7 +132,7 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
132
132
|
result = drb_command_line(["--drb-port", @drb_port.to_s]).run(err, out)
|
133
133
|
result.should be_true
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
136
|
it "integrates via Runner.new.run" do
|
137
137
|
err, out = StringIO.new, StringIO.new
|
138
138
|
result = RSpec::Core::Runner.run(%W[ --drb --drb-port #{@drb_port} #{dummy_spec_filename}], err, out)
|
@@ -144,16 +144,16 @@ describe "::DRbCommandLine", :ruby => "!jruby" do
|
|
144
144
|
out.rewind
|
145
145
|
out.read
|
146
146
|
end
|
147
|
-
|
147
|
+
|
148
148
|
it "should output green colorized text when running with --colour option" do
|
149
149
|
pending "figure out a way to properly sandbox this"
|
150
150
|
run_spec_via_druby.should =~ /\e\[32m/m
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
it "should output red colorized text when running with -c option" do
|
154
154
|
pending "figure out a way to properly sandbox this"
|
155
155
|
run_spec_via_druby.should =~ /\e\[31m/m
|
156
156
|
end
|
157
157
|
end
|
158
|
-
|
158
|
+
|
159
159
|
end
|
@@ -254,23 +254,47 @@ module RSpec::Core
|
|
254
254
|
order.should == [3,2,1]
|
255
255
|
end
|
256
256
|
|
257
|
-
it "runs before all, before each, example, after each, after all, in that order" do
|
258
|
-
group = ExampleGroup.describe
|
257
|
+
it "runs before_all_defined_in_config, before all, before each, example, after each, after all, after_all_defined_in_config in that order" do
|
259
258
|
order = []
|
260
|
-
|
261
|
-
|
259
|
+
|
260
|
+
RSpec.configure do |c|
|
261
|
+
c.before(:all) { order << :before_all_defined_in_config }
|
262
|
+
c.after(:all) { order << :after_all_defined_in_config }
|
263
|
+
end
|
264
|
+
|
265
|
+
group = ExampleGroup.describe
|
266
|
+
group.before(:all) { order << :top_level_before_all }
|
262
267
|
group.before(:each) { order << :before_each }
|
263
|
-
group.
|
264
|
-
group.
|
268
|
+
group.after(:each) { order << :after_each }
|
269
|
+
group.after(:all) { order << :top_level_after_all }
|
270
|
+
group.example("top level example") { order << :top_level_example }
|
271
|
+
|
272
|
+
context1 = group.describe("context 1")
|
273
|
+
context1.before(:all) { order << :nested_before_all }
|
274
|
+
context1.example("nested example 1") { order << :nested_example_1 }
|
275
|
+
|
276
|
+
context2 = group.describe("context 2")
|
277
|
+
context2.after(:all) { order << :nested_after_all }
|
278
|
+
context2.example("nested example 2") { order << :nested_example_2 }
|
265
279
|
|
266
280
|
group.run_all
|
267
281
|
|
268
282
|
order.should == [
|
269
|
-
:
|
283
|
+
:before_all_defined_in_config,
|
284
|
+
:top_level_before_all,
|
285
|
+
:before_each,
|
286
|
+
:top_level_example,
|
287
|
+
:after_each,
|
288
|
+
:nested_before_all,
|
289
|
+
:before_each,
|
290
|
+
:nested_example_1,
|
291
|
+
:after_each,
|
270
292
|
:before_each,
|
271
|
-
:
|
293
|
+
:nested_example_2,
|
272
294
|
:after_each,
|
273
|
-
:
|
295
|
+
:nested_after_all,
|
296
|
+
:top_level_after_all,
|
297
|
+
:after_all_defined_in_config
|
274
298
|
]
|
275
299
|
end
|
276
300
|
|
@@ -376,7 +400,7 @@ module RSpec::Core
|
|
376
400
|
|
377
401
|
end
|
378
402
|
|
379
|
-
describe Object, "describing nested example_groups", :little_less_nested => 'yep' do
|
403
|
+
describe Object, "describing nested example_groups", :little_less_nested => 'yep' do
|
380
404
|
|
381
405
|
describe "A sample nested group", :nested_describe => "yep" do
|
382
406
|
it "sets the described class to the constant Object" do
|
@@ -511,6 +535,18 @@ module RSpec::Core
|
|
511
535
|
end
|
512
536
|
its(:nil_value) { should be_nil }
|
513
537
|
end
|
538
|
+
|
539
|
+
context "with nested attributes" do
|
540
|
+
subject do
|
541
|
+
Class.new do
|
542
|
+
def name
|
543
|
+
"John"
|
544
|
+
end
|
545
|
+
end.new
|
546
|
+
end
|
547
|
+
its("name.size") { should == 4 }
|
548
|
+
its("name.size.class") { should == Fixnum }
|
549
|
+
end
|
514
550
|
end
|
515
551
|
|
516
552
|
describe "#top_level_description" do
|
@@ -16,18 +16,6 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
describe '#inspect' do
|
20
|
-
it "should return 'group description - description'" do
|
21
|
-
example_instance.inspect.should == 'group description example description'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe '#to_s' do
|
26
|
-
it "should return #inspect" do
|
27
|
-
example_instance.to_s.should == example_instance.inspect
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
19
|
describe '#described_class' do
|
32
20
|
it "returns the class (if any) of the outermost example group" do
|
33
21
|
described_class.should == RSpec::Core::Example
|
@@ -140,4 +128,50 @@ describe RSpec::Core::Example, :parent_metadata => 'sample' do
|
|
140
128
|
example.should_not be_in_block
|
141
129
|
end
|
142
130
|
end
|
131
|
+
|
132
|
+
describe "#pending" do
|
133
|
+
context "in the example" do
|
134
|
+
it "sets the example to pending" do
|
135
|
+
group = RSpec::Core::ExampleGroup.describe do
|
136
|
+
example { pending }
|
137
|
+
end
|
138
|
+
group.run_all
|
139
|
+
group.examples.first.should be_pending
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
context "in before(:each)" do
|
144
|
+
it "sets the example to pending" do
|
145
|
+
group = RSpec::Core::ExampleGroup.describe do
|
146
|
+
before(:each) { pending }
|
147
|
+
example {}
|
148
|
+
end
|
149
|
+
group.run_all
|
150
|
+
group.examples.first.should be_pending
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
context "in around(:each)" do
|
155
|
+
it "sets the example to pending" do
|
156
|
+
group = RSpec::Core::ExampleGroup.describe do
|
157
|
+
around(:each) { pending }
|
158
|
+
example {}
|
159
|
+
end
|
160
|
+
group.run_all
|
161
|
+
group.examples.first.should be_pending
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context "in before(:all)" do
|
166
|
+
it "is not supported" do
|
167
|
+
group = RSpec::Core::ExampleGroup.describe do
|
168
|
+
before(:all) { pending }
|
169
|
+
example {}
|
170
|
+
end
|
171
|
+
expect do
|
172
|
+
group.run_all
|
173
|
+
end.to raise_error(/undefined method `metadata'/)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
143
177
|
end
|
@@ -1,58 +1,14 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe RSpec::Core::Formatters::BaseFormatter do
|
4
|
-
|
4
|
+
|
5
5
|
let(:output) { StringIO.new }
|
6
6
|
let(:formatter) { RSpec::Core::Formatters::BaseFormatter.new(output) }
|
7
7
|
|
8
|
-
it "has start as an interface with one argument" do
|
9
|
-
formatter.should have_interface_for(:start).with(1).argument
|
10
|
-
end
|
11
|
-
|
12
|
-
it "has add_example_group as an interface with one argument" do
|
13
|
-
formatter.should have_interface_for(:add_example_group).with(1).argument
|
14
|
-
end
|
15
|
-
|
16
|
-
it "has example_passed as an interface with one argument" do
|
17
|
-
formatter.should have_interface_for(:example_passed).with(1).arguments
|
18
|
-
end
|
19
|
-
|
20
|
-
it "has example_pending as an interface with one argument" do
|
21
|
-
formatter.should have_interface_for(:example_pending).with(1).arguments
|
22
|
-
end
|
23
|
-
|
24
|
-
it "has example_failed as an interface with one argument" do
|
25
|
-
formatter.should have_interface_for(:example_failed).with(1).arguments
|
26
|
-
end
|
27
|
-
|
28
|
-
it "has start_dump as an interface with 1 arguments" do
|
29
|
-
formatter.should have_interface_for(:start_dump).with(1).arguments
|
30
|
-
end
|
31
|
-
|
32
|
-
it "has dump_failures as an interface with no arguments" do
|
33
|
-
formatter.should have_interface_for(:dump_failures).with(0).arguments
|
34
|
-
end
|
35
|
-
|
36
|
-
it "has dump_summary as an interface with zero arguments" do
|
37
|
-
formatter.should have_interface_for(:dump_summary).with(0).arguments
|
38
|
-
end
|
39
|
-
|
40
|
-
it "has dump_pending as an interface with zero arguments" do
|
41
|
-
formatter.should have_interface_for(:dump_pending).with(0).arguments
|
42
|
-
end
|
43
|
-
|
44
|
-
it "has close as an interface with zero arguments" do
|
45
|
-
formatter.should have_interface_for(:close).with(0).arguments
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '#format_backtrace' do
|
49
|
-
it "displays the full backtrace when the example is given the :full_backtrace => true option", :full_backtrace => true
|
50
|
-
end
|
51
|
-
|
52
8
|
describe "backtrace_line" do
|
53
9
|
it "trims current working directory" do
|
54
10
|
formatter.__send__(:backtrace_line, File.expand_path(__FILE__)).should == "./spec/rspec/core/formatters/base_formatter_spec.rb"
|
55
11
|
end
|
56
12
|
end
|
57
|
-
|
13
|
+
|
58
14
|
end
|
@@ -27,15 +27,16 @@ module RSpec::Core::Formatters
|
|
27
27
|
end
|
28
28
|
|
29
29
|
describe "#dump_failures" do
|
30
|
-
it "preserves formatting" do
|
30
|
+
it "preserves formatting" do
|
31
31
|
output = StringIO.new
|
32
|
-
group = RSpec::Core::ExampleGroup.describe
|
33
|
-
example = group.example { "this".should eq("that") }
|
32
|
+
group = RSpec::Core::ExampleGroup.describe("group name")
|
33
|
+
example = group.example("example name") { "this".should eq("that") }
|
34
34
|
formatter = RSpec::Core::Formatters::BaseTextFormatter.new(output)
|
35
35
|
group.run_all(formatter)
|
36
36
|
|
37
37
|
RSpec.configuration.stub(:color_enabled?) { false }
|
38
38
|
formatter.dump_failures
|
39
|
+
output.string.should =~ /group name example name/m
|
39
40
|
output.string.should =~ /(\s+)expected \"that\"\n\1 got \"this\"/m
|
40
41
|
end
|
41
42
|
end
|
@@ -19,7 +19,7 @@ module RSpec::Core::Formatters
|
|
19
19
|
RSpec.configuration.stub(:color_enabled?) { false }
|
20
20
|
|
21
21
|
formatter = RSpec::Core::Formatters::DocumentationFormatter.new(output)
|
22
|
-
|
22
|
+
|
23
23
|
examples.each {|e| formatter.example_failed(e) }
|
24
24
|
|
25
25
|
output.string.should =~ /first example \(FAILED - 1\)/m
|
@@ -2,28 +2,29 @@ require 'spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
|
4
4
|
describe RSpec::Core::Formatters::ProgressFormatter do
|
5
|
-
|
5
|
+
|
6
6
|
before do
|
7
7
|
@output = StringIO.new
|
8
8
|
@formatter = RSpec::Core::Formatters::ProgressFormatter.new(@output)
|
9
9
|
@formatter.start(2)
|
10
10
|
@formatter.stub!(:color_enabled?).and_return(false)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should produce line break on start dump" do
|
14
|
-
@formatter.start_dump
|
14
|
+
@formatter.start_dump
|
15
15
|
@output.string.should == "\n"
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
it "should produce standard summary without pending when pending has a 0 count" do
|
19
|
-
@formatter.start_dump
|
20
|
-
@formatter.dump_summary
|
21
|
-
@output.string.should =~ /
|
19
|
+
@formatter.start_dump
|
20
|
+
@formatter.dump_summary(0.00001, 2, 0, 0)
|
21
|
+
@output.string.should =~ /2 examples, 0 failures/i
|
22
|
+
@output.string.should_not =~ /0 pending/i
|
22
23
|
end
|
23
|
-
|
24
|
+
|
24
25
|
it "should push nothing on start" do
|
25
26
|
@formatter.start(4)
|
26
27
|
@output.string.should == ""
|
27
28
|
end
|
28
|
-
|
29
|
+
|
29
30
|
end
|