cucumber 1.1.9 → 1.2.0
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/.travis.yml +9 -0
- data/History.md +20 -3
- data/README.md +1 -2
- data/cucumber.gemspec +10 -13
- data/cucumber.yml +2 -2
- data/features/.cucumber/stepdefs.json +13 -391
- data/features/backtraces.feature +36 -0
- data/features/{issue_117.feature → drb_server_integration.feature} +3 -3
- data/features/formatter_step_file_colon_line.feature +46 -0
- data/features/{issue_57.feature → rerun_formatter.feature} +2 -2
- data/features/run_specific_scenarios.feature +47 -0
- data/gem_tasks/cucumber.rake +15 -8
- data/legacy_features/cucumber_cli.feature +0 -7
- data/legacy_features/junit_formatter.feature +60 -10
- data/legacy_features/language_help.feature +1 -0
- data/lib/cucumber.rb +2 -1
- data/lib/cucumber/ast/step.rb +1 -1
- data/lib/cucumber/ast/step_invocation.rb +2 -15
- data/lib/cucumber/ast/table.rb +16 -6
- data/lib/cucumber/ast/tree_walker.rb +5 -5
- data/lib/cucumber/cli/options.rb +5 -8
- data/lib/cucumber/formatter/ansicolor.rb +7 -12
- data/lib/cucumber/formatter/cucumber.css +7 -1
- data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +1 -1
- data/lib/cucumber/formatter/html.rb +5 -5
- data/lib/cucumber/formatter/interceptor.rb +62 -0
- data/lib/cucumber/formatter/junit.rb +30 -14
- data/lib/cucumber/formatter/pretty.rb +3 -3
- data/lib/cucumber/formatter/progress.rb +1 -1
- data/lib/cucumber/formatter/rerun.rb +1 -1
- data/lib/cucumber/formatter/usage.rb +1 -1
- data/lib/cucumber/js_support/js_snippets.rb +1 -1
- data/lib/cucumber/platform.rb +1 -1
- data/lib/cucumber/rb_support/rb_dsl.rb +15 -8
- data/lib/cucumber/rb_support/rb_language.rb +3 -3
- data/lib/cucumber/rb_support/rb_step_definition.rb +17 -5
- data/lib/cucumber/term/ansicolor.rb +118 -0
- data/spec/cucumber/ast/table_spec.rb +9 -0
- data/spec/cucumber/cli/configuration_spec.rb +12 -6
- data/spec/cucumber/cli/options_spec.rb +9 -3
- data/spec/cucumber/constantize_spec.rb +5 -1
- data/spec/cucumber/formatter/ansicolor_spec.rb +1 -1
- data/spec/cucumber/formatter/interceptor_spec.rb +111 -0
- data/spec/cucumber/formatter/junit_spec.rb +36 -20
- data/spec/cucumber/formatter/progress_spec.rb +2 -2
- data/spec/cucumber/rb_support/rb_language_spec.rb +5 -5
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +17 -1
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +6 -2
- data/spec/cucumber/step_match_spec.rb +8 -4
- data/spec/spec_helper.rb +15 -1
- metadata +215 -82
- data/.gitmodules +0 -3
- data/lib/cucumber/formatter/pdf.rb +0 -244
data/.gitmodules
DELETED
@@ -1,244 +0,0 @@
|
|
1
|
-
require 'cucumber/formatter/console'
|
2
|
-
require 'cucumber/formatter/io'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
begin
|
6
|
-
require 'rubygems'
|
7
|
-
require 'prawn/core'
|
8
|
-
require "prawn/layout"
|
9
|
-
rescue LoadError => e
|
10
|
-
e.message << "\nYou need the prawn gem. Please do 'gem install prawn'"
|
11
|
-
raise e
|
12
|
-
end
|
13
|
-
|
14
|
-
module Cucumber
|
15
|
-
module Formatter
|
16
|
-
|
17
|
-
BLACK = '000000'
|
18
|
-
GREY = '999999'
|
19
|
-
|
20
|
-
class Pdf
|
21
|
-
include FileUtils
|
22
|
-
include Console
|
23
|
-
include Io
|
24
|
-
attr_writer :indent
|
25
|
-
|
26
|
-
def initialize(step_mother, path_or_io, options)
|
27
|
-
@step_mother = step_mother
|
28
|
-
@file = ensure_file(path_or_io, "pdf")
|
29
|
-
|
30
|
-
if(options[:dry_run])
|
31
|
-
@status_colors = { :passed => BLACK, :skipped => BLACK, :undefined => BLACK, :failed => BLACK, :putsd => GREY}
|
32
|
-
else
|
33
|
-
@status_colors = { :passed => '055902', :skipped => GREY, :undefined => 'F27405', :failed => '730202', :putsd => GREY}
|
34
|
-
end
|
35
|
-
|
36
|
-
@pdf = Prawn::Document.new
|
37
|
-
@scrap = Prawn::Document.new
|
38
|
-
@doc = @scrap
|
39
|
-
@options = options
|
40
|
-
@exceptions = []
|
41
|
-
@indent = 0
|
42
|
-
@buffer = []
|
43
|
-
load_cover_page_image
|
44
|
-
@pdf.text "\n\n\nCucumber features", :align => :center, :size => 32
|
45
|
-
@pdf.draw_text "Generated: #{Time.now.strftime("%Y-%m-%d %H:%M")}", :size => 10, :at => [0, 24]
|
46
|
-
@pdf.draw_text "$ cucumber #{ARGV.join(" ")}", :size => 10, :at => [0,10]
|
47
|
-
unless options[:dry_run]
|
48
|
-
@pdf.bounding_box [450,100] , :width => 100 do
|
49
|
-
@pdf.text 'Legend', :size => 10
|
50
|
-
@status_colors.each do |k,v|
|
51
|
-
@pdf.fill_color v
|
52
|
-
@pdf.text k.to_s, :size => 10
|
53
|
-
@pdf.fill_color BLACK
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def load_cover_page_image()
|
60
|
-
if (!load_image("features/support/logo.png"))
|
61
|
-
load_image("features/support/logo.jpg")
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def load_image(image_path)
|
66
|
-
begin
|
67
|
-
@pdf.image open(image_path, "rb"), :position => :center, :width => 500
|
68
|
-
true
|
69
|
-
rescue Errno::ENOENT
|
70
|
-
false
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def puts(message)
|
75
|
-
@pdf.fill_color(@status_colors[:putsd])
|
76
|
-
@pdf.text message, :size => 10
|
77
|
-
@pdf.fill_color BLACK
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
|
-
def after_features(features)
|
82
|
-
@pdf.render_file(@file.path)
|
83
|
-
puts "\ndone"
|
84
|
-
end
|
85
|
-
|
86
|
-
def feature_name(keyword, name)
|
87
|
-
@pdf.start_new_page
|
88
|
-
names = name.split("\n")
|
89
|
-
@pdf.fill_color GREY
|
90
|
-
@pdf.text(keyword, :align => :center)
|
91
|
-
@pdf.fill_color BLACK
|
92
|
-
names.each_with_index do |nameline, i|
|
93
|
-
case i
|
94
|
-
when 0
|
95
|
-
@pdf.text(nameline.strip, :size => 30, :align => :center )
|
96
|
-
@pdf.text("\n")
|
97
|
-
else
|
98
|
-
@pdf.text(nameline.strip, :size => 12)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
@pdf.move_down(30)
|
102
|
-
end
|
103
|
-
|
104
|
-
def after_feature_element(feature_element)
|
105
|
-
flush
|
106
|
-
end
|
107
|
-
|
108
|
-
def after_feature(feature)
|
109
|
-
flush
|
110
|
-
end
|
111
|
-
|
112
|
-
def feature_element_name(keyword, name)
|
113
|
-
names = name.empty? ? [name] : name.split("\n")
|
114
|
-
print "."
|
115
|
-
STDOUT.flush
|
116
|
-
|
117
|
-
keep_with do
|
118
|
-
@doc.move_down(20)
|
119
|
-
@doc.fill_color GREY
|
120
|
-
@doc.text("#{keyword}", :size => 8)
|
121
|
-
@doc.fill_color BLACK
|
122
|
-
@doc.text("#{names[0]}", :size => 16)
|
123
|
-
names[1..-1].each { |s| @doc.text(s, :size => 12) }
|
124
|
-
@doc.text("\n")
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
|
129
|
-
@hide_this_step = false
|
130
|
-
if exception
|
131
|
-
if @exceptions.include?(exception)
|
132
|
-
@hide_this_step = true
|
133
|
-
return
|
134
|
-
end
|
135
|
-
@exceptions << exception
|
136
|
-
end
|
137
|
-
if status != :failed && @in_background ^ background
|
138
|
-
@hide_this_step = true
|
139
|
-
return
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def step_name(keyword, step_match, status, source_indent, background)
|
144
|
-
return if @hide_this_step
|
145
|
-
line = "#{keyword} #{step_match.format_args("%s")}"
|
146
|
-
colorize(line, status)
|
147
|
-
end
|
148
|
-
|
149
|
-
def before_background(background)
|
150
|
-
@in_background = true
|
151
|
-
end
|
152
|
-
|
153
|
-
def after_background(background)
|
154
|
-
@in_background = nil
|
155
|
-
end
|
156
|
-
|
157
|
-
def before_multiline_arg(table)
|
158
|
-
return if @hide_this_step
|
159
|
-
if(table.kind_of? Cucumber::Ast::Table)
|
160
|
-
keep_with do
|
161
|
-
print_table(table, ['ffffff', 'f0f0f0'])
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
#using row_color hack to highlight each row correctly
|
167
|
-
def before_outline_table(table)
|
168
|
-
return if @hide_this_step
|
169
|
-
row_colors = table.example_rows.map { |r| @status_colors[r.status] unless r.status == :skipped}
|
170
|
-
keep_with do
|
171
|
-
print_table(table, row_colors)
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
def before_doc_string(string)
|
176
|
-
return if @hide_this_step
|
177
|
-
s = %{"""\n#{string}\n"""}.indent(10)
|
178
|
-
s = s.split("\n").map{|l| l =~ /^\s+$/ ? '' : l}
|
179
|
-
s.each do |line|
|
180
|
-
keep_with { @doc.text(line, :size => 8) }
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
def tag_name(tag_name)
|
185
|
-
return if @hide_this_step
|
186
|
-
tag = format_string(tag_name, :tag).indent(@indent)
|
187
|
-
# TODO should we render tags at all? skipped for now. difficult to place due to page breaks
|
188
|
-
end
|
189
|
-
|
190
|
-
def background_name(keyword, name, file_colon_line, source_indent)
|
191
|
-
feature_element_name(keyword, name)
|
192
|
-
end
|
193
|
-
|
194
|
-
def examples_name(keyword, name)
|
195
|
-
feature_element_name(keyword, name)
|
196
|
-
end
|
197
|
-
|
198
|
-
def scenario_name(keyword, name, file_colon_line, source_indent)
|
199
|
-
feature_element_name(keyword, name)
|
200
|
-
end
|
201
|
-
|
202
|
-
private
|
203
|
-
|
204
|
-
def colorize(text, status)
|
205
|
-
keep_with do
|
206
|
-
@doc.fill_color(@status_colors[status] || BLACK)
|
207
|
-
@doc.text(text)
|
208
|
-
@doc.fill_color(BLACK)
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
def keep_with(&block)
|
213
|
-
@buffer << block
|
214
|
-
end
|
215
|
-
|
216
|
-
def render(doc)
|
217
|
-
@doc = doc
|
218
|
-
@buffer.each do |proc|
|
219
|
-
proc.call
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
# This method does a 'test' rendering on a blank page, to see the rendered height of the buffer
|
224
|
-
# if that too high for the space left on the age in the real document, we do a page break.
|
225
|
-
# This obviously doesn't work if a scenario is longer than a whole page (God forbid)
|
226
|
-
def flush
|
227
|
-
@scrap.start_new_page
|
228
|
-
oldy = @scrap.y
|
229
|
-
render @scrap
|
230
|
-
height = (oldy - @scrap.y) + 36 # whops magic number
|
231
|
-
if ((@pdf.y - height) < @pdf.bounds.bottom)
|
232
|
-
@pdf.start_new_page
|
233
|
-
end
|
234
|
-
render @pdf
|
235
|
-
@pdf.move_down(20)
|
236
|
-
@buffer = []
|
237
|
-
end
|
238
|
-
|
239
|
-
def print_table(table, row_colors)
|
240
|
-
@doc.table(table.rows, :headers => table.headers, :position => :center, :row_colors => row_colors)
|
241
|
-
end
|
242
|
-
end
|
243
|
-
end
|
244
|
-
end
|