cuporter 0.2.4 → 0.2.5

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.
@@ -1,431 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cuporter
4
-
5
- describe "Tag Reports of Scenario Outlines in Single Features" do
6
-
7
- context "scenario outline with 2 examples" do
8
- context "1 example tag" do
9
- it "returns 1 tag mapped to 1 example" do
10
- report = one_feature( "fixtures/scenario_outline_with_2_examples/1_example_tag.feature")
11
- report.should == <<EOF
12
- @smoke
13
- Feature: foo
14
- Scenario Outline: outline
15
- Scenarios: bang
16
- |foo|bar|fan|
17
- | 1 | 2 | 3 |
18
- | 4 | 5 | 6 |
19
- EOF
20
- end
21
- end
22
-
23
- context "1 tag per example" do
24
- it "returns 2 examples mapped to a tag" do
25
- report = one_feature( "fixtures/scenario_outline_with_2_examples/1_tag_per_example.feature")
26
- report.should == <<EOF
27
- @smoke
28
- Feature: foo
29
- Scenario Outline: some
30
- Scenarios: yet
31
- |foo|bar|fan|
32
- | 1 | 2 | 3 |
33
- | 4 | 5 | 6 |
34
- @wip
35
- Feature: foo
36
- Scenario Outline: some
37
- Scenarios: another
38
- |foo|bar|fan|
39
- | 7 | 8 | 9 |
40
- | 0 | 1 | 2 |
41
- EOF
42
- end
43
- end
44
-
45
- context "1 tag per example, 2 feature tags" do
46
- it "returns 4 tags . . ." do
47
- report = one_feature( "fixtures/scenario_outline_with_2_examples/1_tag_per_example_2_feature_tags.feature")
48
- report.should == <<EOF
49
- @smoke
50
- Feature: foo
51
- Scenario Outline: outline
52
- Scenarios: yet
53
- |foo|bar|fan|
54
- | 1 | 2 | 3 |
55
- | 4 | 5 | 6 |
56
- @taggy
57
- Feature: foo
58
- Scenario Outline: outline
59
- Scenarios: another
60
- |foo|bar|fan|
61
- | 1 | 2 | 3 |
62
- | 4 | 5 | 6 |
63
- Scenarios: yet
64
- |foo|bar|fan|
65
- | 1 | 2 | 3 |
66
- | 4 | 5 | 6 |
67
- @waggy
68
- Feature: foo
69
- Scenario Outline: outline
70
- Scenarios: another
71
- |foo|bar|fan|
72
- | 1 | 2 | 3 |
73
- | 4 | 5 | 6 |
74
- Scenarios: yet
75
- |foo|bar|fan|
76
- | 1 | 2 | 3 |
77
- | 4 | 5 | 6 |
78
- @wip
79
- Feature: foo
80
- Scenario Outline: outline
81
- Scenarios: another
82
- |foo|bar|fan|
83
- | 1 | 2 | 3 |
84
- | 4 | 5 | 6 |
85
- EOF
86
- end
87
- end
88
-
89
- context "1 example tag and 1 feature tag" do
90
- it "returns 2 tags" do
91
- report = one_feature( "fixtures/scenario_outline_with_2_examples/1_example_tag_and_1_feature_tag.feature")
92
- report.should == <<EOF
93
- @f_tag
94
- Feature: foo
95
- Scenario Outline: outline
96
- Scenarios: another
97
- |foo|bar|fan|
98
- | 1 | 2 | 3 |
99
- | 4 | 5 | 6 |
100
- Scenarios: yet
101
- |foo|bar|fan|
102
- | 1 | 2 | 3 |
103
- | 4 | 5 | 6 |
104
- @smoke
105
- Feature: foo
106
- Scenario Outline: outline
107
- Scenarios: yet
108
- |foo|bar|fan|
109
- | 1 | 2 | 3 |
110
- | 4 | 5 | 6 |
111
- EOF
112
- end
113
- end
114
-
115
- context "1 example tag and 1 scenario outline tag" do
116
- it "returns 1 example mapped to 1 tag" do
117
- report = one_feature( "fixtures/scenario_outline_with_2_examples/1_example_tag_and_1_scenario_outline_tag.feature")
118
- report.should == <<EOF
119
- @s_o_tag
120
- Feature: foo
121
- Scenario Outline: outline
122
- Scenarios: another
123
- |foo|bar|fan|
124
- | 1 | 2 | 3 |
125
- | 4 | 5 | 6 |
126
- Scenarios: yet
127
- |foo|bar|fan|
128
- | 1 | 2 | 3 |
129
- | 4 | 5 | 6 |
130
- @smoke
131
- Feature: foo
132
- Scenario Outline: outline
133
- Scenarios: yet
134
- |foo|bar|fan|
135
- | 1 | 2 | 3 |
136
- | 4 | 5 | 6 |
137
- EOF
138
- end
139
- end
140
- context "1 example tag, 1 scenario outline tag, 1 feature tag" do
141
- it "3 tags" do
142
- report = one_feature( "fixtures/scenario_outline_with_2_examples/1_example_tag_1_scenario_outline_tag_1_feature_tag.feature")
143
- report.should == <<EOF
144
- @f_tag
145
- Feature: foo
146
- Scenario Outline: outline
147
- Scenarios: another
148
- |foo|bar|fan|
149
- | 1 | 2 | 3 |
150
- | 4 | 5 | 6 |
151
- Scenarios: yet
152
- |foo|bar|fan|
153
- | 1 | 2 | 3 |
154
- | 4 | 5 | 6 |
155
- @s_o_tag
156
- Feature: foo
157
- Scenario Outline: outline
158
- Scenarios: another
159
- |foo|bar|fan|
160
- | 1 | 2 | 3 |
161
- | 4 | 5 | 6 |
162
- Scenarios: yet
163
- |foo|bar|fan|
164
- | 1 | 2 | 3 |
165
- | 4 | 5 | 6 |
166
- @smoke
167
- Feature: foo
168
- Scenario Outline: outline
169
- Scenarios: yet
170
- |foo|bar|fan|
171
- | 1 | 2 | 3 |
172
- | 4 | 5 | 6 |
173
- EOF
174
- end
175
- end
176
- end
177
-
178
- context "1 scenario and 1 outline with 2 examples" do
179
- context "1 scenario tag, 1 outline tag" do
180
- it "returns 2 tags, 1 with a scenario, 1 with an outline" do
181
- report = one_feature( "fixtures/1_scenario_and_1_outline_with_2_examples/1_scenario_tag_1_outline_tag.feature")
182
- report.should == <<EOF
183
- @s_o_tag
184
- Feature: foo
185
- Scenario Outline: outline
186
- Scenarios: another
187
- |foo|bar|fan|
188
- | 1 | 2 | 3 |
189
- | 4 | 5 | 6 |
190
- Scenarios: yet
191
- |foo|bar|fan|
192
- | 1 | 2 | 3 |
193
- | 4 | 5 | 6 |
194
- @s_tag
195
- Feature: foo
196
- Scenario: oh
197
- EOF
198
- end
199
- end
200
-
201
- context "1 scenario tag, 1 example tag" do
202
- it "returns 2 tags, 1 with a scenario and 1 with an outline" do
203
- report = one_feature( "fixtures/1_scenario_and_1_outline_with_2_examples/1_scenario_tag_1_example_tag.feature")
204
- report.should == <<EOF
205
- @s_o_tag
206
- Feature: foo
207
- Scenario Outline: outline
208
- Scenarios: another
209
- |foo|bar|fan|
210
- | 1 | 2 | 3 |
211
- | 4 | 5 | 6 |
212
- @s_tag
213
- Feature: foo
214
- Scenario: oh
215
- EOF
216
- end
217
- end
218
-
219
- context "1 feature tag, 1 example tag" do
220
- it "returns 2 tags" do
221
- report = one_feature( "fixtures/1_scenario_and_1_outline_with_2_examples/1_feature_tag_1_example_tag.feature")
222
- report.should == <<EOF
223
- @example_tag
224
- Feature: foo
225
- Scenario Outline: outline
226
- Scenarios: another
227
- |foo|bar|fan|
228
- | 1 | 2 | 3 |
229
- | 4 | 5 | 6 |
230
- @f_tag
231
- Feature: foo
232
- Scenario: oh
233
- Scenario Outline: outline
234
- Scenarios: another
235
- |foo|bar|fan|
236
- | 1 | 2 | 3 |
237
- | 4 | 5 | 6 |
238
- Scenarios: yet
239
- |foo|bar|fan|
240
- | 1 | 2 | 3 |
241
- | 4 | 5 | 6 |
242
- EOF
243
-
244
- end
245
- end
246
-
247
- context "1 feature tag, 2 scenario tags, 1 outline tag, 1 example tag" do
248
- it "returns 5 tags" do
249
- report = one_feature( "fixtures/1_scenario_and_1_outline_with_2_examples/1_feature_tag_2_scenario_tags_1_outline_tag_1_example_tag.feature")
250
- report.should == <<EOF
251
- @e_tag
252
- Feature: foo
253
- Scenario Outline: outline
254
- Scenarios: yet
255
- |foo|bar|fan|
256
- | 1 | 2 | 3 |
257
- | 4 | 5 | 6 |
258
- @f_tag
259
- Feature: foo
260
- Scenario: oh
261
- Scenario Outline: outline
262
- Scenarios: another
263
- |foo|bar|fan|
264
- | 1 | 2 | 3 |
265
- | 4 | 5 | 6 |
266
- Scenarios: yet
267
- |foo|bar|fan|
268
- | 1 | 2 | 3 |
269
- | 4 | 5 | 6 |
270
- @o_tag
271
- Feature: foo
272
- Scenario Outline: outline
273
- Scenarios: another
274
- |foo|bar|fan|
275
- | 1 | 2 | 3 |
276
- | 4 | 5 | 6 |
277
- Scenarios: yet
278
- |foo|bar|fan|
279
- | 1 | 2 | 3 |
280
- | 4 | 5 | 6 |
281
- @s_tag
282
- Feature: foo
283
- Scenario: oh
284
- @wip
285
- Feature: foo
286
- Scenario: oh
287
- EOF
288
- end
289
- end
290
-
291
- end
292
-
293
- context "2 outlines 1 scenario" do
294
- context "2 outline tags, 1 scenario tag, 1 example tag" do
295
- it "returns 4 tags" do
296
- report = one_feature( "fixtures/2_outlines_1_scenario/2_outline_tags_1_scenario_tag_1_example_tag.feature")
297
- report.should == <<EOF
298
- @e_tag
299
- Feature: foo
300
- Scenario Outline: outline 2
301
- Scenarios: yet
302
- |foo|bar|fan|
303
- | 1 | 2 | 3 |
304
- | 4 | 5 | 6 |
305
- @s_o_tag_1
306
- Feature: foo
307
- Scenario Outline: outline 1
308
- Scenarios: example
309
- |foo|bar|fan|
310
- | 1 | 2 | 3 |
311
- | 4 | 5 | 6 |
312
- @s_o_tag_2
313
- Feature: foo
314
- Scenario Outline: outline 2
315
- Scenarios: another
316
- |foo|bar|fan|
317
- | 1 | 2 | 3 |
318
- | 4 | 5 | 6 |
319
- Scenarios: yet
320
- |foo|bar|fan|
321
- | 1 | 2 | 3 |
322
- | 4 | 5 | 6 |
323
- @wip
324
- Feature: foo
325
- Scenario: oh
326
- EOF
327
- end
328
- end
329
-
330
- context "2 outline tags, 2 example tags, 2 empty example names" do
331
- it "returns 4 tags" do
332
- report = one_feature( "fixtures/2_outlines_1_scenario/empty_example_name.feature")
333
- report.should == <<EOF
334
- @e_tag
335
- Feature: foo
336
- Scenario Outline: outline 2
337
- Examples:
338
- |foo|bar|fan|
339
- | 1 | 2 | 3 |
340
- | 4 | 5 | 6 |
341
- @nameless
342
- Feature: foo
343
- Scenario Outline: outline 1
344
- Scenarios:
345
- |foo|bar|fan|
346
- | 1 | 2 | 3 |
347
- | 4 | 5 | 6 |
348
- @s_o_tag_1
349
- Feature: foo
350
- Scenario Outline: outline 1
351
- Scenarios:
352
- |foo|bar|fan|
353
- | 1 | 2 | 3 |
354
- | 4 | 5 | 6 |
355
- Scenarios: example set 2
356
- |foo|bar|fan|
357
- | 5 | 6 | 7 |
358
- | 8 | 9 | 0 |
359
- @s_o_tag_2
360
- Feature: foo
361
- Scenario Outline: outline 2
362
- Examples:
363
- |foo|bar|fan|
364
- | 1 | 2 | 3 |
365
- | 4 | 5 | 6 |
366
- Examples: another
367
- |foo|bar|fan|
368
- | 1 | 2 | 3 |
369
- | 4 | 5 | 6 |
370
- EOF
371
- end
372
- end
373
- end
374
-
375
- context "scenario outlines only" do
376
- context "3 outlines" do
377
- it "includes all outlines" do
378
- report = one_feature( "fixtures/3_scenario_outlines.feature")
379
- report.should == <<EOF
380
- @blocked
381
- Feature: foo
382
- Scenario Outline: outline 2
383
- Scenarios: another
384
- |foo|bar|fan|
385
- | 1 | 2 | 3 |
386
- | 4 | 5 | 6 |
387
- @e_tag
388
- Feature: foo
389
- Scenario Outline: outline 3
390
- Scenarios: yet
391
- |foo|bar|fan|
392
- | 1 | 2 | 3 |
393
- | 4 | 5 | 6 |
394
- @s_o_tag_1
395
- Feature: foo
396
- Scenario Outline: outline 1
397
- Scenarios: example
398
- |foo|bar|fan|
399
- | 1 | 2 | 3 |
400
- | 4 | 5 | 6 |
401
- @s_o_tag_3
402
- Feature: foo
403
- Scenario Outline: outline 3
404
- Scenarios: another
405
- |foo|bar|fan|
406
- | 1 | 2 | 3 |
407
- | 4 | 5 | 6 |
408
- Scenarios: yet
409
- |foo|bar|fan|
410
- | 1 | 2 | 3 |
411
- | 4 | 5 | 6 |
412
- @wip
413
- Feature: foo
414
- Scenario Outline: outline 2
415
- Scenarios: another
416
- |foo|bar|fan|
417
- | 1 | 2 | 3 |
418
- | 4 | 5 | 6 |
419
- Scenarios: yet
420
- |foo|bar|fan|
421
- | 1 | 2 | 3 |
422
- | 4 | 5 | 6 |
423
- EOF
424
- end
425
- end
426
-
427
- end
428
-
429
- end
430
- end
431
-
@@ -1,65 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cuporter
4
-
5
- describe "Single Feature Tag Reports" do
6
-
7
- context "empty feature file" do
8
- let(:stderr_file) {"stderr.out.txt"}
9
-
10
- before do
11
- File.delete(stderr_file) if File.exist?(stderr_file)
12
- end
13
-
14
- after do
15
- File.delete(stderr_file) if File.exist?(stderr_file)
16
- end
17
-
18
- it "returns empty string and should not raise an error" do
19
- File.delete(stderr_file) if File.exist?(stderr_file)
20
- report = one_feature( "fixtures/empty_file.feature 2> #{stderr_file}")
21
- err = File.read(stderr_file)
22
- err.should be_empty, err
23
- report.should be_empty
24
- end
25
- end
26
-
27
- context "one scenario one tag" do
28
- it "returns one tag mapped to one scenario name" do
29
- report = one_feature( "fixtures/one_scenario_one_tag.feature")
30
- report.should == <<EOF
31
- @wip
32
- Feature: foo
33
- Scenario: bar the great foo
34
- EOF
35
- end
36
- end
37
-
38
- context "one scenario two tags" do
39
- it "returns two tags mapped to the same scenario" do
40
- report = one_feature( "fixtures/one_scenario_two_tags.feature")
41
- report.should == <<EOF
42
- @smoke
43
- Feature: foo
44
- Scenario: some test of something
45
- @wip
46
- Feature: foo
47
- Scenario: some test of something
48
- EOF
49
- end
50
- end
51
-
52
- context "two scenarios one tag" do
53
- it "returns one tag mapped to one scenario" do
54
- report = one_feature( "fixtures/two_scenarios_one_tag.feature")
55
- report.should == <<EOF
56
- @smoke
57
- Feature: foo
58
- Scenario: another test
59
- EOF
60
- end
61
- end
62
-
63
- end
64
- end
65
-
@@ -1,80 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cuporter
4
- describe NodeNumberer do
5
- context '#number' do
6
- let(:root) {Node.new("root")}
7
- let(:numberer) { NodeNumberer.new}
8
-
9
- before(:each) do
10
- root.add_child(Node.new("child_1"))
11
- root.add_child(Node.new("child_2"))
12
- end
13
-
14
- it 'does not add number to root node' do
15
- numberer.number(root)
16
-
17
- root.number.should be_nil
18
- end
19
-
20
- it 'adds a number to both children' do
21
- numberer.number(root)
22
-
23
- root[:child_1].number.should == 1
24
- root[:child_2].number.should == 2
25
- end
26
-
27
- it 'does not add a number to children with children' do
28
- root[:child_1].add_child(Node.new("grandbaby"))
29
-
30
- numberer.number(root)
31
-
32
- root[:child_1].number.should be_nil
33
- root[:child_2].number.should == 2
34
- end
35
-
36
- it 'numbers child and grandchild in same sequence' do
37
- root[:child_1].add_child(Node.new("grandbaby"))
38
-
39
- numberer.number(root)
40
-
41
- root[:child_1][:grandbaby].number.should == 1
42
- root[:child_2].number.should == 2
43
- end
44
-
45
- context '2 children, 1 grandchild, and 2 great-grandchildren' do
46
- before(:each) do
47
- root[:child_2].add_child(Node.new("grandbaby"))
48
- root.add_child(Node.new(:child_3))
49
- child_4 = Node.new(:child_4)
50
- child_4.add_child(Node.new(:grandchild))
51
- child_4[:grandchild].add_child(Node.new(:great_grandchild_1))
52
- child_4[:grandchild].add_child(Node.new(:great_grandchild_2))
53
- root.add_child(child_4)
54
- end
55
-
56
- it 'numbers the leaf nodes' do
57
- numberer.number(root)
58
-
59
- root.number.should be_nil
60
- root[:child_1].number.should == 1
61
- root[:child_2].number.should be_nil
62
- root[:child_3].number.should == 3
63
- root[:child_4].number.should be_nil
64
-
65
- root[:child_2][:grandbaby].number.should == 2
66
- root[:child_4][:grandchild].number.should be_nil
67
- root[:child_4][:grandchild][:great_grandchild_1].number.should == 4
68
- root[:child_4][:grandchild][:great_grandchild_2].number.should == 5
69
- end
70
-
71
- it 'keeps total' do
72
- numberer.total.should == 0
73
- numberer.number(root)
74
- numberer.total.should == 5
75
- end
76
- end
77
- end
78
-
79
- end
80
- end
@@ -1,81 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cuporter
4
- describe Node do
5
- context 'new node' do
6
- let(:node) {Node.new("name")}
7
- it 'has a name' do
8
- node.name.should == "name"
9
- end
10
- it 'has an empty list of children' do
11
- node.should_not have_children
12
- end
13
- end
14
-
15
- context 'children' do
16
- let(:node) {Node.new("parent")}
17
- it 'can add a child' do
18
- child = Node.new("child")
19
- node.add_child(child)
20
- node.should have_children
21
- end
22
-
23
- it 'does not check child type' do
24
- expect {
25
- node.add_child(:foo)
26
- }.to_not raise_error()
27
- end
28
-
29
- it 'does not add duplicate' do
30
- child = Node.new('child')
31
- child.add_child Node.new('grandchild')
32
- twin = child.dup
33
-
34
- child.should == twin
35
- child.object_id.should_not == twin.object_id
36
-
37
- node.add_child child
38
- node.children.size.should == 1
39
-
40
- node.add_child twin
41
- node.children.size.should == 1
42
- end
43
- end
44
-
45
- context 'equivalence' do
46
- it '== means value equivalence' do
47
- n1 = Node.new('herbert')
48
- n2 = Node.new('herbert')
49
- n1.add_child(Node.new('lou'))
50
- n2.add_child(Node.new('lou'))
51
- n1.should == n2
52
- end
53
- end
54
-
55
- context 'numbering' do
56
- let(:node) {Node.new(:node)}
57
- it 'can number itself' do
58
- expect do
59
- node.number_all_descendants
60
- end.to_not raise_error()
61
- end
62
-
63
- it 'gets a leaf count' do
64
- node.number_all_descendants
65
- node.total.should == 0
66
- end
67
-
68
- it 'can number itself with a child' do
69
- node.add_child(Node.new(:child))
70
- node.number_all_descendants
71
- node.total.should == 1
72
- node[:child].number.should == 1
73
- end
74
-
75
- it 'can get count from child' do
76
- node.add_child(Node.new(:child))
77
- node[:child].total.should == 0
78
- end
79
- end
80
- end
81
- end