aslakhellesoy-cucumber 0.3.5 → 0.3.6.1
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/History.txt +24 -0
- data/Manifest.txt +5 -2
- data/examples/i18n/fr/features/addition.feature +4 -4
- data/features/after_block_exceptions.feature +97 -0
- data/features/after_step_block_exceptions.feature +99 -0
- data/features/background.feature +47 -2
- data/features/custom_formatter.feature +1 -1
- data/features/step_definitions/cucumber_steps.rb +8 -0
- data/features/work_in_progress.feature +146 -0
- data/lib/cucumber.rb +5 -0
- data/lib/cucumber/ast/background.rb +3 -3
- data/lib/cucumber/ast/outline_table.rb +51 -4
- data/lib/cucumber/ast/scenario.rb +9 -3
- data/lib/cucumber/ast/scenario_outline.rb +4 -0
- data/lib/cucumber/ast/step.rb +3 -3
- data/lib/cucumber/ast/step_invocation.rb +13 -4
- data/lib/cucumber/cli/configuration.rb +54 -23
- data/lib/cucumber/cli/main.rb +6 -2
- data/lib/cucumber/formatter/console.rb +9 -0
- data/lib/cucumber/formatter/junit.rb +1 -1
- data/lib/cucumber/formatter/pretty.rb +7 -2
- data/lib/cucumber/formatter/progress.rb +1 -0
- data/lib/cucumber/formatter/tag_cloud.rb +27 -0
- data/lib/cucumber/languages.yml +60 -60
- data/lib/cucumber/rails/world.rb +16 -3
- data/lib/cucumber/rake/task.rb +2 -2
- data/lib/cucumber/step_match.rb +3 -2
- data/lib/cucumber/step_mother.rb +29 -4
- data/lib/cucumber/version.rb +2 -2
- data/rails_generators/cucumber/templates/cucumber.rake +1 -1
- data/rails_generators/feature/feature_generator.rb +1 -1
- data/spec/cucumber/cli/configuration_spec.rb +0 -3
- data/spec/cucumber/formatter/color_io_spec.rb +1 -0
- data/spec/cucumber/formatter/progress_spec.rb +1 -0
- metadata +6 -4
- data/examples/self_test/features/support/tag_count_formatter.rb +0 -25
- data/lib/cucumber/formatter.rb +0 -1
@@ -76,6 +76,7 @@ module Cucumber
|
|
76
76
|
|
77
77
|
def visit_feature_element(feature_element)
|
78
78
|
@indent = 2
|
79
|
+
@scenario_indent = 2
|
79
80
|
super
|
80
81
|
@io.puts
|
81
82
|
@io.flush
|
@@ -83,6 +84,7 @@ module Cucumber
|
|
83
84
|
|
84
85
|
def visit_background(background)
|
85
86
|
@indent = 2
|
87
|
+
@scenario_indent = 2
|
86
88
|
@in_background = true
|
87
89
|
super
|
88
90
|
@in_background = nil
|
@@ -100,6 +102,7 @@ module Cucumber
|
|
100
102
|
names[1..-1].each {|s| @io.puts " #{s}" }
|
101
103
|
@io.flush
|
102
104
|
@indent = 6
|
105
|
+
@scenario_indent = 6
|
103
106
|
end
|
104
107
|
|
105
108
|
def visit_scenario_name(keyword, name, file_colon_line, source_indent)
|
@@ -107,8 +110,9 @@ module Cucumber
|
|
107
110
|
end
|
108
111
|
|
109
112
|
def visit_feature_element_name(keyword, name, file_colon_line, source_indent)
|
113
|
+
@io.puts if @scenario_indent == 6
|
110
114
|
names = name.empty? ? [name] : name.split("\n")
|
111
|
-
line = "
|
115
|
+
line = "#{keyword} #{names[0]}".indent(@scenario_indent)
|
112
116
|
@io.print(line)
|
113
117
|
if @options[:source]
|
114
118
|
line_comment = " # #{file_colon_line}".indent(source_indent)
|
@@ -137,7 +141,7 @@ module Cucumber
|
|
137
141
|
def visit_step_name(keyword, step_match, status, source_indent, background)
|
138
142
|
source_indent = nil unless @options[:source]
|
139
143
|
formatted_step_name = format_step(keyword, step_match, status, source_indent)
|
140
|
-
@io.puts(
|
144
|
+
@io.puts(formatted_step_name.indent(@scenario_indent + 2))
|
141
145
|
end
|
142
146
|
|
143
147
|
def visit_multiline_arg(multiline_arg)
|
@@ -177,6 +181,7 @@ module Cucumber
|
|
177
181
|
def print_summary
|
178
182
|
print_counts
|
179
183
|
print_snippets(@options)
|
184
|
+
print_passing_wip(@options)
|
180
185
|
end
|
181
186
|
|
182
187
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Cucumber
|
2
|
+
module Formatter
|
3
|
+
# Custom formatter that prints a tag cloud
|
4
|
+
class TagCloud < Cucumber::Ast::Visitor
|
5
|
+
def initialize(step_mother, io, options)
|
6
|
+
super(step_mother)
|
7
|
+
@io = io
|
8
|
+
@counts = Hash.new{|h,k| h[k] = 0}
|
9
|
+
end
|
10
|
+
|
11
|
+
def visit_features(features)
|
12
|
+
super
|
13
|
+
print_summary
|
14
|
+
end
|
15
|
+
|
16
|
+
def visit_tag_name(tag_name)
|
17
|
+
@counts[tag_name] += 1
|
18
|
+
end
|
19
|
+
|
20
|
+
def print_summary
|
21
|
+
matrix = @counts.to_a.sort{|paira, pairb| paira[0] <=> pairb[0]}.transpose
|
22
|
+
table = Cucumber::Ast::Table.new(matrix)
|
23
|
+
Cucumber::Formatter::Pretty.new(@step_mother, @io, {}).visit_multiline_arg(table)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/cucumber/languages.yml
CHANGED
@@ -43,6 +43,36 @@
|
|
43
43
|
and: و
|
44
44
|
but: لكن
|
45
45
|
space_after_keyword: true
|
46
|
+
"bg":
|
47
|
+
name: Bulgarian
|
48
|
+
native: български
|
49
|
+
encoding: UTF-8
|
50
|
+
feature: Функционалност
|
51
|
+
background: Предистория
|
52
|
+
scenario: Сценарий
|
53
|
+
scenario_outline: Рамка на сценарий
|
54
|
+
examples: Примери
|
55
|
+
given: Дадено
|
56
|
+
when: Когато
|
57
|
+
then: То
|
58
|
+
and: И
|
59
|
+
but: Но
|
60
|
+
space_after_keyword: true
|
61
|
+
"cat":
|
62
|
+
name: Catalan
|
63
|
+
native: català
|
64
|
+
encoding: UTF-8
|
65
|
+
background: Rerefons
|
66
|
+
feature: Característica
|
67
|
+
scenario: Escenari
|
68
|
+
scenario_outline: Esquema de l\'escenari
|
69
|
+
examples: Exemples
|
70
|
+
given: Donat
|
71
|
+
when: Quan
|
72
|
+
then: Aleshores
|
73
|
+
and: I
|
74
|
+
but: Però
|
75
|
+
space_after_keyword: true
|
46
76
|
"cy":
|
47
77
|
name: Welsh
|
48
78
|
native: Cymraeg
|
@@ -161,21 +191,6 @@
|
|
161
191
|
and: Y
|
162
192
|
but: Pero
|
163
193
|
space_after_keyword: true
|
164
|
-
"cat":
|
165
|
-
name: Catalan
|
166
|
-
native: català
|
167
|
-
encoding: UTF-8
|
168
|
-
background: Rerefons
|
169
|
-
feature: Característica
|
170
|
-
scenario: Escenari
|
171
|
-
scenario_outline: Esquema de l\'escenari
|
172
|
-
examples: Exemples
|
173
|
-
given: Donat
|
174
|
-
when: Quan
|
175
|
-
then: Aleshores
|
176
|
-
and: I
|
177
|
-
but: Però
|
178
|
-
space_after_keyword: true
|
179
194
|
"et":
|
180
195
|
name: Estonian
|
181
196
|
native: eesti keel
|
@@ -296,6 +311,21 @@
|
|
296
311
|
and: かつ
|
297
312
|
but: しかし|但し
|
298
313
|
space_after_keyword: false
|
314
|
+
"ko":
|
315
|
+
name: Korean
|
316
|
+
native: 한국어
|
317
|
+
encoding: UTF-8
|
318
|
+
background: 배경
|
319
|
+
feature: 기능
|
320
|
+
scenario: 시나리오
|
321
|
+
scenario_outline: 시나리오 개요
|
322
|
+
examples: 예
|
323
|
+
given: 조건
|
324
|
+
when: 만일
|
325
|
+
then: 그러면
|
326
|
+
and: 그리고
|
327
|
+
but: 하지만
|
328
|
+
space_after_keyword: false
|
299
329
|
"lt":
|
300
330
|
name: Lithuanian
|
301
331
|
native: lietuvių kalba
|
@@ -455,6 +485,21 @@
|
|
455
485
|
and: A
|
456
486
|
but: Ale
|
457
487
|
space_after_keyword: true
|
488
|
+
"vi":
|
489
|
+
name: Vietnamese
|
490
|
+
native: Tiếng Việt
|
491
|
+
encoding: UTF-8
|
492
|
+
feature: Tính năng
|
493
|
+
background: Bối cảnh
|
494
|
+
scenario: Tình huống|Kịch bản
|
495
|
+
scenario_outline: Khung tình huống|Khung kịch bản
|
496
|
+
examples: Dữ liệu
|
497
|
+
given: Biết|Cho
|
498
|
+
when: Khi
|
499
|
+
then: Thì
|
500
|
+
and: Và
|
501
|
+
but: Nhưng
|
502
|
+
space_after_keyword: true
|
458
503
|
"zh-CN":
|
459
504
|
name: Chinese simplified
|
460
505
|
native: 简体中文
|
@@ -485,48 +530,3 @@
|
|
485
530
|
and: 而且|並且
|
486
531
|
but: 但是
|
487
532
|
space_after_keyword: false
|
488
|
-
"ko":
|
489
|
-
name: Korean
|
490
|
-
native: 한국어
|
491
|
-
encoding: UTF-8
|
492
|
-
background: 배경
|
493
|
-
feature: 기능
|
494
|
-
scenario: 시나리오
|
495
|
-
scenario_outline: 시나리오 개요
|
496
|
-
examples: 예
|
497
|
-
given: 조건
|
498
|
-
when: 만일
|
499
|
-
then: 그러면
|
500
|
-
and: 그리고
|
501
|
-
but: 하지만
|
502
|
-
space_after_keyword: false
|
503
|
-
"bg":
|
504
|
-
name: Bulgarian
|
505
|
-
native: български
|
506
|
-
encoding: UTF-8
|
507
|
-
feature: Функционалност
|
508
|
-
background: Предистория
|
509
|
-
scenario: Сценарий
|
510
|
-
scenario_outline: Рамка на сценарий
|
511
|
-
examples: Примери
|
512
|
-
given: Дадено
|
513
|
-
when: Когато
|
514
|
-
then: То
|
515
|
-
and: И
|
516
|
-
but: Но
|
517
|
-
space_after_keyword: true
|
518
|
-
"vi":
|
519
|
-
name: Vietnamese
|
520
|
-
native: Tiếng Việt
|
521
|
-
encoding: UTF-8
|
522
|
-
feature: Tính năng
|
523
|
-
background: Bối cảnh
|
524
|
-
scenario: Kịch bản
|
525
|
-
scenario_outline: Khung kịch bản
|
526
|
-
examples: Dữ liệu
|
527
|
-
given: Cho
|
528
|
-
when: Khi
|
529
|
-
then: Thì
|
530
|
-
and: Và
|
531
|
-
but: Nhưng
|
532
|
-
space_after_keyword: true
|
data/lib/cucumber/rails/world.rb
CHANGED
@@ -68,13 +68,26 @@ module Cucumber #:nodoc:
|
|
68
68
|
|
69
69
|
def self.bypass_rescue
|
70
70
|
ActionController::Base.class_eval do
|
71
|
+
alias_method :rescue_action_without_bypass, :rescue_action
|
72
|
+
|
71
73
|
def rescue_action(exception)
|
72
74
|
raise exception
|
73
75
|
end
|
74
76
|
end
|
75
|
-
|
76
|
-
|
77
|
-
|
77
|
+
|
78
|
+
begin
|
79
|
+
ActionController::Failsafe.class_eval do
|
80
|
+
alias_method :failsafe_response_without_bypass, :failsafe_response
|
81
|
+
|
82
|
+
def failsafe_response(exception)
|
83
|
+
raise exception
|
84
|
+
end
|
85
|
+
end
|
86
|
+
rescue NameError # Failsafe was introduced in Rails 2.3.2
|
87
|
+
ActionController::Dispatcher.class_eval do
|
88
|
+
def self.failsafe_response(output, status, exception = nil)
|
89
|
+
raise exception
|
90
|
+
end
|
78
91
|
end
|
79
92
|
end
|
80
93
|
end
|
data/lib/cucumber/rake/task.rb
CHANGED
@@ -135,7 +135,8 @@ module Cucumber
|
|
135
135
|
attr_accessor :fork
|
136
136
|
|
137
137
|
# Define what profile to be used. When used with cucumber_opts it is simply appended to it. Will be ignored when CUCUMBER_OPTS is used.
|
138
|
-
|
138
|
+
attr_accessor :profile
|
139
|
+
def profile=(profile) #:nodoc:
|
139
140
|
@profile = profile
|
140
141
|
unless feature_list
|
141
142
|
# TODO: remove once we completely remove these from the rake task.
|
@@ -143,7 +144,6 @@ module Cucumber
|
|
143
144
|
@feature_list = [] # Don't use accessor to avoid deprecation warning.
|
144
145
|
end
|
145
146
|
end
|
146
|
-
attr_reader :profile
|
147
147
|
|
148
148
|
# Define Cucumber Rake task
|
149
149
|
def initialize(task_name = "features", desc = "Run Features with Cucumber")
|
data/lib/cucumber/step_match.rb
CHANGED
@@ -33,12 +33,13 @@ module Cucumber
|
|
33
33
|
class NoStepMatch
|
34
34
|
attr_reader :step_definition
|
35
35
|
|
36
|
-
def initialize(step)
|
36
|
+
def initialize(step, name)
|
37
37
|
@step = step
|
38
|
+
@name = name
|
38
39
|
end
|
39
40
|
|
40
41
|
def format_args(format)
|
41
|
-
@
|
42
|
+
@name
|
42
43
|
end
|
43
44
|
|
44
45
|
def file_colon_line
|
data/lib/cucumber/step_mother.rb
CHANGED
@@ -78,8 +78,16 @@ module Cucumber
|
|
78
78
|
@tag_names.empty? || (@tag_names & tag_names).any?
|
79
79
|
end
|
80
80
|
|
81
|
-
def execute_in(world, scenario, location)
|
82
|
-
|
81
|
+
def execute_in(world, scenario, location, exception_fails_scenario = true)
|
82
|
+
begin
|
83
|
+
world.cucumber_instance_exec(false, location, scenario, &@proc)
|
84
|
+
rescue Exception => exception
|
85
|
+
if exception_fails_scenario
|
86
|
+
scenario.fail!(exception)
|
87
|
+
else
|
88
|
+
raise
|
89
|
+
end
|
90
|
+
end
|
83
91
|
end
|
84
92
|
end
|
85
93
|
|
@@ -143,6 +151,10 @@ module Cucumber
|
|
143
151
|
register_hook(:after, tag_names, proc)
|
144
152
|
end
|
145
153
|
|
154
|
+
def AfterStep(*tag_names, &proc)
|
155
|
+
register_hook(:after_step, tag_names, proc)
|
156
|
+
end
|
157
|
+
|
146
158
|
def register_hook(phase, tags, proc)
|
147
159
|
hook = Hook.new(tags, proc)
|
148
160
|
hooks[phase] << hook
|
@@ -233,7 +245,9 @@ module Cucumber
|
|
233
245
|
|
234
246
|
def before_and_after(scenario, skip=false)
|
235
247
|
before(scenario) unless skip
|
236
|
-
|
248
|
+
@current_scenario = scenario
|
249
|
+
yield scenario
|
250
|
+
@current_scenario = nil
|
237
251
|
after(scenario) unless skip
|
238
252
|
scenario_visited(scenario)
|
239
253
|
end
|
@@ -249,7 +263,11 @@ module Cucumber
|
|
249
263
|
execute_after(scenario)
|
250
264
|
nil_world!
|
251
265
|
end
|
252
|
-
|
266
|
+
|
267
|
+
def after_step
|
268
|
+
execute_after_step(@current_scenario)
|
269
|
+
end
|
270
|
+
|
253
271
|
private
|
254
272
|
|
255
273
|
def max_step_definition_length
|
@@ -323,6 +341,13 @@ module Cucumber
|
|
323
341
|
end
|
324
342
|
end
|
325
343
|
|
344
|
+
def execute_after_step(scenario)
|
345
|
+
return if options[:dry_run]
|
346
|
+
hooks_for(:after_step, scenario).each do |hook|
|
347
|
+
hook.execute_in(@current_world, scenario, 'AfterStep', false)
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
326
351
|
def scenario_visited(scenario)
|
327
352
|
scenarios << scenario unless scenarios.index(scenario)
|
328
353
|
end
|
data/lib/cucumber/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aslakhellesoy-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Aslak Helles\xC3\xB8y"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-05-
|
12
|
+
date: 2009-05-20 00:00:00 -07:00
|
13
13
|
default_executable: cucumber
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -267,7 +267,6 @@ files:
|
|
267
267
|
- examples/self_test/features/search_sample.feature
|
268
268
|
- examples/self_test/features/step_definitions/sample_steps.rb
|
269
269
|
- examples/self_test/features/support/env.rb
|
270
|
-
- examples/self_test/features/support/tag_count_formatter.rb
|
271
270
|
- examples/self_test/features/tons_of_cukes.feature
|
272
271
|
- examples/self_test/features/undefined_multiline_args.feature
|
273
272
|
- examples/sinatra/Rakefile
|
@@ -315,6 +314,8 @@ files:
|
|
315
314
|
- examples/watir/features/search.feature
|
316
315
|
- examples/watir/features/step_definitons/search_steps.rb
|
317
316
|
- examples/watir/features/support/env.rb
|
317
|
+
- features/after_block_exceptions.feature
|
318
|
+
- features/after_step_block_exceptions.feature
|
318
319
|
- features/background.feature
|
319
320
|
- features/cucumber_cli.feature
|
320
321
|
- features/cucumber_cli_diff_disabled.feature
|
@@ -330,6 +331,7 @@ files:
|
|
330
331
|
- features/step_definitions/extra_steps.rb
|
331
332
|
- features/support/env.rb
|
332
333
|
- features/usage.feature
|
334
|
+
- features/work_in_progress.feature
|
333
335
|
- gem_tasks/deployment.rake
|
334
336
|
- gem_tasks/environment.rake
|
335
337
|
- gem_tasks/features.rake
|
@@ -370,7 +372,6 @@ files:
|
|
370
372
|
- lib/cucumber/core_ext/instance_exec.rb
|
371
373
|
- lib/cucumber/core_ext/proc.rb
|
372
374
|
- lib/cucumber/core_ext/string.rb
|
373
|
-
- lib/cucumber/formatter.rb
|
374
375
|
- lib/cucumber/formatter/ansicolor.rb
|
375
376
|
- lib/cucumber/formatter/color_io.rb
|
376
377
|
- lib/cucumber/formatter/console.rb
|
@@ -382,6 +383,7 @@ files:
|
|
382
383
|
- lib/cucumber/formatter/profile.rb
|
383
384
|
- lib/cucumber/formatter/progress.rb
|
384
385
|
- lib/cucumber/formatter/rerun.rb
|
386
|
+
- lib/cucumber/formatter/tag_cloud.rb
|
385
387
|
- lib/cucumber/formatter/unicode.rb
|
386
388
|
- lib/cucumber/formatter/usage.rb
|
387
389
|
- lib/cucumber/formatters/unicode.rb
|