aslakhellesoy / cucumber

BDD that talks to domain experts first and code second

This URL has Read+Write access

aslakhellesoy (author)
Tue Nov 10 18:16:47 -0800 2009
commit  e1f1ab27986a75d55f19c5a371027268176d371a
tree    65a832c47cb8c6a3636beaca432aac5cf7ca93e1
parent  c3af182df5dadebf3baf6410ae6e91c3c70cb899
cucumber / features / tag_logic.feature
100644 226 lines (179 sloc) 5.336 kb
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
Feature: Tag logic
  In order to conveniently run subsets of features
  As a Cuker
  I want to select features using logical AND/OR of tags
 
  Background:
    Given a standard Cucumber project directory structure
    And a file named "features/tagulicious.feature" with:
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
          Given passing
 
        @one
        Scenario: Another Example
          Given passing
 
        @three
        Scenario: Yet another Example
          Given passing
 
        @ignore
        Scenario: And yet another Example
      """
 
  Scenario: ANDing tags
    When I run cucumber -q -t @one,@three features/tagulicious.feature
    Then it should pass
    And the output should contain
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
          Given passing
 
      1 scenario (1 undefined)
      1 step (1 undefined)
 
      """
 
  Scenario: ORing tags
    When I run cucumber -q -t @one -t @three features/tagulicious.feature
    Then it should pass
    And the output should contain
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
          Given passing
 
        @one
        Scenario: Another Example
          Given passing
 
        @three
        Scenario: Yet another Example
          Given passing
 
      3 scenarios (3 undefined)
      3 steps (3 undefined)
 
      """
 
  Scenario: Before hooks ORing
    Given a file named "features/support/hooks.rb" with:
      """
      Before('@one', '@three') do
        raise 'boom'
      end
      """
    When I run cucumber -q features/tagulicious.feature
    Then it should fail with
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
       boom (RuntimeError)
       ./features/support/hooks.rb:2:in `Before'
          Given passing
 
        @one
        Scenario: Another Example
       boom (RuntimeError)
       ./features/support/hooks.rb:2:in `Before'
          Given passing
 
        @three
        Scenario: Yet another Example
       boom (RuntimeError)
       ./features/support/hooks.rb:2:in `Before'
          Given passing
 
        @ignore
        Scenario: And yet another Example
 
      Failing Scenarios:
      cucumber features/tagulicious.feature:4 # Scenario: Example
      cucumber features/tagulicious.feature:8 # Scenario: Another Example
      cucumber features/tagulicious.feature:12 # Scenario: Yet another Example
 
      4 scenarios (3 failed, 1 passed)
      3 steps (3 undefined)
 
      """
 
  Scenario: Before hooks ANDing
    Given a file named "features/support/hooks.rb" with:
      """
      Before('@one,@three') do
        raise 'boom'
      end
      """
    When I run cucumber -q features/tagulicious.feature
    Then it should fail with
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
       boom (RuntimeError)
       ./features/support/hooks.rb:2:in `Before'
          Given passing
 
        @one
        Scenario: Another Example
          Given passing
 
        @three
        Scenario: Yet another Example
          Given passing
 
        @ignore
        Scenario: And yet another Example
 
      Failing Scenarios:
      cucumber features/tagulicious.feature:4 # Scenario: Example
 
      4 scenarios (1 failed, 2 undefined, 1 passed)
      3 steps (3 undefined)
 
      """
 
  Scenario: After hooks ORing
    Given a file named "features/support/hooks.rb" with:
      """
      After('@one', '@three') do
        raise 'boom'
      end
      """
    When I run cucumber -q features/tagulicious.feature
    Then it should fail with
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
          Given passing
            boom (RuntimeError)
            ./features/support/hooks.rb:2:in `After'
 
        @one
        Scenario: Another Example
          Given passing
            boom (RuntimeError)
            ./features/support/hooks.rb:2:in `After'
 
        @three
        Scenario: Yet another Example
          Given passing
            boom (RuntimeError)
            ./features/support/hooks.rb:2:in `After'
 
        @ignore
        Scenario: And yet another Example
 
      Failing Scenarios:
      cucumber features/tagulicious.feature:4 # Scenario: Example
      cucumber features/tagulicious.feature:8 # Scenario: Another Example
      cucumber features/tagulicious.feature:12 # Scenario: Yet another Example
 
      4 scenarios (3 failed, 1 passed)
      3 steps (3 undefined)
 
      """
 
  Scenario: After hooks ANDing
    Given a file named "features/support/hooks.rb" with:
      """
      After('@one,@three') do
        raise 'boom'
      end
      """
    When I run cucumber -q features/tagulicious.feature
    Then it should fail with
      """
      Feature: Sample
 
        @one @three
        Scenario: Example
          Given passing
            boom (RuntimeError)
            ./features/support/hooks.rb:2:in `After'
 
        @one
        Scenario: Another Example
          Given passing
 
        @three
        Scenario: Yet another Example
          Given passing
 
        @ignore
        Scenario: And yet another Example
 
      Failing Scenarios:
      cucumber features/tagulicious.feature:4 # Scenario: Example
 
      4 scenarios (1 failed, 2 undefined, 1 passed)
      3 steps (3 undefined)
 
      """