-
-
Notifications
You must be signed in to change notification settings - Fork 763
/
if_and_unless.feature
166 lines (149 loc) · 6.89 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: :if and :unless
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:
"""
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
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
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:
"""
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
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
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:
"""
RSpec.configure do |c|
c.filter_run :focus => true
end
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
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:
"""
RSpec.configure do |c|
c.filter_run_excluding :broken => true
end
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
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: override implicit :if and :unless exclusion filters
Given a file named "override_implicit_filters_spec.rb" with:
"""
RSpec.configure do |c|
c.filter_run_excluding :if => :exclude_me, :unless => :exclude_me_for_unless
end
describe ":if filtering" do
it(":if => true example", :if => true) { }
it(":if => false example", :if => false) { }
it(":if => :exclude_me example", :if => :exclude_me) { }
end
describe ":unless filtering" do
it(":unless => true example", :unless => true) { }
it(":unless => false example", :unless => false) { }
it(":unless => :exclude_me_for_unless example", :unless => :exclude_me_for_unless) { }
end
"""
When I run "rspec override_implicit_filters_spec.rb --format doc"
Then the output should contain all of these:
| :if => true example |
| :if => false example |
| :unless => true example |
| :unless => false example |
And the output should not contain "exclude_me"