rspec-core 2.0.0.a5 → 2.0.0.a6
Sign up to get free protection for your applications and to get access to all the features.
- data/example_specs/failing/diffing_spec.rb +3 -1
- data/example_specs/spec_helper.rb +1 -1
- data/features/configuration/spec_opts.feature +7 -7
- data/features/example_groups/describe_aliases.feature +1 -1
- data/features/example_groups/nested_groups.feature +3 -6
- data/features/{before_and_after_blocks/around.feature → hooks/around_hook.feature} +1 -1
- data/features/{before_and_after_blocks/before_and_after_blocks.feature → hooks/before_and_after_hooks.feature} +3 -3
- data/features/hooks/halt.feature +27 -0
- data/features/mock_framework_integration/use_flexmock.feature +1 -1
- data/features/mock_framework_integration/use_mocha.feature +1 -1
- data/features/mock_framework_integration/use_rr.feature +1 -1
- data/features/mock_framework_integration/use_rspec.feature +1 -1
- data/features/mocks/block_local_expectations.feature +2 -2
- data/features/mocks/mix_stubs_and_mocks.feature +1 -1
- data/lib/rspec/core.rb +6 -0
- data/lib/rspec/core/around_proxy.rb +14 -0
- data/lib/rspec/core/deprecation.rb +25 -26
- data/lib/rspec/core/example.rb +11 -21
- data/lib/rspec/core/example_group.rb +27 -22
- data/lib/rspec/core/runner.rb +12 -12
- data/lib/rspec/core/version.rb +1 -1
- data/rspec-core.gemspec +13 -11
- data/spec/rspec/core/configuration_spec.rb +2 -4
- data/spec/rspec/core/example_group_spec.rb +263 -292
- data/spec/rspec/core/example_group_subject_spec.rb +26 -31
- data/spec/rspec/core/mocha_spec.rb +8 -10
- data/spec/rspec/core/pending_example_spec.rb +1 -1
- data/spec/rspec/core/runner_spec.rb +2 -2
- data/spec/rspec/core/shared_example_group_spec.rb +120 -129
- data/spec/rspec/core/world_spec.rb +111 -116
- data/spec/rspec/core_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -23
- metadata +9 -7
@@ -1,45 +1,40 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
group = Rspec::Core::ExampleGroup.describe(describes) {}
|
5
|
-
remove_last_example_group_from_world
|
6
|
-
yield group if block_given?
|
7
|
-
group
|
8
|
-
end
|
3
|
+
module Rspec::Core
|
9
4
|
|
10
|
-
describe
|
5
|
+
describe ExampleGroupSubject do
|
11
6
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
describe "implicit subject" do
|
8
|
+
describe "with a class" do
|
9
|
+
it "returns an instance of the class" do
|
10
|
+
ExampleGroup.create(Array).subject.call.should == []
|
11
|
+
end
|
16
12
|
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
|
14
|
+
describe "with a Module" do
|
15
|
+
it "returns the Module" do
|
16
|
+
ExampleGroup.create(Enumerable).subject.call.should == Enumerable
|
17
|
+
end
|
22
18
|
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
|
20
|
+
describe "with a string" do
|
21
|
+
it "return the string" do
|
22
|
+
ExampleGroup.create("Foo").subject.call.should == 'Foo'
|
23
|
+
end
|
28
24
|
end
|
29
|
-
end
|
30
25
|
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
describe "with a number" do
|
27
|
+
it "returns the number" do
|
28
|
+
ExampleGroup.create(15).subject.call.should == 15
|
29
|
+
end
|
34
30
|
end
|
31
|
+
|
35
32
|
end
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
describe "explicit subject" do
|
34
|
+
describe "explicit subject" do
|
40
35
|
describe "defined in a top level group" do
|
41
36
|
it "replaces the implicit subject in that group" do
|
42
|
-
group =
|
37
|
+
group = ExampleGroup.create(Array)
|
43
38
|
group.subject { [1,2,3] }
|
44
39
|
group.subject.call.should == [1,2,3]
|
45
40
|
end
|
@@ -47,7 +42,7 @@ describe Rspec::Core::ExampleGroupSubject do
|
|
47
42
|
|
48
43
|
describe "defined in a top level group" do
|
49
44
|
before do
|
50
|
-
@group =
|
45
|
+
@group = ExampleGroup.create
|
51
46
|
@group.subject{ [4,5,6] }
|
52
47
|
end
|
53
48
|
|
@@ -63,5 +58,5 @@ describe Rspec::Core::ExampleGroupSubject do
|
|
63
58
|
end
|
64
59
|
end
|
65
60
|
end
|
66
|
-
|
61
|
+
end
|
67
62
|
end
|
@@ -10,16 +10,14 @@ describe "Mocha Regression involving double reporting of errors" do
|
|
10
10
|
|
11
11
|
use_formatter(formatter) do
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
group.run(formatter)
|
22
|
-
end
|
13
|
+
group = Rspec::Core::ExampleGroup.create("my favorite pony") do
|
14
|
+
example("showing a double fail") do
|
15
|
+
foo = "string"
|
16
|
+
foo.expects(:something)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
group.examples_to_run.replace(group.examples)
|
20
|
+
group.run(formatter)
|
23
21
|
|
24
22
|
end
|
25
23
|
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Rspec::Core::Runner do
|
4
4
|
|
5
|
-
describe '
|
5
|
+
describe 'reporter' do
|
6
6
|
|
7
7
|
it 'should return the configured formatter' do
|
8
|
-
Rspec::Core::Runner.new.
|
8
|
+
Rspec::Core::Runner.new.reporter.should == Rspec::Core.configuration.formatter
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
@@ -1,185 +1,176 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
module Rspec::Core
|
4
4
|
|
5
|
-
|
6
|
-
Kernel.should respond_to(:share_examples_for)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should add the 'shared_examples_for' method to the global namespace" do
|
10
|
-
Kernel.should respond_to(:shared_examples_for)
|
11
|
-
end
|
5
|
+
describe SharedExampleGroup do
|
12
6
|
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
it "should add the 'share_examples_for' method to the global namespace" do
|
8
|
+
Kernel.should respond_to(:share_examples_for)
|
9
|
+
end
|
16
10
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
lambda do
|
21
|
-
group.share_examples_for('really important business value') { }
|
22
|
-
end.should raise_error(ArgumentError, "Shared example group 'really important business value' already exists")
|
23
|
-
end
|
11
|
+
it "should add the 'shared_examples_for' method to the global namespace" do
|
12
|
+
Kernel.should respond_to(:shared_examples_for)
|
13
|
+
end
|
24
14
|
|
25
|
-
|
15
|
+
it "should add the 'share_as' method to the global namespace" do
|
16
|
+
Kernel.should respond_to(:share_as)
|
17
|
+
end
|
26
18
|
|
27
|
-
it "should
|
28
|
-
|
29
|
-
share_examples_for(
|
19
|
+
it "should raise an ArgumentError when adding a second shared example group with the same name" do
|
20
|
+
group = ExampleGroup.create('example group')
|
21
|
+
group.share_examples_for('really important business value') { }
|
22
|
+
lambda do
|
23
|
+
group.share_examples_for('really important business value') { }
|
24
|
+
end.should raise_error(ArgumentError, "Shared example group 'really important business value' already exists")
|
30
25
|
end
|
31
26
|
|
32
|
-
|
27
|
+
describe "share_examples_for" do
|
33
28
|
|
34
|
-
|
29
|
+
it "should capture the given name and block in the Worlds collection of shared example groups" do
|
30
|
+
Rspec::Core.world.shared_example_groups.should_receive(:[]=).with(:foo, anything)
|
31
|
+
share_examples_for(:foo) { }
|
32
|
+
end
|
35
33
|
|
36
|
-
def cleanup_shared_example_groups
|
37
|
-
original_shared_example_groups = Rspec::Core.world.shared_example_groups
|
38
|
-
yield if block_given?
|
39
|
-
Rspec::Core.world.shared_example_groups.replace(original_shared_example_groups)
|
40
34
|
end
|
41
35
|
|
42
|
-
|
43
|
-
group = isolated_example_group('fake group')
|
44
|
-
block1 = lambda {}
|
45
|
-
block2 = lambda {
|
46
|
-
def extra_helper
|
47
|
-
'extra_helper'
|
48
|
-
end
|
49
|
-
}
|
50
|
-
Rspec::Core.world.stub!(:shared_example_groups).and_return({ :a => block1, :shared_example_group => block2 })
|
51
|
-
group.should_receive(:module_eval).once
|
52
|
-
group.it_should_behave_like :shared_example_group
|
53
|
-
end
|
36
|
+
describe "including shared example_groups using #it_should_behave_like" do
|
54
37
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
def extra_helper; end
|
60
|
-
}
|
61
|
-
Rspec::Core.world.stub!(:shared_example_groups).and_return({ :shared_example_group => block })
|
62
|
-
group.it_should_behave_like :shared_example_group
|
63
|
-
with_ruby(1.8) do
|
64
|
-
group.instance_methods.should include('extra_helper')
|
65
|
-
group.singleton_methods.should include('class_helper')
|
38
|
+
def cleanup_shared_example_groups
|
39
|
+
original_shared_example_groups = Rspec::Core.world.shared_example_groups
|
40
|
+
yield if block_given?
|
41
|
+
Rspec::Core.world.shared_example_groups.replace(original_shared_example_groups)
|
66
42
|
end
|
67
|
-
|
68
|
-
|
69
|
-
group.
|
43
|
+
|
44
|
+
it "should make any shared example_group available at the correct level" do
|
45
|
+
group = ExampleGroup.create('fake group')
|
46
|
+
block = lambda {
|
47
|
+
def self.class_helper; end
|
48
|
+
def extra_helper; end
|
49
|
+
}
|
50
|
+
Rspec::Core.world.stub(:shared_example_groups).and_return({ :shared_example_group => block })
|
51
|
+
group.it_should_behave_like :shared_example_group
|
52
|
+
with_ruby(1.8) do
|
53
|
+
group.instance_methods.should include('extra_helper')
|
54
|
+
group.singleton_methods.should include('class_helper')
|
55
|
+
end
|
56
|
+
with_ruby(1.9) do
|
57
|
+
group.instance_methods.should include(:extra_helper)
|
58
|
+
group.singleton_methods.should include(:class_helper)
|
59
|
+
end
|
70
60
|
end
|
71
|
-
end
|
72
61
|
|
73
|
-
|
62
|
+
it "should raise when named shared example_group can not be found"
|
74
63
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
64
|
+
it "adds examples to current example_group using it_should_behave_like" do
|
65
|
+
cleanup_shared_example_groups do
|
66
|
+
group = ExampleGroup.create("example_group") do
|
67
|
+
it("i was already here") {}
|
68
|
+
end
|
80
69
|
|
81
|
-
|
70
|
+
group.examples.size.should == 1
|
82
71
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
72
|
+
group.share_examples_for('shared example_group') do
|
73
|
+
it("shared example") {}
|
74
|
+
it("shared example 2") {}
|
75
|
+
end
|
87
76
|
|
88
|
-
|
77
|
+
group.it_should_behave_like("shared example_group")
|
89
78
|
|
90
|
-
|
79
|
+
group.examples.size.should == 3
|
80
|
+
end
|
91
81
|
end
|
92
|
-
end
|
93
82
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
83
|
+
it "adds examples to from two shared groups" do
|
84
|
+
cleanup_shared_example_groups do
|
85
|
+
group = ExampleGroup.create("example_group") do |g|
|
86
|
+
g.it("i was already here") {}
|
87
|
+
end
|
99
88
|
|
100
|
-
|
89
|
+
group.examples.size.should == 1
|
101
90
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
91
|
+
group.share_examples_for('test 2 shared groups') do
|
92
|
+
it("shared example") {}
|
93
|
+
it("shared example 2") {}
|
94
|
+
end
|
106
95
|
|
107
|
-
|
108
|
-
|
109
|
-
|
96
|
+
group.share_examples_for('test 2 shared groups 2') do
|
97
|
+
it("shared example 3") {}
|
98
|
+
end
|
110
99
|
|
111
|
-
|
112
|
-
|
100
|
+
group.it_should_behave_like("test 2 shared groups")
|
101
|
+
group.it_should_behave_like("test 2 shared groups 2")
|
113
102
|
|
114
|
-
|
103
|
+
group.examples.size.should == 4
|
104
|
+
end
|
115
105
|
end
|
116
|
-
end
|
117
106
|
|
118
|
-
|
119
|
-
|
120
|
-
|
107
|
+
share_as('Cornucopia') do
|
108
|
+
it "is plentiful" do
|
109
|
+
5.should == 4
|
110
|
+
end
|
111
|
+
end
|
121
112
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
113
|
+
it "adds examples to current example_group using include", :compat => 'rspec-1.2' do
|
114
|
+
group = ExampleGroup.create('group') { include Cornucopia }
|
115
|
+
group.examples.length.should == 1
|
116
|
+
group.examples.first.metadata[:description].should == "is plentiful"
|
117
|
+
end
|
126
118
|
|
127
|
-
|
128
|
-
|
129
|
-
|
119
|
+
it "adds examples to current example_group using it_should_behave_like with a module" do
|
120
|
+
cleanup_shared_example_groups do
|
121
|
+
group = ExampleGroup.create("example_group") {}
|
130
122
|
|
131
|
-
|
132
|
-
|
133
|
-
|
123
|
+
shared_foo = group.share_as(:FooShared) do
|
124
|
+
it("shared example") {}
|
125
|
+
end
|
134
126
|
|
135
|
-
|
127
|
+
group.it_should_behave_like(::FooShared)
|
136
128
|
|
137
|
-
|
129
|
+
group.examples.size.should == 1
|
130
|
+
end
|
138
131
|
end
|
139
|
-
end
|
140
132
|
|
141
|
-
|
142
|
-
|
133
|
+
describe "running shared examples" do
|
134
|
+
module RunningSharedExamplesJustForTesting; end
|
135
|
+
|
136
|
+
share_examples_for("it runs shared examples") do
|
137
|
+
include RunningSharedExamplesJustForTesting
|
143
138
|
|
144
|
-
|
145
|
-
|
139
|
+
def magic
|
140
|
+
@magic ||= {}
|
141
|
+
end
|
146
142
|
|
147
|
-
|
148
|
-
|
143
|
+
before(:each) { magic[:before_each] = 'each' }
|
144
|
+
after(:each) { magic[:after_each] = 'each' }
|
145
|
+
before(:all) { magic[:before_all] = 'all' }
|
149
146
|
end
|
150
147
|
|
151
|
-
|
152
|
-
after(:each) { magic[:after_each] = 'each' }
|
153
|
-
before(:all) { magic[:before_all] = 'all' }
|
154
|
-
end
|
148
|
+
it_should_behave_like "it runs shared examples"
|
155
149
|
|
156
|
-
|
150
|
+
it "runs before(:each) from shared example_group", :compat => 'rspec-1.2' do
|
151
|
+
magic[:before_each].should == 'each'
|
152
|
+
end
|
157
153
|
|
158
|
-
|
159
|
-
magic[:before_each].should == 'each'
|
160
|
-
end
|
154
|
+
it "runs after(:each) from shared example_group", :compat => 'rspec-1.2'
|
161
155
|
|
162
|
-
|
156
|
+
it "should run before(:all) only once from shared example_group", :compat => 'rspec-1.2' do
|
157
|
+
magic[:before_all].should == 'all'
|
158
|
+
end
|
163
159
|
|
164
|
-
|
165
|
-
magic[:before_all].should == 'all'
|
166
|
-
end
|
160
|
+
it "should run after(:all) only once from shared example_group", :compat => 'rspec-1.2'
|
167
161
|
|
168
|
-
|
162
|
+
it "should include modules, included into shared example_group, into current example_group", :compat => 'rspec-1.2' do
|
163
|
+
running_example.example_group.included_modules.should include(RunningSharedExamplesJustForTesting)
|
164
|
+
end
|
169
165
|
|
170
|
-
|
171
|
-
|
172
|
-
|
166
|
+
it "should make methods defined in the shared example_group available in consuming example_group", :compat => 'rspec-1.2' do
|
167
|
+
magic.should be_a(Hash)
|
168
|
+
end
|
173
169
|
|
174
|
-
it "should make methods defined in the shared example_group available in consuming example_group", :compat => 'rspec-1.2' do
|
175
|
-
# TODO: Consider should have_method(...) simple matcher
|
176
|
-
with_ruby('1.8') { running_example.example_group.methods.should include('magic') }
|
177
|
-
with_ruby('1.9') { running_example.example_group.methods.should include(:magic) }
|
178
170
|
end
|
179
171
|
|
180
172
|
end
|
181
173
|
|
182
174
|
end
|
183
175
|
|
184
|
-
|
185
176
|
end
|
@@ -3,146 +3,141 @@ require 'spec_helper'
|
|
3
3
|
class Bar; end
|
4
4
|
class Foo; end
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
before do
|
9
|
-
@world = Rspec::Core::World.new
|
10
|
-
Rspec::Core.stub(:world).and_return(@world)
|
11
|
-
end
|
6
|
+
module Rspec::Core
|
12
7
|
|
13
|
-
describe
|
14
|
-
|
15
|
-
it "should contain all defined example groups" do
|
16
|
-
disconnect_from_world do
|
17
|
-
example_group = Rspec::Core::ExampleGroup.describe(Bar, 'Empty Example Group') { }
|
18
|
-
@world.example_groups.should include(example_group)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "applying inclusion filters" do
|
25
|
-
|
26
|
-
before(:all) do
|
27
|
-
options_1 = { :foo => 1, :color => 'blue', :feature => 'reporting' }
|
28
|
-
options_2 = { :pending => true, :feature => 'reporting' }
|
29
|
-
options_3 = { :array => [1,2,3,4], :color => 'blue' }
|
30
|
-
@bg1 = Rspec::Core::ExampleGroup.describe(Bar, "find group-1", options_1) { }
|
31
|
-
@bg2 = Rspec::Core::ExampleGroup.describe(Bar, "find group-2", options_2) { }
|
32
|
-
@bg3 = Rspec::Core::ExampleGroup.describe(Bar, "find group-3", options_3) { }
|
33
|
-
@bg4 = Rspec::Core::ExampleGroup.describe(Foo, "find these examples") do
|
34
|
-
it('I have no options') {}
|
35
|
-
it("this is awesome", :awesome => true) {}
|
36
|
-
it("this is too", :awesome => true) {}
|
37
|
-
it("not so awesome", :awesome => false) {}
|
38
|
-
it("I also have no options") {}
|
39
|
-
end
|
40
|
-
@example_groups = [@bg1, @bg2, @bg3, @bg4]
|
41
|
-
end
|
8
|
+
describe World do
|
42
9
|
|
43
|
-
|
44
|
-
Rspec::Core.
|
45
|
-
Rspec::Core.world.
|
46
|
-
Rspec::Core.world.example_groups.delete(@bg3)
|
47
|
-
Rspec::Core.world.example_groups.delete(@bg4)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "finds no groups when given no search parameters" do
|
51
|
-
@world.apply_inclusion_filters([]).should == []
|
52
|
-
end
|
53
|
-
|
54
|
-
it "finds matching groups when filtering on :describes (described class or module)" do
|
55
|
-
@world.apply_inclusion_filters(@example_groups, :example_group => { :describes => Bar }).should == [@bg1, @bg2, @bg3]
|
56
|
-
end
|
57
|
-
|
58
|
-
it "finds matching groups when filtering on :description with text" do
|
59
|
-
@world.apply_inclusion_filters(@example_groups, :example_group => { :description => 'find group-1' }).should == [@bg1]
|
60
|
-
end
|
61
|
-
|
62
|
-
it "finds matching groups when filtering on :description with a lambda" do
|
63
|
-
@world.apply_inclusion_filters(@example_groups, :example_group => { :description => lambda { |v| v.include?('-1') || v.include?('-3') } }).should == [@bg1, @bg3]
|
10
|
+
before do
|
11
|
+
@world = Rspec::Core::World.new
|
12
|
+
Rspec::Core.stub(:world).and_return(@world)
|
64
13
|
end
|
14
|
+
|
15
|
+
describe "example_groups" do
|
65
16
|
|
66
|
-
|
67
|
-
|
68
|
-
|
17
|
+
it "should contain all defined example groups" do
|
18
|
+
group = Rspec::Core::ExampleGroup.describe("group") {}
|
19
|
+
@world.example_groups.should include(group)
|
20
|
+
end
|
69
21
|
|
70
|
-
it "finds one group when searching for :pending => true" do
|
71
|
-
@world.apply_inclusion_filters(@example_groups, :pending => true ).should == [@bg2]
|
72
|
-
end
|
73
|
-
|
74
|
-
it "finds matching groups when filtering on arbitrary metadata with a number" do
|
75
|
-
@world.apply_inclusion_filters(@example_groups, :foo => 1 ).should == [@bg1]
|
76
22
|
end
|
77
23
|
|
78
|
-
|
79
|
-
@world.apply_inclusion_filters(@example_groups, :array => [1,2,3,4]).should == [@bg3]
|
80
|
-
end
|
81
|
-
|
82
|
-
it "finds no groups when filtering on arbitrary metadata with an array but the arrays do not match" do
|
83
|
-
@world.apply_inclusion_filters(@example_groups, :array => [4,3,2,1]).should be_empty
|
84
|
-
end
|
85
|
-
|
86
|
-
it "finds matching examples when filtering on arbitrary metadata" do
|
87
|
-
@world.apply_inclusion_filters(@bg4.examples, :awesome => true).should == [@bg4.examples[1], @bg4.examples[2]]
|
88
|
-
end
|
24
|
+
describe "applying inclusion filters" do
|
89
25
|
|
90
|
-
|
91
|
-
|
92
|
-
|
26
|
+
before(:all) do
|
27
|
+
options_1 = { :foo => 1, :color => 'blue', :feature => 'reporting' }
|
28
|
+
options_2 = { :pending => true, :feature => 'reporting' }
|
29
|
+
options_3 = { :array => [1,2,3,4], :color => 'blue' }
|
30
|
+
@bg1 = Rspec::Core::ExampleGroup.describe(Bar, "find group-1", options_1) { }
|
31
|
+
@bg2 = Rspec::Core::ExampleGroup.describe(Bar, "find group-2", options_2) { }
|
32
|
+
@bg3 = Rspec::Core::ExampleGroup.describe(Bar, "find group-3", options_3) { }
|
33
|
+
@bg4 = Rspec::Core::ExampleGroup.describe(Foo, "find these examples") do
|
34
|
+
it('I have no options') {}
|
35
|
+
it("this is awesome", :awesome => true) {}
|
36
|
+
it("this is too", :awesome => true) {}
|
37
|
+
it("not so awesome", :awesome => false) {}
|
38
|
+
it("I also have no options") {}
|
39
|
+
end
|
40
|
+
@example_groups = [@bg1, @bg2, @bg3, @bg4]
|
41
|
+
end
|
42
|
+
|
43
|
+
it "finds no groups when given no search parameters" do
|
44
|
+
@world.apply_inclusion_filters([]).should == []
|
45
|
+
end
|
93
46
|
|
94
|
-
|
95
|
-
|
47
|
+
it "finds matching groups when filtering on :describes (described class or module)" do
|
48
|
+
@world.apply_inclusion_filters(@example_groups, :example_group => { :describes => Bar }).should == [@bg1, @bg2, @bg3]
|
49
|
+
end
|
96
50
|
|
97
|
-
|
98
|
-
|
99
|
-
it("bar") {}
|
51
|
+
it "finds matching groups when filtering on :description with text" do
|
52
|
+
@world.apply_inclusion_filters(@example_groups, :example_group => { :description => 'find group-1' }).should == [@bg1]
|
100
53
|
end
|
101
54
|
|
102
|
-
|
55
|
+
it "finds matching groups when filtering on :description with a lambda" do
|
56
|
+
@world.apply_inclusion_filters(@example_groups, :example_group => { :description => lambda { |v| v.include?('-1') || v.include?('-3') } }).should == [@bg1, @bg3]
|
57
|
+
end
|
103
58
|
|
104
|
-
|
105
|
-
|
106
|
-
it("bar") {}
|
59
|
+
it "finds matching groups when filtering on :description with a regular expression" do
|
60
|
+
@world.apply_inclusion_filters(@example_groups, :example_group => { :description => /find group/ }).should == [@bg1, @bg2, @bg3]
|
107
61
|
end
|
108
62
|
|
109
|
-
|
110
|
-
|
111
|
-
|
63
|
+
it "finds one group when searching for :pending => true" do
|
64
|
+
@world.apply_inclusion_filters(@example_groups, :pending => true ).should == [@bg2]
|
65
|
+
end
|
66
|
+
|
67
|
+
it "finds matching groups when filtering on arbitrary metadata with a number" do
|
68
|
+
@world.apply_inclusion_filters(@example_groups, :foo => 1 ).should == [@bg1]
|
69
|
+
end
|
70
|
+
|
71
|
+
it "finds matching groups when filtering on arbitrary metadata with an array" do
|
72
|
+
@world.apply_inclusion_filters(@example_groups, :array => [1,2,3,4]).should == [@bg3]
|
73
|
+
end
|
74
|
+
|
75
|
+
it "finds no groups when filtering on arbitrary metadata with an array but the arrays do not match" do
|
76
|
+
@world.apply_inclusion_filters(@example_groups, :array => [4,3,2,1]).should be_empty
|
77
|
+
end
|
112
78
|
|
113
|
-
|
114
|
-
|
115
|
-
it("foo") {}
|
116
|
-
it("bar") {}
|
79
|
+
it "finds matching examples when filtering on arbitrary metadata" do
|
80
|
+
@world.apply_inclusion_filters(@bg4.examples, :awesome => true).should == [@bg4.examples[1], @bg4.examples[2]]
|
117
81
|
end
|
118
|
-
@world.apply_exclusion_filters(group.examples, :name => /exclude/).should == []
|
119
|
-
@world.apply_exclusion_filters(group.examples, :name => /exclude/, :another => "foo").should == []
|
120
|
-
@world.apply_exclusion_filters(group.examples, :name => /exclude/, :another => "foo", :example_group => {
|
121
|
-
:describes => lambda { |b| b == Bar } } ).should == []
|
122
82
|
|
123
|
-
@world.apply_exclusion_filters(group.examples, :name => /exclude not/).should == group.examples
|
124
|
-
@world.apply_exclusion_filters(group.examples, :name => /exclude/, "another_condition" => "foo").should == group.examples
|
125
|
-
@world.apply_exclusion_filters(group.examples, :name => /exclude/, "another_condition" => "foo1").should == group.examples
|
126
83
|
end
|
127
84
|
|
128
|
-
|
129
|
-
|
130
|
-
|
85
|
+
describe "applying exclusion filters" do
|
86
|
+
|
87
|
+
it "should find nothing if all describes match the exclusion filter" do
|
88
|
+
options = { :network_access => true }
|
89
|
+
|
90
|
+
group1 = ExampleGroup.create(Bar, "find group-1", options) do
|
91
|
+
it("foo") {}
|
92
|
+
it("bar") {}
|
93
|
+
end
|
94
|
+
|
95
|
+
@world.apply_exclusion_filters(group1.examples, :network_access => true).should == []
|
96
|
+
|
97
|
+
group2 = ExampleGroup.create(Bar, "find group-1") do
|
98
|
+
it("foo", :network_access => true) {}
|
99
|
+
it("bar") {}
|
100
|
+
end
|
101
|
+
|
102
|
+
@world.apply_exclusion_filters(group2.examples, :network_access => true).should == [group2.examples.last]
|
131
103
|
|
132
|
-
it "should run matches" do
|
133
|
-
@group1 = isolated_example_group(Bar, "find these examples") do
|
134
|
-
it('I have no options', :color => :red, :awesome => true) {}
|
135
|
-
it("I also have no options", :color => :red, :awesome => true) {}
|
136
|
-
it("not so awesome", :color => :red, :awesome => false) {}
|
137
104
|
end
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
105
|
+
|
106
|
+
it "should find nothing if a regexp matches the exclusion filter" do
|
107
|
+
group = ExampleGroup.create(Bar, "find group-1", :name => "exclude me with a regex", :another => "foo") do
|
108
|
+
it("foo") {}
|
109
|
+
it("bar") {}
|
110
|
+
end
|
111
|
+
@world.apply_exclusion_filters(group.examples, :name => /exclude/).should == []
|
112
|
+
@world.apply_exclusion_filters(group.examples, :name => /exclude/, :another => "foo").should == []
|
113
|
+
@world.apply_exclusion_filters(group.examples, :name => /exclude/, :another => "foo", :example_group => {
|
114
|
+
:describes => lambda { |b| b == Bar } } ).should == []
|
115
|
+
|
116
|
+
@world.apply_exclusion_filters(group.examples, :name => /exclude not/).should == group.examples
|
117
|
+
@world.apply_exclusion_filters(group.examples, :name => /exclude/, "another_condition" => "foo").should == group.examples
|
118
|
+
@world.apply_exclusion_filters(group.examples, :name => /exclude/, "another_condition" => "foo1").should == group.examples
|
119
|
+
end
|
120
|
+
|
144
121
|
end
|
145
122
|
|
123
|
+
describe "filtering example groups" do
|
124
|
+
|
125
|
+
it "should run matches" do
|
126
|
+
@group1 = ExampleGroup.create(Bar, "find these examples") do
|
127
|
+
it('I have no options', :color => :red, :awesome => true) {}
|
128
|
+
it("I also have no options", :color => :red, :awesome => true) {}
|
129
|
+
it("not so awesome", :color => :red, :awesome => false) {}
|
130
|
+
end
|
131
|
+
Rspec::Core.world.stub(:exclusion_filter).and_return({ :awesome => false })
|
132
|
+
Rspec::Core.world.stub(:filter).and_return({ :color => :red })
|
133
|
+
Rspec::Core.world.stub(:example_groups).and_return([@group1])
|
134
|
+
filtered_example_groups = @world.filter_example_groups
|
135
|
+
filtered_example_groups.should == [@group1]
|
136
|
+
@group1.examples_to_run.should == @group1.examples[0..1]
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
146
141
|
end
|
147
142
|
|
148
143
|
end
|