rspec-core 2.0.0.a5 → 2.0.0.a6
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/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
|