rspec-core 2.0.0.beta.17 → 2.0.0.beta.18
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/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
|