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
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!DOCTYPE html
|
2
|
+
<!DOCTYPE html
|
3
3
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
4
4
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
5
5
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
@@ -212,14 +212,14 @@ a {
|
|
212
212
|
<span class="failed_spec_name">fails</span>
|
213
213
|
<div class="failure" id="failure_0">
|
214
214
|
<div class="message"><pre>RSpec::Core::PendingExampleFixedError</pre></div>
|
215
|
-
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=19">./spec/rspec/core/resources/formatter_specs.rb:19</a>
|
216
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=23">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:23</a>
|
217
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
215
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=19">./spec/rspec/core/resources/formatter_specs.rb:19</a>
|
216
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=23">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:23</a>
|
217
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
218
218
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a> :in `open'
|
219
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
219
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
220
220
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=37">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:37</a> :in `chdir'
|
221
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=37">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:37</a>
|
222
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=73">./spec/spec_helper.rb:73</a>
|
221
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=37">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:37</a>
|
222
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=73">./spec/spec_helper.rb:73</a>
|
223
223
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=49">./spec/spec_helper.rb:49</a> :in `instance_eval'
|
224
224
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=49">./spec/spec_helper.rb:49</a> :in `sandboxed'
|
225
225
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=73">./spec/spec_helper.rb:73</a> </pre></div>
|
@@ -253,14 +253,14 @@ expected 2
|
|
253
253
|
|
254
254
|
(compared using ==)
|
255
255
|
</pre></div>
|
256
|
-
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=34">./spec/rspec/core/resources/formatter_specs.rb:34</a>
|
257
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=23">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:23</a>
|
258
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
256
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=34">./spec/rspec/core/resources/formatter_specs.rb:34</a>
|
257
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=23">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:23</a>
|
258
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
259
259
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a> :in `open'
|
260
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
260
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=38">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:38</a>
|
261
261
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=37">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:37</a> :in `chdir'
|
262
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=37">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:37</a>
|
263
|
-
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=73">./spec/spec_helper.rb:73</a>
|
262
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=37">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:37</a>
|
263
|
+
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=73">./spec/spec_helper.rb:73</a>
|
264
264
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=49">./spec/spec_helper.rb:49</a> :in `instance_eval'
|
265
265
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=49">./spec/spec_helper.rb:49</a> :in `sandboxed'
|
266
266
|
<a href="txmt://open?url=file:///Users/dchelimsky/projects/ruby/rspec2/repos/rspec-core/spec/spec_helper.rb&line=73">./spec/spec_helper.rb:73</a> </pre></div>
|
data/spec/rspec/core/let_spec.rb
CHANGED
@@ -112,7 +112,7 @@ module RSpec
|
|
112
112
|
it "nests the parent's example group metadata" do
|
113
113
|
parent = Metadata.new
|
114
114
|
parent.process(Object, 'parent')
|
115
|
-
|
115
|
+
|
116
116
|
child = Metadata.new(parent)
|
117
117
|
child.process()
|
118
118
|
|
@@ -188,11 +188,11 @@ module RSpec
|
|
188
188
|
end
|
189
189
|
|
190
190
|
it "extracts file path from caller" do
|
191
|
-
mfe[:file_path].should == __FILE__
|
191
|
+
mfe[:file_path].should == __FILE__
|
192
192
|
end
|
193
193
|
|
194
194
|
it "extracts line number from caller" do
|
195
|
-
mfe[:line_number].should == line_number
|
195
|
+
mfe[:line_number].should == line_number
|
196
196
|
end
|
197
197
|
|
198
198
|
it "extracts location from caller" do
|
@@ -200,7 +200,7 @@ module RSpec
|
|
200
200
|
end
|
201
201
|
|
202
202
|
it "merges arbitrary options" do
|
203
|
-
mfe[:arbitrary].should == :options
|
203
|
+
mfe[:arbitrary].should == :options
|
204
204
|
end
|
205
205
|
|
206
206
|
it "points :example_group to the same hash object" do
|
@@ -220,13 +220,13 @@ module RSpec
|
|
220
220
|
let(:group_line_number) { __LINE__ -1 }
|
221
221
|
let(:example_metadata) { group_metadata.for_example('example', :caller => ["foo_spec.rb:#{__LINE__}"]) }
|
222
222
|
let(:example_line_number) { __LINE__ -1 }
|
223
|
-
let(:next_example_metadata) {group_metadata.for_example('next_example',
|
223
|
+
let(:next_example_metadata) {group_metadata.for_example('next_example',
|
224
224
|
:caller => ["foo_spec.rb:#{example_line_number + 2}"])}
|
225
225
|
let(:world) { RSpec.world }
|
226
226
|
|
227
227
|
it "matches the group when the line_number is the example group line number" do
|
228
228
|
world.should_receive(:preceding_declaration_line).and_return(group_line_number)
|
229
|
-
# this call doesn't really make sense since apply_condition is only called
|
229
|
+
# this call doesn't really make sense since apply_condition is only called
|
230
230
|
# for example metadata not group metadata
|
231
231
|
group_metadata.apply_condition(:line_number, group_line_number).should be_true
|
232
232
|
end
|
@@ -245,17 +245,17 @@ module RSpec
|
|
245
245
|
world.should_receive(:preceding_declaration_line).and_return(example_line_number)
|
246
246
|
example_metadata.apply_condition(:line_number, example_line_number).should be_true
|
247
247
|
end
|
248
|
-
|
248
|
+
|
249
249
|
it "matches when the line number is between this example and the next" do
|
250
250
|
world.should_receive(:preceding_declaration_line).and_return(example_line_number)
|
251
251
|
example_metadata.apply_condition(:line_number, example_line_number + 1).should be_true
|
252
252
|
end
|
253
|
-
|
253
|
+
|
254
254
|
it "does not match when the line number matches the next example" do
|
255
255
|
world.should_receive(:preceding_declaration_line).and_return(example_line_number + 2)
|
256
256
|
example_metadata.apply_condition(:line_number, example_line_number + 2).should be_false
|
257
257
|
end
|
258
|
-
|
258
|
+
|
259
259
|
end
|
260
260
|
|
261
261
|
end
|
@@ -5,12 +5,12 @@ module RSpec::Core
|
|
5
5
|
before do
|
6
6
|
RSpec.stub(:deprecate)
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "deprecates the --formatter option" do
|
10
10
|
RSpec.should_receive(:deprecate)
|
11
|
-
Parser.parse!(%w[--formatter doc])
|
11
|
+
Parser.parse!(%w[--formatter doc])
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "converts --formatter to --format" do
|
15
15
|
options = Parser.parse!(%w[--formatter doc])
|
16
16
|
options.should eq( {:formatter=>"doc"} )
|
@@ -14,7 +14,7 @@ describe "an example" do
|
|
14
14
|
context "with no block" do
|
15
15
|
it "is listed as pending with 'Not Yet Implemented'" do
|
16
16
|
group = RSpec::Core::ExampleGroup.describe('group') do
|
17
|
-
it "has no block"
|
17
|
+
it "has no block"
|
18
18
|
end
|
19
19
|
example = group.examples.first
|
20
20
|
example.run(group.new, stub.as_null_object)
|
@@ -10,7 +10,7 @@ module RSpec::Core
|
|
10
10
|
RSpec::Core::Runner.should_receive(:at_exit)
|
11
11
|
RSpec::Core::Runner.autorun
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it 'does not set the at_exit hook if it is already set' do
|
15
15
|
RSpec::Core::Runner.stub(:installed_at_exit?).and_return(true)
|
16
16
|
RSpec::Core::Runner.stub(:running_in_drb?).and_return(false)
|
@@ -19,7 +19,7 @@ module RSpec::Core
|
|
19
19
|
RSpec::Core::Runner.autorun
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
describe "#run" do
|
24
24
|
context "with --drb or -X" do
|
25
25
|
before(:each) do
|
@@ -27,11 +27,11 @@ module RSpec::Core
|
|
27
27
|
|
28
28
|
@options = RSpec::Core::ConfigurationOptions.new(%w[--drb --drb-port 8181 --color])
|
29
29
|
RSpec::Core::ConfigurationOptions.stub(:new) { @options }
|
30
|
-
|
30
|
+
|
31
31
|
@drb_proxy = double(RSpec::Core::DRbCommandLine, :run => true)
|
32
32
|
RSpec::Core::DRbCommandLine.stub(:new => @drb_proxy)
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "builds a DRbCommandLine" do
|
36
36
|
RSpec::Core::DRbCommandLine.should_receive(:new)
|
37
37
|
RSpec::Core::Runner.run(%w[ --drb ], @err, @out)
|
@@ -3,107 +3,36 @@ require 'spec_helper'
|
|
3
3
|
module RSpec::Core
|
4
4
|
|
5
5
|
describe SharedExampleGroup do
|
6
|
-
it "should add the 'share_examples_for' method to the global namespace" do
|
7
|
-
Kernel.should respond_to(:share_examples_for)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should add the 'shared_examples_for' method to the global namespace" do
|
11
|
-
Kernel.should respond_to(:shared_examples_for)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should add the 'share_as' method to the global namespace" do
|
15
|
-
Kernel.should respond_to(:share_as)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should raise an ArgumentError when adding a second shared example group with the same name" do
|
19
|
-
group = ExampleGroup.describe('example group')
|
20
|
-
group.share_examples_for('really important business value') { }
|
21
|
-
lambda do
|
22
|
-
group.share_examples_for('really important business value') { }
|
23
|
-
end.should raise_error(ArgumentError, "Shared example group 'really important business value' already exists")
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "share_examples_for" do
|
27
|
-
|
28
|
-
it "should capture the given name and block in the Worlds collection of shared example groups" do
|
29
|
-
RSpec.world.shared_example_groups.should_receive(:[]=).with(:foo, anything)
|
30
|
-
share_examples_for(:foo) { }
|
31
|
-
end
|
32
6
|
|
33
|
-
|
34
|
-
|
35
|
-
describe "including shared example_groups using #it_should_behave_like" do
|
36
|
-
|
37
|
-
it "should make any shared example_group available at the correct level", :ruby => 1.8 do
|
38
|
-
group = ExampleGroup.describe('fake group')
|
39
|
-
block = lambda {
|
40
|
-
def self.class_helper; end
|
41
|
-
def extra_helper; end
|
42
|
-
}
|
43
|
-
RSpec.world.stub(:shared_example_groups).and_return({ :shared_example_group => block })
|
44
|
-
group.it_should_behave_like :shared_example_group
|
45
|
-
group.instance_methods.should include('extra_helper')
|
46
|
-
group.singleton_methods.should include('class_helper')
|
47
|
-
end
|
7
|
+
%w[share_examples_for shared_examples_for].each do |method_name|
|
8
|
+
describe method_name do
|
48
9
|
|
49
|
-
|
50
|
-
|
51
|
-
shared_examples_for(:shared_example_group) do
|
52
|
-
def self.class_helper; end
|
53
|
-
def extra_helper; end
|
10
|
+
it "is exposed to the global namespace" do
|
11
|
+
Kernel.should respond_to(method_name)
|
54
12
|
end
|
55
|
-
group.it_should_behave_like :shared_example_group
|
56
|
-
group.instance_methods.should include(:extra_helper)
|
57
|
-
group.singleton_methods.should include(:class_helper)
|
58
|
-
end
|
59
13
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
it "adds examples to current example_group using it_should_behave_like" do
|
68
|
-
group = ExampleGroup.describe("example_group") do
|
69
|
-
it("i was already here") {}
|
14
|
+
it "raises an ArgumentError when adding a second shared example group with the same name" do
|
15
|
+
group = ExampleGroup.describe('example group')
|
16
|
+
group.send(method_name, 'shared group') {}
|
17
|
+
lambda do
|
18
|
+
group.send(method_name, 'shared group') {}
|
19
|
+
end.should raise_error(ArgumentError, "Shared example group 'shared group' already exists")
|
70
20
|
end
|
71
21
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
it("shared example 2") {}
|
22
|
+
it "captures the given name and block in the Worlds collection of shared example groups" do
|
23
|
+
implementation = lambda {}
|
24
|
+
RSpec.world.shared_example_groups.should_receive(:[]=).with(:foo, implementation)
|
25
|
+
send(method_name, :foo, &implementation)
|
77
26
|
end
|
78
27
|
|
79
|
-
group.it_should_behave_like("shared example_group")
|
80
|
-
|
81
|
-
group.examples.size.should == 3
|
82
28
|
end
|
29
|
+
end
|
83
30
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
group.examples.size.should == 1
|
90
|
-
|
91
|
-
group.share_examples_for('test 2 shared groups') do
|
92
|
-
it("shared example") {}
|
93
|
-
it("shared example 2") {}
|
94
|
-
end
|
95
|
-
|
96
|
-
group.share_examples_for('test 2 shared groups 2') do
|
97
|
-
it("shared example 3") {}
|
98
|
-
end
|
99
|
-
|
100
|
-
group.it_should_behave_like("test 2 shared groups")
|
101
|
-
group.it_should_behave_like("test 2 shared groups 2")
|
102
|
-
|
103
|
-
group.examples.size.should == 4
|
31
|
+
describe "#share_as" do
|
32
|
+
it "is exposed to the global namespace" do
|
33
|
+
Kernel.should respond_to("share_as")
|
104
34
|
end
|
105
35
|
|
106
|
-
|
107
36
|
it "adds examples to current example_group using include", :compat => 'rspec-1.2' do
|
108
37
|
share_as('Cornucopia') do
|
109
38
|
it "is plentiful" do
|
@@ -114,95 +43,70 @@ module RSpec::Core
|
|
114
43
|
group.examples.length.should == 1
|
115
44
|
group.examples.first.metadata[:description].should == "is plentiful"
|
116
45
|
end
|
46
|
+
end
|
117
47
|
|
118
|
-
|
119
|
-
|
48
|
+
describe "#it_should_behave_like" do
|
49
|
+
it "creates a nested group" do
|
50
|
+
shared_examples_for("thing") {}
|
51
|
+
group = ExampleGroup.describe('fake group')
|
52
|
+
group.it_should_behave_like("thing")
|
53
|
+
group.should have(1).children
|
54
|
+
end
|
120
55
|
|
121
|
-
|
122
|
-
|
56
|
+
it "adds shared examples to nested group" do
|
57
|
+
shared_examples_for("thing") do
|
58
|
+
it("does something")
|
123
59
|
end
|
124
|
-
|
125
|
-
group.it_should_behave_like(
|
126
|
-
|
127
|
-
group.examples.size.should == 1
|
60
|
+
group = ExampleGroup.describe('fake group')
|
61
|
+
shared_group = group.it_should_behave_like("thing")
|
62
|
+
shared_group.should have(1).examples
|
128
63
|
end
|
129
64
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
let(:group) do
|
134
|
-
ExampleGroup.describe("example group")
|
65
|
+
it "adds shared instance methods to nested group" do
|
66
|
+
shared_examples_for("thing") do
|
67
|
+
def foo; end
|
135
68
|
end
|
69
|
+
group = ExampleGroup.describe('fake group')
|
70
|
+
shared_group = group.it_should_behave_like("thing")
|
71
|
+
shared_group.public_instance_methods.should include("foo")
|
72
|
+
end
|
136
73
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
def count(scope)
|
147
|
-
@counters ||= {
|
148
|
-
:before_all => 0,
|
149
|
-
:before_each => 0,
|
150
|
-
:after_each => 0,
|
151
|
-
:after_all => 0
|
152
|
-
}
|
153
|
-
@counters[scope] += 1
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def magic
|
158
|
-
$magic ||= {}
|
159
|
-
end
|
74
|
+
it "adds shared class methods to nested group" do
|
75
|
+
shared_examples_for("thing") do
|
76
|
+
def self.foo; end
|
77
|
+
end
|
78
|
+
group = ExampleGroup.describe('fake group')
|
79
|
+
shared_group = group.it_should_behave_like("thing")
|
80
|
+
shared_group.methods.should include("foo")
|
81
|
+
end
|
160
82
|
|
161
|
-
|
162
|
-
|
83
|
+
context "given a block" do
|
84
|
+
it "evaluates the block in nested group" do
|
85
|
+
scopes = []
|
86
|
+
shared_examples_for("thing") do
|
87
|
+
it("gets run in the nested group") do
|
88
|
+
scopes << self.class
|
163
89
|
end
|
164
|
-
|
165
|
-
before(:all) { magic[:before_all] = "before all #{count(:before_all)}" }
|
166
|
-
before(:each) { magic[:before_each] = "before each #{count(:before_each)}" }
|
167
|
-
after(:each) { magic[:after_each] = "after each #{count(:after_each)}" }
|
168
|
-
after(:all) { magic[:after_all] = "after all #{count(:after_all)}" }
|
169
90
|
end
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
group.it "includes modules, included into shared example_group, into current example_group", :compat => 'rspec-1.2' do
|
177
|
-
raise "FAIL" unless example.example_group.included_modules.include?(RunningSharedExamplesJustForTesting)
|
91
|
+
group = ExampleGroup.describe("group") do
|
92
|
+
it_should_behave_like "thing" do
|
93
|
+
it("gets run in the same nested group") do
|
94
|
+
scopes << self.class
|
95
|
+
end
|
96
|
+
end
|
178
97
|
end
|
179
98
|
group.run_all
|
180
|
-
end
|
181
|
-
|
182
|
-
it "runs before(:all) only once from shared example_group", :compat => 'rspec-1.2' do
|
183
|
-
group.magic[:before_all].should eq("before all 1")
|
184
|
-
end
|
185
|
-
|
186
|
-
it "runs before(:each) from shared example_group", :compat => 'rspec-1.2' do
|
187
|
-
group.magic[:before_each].should eq("before each 3")
|
188
|
-
end
|
189
|
-
|
190
|
-
it "runs after(:each) from shared example_group", :compat => 'rspec-1.2' do
|
191
|
-
group.magic[:after_each].should eq("after each 3")
|
192
|
-
end
|
193
|
-
|
194
|
-
it "runs after(:all) only once from shared example_group", :compat => 'rspec-1.2' do
|
195
|
-
group.magic[:after_all].should eq("after all 1")
|
196
|
-
end
|
197
99
|
|
198
|
-
|
199
|
-
group.magic.should be_a(Hash)
|
100
|
+
scopes[0].should be(scopes[1])
|
200
101
|
end
|
201
|
-
|
202
102
|
end
|
203
103
|
|
104
|
+
it "raises when named shared example_group can not be found" do
|
105
|
+
group = ExampleGroup.describe("example_group")
|
106
|
+
lambda do
|
107
|
+
group.it_should_behave_like("a group that does not exist")
|
108
|
+
end.should raise_error(/Could not find shared example group named/)
|
109
|
+
end
|
204
110
|
end
|
205
|
-
|
206
111
|
end
|
207
|
-
|
208
112
|
end
|