viewcumber 0.0.2 → 0.0.3
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/README.rdoc +14 -2
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/bin/viewcumber +4 -0
- data/lib/viewcumber.rb +116 -103
- data/viewcumber.gemspec +62 -0
- metadata +9 -7
data/README.rdoc
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
= viewcumber
|
2
2
|
|
3
|
-
|
3
|
+
Cucumber formatter for easily viewing each step of your scenarios
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
<tt>gem install viewcumber</tt>
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
|
11
|
+
<tt>viewcumber path/to/filename</tt>
|
12
|
+
or
|
13
|
+
<tt>cucumber --format Viewcumber path/to/filename</tt>
|
14
|
+
|
15
|
+
Then open <tt>./viewcumber/index.html</tt>
|
4
16
|
|
5
17
|
== Note on Patches/Pull Requests
|
6
18
|
|
@@ -14,4 +26,4 @@ Description goes here.
|
|
14
26
|
|
15
27
|
== Copyright
|
16
28
|
|
17
|
-
Copyright (c) 2010
|
29
|
+
Copyright (c) 2010 Versapay. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -8,6 +8,8 @@ begin
|
|
8
8
|
gem.summary = %Q{ Cucumber formatter for easily viewing each step of your scenarios }
|
9
9
|
gem.homepage = "http://github.com/versapay/viewcumber"
|
10
10
|
gem.authors = ["gregbell", "pcreux", "samuelreh"]
|
11
|
+
gem.default_executable = "viewcumber"
|
12
|
+
gem.executables = ["viewcumber"]
|
11
13
|
gem.add_dependency "cucumber", ">=0.8.5"
|
12
14
|
gem.add_dependency "capybara", ">=0.3"
|
13
15
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/bin/viewcumber
ADDED
data/lib/viewcumber.rb
CHANGED
@@ -5,12 +5,15 @@ require 'erb'
|
|
5
5
|
require 'cucumber/formatter/ordered_xml_markup'
|
6
6
|
require 'cucumber/formatter/duration'
|
7
7
|
require 'cucumber/formatter/io'
|
8
|
-
require '
|
8
|
+
require 'fileutils'
|
9
9
|
|
10
10
|
if respond_to? :AfterStep
|
11
11
|
AfterStep do |scenario|
|
12
12
|
begin
|
13
|
-
if
|
13
|
+
if !@email.blank?
|
14
|
+
Viewcumber.last_step_html = Viewcumber.rewrite_css_and_image_references(@email)
|
15
|
+
@email = nil
|
16
|
+
elsif Capybara.page.driver.respond_to? :html
|
14
17
|
Viewcumber.last_step_html = Viewcumber.rewrite_css_and_image_references(Capybara.page.driver.html.to_s)
|
15
18
|
end
|
16
19
|
rescue Exception => e
|
@@ -35,6 +38,7 @@ class Viewcumber
|
|
35
38
|
@options = options
|
36
39
|
@buffer = {}
|
37
40
|
@builder = create_builder(@io)
|
41
|
+
@background_builder = Builder::XmlMarkup.new
|
38
42
|
@feature_number = 0
|
39
43
|
@scenario_number = 0
|
40
44
|
@step_number = 0
|
@@ -50,7 +54,7 @@ class Viewcumber
|
|
50
54
|
|
51
55
|
def embed_image(file)
|
52
56
|
id = file.hash
|
53
|
-
|
57
|
+
builder.span(:class => 'embed') do |pre|
|
54
58
|
pre << %{<a href="" onclick="img=document.getElementById('#{id}'); img.style.display = (img.style.display == 'none' ? 'block' : 'none');return false">Screenshot</a><br>
|
55
59
|
<img id="#{id}" style="display: none" src="#{file}"/>}
|
56
60
|
end
|
@@ -62,7 +66,7 @@ class Viewcumber
|
|
62
66
|
copy_assets
|
63
67
|
|
64
68
|
# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
65
|
-
|
69
|
+
builder.declare!(
|
66
70
|
:DOCTYPE,
|
67
71
|
:html,
|
68
72
|
:PUBLIC,
|
@@ -70,22 +74,22 @@ class Viewcumber
|
|
70
74
|
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
|
71
75
|
)
|
72
76
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
+
builder << '<html xmlns ="http://www.w3.org/1999/xhtml">'
|
78
|
+
builder.head do
|
79
|
+
builder.meta(:content => 'text/html;charset=utf-8')
|
80
|
+
builder.title 'Cucumber'
|
77
81
|
inline_css
|
78
82
|
inline_js
|
79
|
-
|
83
|
+
builder << <<-HTML
|
80
84
|
<link href='http://fonts.googleapis.com/css?family=Droid+Serif' rel='stylesheet' type='text/css'>
|
81
85
|
<link rel="stylesheet" type="text/css" href="main.css" />
|
82
86
|
<script type="text/javascript" src="jquery-min.js"></script>
|
83
87
|
<script type="text/javascript" src="main.js"></script>
|
84
88
|
HTML
|
85
89
|
end
|
86
|
-
|
87
|
-
|
88
|
-
|
90
|
+
builder << '<body>'
|
91
|
+
builder << "<!-- Step count #{@step_count}-->"
|
92
|
+
builder << <<-HTML
|
89
93
|
<div id="navigator">
|
90
94
|
<a href="#" id="prev-btn" onclick="Cucumber.previous(); return false;">←</a>
|
91
95
|
<a href="#" id="next-btn" onclick="Cucumber.next(); return false;">→</a>
|
@@ -96,40 +100,40 @@ class Viewcumber
|
|
96
100
|
<p id="step-name"></p>
|
97
101
|
</div>
|
98
102
|
HTML
|
99
|
-
|
100
|
-
|
103
|
+
builder << '<div class="cucumber">'
|
104
|
+
builder << "<ul>"
|
101
105
|
end
|
102
106
|
|
103
107
|
def after_features(features)
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
108
|
+
builder << '</li>'
|
109
|
+
builder << '</ul>'
|
110
|
+
builder << '</div>'
|
111
|
+
builder << '<iframe name="viewport" id="viewport"></iframe>'
|
112
|
+
builder << '</body>'
|
113
|
+
builder << '</html>'
|
110
114
|
end
|
111
115
|
|
112
116
|
def before_feature(feature)
|
113
117
|
@exceptions = []
|
114
|
-
|
118
|
+
builder << '<li class="feature">'
|
115
119
|
end
|
116
120
|
|
117
121
|
def after_feature(feature)
|
118
|
-
|
119
|
-
|
122
|
+
builder << '</ul>'
|
123
|
+
builder << '</li> <!--class="feature" -->'
|
120
124
|
end
|
121
125
|
|
122
126
|
def before_comment(comment)
|
123
|
-
|
127
|
+
builder << '<pre class="comment">'
|
124
128
|
end
|
125
129
|
|
126
130
|
def after_comment(comment)
|
127
|
-
|
131
|
+
builder << '</pre>'
|
128
132
|
end
|
129
133
|
|
130
134
|
def comment_line(comment_line)
|
131
|
-
|
132
|
-
|
135
|
+
builder.text!(comment_line)
|
136
|
+
builder.br
|
133
137
|
end
|
134
138
|
|
135
139
|
def after_tags(tags)
|
@@ -137,44 +141,45 @@ class Viewcumber
|
|
137
141
|
end
|
138
142
|
|
139
143
|
def tag_name(tag_name)
|
140
|
-
|
144
|
+
builder.text!(@tag_spacer) if @tag_spacer
|
141
145
|
@tag_spacer = ' '
|
142
|
-
|
146
|
+
builder.span(tag_name, :class => 'tag')
|
143
147
|
end
|
144
148
|
|
145
149
|
def feature_name(keyword, name)
|
146
150
|
lines = name.split(/\r?\n/)
|
147
151
|
return if lines.empty?
|
148
|
-
|
149
|
-
|
150
|
-
|
152
|
+
builder.h2 do |h2|
|
153
|
+
#builder.span(keyword + ': ' + lines[0], :class => 'val')
|
154
|
+
builder.span(lines[0], :class => 'val')
|
151
155
|
end
|
152
|
-
|
156
|
+
builder.p(:class => 'narrative') do
|
153
157
|
lines[1..-1].each do |line|
|
154
|
-
|
155
|
-
|
158
|
+
builder.text!(line.strip)
|
159
|
+
builder.br
|
156
160
|
end
|
157
161
|
end
|
158
|
-
|
162
|
+
builder << '<ul>'
|
159
163
|
end
|
160
164
|
|
161
165
|
def before_background(background)
|
162
166
|
@in_background = true
|
163
|
-
@
|
167
|
+
@background_builder = Builder::XmlMarkup.new
|
168
|
+
builder << '<li class="background">'
|
164
169
|
end
|
165
170
|
|
166
171
|
def after_background(background)
|
167
172
|
@in_background = nil
|
168
|
-
|
173
|
+
builder << "</li>\n"
|
169
174
|
end
|
170
175
|
|
171
176
|
def background_name(keyword, name, file_colon_line, source_indent)
|
172
177
|
@listing_background = true
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
end
|
178
|
+
# builder.h3 do |h3|
|
179
|
+
# builder.span(keyword, :class => 'keyword')
|
180
|
+
# builder.text!(' ')
|
181
|
+
# builder.span(name, :class => 'val')
|
182
|
+
# end
|
178
183
|
end
|
179
184
|
|
180
185
|
def before_feature_element(feature_element)
|
@@ -184,53 +189,54 @@ class Viewcumber
|
|
184
189
|
Cucumber::Ast::Scenario => 'scenario',
|
185
190
|
Cucumber::Ast::ScenarioOutline => 'scenario outline'
|
186
191
|
}[feature_element.class]
|
187
|
-
|
192
|
+
builder << "<li class='#{css_class}'>"
|
188
193
|
end
|
189
194
|
|
190
195
|
def after_feature_element(feature_element)
|
191
|
-
|
196
|
+
builder << "</li>\n"
|
192
197
|
@open_step_list = true
|
193
198
|
end
|
194
199
|
|
195
200
|
def scenario_name(keyword, name, file_colon_line, source_indent)
|
196
201
|
@listing_background = false
|
197
|
-
|
198
|
-
|
202
|
+
builder.h3(:id => "scenario_#{@scenario_number}") do
|
203
|
+
builder.span(name, :class => 'val')
|
199
204
|
end
|
200
205
|
end
|
201
206
|
|
202
207
|
def before_outline_table(outline_table)
|
203
208
|
@outline_row = 0
|
204
|
-
|
209
|
+
builder << '<table>'
|
205
210
|
end
|
206
211
|
|
207
212
|
def after_outline_table(outline_table)
|
208
|
-
|
213
|
+
builder << '</table>'
|
209
214
|
@outline_row = nil
|
210
215
|
end
|
211
216
|
|
212
217
|
def before_examples(examples)
|
213
|
-
|
218
|
+
builder << '<li class="examples">'
|
214
219
|
end
|
215
220
|
|
216
221
|
def after_examples(examples)
|
217
|
-
|
222
|
+
builder << "</li>\n"
|
218
223
|
end
|
219
224
|
|
220
225
|
def examples_name(keyword, name)
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
226
|
+
builder.h4 do
|
227
|
+
builder.span(keyword, :class => 'keyword')
|
228
|
+
builder.text!(' ')
|
229
|
+
builder.span(name, :class => 'val')
|
225
230
|
end
|
226
231
|
end
|
227
232
|
|
228
233
|
def before_steps(steps)
|
229
|
-
|
234
|
+
builder << '<ol>'
|
235
|
+
builder << @background_builder.target! unless (@in_background || @background_builder.nil?)
|
230
236
|
end
|
231
237
|
|
232
238
|
def after_steps(steps)
|
233
|
-
|
239
|
+
builder << '</ol>'
|
234
240
|
end
|
235
241
|
|
236
242
|
def before_step(step)
|
@@ -247,6 +253,7 @@ class Viewcumber
|
|
247
253
|
end
|
248
254
|
|
249
255
|
def before_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
|
256
|
+
@in_background_step = true if @in_background
|
250
257
|
@step_match = step_match
|
251
258
|
@hide_this_step = false
|
252
259
|
if exception
|
@@ -263,7 +270,7 @@ class Viewcumber
|
|
263
270
|
@status = status
|
264
271
|
return if @hide_this_step
|
265
272
|
set_scenario_color(status)
|
266
|
-
|
273
|
+
builder << "<li id='#{@step_id}' class='step #{status}'>"
|
267
274
|
end
|
268
275
|
|
269
276
|
def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
|
@@ -271,11 +278,12 @@ class Viewcumber
|
|
271
278
|
# print snippet for undefined steps
|
272
279
|
if status == :undefined
|
273
280
|
step_multiline_class = @step.multiline_arg ? @step.multiline_arg.class : nil
|
274
|
-
|
281
|
+
builder.pre do |pre|
|
275
282
|
pre << @step_mother.snippet_text(@step.actual_keyword,step_match.instance_variable_get("@name") || '',step_multiline_class)
|
276
283
|
end
|
277
284
|
end
|
278
|
-
|
285
|
+
builder << "</li>\n"
|
286
|
+
@in_background_step = false
|
279
287
|
end
|
280
288
|
|
281
289
|
def step_name(keyword, step_match, status, source_indent, background)
|
@@ -300,22 +308,22 @@ class Viewcumber
|
|
300
308
|
|
301
309
|
def before_multiline_arg(multiline_arg)
|
302
310
|
return if @hide_this_step || @skip_step
|
303
|
-
if Ast::Table === multiline_arg
|
304
|
-
|
311
|
+
if Cucumber::Ast::Table === multiline_arg
|
312
|
+
builder << '<table>'
|
305
313
|
end
|
306
314
|
end
|
307
315
|
|
308
316
|
def after_multiline_arg(multiline_arg)
|
309
317
|
return if @hide_this_step || @skip_step
|
310
|
-
if Ast::Table === multiline_arg
|
311
|
-
|
318
|
+
if Cucumber::Ast::Table === multiline_arg
|
319
|
+
builder << '</table>'
|
312
320
|
end
|
313
321
|
end
|
314
322
|
|
315
323
|
def py_string(string)
|
316
324
|
return if @hide_this_step
|
317
|
-
|
318
|
-
|
325
|
+
builder.pre(:class => 'val') do |pre|
|
326
|
+
builder << string.gsub("\n", '
')
|
319
327
|
end
|
320
328
|
end
|
321
329
|
|
@@ -324,16 +332,16 @@ class Viewcumber
|
|
324
332
|
@row_id = table_row.dom_id
|
325
333
|
@col_index = 0
|
326
334
|
return if @hide_this_step
|
327
|
-
|
335
|
+
builder << "<tr class='step' id='#{@row_id}'>"
|
328
336
|
end
|
329
337
|
|
330
338
|
def after_table_row(table_row)
|
331
339
|
return if @hide_this_step
|
332
|
-
|
340
|
+
builder << "</tr>\n"
|
333
341
|
if table_row.exception
|
334
|
-
|
335
|
-
|
336
|
-
|
342
|
+
builder.tr do
|
343
|
+
builder.td(:colspan => @col_index.to_s, :class => 'failed') do
|
344
|
+
builder.pre do |pre|
|
337
345
|
pre << format_exception(table_row.exception)
|
338
346
|
end
|
339
347
|
end
|
@@ -358,7 +366,7 @@ class Viewcumber
|
|
358
366
|
end
|
359
367
|
|
360
368
|
def announce(announcement)
|
361
|
-
|
369
|
+
builder.pre(announcement, :class => 'announcement')
|
362
370
|
end
|
363
371
|
|
364
372
|
def self.rewrite_css_and_image_references(response_html) # :nodoc:
|
@@ -367,33 +375,34 @@ class Viewcumber
|
|
367
375
|
list << name if File.directory?(name) and not name.to_s =~ /^\./
|
368
376
|
list
|
369
377
|
end
|
370
|
-
response_html.gsub(/("|')\/(#{directories.join('|')})/, '\1public/\2')
|
378
|
+
response_html.gsub!(/("|')\/(#{directories.join('|')})/, '\1public/\2')
|
379
|
+
response_html.gsub(/("|')http:\/\/.*\/images/, '\1public/images')
|
371
380
|
end
|
372
381
|
|
373
382
|
protected
|
374
383
|
|
375
384
|
def build_exception_detail(exception)
|
376
385
|
backtrace = Array.new
|
377
|
-
|
386
|
+
builder.div(:class => 'message') do
|
378
387
|
message = exception.message
|
379
388
|
if defined?(RAILS_ROOT) && message.include?('Exception caught')
|
380
389
|
matches = message.match(/Showing <i>(.+)<\/i>(?:.+)#(\d+)/)
|
381
390
|
backtrace += ["#{RAILS_ROOT}/#{matches[1]}:#{matches[2]}"]
|
382
391
|
message = message.match(/<code>([^(\/)]+)<\//m)[1]
|
383
392
|
end
|
384
|
-
|
385
|
-
|
393
|
+
builder.pre do
|
394
|
+
builder.text!(message)
|
386
395
|
end
|
387
396
|
end
|
388
|
-
|
389
|
-
|
397
|
+
builder.div(:class => 'backtrace') do
|
398
|
+
builder.pre do
|
390
399
|
backtrace = exception.backtrace
|
391
400
|
backtrace.delete_if { |x| x =~ /\/gems\/(cucumber|rspec)/ }
|
392
|
-
|
401
|
+
builder << backtrace_line(backtrace.join("\n"))
|
393
402
|
end
|
394
403
|
end
|
395
404
|
extra = extra_failure_content(backtrace)
|
396
|
-
|
405
|
+
builder << extra unless extra == ""
|
397
406
|
end
|
398
407
|
|
399
408
|
def set_scenario_color(status)
|
@@ -406,18 +415,18 @@ protected
|
|
406
415
|
end
|
407
416
|
|
408
417
|
def set_scenario_color_failed
|
409
|
-
|
410
|
-
|
418
|
+
builder.script do
|
419
|
+
builder.text!("makeRed('cucumber-header');") unless @header_red
|
411
420
|
@header_red = true
|
412
|
-
|
421
|
+
builder.text!("makeRed('scenario_#{@scenario_number}');") unless @scenario_red
|
413
422
|
@scenario_red = true
|
414
423
|
end
|
415
424
|
end
|
416
425
|
|
417
426
|
def set_scenario_color_pending
|
418
|
-
|
419
|
-
|
420
|
-
|
427
|
+
builder.script do
|
428
|
+
builder.text!("makeYellow('cucumber-header');") unless @header_red
|
429
|
+
builder.text!("makeYellow('scenario_#{@scenario_number}');") unless @scenario_red
|
421
430
|
end
|
422
431
|
end
|
423
432
|
|
@@ -462,36 +471,36 @@ protected
|
|
462
471
|
|
463
472
|
def build_step(keyword, step_match, status)
|
464
473
|
step_name = step_match.format_args(lambda{|param| %{<span class="param">#{param}</span>}})
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
474
|
+
builder.div(:class => 'step_name') do |div|
|
475
|
+
builder << "<a target=\"viewport\" class=\"step-link\" href=\"#{@file_name}\">"
|
476
|
+
builder.span(keyword, :class => 'keyword')
|
477
|
+
builder.span(:class => 'val') do |name|
|
469
478
|
name << h(step_name).gsub(/<span class="(.*?)">/, '<span class="\1">').gsub(/<\/span>/, '</span>')
|
470
479
|
end
|
471
|
-
|
480
|
+
builder << "</a>"
|
472
481
|
end
|
473
482
|
end
|
474
483
|
|
475
484
|
def build_cell(cell_type, value, attributes)
|
476
|
-
|
477
|
-
|
478
|
-
|
485
|
+
builder.__send__(cell_type, attributes) do
|
486
|
+
builder.div do
|
487
|
+
builder.span(value,:class => 'step param')
|
479
488
|
end
|
480
489
|
end
|
481
490
|
end
|
482
491
|
|
483
492
|
def inline_css
|
484
|
-
|
493
|
+
builder.style(:type => 'text/css') do
|
485
494
|
# Inline CSS here
|
486
|
-
|
495
|
+
#builder << File.read(File.dirname(__FILE__) + '/cucumber.css')
|
487
496
|
end
|
488
497
|
end
|
489
498
|
|
490
499
|
def inline_js
|
491
|
-
|
500
|
+
builder.script(:type => 'text/javascript') do
|
492
501
|
# Inline JQuery here
|
493
|
-
|
494
|
-
|
502
|
+
#builder << inline_jquery
|
503
|
+
#builder << inline_js_content
|
495
504
|
end
|
496
505
|
end
|
497
506
|
|
@@ -537,7 +546,7 @@ $('#'+element_id).css('color', '#000000');
|
|
537
546
|
end
|
538
547
|
|
539
548
|
def move_progress
|
540
|
-
|
549
|
+
builder << " <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>"
|
541
550
|
end
|
542
551
|
|
543
552
|
def percent_done
|
@@ -563,8 +572,8 @@ $('#'+element_id).css('color', '#000000');
|
|
563
572
|
end
|
564
573
|
|
565
574
|
def print_stats(features)
|
566
|
-
|
567
|
-
|
575
|
+
builder << "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{format_duration(features.duration)} seconds</strong>\";</script>"
|
576
|
+
builder << "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{print_stat_string(features)}\";</script>"
|
568
577
|
end
|
569
578
|
|
570
579
|
def print_stat_string(features)
|
@@ -593,6 +602,10 @@ $('#'+element_id).css('color', '#000000');
|
|
593
602
|
def create_builder(io)
|
594
603
|
Cucumber::Formatter::OrderedXmlMarkup.new(:target => io, :indent => 0)
|
595
604
|
end
|
605
|
+
|
606
|
+
def builder
|
607
|
+
@in_background_step ? @background_builder : @builder
|
608
|
+
end
|
596
609
|
|
597
610
|
def copy_assets
|
598
611
|
FileUtils.mkdir "viewcumber" unless File.directory? "viewcumber"
|
@@ -601,7 +614,7 @@ $('#'+element_id).css('color', '#000000');
|
|
601
614
|
File.copy assets_dir + "/jquery-min.js", "viewcumber/jquery-min.js"
|
602
615
|
File.copy assets_dir + "/viewcumber.js", "viewcumber/main.js"
|
603
616
|
File.copy assets_dir + "/viewless.html", "viewcumber/viewless.html"
|
604
|
-
FileUtils.cp_r "public", "viewcumber/public"
|
617
|
+
FileUtils.cp_r File.join(Rails.root, "public"), "viewcumber/public"
|
605
618
|
end
|
606
619
|
|
607
620
|
class SnippetExtractor #:nodoc:
|
data/viewcumber.gemspec
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{viewcumber}
|
8
|
+
s.version = "0.0.3"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["gregbell", "pcreux", "samuelreh"]
|
12
|
+
s.date = %q{2010-11-10}
|
13
|
+
s.default_executable = %q{viewcumber}
|
14
|
+
s.executables = ["viewcumber"]
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"bin/viewcumber",
|
27
|
+
"lib/assets/jquery-min.js",
|
28
|
+
"lib/assets/viewcumber.css",
|
29
|
+
"lib/assets/viewcumber.js",
|
30
|
+
"lib/assets/viewless.html",
|
31
|
+
"lib/viewcumber.rb",
|
32
|
+
"test/helper.rb",
|
33
|
+
"test/test_viewcumber.rb",
|
34
|
+
"viewcumber.gemspec"
|
35
|
+
]
|
36
|
+
s.homepage = %q{http://github.com/versapay/viewcumber}
|
37
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = %q{1.3.7}
|
40
|
+
s.summary = %q{Cucumber formatter for easily viewing each step of your scenarios}
|
41
|
+
s.test_files = [
|
42
|
+
"test/helper.rb",
|
43
|
+
"test/test_viewcumber.rb"
|
44
|
+
]
|
45
|
+
|
46
|
+
if s.respond_to? :specification_version then
|
47
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_runtime_dependency(%q<cucumber>, [">= 0.8.5"])
|
52
|
+
s.add_runtime_dependency(%q<capybara>, [">= 0.3"])
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<cucumber>, [">= 0.8.5"])
|
55
|
+
s.add_dependency(%q<capybara>, [">= 0.3"])
|
56
|
+
end
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<cucumber>, [">= 0.8.5"])
|
59
|
+
s.add_dependency(%q<capybara>, [">= 0.3"])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: viewcumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- gregbell
|
@@ -17,8 +17,8 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-10
|
21
|
-
default_executable:
|
20
|
+
date: 2010-11-10 00:00:00 -08:00
|
21
|
+
default_executable: viewcumber
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
24
|
name: cucumber
|
@@ -53,8 +53,8 @@ dependencies:
|
|
53
53
|
version_requirements: *id002
|
54
54
|
description:
|
55
55
|
email:
|
56
|
-
executables:
|
57
|
-
|
56
|
+
executables:
|
57
|
+
- viewcumber
|
58
58
|
extensions: []
|
59
59
|
|
60
60
|
extra_rdoc_files:
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- README.rdoc
|
68
68
|
- Rakefile
|
69
69
|
- VERSION
|
70
|
+
- bin/viewcumber
|
70
71
|
- lib/assets/jquery-min.js
|
71
72
|
- lib/assets/viewcumber.css
|
72
73
|
- lib/assets/viewcumber.js
|
@@ -74,6 +75,7 @@ files:
|
|
74
75
|
- lib/viewcumber.rb
|
75
76
|
- test/helper.rb
|
76
77
|
- test/test_viewcumber.rb
|
78
|
+
- viewcumber.gemspec
|
77
79
|
has_rdoc: true
|
78
80
|
homepage: http://github.com/versapay/viewcumber
|
79
81
|
licenses: []
|