cucumber 0.10.0 → 0.10.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/.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
|