cucumber 0.10.0 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Gemfile +1 -1
- data/History.txt +20 -0
- data/README.rdoc +1 -1
- data/bin/cucumber +1 -1
- data/cucumber.gemspec +19 -12
- data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/he/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/ro/features/adunare.feature +12 -0
- data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +4 -7
- data/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +3 -3
- data/features/background.feature +10 -10
- data/features/bootstrap.feature +13 -0
- data/features/execute_with_tag_filter.feature +2 -2
- data/features/hooks.feature +2 -2
- data/features/iso-8859-1.feature +6 -0
- data/features/stats_formatters.feature +2 -2
- data/features/step_definitions/cucumber_steps.rb +8 -2
- data/features/step_definitions/iso-8859-1_steps.rb +24 -0
- data/features/support/env.rb +2 -2
- data/features/tagged_hooks.feature +5 -5
- data/features/transforms.feature +63 -0
- data/gem_tasks/examples.rake +1 -1
- data/legacy_features/diffing.feature +1 -1
- data/legacy_features/html_formatter.feature +1 -1
- data/legacy_features/html_formatter/a.html +68 -116
- data/legacy_features/language_help.feature +44 -45
- data/legacy_features/wire_protocol.feature +2 -2
- data/legacy_features/wire_protocol_erb.feature +57 -0
- data/lib/cucumber/ast/table.rb +2 -2
- data/lib/cucumber/ast/tree_walker.rb +2 -2
- data/lib/cucumber/cli/configuration.rb +1 -1
- data/lib/cucumber/cli/options.rb +4 -0
- data/lib/cucumber/feature_file.rb +45 -6
- data/lib/cucumber/formatter/console.rb +1 -1
- data/lib/cucumber/formatter/cucumber.css +21 -17
- data/lib/cucumber/formatter/cucumber.sass +170 -194
- data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +2 -2
- data/lib/cucumber/formatter/html.rb +8 -5
- data/lib/cucumber/platform.rb +3 -3
- data/lib/cucumber/rake/task.rb +22 -15
- data/lib/cucumber/rb_support/rb_transform.rb +17 -0
- data/lib/cucumber/rb_support/rb_world.rb +2 -2
- data/lib/cucumber/runtime/for_programming_languages.rb +3 -1
- data/lib/cucumber/runtime/user_interface.rb +2 -2
- data/lib/cucumber/wire_support/configuration.rb +2 -1
- data/spec/cucumber/ast/table_spec.rb +10 -0
- data/spec/cucumber/cli/options_spec.rb +7 -0
- data/spec/cucumber/formatter/html_spec.rb +1 -3
- data/spec/cucumber/rb_support/rb_transform_spec.rb +21 -0
- metadata +104 -98
- data/examples/i18n/ro/features/suma.feature +0 -11
@@ -11,7 +11,7 @@ Feature: Wire Protocol
|
|
11
11
|
#
|
12
12
|
# Communication is over a TCP socket, which Cucumber connects to when it finds
|
13
13
|
# a definition file with the .wire extension in the step_definitions folder
|
14
|
-
# (or other load path).
|
14
|
+
# (or other load path). Note that these files are rendered with ERB when loaded.
|
15
15
|
#
|
16
16
|
# Cucumber sends the following request messages out over the wire:
|
17
17
|
#
|
@@ -31,7 +31,7 @@ Feature: Wire Protocol
|
|
31
31
|
# Some messages support more responses - see below for details.
|
32
32
|
#
|
33
33
|
# A WirePacket flowing in either direction is formatted as a JSON-encoded
|
34
|
-
# string, with a newline character
|
34
|
+
# string, with a newline character signaling the end of a packet. See the
|
35
35
|
# specs for Cucumber::WireSupport::WirePacket for more details.
|
36
36
|
#
|
37
37
|
# These messages are described in detail below, with examples.
|
@@ -0,0 +1,57 @@
|
|
1
|
+
@wire
|
2
|
+
Feature: Wire Protocol with ERB
|
3
|
+
In order to be allow Cucumber to touch my app in intimate places
|
4
|
+
As a developer on server with multiple users
|
5
|
+
I want to be able to configure which port my wire server runs on
|
6
|
+
So that I can avoid port conflicts
|
7
|
+
|
8
|
+
Background:
|
9
|
+
Given a standard Cucumber project directory structure
|
10
|
+
And a file named "features/wired.feature" with:
|
11
|
+
"""
|
12
|
+
Feature: High strung
|
13
|
+
Scenario: Wired
|
14
|
+
Given we're all wired
|
15
|
+
|
16
|
+
"""
|
17
|
+
|
18
|
+
Scenario: ERB is used in the wire file which references an environment variable that is not set
|
19
|
+
Given a file named "features/step_definitions/server.wire" with:
|
20
|
+
"""
|
21
|
+
host: localhost
|
22
|
+
port: <%= ENV['PORT'] || 12345 %>
|
23
|
+
"""
|
24
|
+
And there is a wire server running on port 12345 which understands the following protocol:
|
25
|
+
| request | response |
|
26
|
+
| ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[]] |
|
27
|
+
When I run cucumber --dry-run --no-snippets -f progress
|
28
|
+
And it should pass with
|
29
|
+
"""
|
30
|
+
U
|
31
|
+
|
32
|
+
1 scenario (1 undefined)
|
33
|
+
1 step (1 undefined)
|
34
|
+
|
35
|
+
"""
|
36
|
+
|
37
|
+
|
38
|
+
Scenario: ERB is used in the wire file which references an environment variable
|
39
|
+
Given I have environment variable PORT set to "16816"
|
40
|
+
And a file named "features/step_definitions/server.wire" with:
|
41
|
+
"""
|
42
|
+
host: localhost
|
43
|
+
port: <%= ENV['PORT'] || 12345 %>
|
44
|
+
"""
|
45
|
+
And there is a wire server running on port 16816 which understands the following protocol:
|
46
|
+
| request | response |
|
47
|
+
| ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[]] |
|
48
|
+
When I run cucumber --dry-run --no-snippets -f progress
|
49
|
+
And it should pass with
|
50
|
+
"""
|
51
|
+
U
|
52
|
+
|
53
|
+
1 scenario (1 undefined)
|
54
|
+
1 step (1 undefined)
|
55
|
+
|
56
|
+
"""
|
57
|
+
|
data/lib/cucumber/ast/table.rb
CHANGED
@@ -168,9 +168,8 @@ module Cucumber
|
|
168
168
|
@col_names ||= cell_matrix[0].map { |cell| cell.value }
|
169
169
|
end
|
170
170
|
|
171
|
-
# Same as #raw, but skips the first (header) row
|
172
171
|
def rows
|
173
|
-
|
172
|
+
hashes.map(&:values)
|
174
173
|
end
|
175
174
|
|
176
175
|
def each_cells_row(&proc) #:nodoc:
|
@@ -278,6 +277,7 @@ module Cucumber
|
|
278
277
|
def map_column!(column_name, strict=true, &conversion_proc)
|
279
278
|
verify_column(column_name.to_s) if strict
|
280
279
|
@conversion_procs[column_name.to_s] = conversion_proc
|
280
|
+
self
|
281
281
|
end
|
282
282
|
|
283
283
|
# Compares +other_table+ to self. If +other_table+ contains columns
|
@@ -149,8 +149,8 @@ module Cucumber
|
|
149
149
|
|
150
150
|
# Embed +file+ of +mime_type+ in the formatter. This method can be called from within StepDefinitions.
|
151
151
|
# For most formatters this is a no-op.
|
152
|
-
def embed(file, mime_type)
|
153
|
-
broadcast(file, mime_type)
|
152
|
+
def embed(file, mime_type, label)
|
153
|
+
broadcast(file, mime_type, label)
|
154
154
|
end
|
155
155
|
|
156
156
|
private
|
@@ -106,7 +106,7 @@ module Cucumber
|
|
106
106
|
path = path.gsub(/\\/, '/') # In case we're on windows. Globs don't work with backslashes.
|
107
107
|
path = path.chomp('/')
|
108
108
|
if File.directory?(path)
|
109
|
-
Dir["#{path}/**/*.feature"]
|
109
|
+
Dir["#{path}/**/*.feature"].sort
|
110
110
|
elsif path[0..0] == '@' and # @listfile.txt
|
111
111
|
File.file?(path[1..-1]) # listfile.txt is a file
|
112
112
|
IO.read(path[1..-1]).split
|
data/lib/cucumber/cli/options.rb
CHANGED
@@ -240,6 +240,9 @@ module Cucumber
|
|
240
240
|
opts.on("-g", "--guess", "Guess best match for Ambiguous steps.") do
|
241
241
|
@options[:guess] = true
|
242
242
|
end
|
243
|
+
opts.on("-l", "--lines LINES", "Run given line numbers. Equivalent to FILE:LINE syntax") do |lines|
|
244
|
+
@options[:lines] = lines
|
245
|
+
end
|
243
246
|
opts.on("-x", "--expand", "Expand Scenario Outline Tables in output.") do
|
244
247
|
@options[:expand] = true
|
245
248
|
end
|
@@ -265,6 +268,7 @@ module Cucumber
|
|
265
268
|
@options[:snippets] = true if @options[:snippets].nil?
|
266
269
|
@options[:source] = true if @options[:source].nil?
|
267
270
|
end
|
271
|
+
@args.map! { |a| "#{a}:#{@options[:lines]}" } if @options[:lines]
|
268
272
|
|
269
273
|
extract_environment_variables
|
270
274
|
@options[:paths] = @args.dup #whatver is left over
|
@@ -6,9 +6,11 @@ require 'gherkin/parser/parser'
|
|
6
6
|
module Cucumber
|
7
7
|
class FeatureFile
|
8
8
|
FILE_COLON_LINE_PATTERN = /^([\w\W]*?):([\d:]+)$/ #:nodoc:
|
9
|
-
|
9
|
+
DEFAULT_ENCODING = "UTF-8" #:nodoc:
|
10
|
+
COMMENT_OR_EMPTY_LINE_PATTERN = /^\s*#|^\s*$/ #:nodoc:
|
11
|
+
ENCODING_PATTERN = /^\s*#\s*encoding\s*:\s*([^\s]+)/ #:nodoc:
|
10
12
|
|
11
|
-
# The +uri+ argument is the location of the source. It can be a path
|
13
|
+
# The +uri+ argument is the location of the source. It can be a path
|
12
14
|
# or a path:line1:line2 etc. If +source+ is passed, +uri+ is ignored.
|
13
15
|
def initialize(uri, source=nil)
|
14
16
|
@source = source
|
@@ -19,7 +21,7 @@ module Cucumber
|
|
19
21
|
@path = uri
|
20
22
|
end
|
21
23
|
end
|
22
|
-
|
24
|
+
|
23
25
|
# Parses a file and returns a Cucumber::Ast
|
24
26
|
# If +configuration_filters+ contains any filters, the result will
|
25
27
|
# be filtered.
|
@@ -50,13 +52,50 @@ module Cucumber
|
|
50
52
|
open(@path).read
|
51
53
|
else
|
52
54
|
begin
|
53
|
-
File.open(@path, Cucumber.file_mode('r')).read
|
55
|
+
source = File.open(@path, Cucumber.file_mode('r', DEFAULT_ENCODING)).read
|
56
|
+
encoding = encoding_for(source)
|
57
|
+
if(DEFAULT_ENCODING.downcase != encoding.downcase)
|
58
|
+
# Read the file again - it's explicitly declaring a different encoding
|
59
|
+
source = File.open(@path, Cucumber.file_mode('r', encoding)).read
|
60
|
+
source = to_default_encoding(source, encoding)
|
61
|
+
end
|
62
|
+
source
|
54
63
|
rescue Errno::EACCES => e
|
55
|
-
|
56
|
-
e
|
64
|
+
e.message << "\nCouldn't open #{File.expand_path(@path)}"
|
65
|
+
raise e
|
66
|
+
rescue Errno::ENOENT => e
|
67
|
+
# special-case opening features, because this could be a new user:
|
68
|
+
if(@path == 'features')
|
69
|
+
STDERR.puts("You don't have a 'features' directory. Please create one to get started.",
|
70
|
+
"See http://cukes.info/ for more information.")
|
71
|
+
exit 1
|
72
|
+
end
|
57
73
|
raise e
|
58
74
|
end
|
59
75
|
end
|
60
76
|
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def encoding_for(source)
|
81
|
+
encoding = DEFAULT_ENCODING
|
82
|
+
source.each_line do |line|
|
83
|
+
break unless COMMENT_OR_EMPTY_LINE_PATTERN =~ line
|
84
|
+
if ENCODING_PATTERN =~ line
|
85
|
+
encoding = $1
|
86
|
+
break
|
87
|
+
end
|
88
|
+
end
|
89
|
+
encoding
|
90
|
+
end
|
91
|
+
|
92
|
+
def to_default_encoding(string, encoding)
|
93
|
+
if string.respond_to?(:encode)
|
94
|
+
string.encode(DEFAULT_ENCODING)
|
95
|
+
else
|
96
|
+
require 'iconv'
|
97
|
+
Iconv.new(DEFAULT_ENCODING, encoding).iconv(string)
|
98
|
+
end
|
99
|
+
end
|
61
100
|
end
|
62
101
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/* Regenerate with rake sass */
|
3
3
|
body {
|
4
4
|
font-size: 0px;
|
5
|
-
color:
|
5
|
+
color: white;
|
6
6
|
margin: 0px;
|
7
7
|
padding: 0px;
|
8
8
|
}
|
@@ -10,11 +10,11 @@ body {
|
|
10
10
|
.cucumber, td, th {
|
11
11
|
font: normal 11px "Lucida Grande", Helvetica, sans-serif;
|
12
12
|
background: white;
|
13
|
-
color:
|
13
|
+
color: black;
|
14
14
|
}
|
15
15
|
.cucumber #cucumber-header, td #cucumber-header, th #cucumber-header {
|
16
|
-
background: #
|
17
|
-
color:
|
16
|
+
background: #65c400;
|
17
|
+
color: white;
|
18
18
|
height: 6em;
|
19
19
|
}
|
20
20
|
.cucumber #cucumber-header #expand-collapse p, td #cucumber-header #expand-collapse p, th #cucumber-header #expand-collapse p {
|
@@ -25,8 +25,8 @@ body {
|
|
25
25
|
font-size: 11px;
|
26
26
|
padding: 3px;
|
27
27
|
margin: 0;
|
28
|
-
background: #
|
29
|
-
color:
|
28
|
+
background: #65c400;
|
29
|
+
color: white;
|
30
30
|
font-weight: bold;
|
31
31
|
}
|
32
32
|
.cucumber h1, td h1, th h1 {
|
@@ -62,19 +62,23 @@ body {
|
|
62
62
|
.cucumber .step_file a, td .step_file a, th .step_file a {
|
63
63
|
color: #999999;
|
64
64
|
}
|
65
|
+
.cucumber .scenario_file, td .scenario_file, th .scenario_file {
|
66
|
+
float: right;
|
67
|
+
color: #999999;
|
68
|
+
}
|
65
69
|
.cucumber .tag, td .tag, th .tag {
|
66
70
|
font-weight: bold;
|
67
|
-
color: #
|
71
|
+
color: #246ac1;
|
68
72
|
}
|
69
73
|
.cucumber .backtrace, td .backtrace, th .backtrace {
|
70
74
|
margin-top: 0;
|
71
75
|
margin-bottom: 0;
|
72
76
|
margin-left: 1em;
|
73
|
-
color:
|
77
|
+
color: black;
|
74
78
|
}
|
75
79
|
.cucumber a, td a, th a {
|
76
80
|
text-decoration: none;
|
77
|
-
color: #
|
81
|
+
color: #be5c00;
|
78
82
|
}
|
79
83
|
.cucumber a:hover, td a:hover, th a:hover {
|
80
84
|
text-decoration: underline;
|
@@ -84,7 +88,7 @@ body {
|
|
84
88
|
}
|
85
89
|
.cucumber a div.examples, td a div.examples, th a div.examples {
|
86
90
|
margin: 5px 0px 5px 15px;
|
87
|
-
color:
|
91
|
+
color: black;
|
88
92
|
}
|
89
93
|
.cucumber .outline table, td .outline table, th .outline table {
|
90
94
|
margin: 0px 0px 5px 10px;
|
@@ -211,7 +215,7 @@ body {
|
|
211
215
|
padding: 0.1em 0 0.2em 0;
|
212
216
|
}
|
213
217
|
.ruby .keyword {
|
214
|
-
color: #
|
218
|
+
color: #ff6600;
|
215
219
|
}
|
216
220
|
.ruby .constant {
|
217
221
|
color: #339999;
|
@@ -229,13 +233,13 @@ body {
|
|
229
233
|
color: white;
|
230
234
|
}
|
231
235
|
.ruby .string {
|
232
|
-
color: #
|
236
|
+
color: #66ff00;
|
233
237
|
}
|
234
238
|
.ruby .ident {
|
235
239
|
color: white;
|
236
240
|
}
|
237
241
|
.ruby .method {
|
238
|
-
color: #
|
242
|
+
color: #ffcc00;
|
239
243
|
}
|
240
244
|
.ruby .number {
|
241
245
|
color: white;
|
@@ -244,13 +248,13 @@ body {
|
|
244
248
|
color: white;
|
245
249
|
}
|
246
250
|
.ruby .comment {
|
247
|
-
color: #
|
251
|
+
color: #9933cc;
|
248
252
|
}
|
249
253
|
.ruby .symbol {
|
250
254
|
color: white;
|
251
255
|
}
|
252
256
|
.ruby .regex {
|
253
|
-
color: #
|
257
|
+
color: #44b4cc;
|
254
258
|
}
|
255
259
|
.ruby .punct {
|
256
260
|
color: white;
|
@@ -270,6 +274,6 @@ body {
|
|
270
274
|
.ruby .linenum {
|
271
275
|
width: 75px;
|
272
276
|
padding: 0.1em 1em 0.2em 0;
|
273
|
-
color:
|
274
|
-
background: #
|
277
|
+
color: black;
|
278
|
+
background: #fffbd3;
|
275
279
|
}
|
@@ -1,271 +1,247 @@
|
|
1
1
|
/* cucumber.css is generated from cucumber.sass */
|
2
2
|
/* Regenerate with rake sass */
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
$step_left: 5px solid
|
5
|
+
$step_bottom: 1px solid
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
$failed: #fffbd3
|
8
|
+
$failed_border: #c20000
|
9
|
+
$failed_text: #c20000
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
$passed: #dbffb4
|
12
|
+
$passed_border: #65c400
|
13
|
+
$passed_text: #3d7700
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
$skipped: #e0ffff
|
16
|
+
$skipped_border: aqua
|
17
|
+
$skipped_text: #001111
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
$pending: #fcfb98
|
20
|
+
$pending_border: #faf834
|
21
|
+
$pending_text: #131313
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
$undefined: #fcfb98
|
24
|
+
$undefined_border: #faf834
|
25
|
+
$undefined_text: #131313
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
$announcement: #e0ffff
|
28
|
+
$announcement_border: aqua
|
29
|
+
$announcement_text: #001111
|
30
30
|
|
31
31
|
body
|
32
|
-
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
32
|
+
font-size: 0px
|
33
|
+
color: white
|
34
|
+
margin: 0px
|
35
|
+
padding: 0px
|
36
36
|
|
37
37
|
.cucumber,td,th
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
41
|
-
|
38
|
+
font: normal 11px "Lucida Grande", Helvetica, sans-serif
|
39
|
+
background: white
|
40
|
+
color: black
|
42
41
|
#cucumber-header
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
|
42
|
+
background: #65c400
|
43
|
+
color: white
|
44
|
+
height: 6em
|
47
45
|
#expand-collapse
|
48
46
|
p
|
49
|
-
:
|
50
|
-
:
|
51
|
-
|
47
|
+
float: right
|
48
|
+
margin: 0 0 0 10px
|
52
49
|
.scenario
|
53
50
|
h3
|
54
|
-
|
55
|
-
:
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
59
|
-
|
60
|
-
|
51
|
+
font-size: 11px
|
52
|
+
padding: 3px
|
53
|
+
margin: 0
|
54
|
+
background: #65c400
|
55
|
+
color: white
|
56
|
+
font-weight: bold
|
61
57
|
h1
|
62
|
-
:
|
63
|
-
:
|
64
|
-
|
65
|
-
|
66
|
-
:
|
67
|
-
|
58
|
+
margin: 0px 10px 0px 10px
|
59
|
+
padding: 10px
|
60
|
+
font-family: "Lucida Grande", Helvetica, sans-serif
|
61
|
+
font-size: 2em
|
62
|
+
position: absolute
|
68
63
|
h4
|
69
|
-
|
70
|
-
|
64
|
+
margin-bottom: 2px
|
71
65
|
div.feature
|
72
|
-
:
|
73
|
-
:
|
74
|
-
|
66
|
+
padding: 2px
|
67
|
+
margin: 0px 10px 5px 10px
|
75
68
|
div.examples
|
76
|
-
:
|
77
|
-
|
69
|
+
padding: 0em 0em 0em 1em
|
78
70
|
.stats
|
79
|
-
:
|
80
|
-
|
71
|
+
margin: 2em
|
81
72
|
.summary
|
82
73
|
ul.features
|
83
74
|
li
|
84
|
-
:
|
85
|
-
|
75
|
+
display: inline
|
86
76
|
.step_name
|
87
|
-
:
|
88
|
-
|
77
|
+
float: left
|
89
78
|
.step_file
|
90
|
-
|
91
|
-
:
|
79
|
+
text-align: right
|
80
|
+
color: #999999
|
92
81
|
a
|
93
|
-
:
|
94
|
-
|
95
|
-
|
82
|
+
color: #999999
|
83
|
+
.scenario_file
|
84
|
+
float: right
|
85
|
+
color: #999999
|
96
86
|
.tag
|
97
|
-
|
98
|
-
:
|
99
|
-
|
87
|
+
font-weight: bold
|
88
|
+
color: #246ac1
|
100
89
|
.backtrace
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
:
|
105
|
-
|
90
|
+
margin-top: 0
|
91
|
+
margin-bottom: 0
|
92
|
+
margin-left: 1em
|
93
|
+
color: black
|
106
94
|
a
|
107
|
-
|
108
|
-
:
|
109
|
-
|
95
|
+
text-decoration: none
|
96
|
+
color: #be5c00
|
110
97
|
&:hover
|
111
|
-
|
98
|
+
text-decoration: underline
|
112
99
|
&:visited
|
113
|
-
|
114
|
-
|
100
|
+
font-weight: normal
|
115
101
|
div.examples
|
116
|
-
:
|
117
|
-
:
|
118
|
-
|
102
|
+
margin: 5px 0px 5px 15px
|
103
|
+
color: black
|
119
104
|
.outline
|
120
105
|
table
|
121
|
-
:
|
122
|
-
|
106
|
+
margin: 0px 0px 5px 10px
|
123
107
|
table
|
124
|
-
|
108
|
+
border-collapse: collapse
|
125
109
|
td
|
126
|
-
:
|
110
|
+
padding: 3px 3px 3px 5px
|
127
111
|
td.failed, td.passed, td.skipped, td.pending, td.undefined
|
128
|
-
|
129
|
-
|
112
|
+
padding-left: 18px
|
113
|
+
padding-right: 10px
|
130
114
|
td.failed
|
131
|
-
|
132
|
-
|
133
|
-
:
|
134
|
-
:
|
115
|
+
border-left: $step_left $failed_border
|
116
|
+
border-bottom: $step_bottom $failed_border
|
117
|
+
background: $failed
|
118
|
+
color: $failed_text
|
135
119
|
td.passed
|
136
|
-
|
137
|
-
|
138
|
-
:
|
139
|
-
:
|
120
|
+
border-left: $step_left $passed_border
|
121
|
+
border-bottom: $step_bottom $passed_border
|
122
|
+
background: $passed
|
123
|
+
color: $passed_text
|
140
124
|
td.skipped
|
141
|
-
|
142
|
-
|
143
|
-
:
|
144
|
-
:
|
125
|
+
border-left: $step_left $skipped_border
|
126
|
+
border-bottom: $step_bottom $skipped_border
|
127
|
+
background: $skipped
|
128
|
+
color: $skipped_text
|
145
129
|
td.pending
|
146
|
-
|
147
|
-
|
148
|
-
:
|
149
|
-
:
|
130
|
+
border-left: $step_left $pending_border
|
131
|
+
border-bottom: $step_bottom $pending_border
|
132
|
+
background: $pending
|
133
|
+
color: $pending_text
|
150
134
|
td.undefined
|
151
|
-
|
152
|
-
|
153
|
-
:
|
154
|
-
:
|
135
|
+
border-left: $step_left $undefined_border
|
136
|
+
border-bottom: $step_bottom $undefined_border
|
137
|
+
background: $undefined
|
138
|
+
color: $undefined_text
|
155
139
|
td.announcement
|
156
|
-
|
157
|
-
|
158
|
-
:
|
159
|
-
:
|
160
|
-
|
140
|
+
border-left: $step_left $announcement_border
|
141
|
+
border-bottom: $step_bottom $announcement_border
|
142
|
+
background: $announcement
|
143
|
+
color: $announcement_text
|
161
144
|
ol
|
162
|
-
|
163
|
-
:
|
164
|
-
:
|
165
|
-
|
145
|
+
list-style: none
|
146
|
+
margin: 0px
|
147
|
+
padding: 0px
|
166
148
|
li.step
|
167
|
-
:
|
168
|
-
:
|
149
|
+
padding: 3px 3px 3px 18px
|
150
|
+
margin: 5px 0px 5px 5px
|
169
151
|
li
|
170
|
-
:
|
171
|
-
:
|
152
|
+
margin: 0em 0em 0em 1em
|
153
|
+
padding: 0em 0em 0em 0.2em
|
172
154
|
span.param
|
173
|
-
|
155
|
+
font-weight: bold
|
174
156
|
li.failed
|
175
|
-
|
176
|
-
|
177
|
-
:
|
178
|
-
:
|
157
|
+
border-left: $step_left $failed_border
|
158
|
+
border-bottom: $step_bottom $failed_border
|
159
|
+
background: $failed
|
160
|
+
color: $failed_text
|
179
161
|
li.passed
|
180
|
-
|
181
|
-
|
182
|
-
:
|
183
|
-
:
|
162
|
+
border-left: $step_left $passed_border
|
163
|
+
border-bottom: $step_bottom $passed_border
|
164
|
+
background: $passed
|
165
|
+
color: $passed_text
|
184
166
|
li.skipped
|
185
|
-
|
186
|
-
|
187
|
-
:
|
188
|
-
:
|
167
|
+
border-left: $step_left $skipped_border
|
168
|
+
border-bottom: $step_bottom $skipped_border
|
169
|
+
background: $skipped
|
170
|
+
color: $skipped_text
|
189
171
|
li.pending
|
190
|
-
|
191
|
-
|
192
|
-
:
|
193
|
-
:
|
172
|
+
border-left: $step_left $pending_border
|
173
|
+
border-bottom: $step_bottom $pending_border
|
174
|
+
background: $pending
|
175
|
+
color: $pending_text
|
194
176
|
li.undefined
|
195
|
-
|
196
|
-
|
197
|
-
:
|
198
|
-
:
|
177
|
+
border-left: $step_left $undefined_border
|
178
|
+
border-bottom: $step_bottom $undefined_border
|
179
|
+
background: $undefined
|
180
|
+
color: $undefined_text
|
199
181
|
li.announcement
|
200
|
-
|
201
|
-
|
202
|
-
:
|
203
|
-
:
|
204
|
-
|
205
|
-
|
182
|
+
border-left: $step_left $announcement_border
|
183
|
+
border-bottom: $step_bottom $announcement_border
|
184
|
+
background: $announcement
|
185
|
+
color: $announcement_text
|
186
|
+
margin-left: 10px
|
206
187
|
#summary
|
207
|
-
:
|
208
|
-
:
|
209
|
-
|
210
|
-
:
|
211
|
-
:
|
212
|
-
:
|
213
|
-
|
188
|
+
margin: 0px
|
189
|
+
padding: 5px 10px
|
190
|
+
text-align: right
|
191
|
+
top: 0px
|
192
|
+
right: 0px
|
193
|
+
float: right
|
214
194
|
p
|
215
|
-
:
|
216
|
-
|
195
|
+
margin: 0 0 0 2px
|
217
196
|
#totals
|
218
|
-
|
219
|
-
|
220
|
-
.ruby
|
221
|
-
:font-size 12px
|
222
|
-
:font-family monospace
|
223
|
-
:color white
|
224
|
-
:background black
|
225
|
-
:padding 0.1em 0 0.2em 0
|
197
|
+
font-size: 1.2em
|
226
198
|
|
227
|
-
|
228
|
-
|
199
|
+
.ruby
|
200
|
+
font-size: 12px
|
201
|
+
font-family: monospace
|
202
|
+
color: white
|
203
|
+
background: black
|
204
|
+
padding: 0.1em 0 0.2em 0
|
205
|
+
.keyword
|
206
|
+
color: #ff6600
|
229
207
|
.constant
|
230
|
-
:
|
208
|
+
color: #339999
|
231
209
|
.attribute
|
232
|
-
:
|
210
|
+
color: white
|
233
211
|
.global
|
234
|
-
:
|
212
|
+
color: white
|
235
213
|
.module
|
236
|
-
:
|
214
|
+
color: white
|
237
215
|
.class
|
238
|
-
:
|
216
|
+
color: white
|
239
217
|
.string
|
240
|
-
:
|
218
|
+
color: #66ff00
|
241
219
|
.ident
|
242
|
-
:
|
220
|
+
color: white
|
243
221
|
.method
|
244
|
-
:
|
222
|
+
color: #ffcc00
|
245
223
|
.number
|
246
|
-
:
|
224
|
+
color: white
|
247
225
|
.char
|
248
|
-
:
|
226
|
+
color: white
|
249
227
|
.comment
|
250
|
-
:
|
228
|
+
color: #9933cc
|
251
229
|
.symbol
|
252
|
-
:
|
230
|
+
color: white
|
253
231
|
.regex
|
254
|
-
:
|
232
|
+
color: #44b4cc
|
255
233
|
.punct
|
256
|
-
:
|
234
|
+
color: white
|
257
235
|
.escape
|
258
|
-
:
|
259
|
-
.interp
|
260
|
-
:
|
261
|
-
.expr
|
262
|
-
:
|
263
|
-
|
236
|
+
color: white
|
237
|
+
.interp
|
238
|
+
color: white
|
239
|
+
.expr
|
240
|
+
color: white
|
264
241
|
.offending
|
265
|
-
:
|
242
|
+
background: #333333
|
266
243
|
.linenum
|
267
|
-
:
|
268
|
-
:
|
269
|
-
:
|
270
|
-
:
|
271
|
-
|
244
|
+
width: 75px
|
245
|
+
padding: 0.1em 1em 0.2em 0
|
246
|
+
color: black
|
247
|
+
background: #fffbd3
|