-
-
Notifications
You must be signed in to change notification settings - Fork 763
/
if_and_unless.feature
165 lines (148 loc) · 6.84 KB
/
if_and_unless.feature
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
Feature: Conditional Filters
The `:if` and `:unless` metadata keys can be used to filter examples without
needing to configure an exclusion filter.
Scenario: Implicit `:if` filter
Given a file named "implicit_if_filter_spec.rb" with:
"""ruby
RSpec.describe ":if => true group", :if => true do
it(":if => true group :if => true example", :if => true) { }
it(":if => true group :if => false example", :if => false) { }
it(":if => true group no :if example") { }
end
RSpec.describe ":if => false group", :if => false do
it(":if => false group :if => true example", :if => true) { }
it(":if => false group :if => false example", :if => false) { }
it(":if => false group no :if example") { }
end
RSpec.describe "no :if group" do
it("no :if group :if => true example", :if => true) { }
it("no :if group :if => false example", :if => false) { }
it("no :if group no :if example") { }
end
"""
When I run `rspec implicit_if_filter_spec.rb --format doc`
Then the output should contain all of these:
| :if => true group :if => true example |
| :if => true group no :if example |
| :if => false group :if => true example |
| no :if group :if => true example |
| no :if group no :if example |
And the output should not contain any of these:
| :if => true group :if => false example |
| :if => false group :if => false example |
| :if => false group no :if example |
| no :if group :if => false example |
Scenario: Implicit `:unless` filter
Given a file named "implicit_unless_filter_spec.rb" with:
"""ruby
RSpec.describe ":unless => true group", :unless => true do
it(":unless => true group :unless => true example", :unless => true) { }
it(":unless => true group :unless => false example", :unless => false) { }
it(":unless => true group no :unless example") { }
end
RSpec.describe ":unless => false group", :unless => false do
it(":unless => false group :unless => true example", :unless => true) { }
it(":unless => false group :unless => false example", :unless => false) { }
it(":unless => false group no :unless example") { }
end
RSpec.describe "no :unless group" do
it("no :unless group :unless => true example", :unless => true) { }
it("no :unless group :unless => false example", :unless => false) { }
it("no :unless group no :unless example") { }
end
"""
When I run `rspec implicit_unless_filter_spec.rb --format doc`
Then the output should contain all of these:
| :unless => true group :unless => false example |
| :unless => false group :unless => false example |
| :unless => false group no :unless example |
| no :unless group :unless => false example |
| no :unless group no :unless example |
And the output should not contain any of these:
| :unless => true group :unless => true example |
| :unless => true group no :unless example |
| :unless => false group :unless => true example |
| no :unless group :unless => true example |
Scenario: Combining implicit filter with explicit inclusion filter
Given a file named "explicit_inclusion_filter_spec.rb" with:
"""ruby
RSpec.configure do |c|
c.filter_run :focus => true
end
RSpec.describe "group with :focus", :focus => true do
it("focused example") { }
it("focused :if => true example", :if => true) { }
it("focused :if => false example", :if => false) { }
it("focused :unless => true example", :unless => true) { }
it("focused :unless => false example", :unless => false) { }
end
RSpec.describe "group without :focus" do
it("unfocused example") { }
it("unfocused :if => true example", :if => true) { }
it("unfocused :if => false example", :if => false) { }
it("unfocused :unless => true example", :unless => true) { }
it("unfocused :unless => false example", :unless => false) { }
end
"""
When I run `rspec explicit_inclusion_filter_spec.rb --format doc`
Then the output should contain all of these:
| focused example |
| focused :if => true example |
| focused :unless => false example |
And the output should not contain any of these:
| focused :if => false example |
| focused :unless => true example |
| unfocused |
Scenario: Combining implicit filter with explicit exclusion filter
Given a file named "explicit_exclusion_filter_spec.rb" with:
"""ruby
RSpec.configure do |c|
c.filter_run_excluding :broken => true
end
RSpec.describe "unbroken group" do
it("included example") { }
it("included :if => true example", :if => true) { }
it("included :if => false example", :if => false) { }
it("included :unless => true example", :unless => true) { }
it("included :unless => false example", :unless => false) { }
end
RSpec.describe "broken group", :broken => true do
it("excluded example") { }
it("excluded :if => true example", :if => true) { }
it("excluded :if => false example", :if => false) { }
it("excluded :unless => true example", :unless => true) { }
it("excluded :unless => false example", :unless => false) { }
end
"""
When I run `rspec explicit_exclusion_filter_spec.rb --format doc`
Then the output should contain all of these:
| included example |
| included :if => true example |
| included :unless => false example |
And the output should not contain any of these:
| included :if => false example |
| included :unless => true example |
| excluded |
Scenario: The :if and :unless exclusions stay in effect when there are explicit inclusions
Given a file named "if_and_unless_spec.rb" with:
"""ruby
RSpec.describe "Using inclusions" do
context "inclusion target" do
it "is filtered out by :if", :if => false do
end
it 'is filtered out by :unless', :unless => true do
end
it 'is still run according to :if', :if => true do
end
it 'is still run according to :unless', :unless => false do
end
end
end
"""
When I run `rspec if_and_unless_spec.rb --format doc -e 'inclusion target'`
Then the output should contain all of these:
| is still run according to :if |
| is still run according to :unless |
And the output should not contain any of these:
| is filtered out by :if |
| is filtered out by :unless |