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.
Files changed (52) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile +1 -1
  3. data/History.txt +20 -0
  4. data/README.rdoc +1 -1
  5. data/bin/cucumber +1 -1
  6. data/cucumber.gemspec +19 -12
  7. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -1
  8. data/examples/i18n/he/features/step_definitons/calculator_steps.rb +1 -1
  9. data/examples/i18n/ro/features/adunare.feature +12 -0
  10. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +4 -7
  11. data/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +3 -3
  12. data/features/background.feature +10 -10
  13. data/features/bootstrap.feature +13 -0
  14. data/features/execute_with_tag_filter.feature +2 -2
  15. data/features/hooks.feature +2 -2
  16. data/features/iso-8859-1.feature +6 -0
  17. data/features/stats_formatters.feature +2 -2
  18. data/features/step_definitions/cucumber_steps.rb +8 -2
  19. data/features/step_definitions/iso-8859-1_steps.rb +24 -0
  20. data/features/support/env.rb +2 -2
  21. data/features/tagged_hooks.feature +5 -5
  22. data/features/transforms.feature +63 -0
  23. data/gem_tasks/examples.rake +1 -1
  24. data/legacy_features/diffing.feature +1 -1
  25. data/legacy_features/html_formatter.feature +1 -1
  26. data/legacy_features/html_formatter/a.html +68 -116
  27. data/legacy_features/language_help.feature +44 -45
  28. data/legacy_features/wire_protocol.feature +2 -2
  29. data/legacy_features/wire_protocol_erb.feature +57 -0
  30. data/lib/cucumber/ast/table.rb +2 -2
  31. data/lib/cucumber/ast/tree_walker.rb +2 -2
  32. data/lib/cucumber/cli/configuration.rb +1 -1
  33. data/lib/cucumber/cli/options.rb +4 -0
  34. data/lib/cucumber/feature_file.rb +45 -6
  35. data/lib/cucumber/formatter/console.rb +1 -1
  36. data/lib/cucumber/formatter/cucumber.css +21 -17
  37. data/lib/cucumber/formatter/cucumber.sass +170 -194
  38. data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +2 -2
  39. data/lib/cucumber/formatter/html.rb +8 -5
  40. data/lib/cucumber/platform.rb +3 -3
  41. data/lib/cucumber/rake/task.rb +22 -15
  42. data/lib/cucumber/rb_support/rb_transform.rb +17 -0
  43. data/lib/cucumber/rb_support/rb_world.rb +2 -2
  44. data/lib/cucumber/runtime/for_programming_languages.rb +3 -1
  45. data/lib/cucumber/runtime/user_interface.rb +2 -2
  46. data/lib/cucumber/wire_support/configuration.rb +2 -1
  47. data/spec/cucumber/ast/table_spec.rb +10 -0
  48. data/spec/cucumber/cli/options_spec.rb +7 -0
  49. data/spec/cucumber/formatter/html_spec.rb +1 -3
  50. data/spec/cucumber/rb_support/rb_transform_spec.rb +21 -0
  51. metadata +104 -98
  52. 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 signalling the end of a packet. See the
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
+
@@ -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
- raw[1..-1]
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
@@ -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
- LANGUAGE_PATTERN = /language:\s*(.*)/ #:nodoc:
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
- p = File.expand_path(@path)
56
- e.message << "\nCouldn't open #{p}"
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
@@ -125,7 +125,7 @@ module Cucumber
125
125
  end
126
126
  end
127
127
 
128
- def embed(file, mime_type)
128
+ def embed(file, mime_type, label)
129
129
  # no-op
130
130
  end
131
131
 
@@ -2,7 +2,7 @@
2
2
  /* Regenerate with rake sass */
3
3
  body {
4
4
  font-size: 0px;
5
- color: #FFFFFF;
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: #000000;
13
+ color: black;
14
14
  }
15
15
  .cucumber #cucumber-header, td #cucumber-header, th #cucumber-header {
16
- background: #65C400;
17
- color: #FFFFFF;
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: #65C400;
29
- color: #FFFFFF;
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: #246AC1;
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: #000000;
77
+ color: black;
74
78
  }
75
79
  .cucumber a, td a, th a {
76
80
  text-decoration: none;
77
- color: #BE5C00;
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: #000000;
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: #FF6600;
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: #66FF00;
236
+ color: #66ff00;
233
237
  }
234
238
  .ruby .ident {
235
239
  color: white;
236
240
  }
237
241
  .ruby .method {
238
- color: #FFCC00;
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: #9933CC;
251
+ color: #9933cc;
248
252
  }
249
253
  .ruby .symbol {
250
254
  color: white;
251
255
  }
252
256
  .ruby .regex {
253
- color: #44B4CC;
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: #000000;
274
- background: #FFFBD3;
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
- !step_left = 5px "solid"
5
- !step_bottom = 1px "solid"
4
+ $step_left: 5px solid
5
+ $step_bottom: 1px solid
6
6
 
7
- !failed = #FFFBD3
8
- !failed_border = #C20000
9
- !failed_text = #C20000
7
+ $failed: #fffbd3
8
+ $failed_border: #c20000
9
+ $failed_text: #c20000
10
10
 
11
- !passed = #DBFFB4
12
- !passed_border = #65C400
13
- !passed_text = #3D7700
11
+ $passed: #dbffb4
12
+ $passed_border: #65c400
13
+ $passed_text: #3d7700
14
14
 
15
- !skipped = #E0FFFF
16
- !skipped_border = #00FFFF
17
- !skipped_text = #001111
15
+ $skipped: #e0ffff
16
+ $skipped_border: aqua
17
+ $skipped_text: #001111
18
18
 
19
- !pending = #FCFB98
20
- !pending_border = #FAF834
21
- !pending_text = #131313
19
+ $pending: #fcfb98
20
+ $pending_border: #faf834
21
+ $pending_text: #131313
22
22
 
23
- !undefined = #FCFB98
24
- !undefined_border = #FAF834
25
- !undefined_text = #131313
23
+ $undefined: #fcfb98
24
+ $undefined_border: #faf834
25
+ $undefined_text: #131313
26
26
 
27
- !announcement = #E0FFFF
28
- !announcement_border = #00FFFF
29
- !announcement_text = #001111
27
+ $announcement: #e0ffff
28
+ $announcement_border: aqua
29
+ $announcement_text: #001111
30
30
 
31
31
  body
32
- :font-size 0px
33
- :color #FFFFFF
34
- :margin 0px
35
- :padding 0px
32
+ font-size: 0px
33
+ color: white
34
+ margin: 0px
35
+ padding: 0px
36
36
 
37
37
  .cucumber,td,th
38
- :font normal 11px "Lucida Grande", Helvetica, sans-serif
39
- :background white
40
- :color #000000
41
-
38
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif
39
+ background: white
40
+ color: black
42
41
  #cucumber-header
43
- :background #65C400
44
- :color #FFFFFF
45
- :height 6em
46
-
42
+ background: #65c400
43
+ color: white
44
+ height: 6em
47
45
  #expand-collapse
48
46
  p
49
- :float right
50
- :margin 0 0 0 10px
51
-
47
+ float: right
48
+ margin: 0 0 0 10px
52
49
  .scenario
53
50
  h3
54
- :font-size 11px
55
- :padding 3px
56
- :margin 0
57
- :background #65C400
58
- :color #FFFFFF
59
- :font-weight bold
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
- :margin 0px 10px 0px 10px
63
- :padding 10px
64
- :font-family "Lucida Grande", Helvetica, sans-serif
65
- :font-size 2em
66
- :position absolute
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
- :margin-bottom 2px
70
-
64
+ margin-bottom: 2px
71
65
  div.feature
72
- :padding 2px
73
- :margin 0px 10px 5px 10px
74
-
66
+ padding: 2px
67
+ margin: 0px 10px 5px 10px
75
68
  div.examples
76
- :padding 0em 0em 0em 1em
77
-
69
+ padding: 0em 0em 0em 1em
78
70
  .stats
79
- :margin 2em
80
-
71
+ margin: 2em
81
72
  .summary
82
73
  ul.features
83
74
  li
84
- :display inline
85
-
75
+ display: inline
86
76
  .step_name
87
- :float left
88
-
77
+ float: left
89
78
  .step_file
90
- :text-align right
91
- :color #999999
79
+ text-align: right
80
+ color: #999999
92
81
  a
93
- :color #999999
94
-
95
-
82
+ color: #999999
83
+ .scenario_file
84
+ float: right
85
+ color: #999999
96
86
  .tag
97
- :font-weight bold
98
- :color #246AC1
99
-
87
+ font-weight: bold
88
+ color: #246ac1
100
89
  .backtrace
101
- :margin-top 0
102
- :margin-bottom 0
103
- :margin-left 1em
104
- :color #000000
105
-
90
+ margin-top: 0
91
+ margin-bottom: 0
92
+ margin-left: 1em
93
+ color: black
106
94
  a
107
- :text-decoration none
108
- :color #BE5C00
109
-
95
+ text-decoration: none
96
+ color: #be5c00
110
97
  &:hover
111
- :text-decoration underline
98
+ text-decoration: underline
112
99
  &:visited
113
- :font-weight normal
114
-
100
+ font-weight: normal
115
101
  div.examples
116
- :margin 5px 0px 5px 15px
117
- :color #000000
118
-
102
+ margin: 5px 0px 5px 15px
103
+ color: black
119
104
  .outline
120
105
  table
121
- :margin 0px 0px 5px 10px
122
-
106
+ margin: 0px 0px 5px 10px
123
107
  table
124
- :border-collapse collapse
108
+ border-collapse: collapse
125
109
  td
126
- :padding 3px 3px 3px 5px
110
+ padding: 3px 3px 3px 5px
127
111
  td.failed, td.passed, td.skipped, td.pending, td.undefined
128
- :padding-left 18px
129
- :padding-right 10px
112
+ padding-left: 18px
113
+ padding-right: 10px
130
114
  td.failed
131
- :border-left= !step_left !failed_border
132
- :border-bottom= !step_bottom !failed_border
133
- :background= !failed
134
- :color= !failed_text
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
- :border-left= !step_left !passed_border
137
- :border-bottom= !step_bottom !passed_border
138
- :background= !passed
139
- :color= !passed_text
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
- :border-left= !step_left !skipped_border
142
- :border-bottom= !step_bottom !skipped_border
143
- :background= !skipped
144
- :color= !skipped_text
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
- :border-left= !step_left !pending_border
147
- :border-bottom= !step_bottom !pending_border
148
- :background= !pending
149
- :color= !pending_text
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
- :border-left= !step_left !undefined_border
152
- :border-bottom= !step_bottom !undefined_border
153
- :background= !undefined
154
- :color= !undefined_text
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
- :border-left= !step_left !announcement_border
157
- :border-bottom= !step_bottom !announcement_border
158
- :background= !announcement
159
- :color= !announcement_text
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
- :list-style none
163
- :margin 0px
164
- :padding 0px
165
-
145
+ list-style: none
146
+ margin: 0px
147
+ padding: 0px
166
148
  li.step
167
- :padding 3px 3px 3px 18px
168
- :margin 5px 0px 5px 5px
149
+ padding: 3px 3px 3px 18px
150
+ margin: 5px 0px 5px 5px
169
151
  li
170
- :margin 0em 0em 0em 1em
171
- :padding 0em 0em 0em 0.2em
152
+ margin: 0em 0em 0em 1em
153
+ padding: 0em 0em 0em 0.2em
172
154
  span.param
173
- :font-weight bold
155
+ font-weight: bold
174
156
  li.failed
175
- :border-left= !step_left !failed_border
176
- :border-bottom= !step_bottom !failed_border
177
- :background= !failed
178
- :color= !failed_text
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
- :border-left= !step_left !passed_border
181
- :border-bottom= !step_bottom !passed_border
182
- :background= !passed
183
- :color= !passed_text
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
- :border-left= !step_left !skipped_border
186
- :border-bottom= !step_bottom !skipped_border
187
- :background= !skipped
188
- :color= !skipped_text
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
- :border-left= !step_left !pending_border
191
- :border-bottom= !step_bottom !pending_border
192
- :background= !pending
193
- :color= !pending_text
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
- :border-left= !step_left !undefined_border
196
- :border-bottom= !step_bottom !undefined_border
197
- :background= !undefined
198
- :color= !undefined_text
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
- :border-left= !step_left !announcement_border
201
- :border-bottom= !step_bottom !announcement_border
202
- :background= !announcement
203
- :color= !announcement_text
204
- :margin-left= 10px
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
- :margin 0px
208
- :padding 5px 10px
209
- :text-align right
210
- :top 0px
211
- :right 0px
212
- :float right
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
- :margin 0 0 0 2px
216
-
195
+ margin: 0 0 0 2px
217
196
  #totals
218
- :font-size 1.2em
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
- .keyword
228
- :color #FF6600
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
- :color #339999
208
+ color: #339999
231
209
  .attribute
232
- :color white
210
+ color: white
233
211
  .global
234
- :color white
212
+ color: white
235
213
  .module
236
- :color white
214
+ color: white
237
215
  .class
238
- :color white
216
+ color: white
239
217
  .string
240
- :color #66FF00
218
+ color: #66ff00
241
219
  .ident
242
- :color white
220
+ color: white
243
221
  .method
244
- :color #FFCC00
222
+ color: #ffcc00
245
223
  .number
246
- :color white
224
+ color: white
247
225
  .char
248
- :color white
226
+ color: white
249
227
  .comment
250
- :color #9933CC
228
+ color: #9933cc
251
229
  .symbol
252
- :color white
230
+ color: white
253
231
  .regex
254
- :color #44B4CC
232
+ color: #44b4cc
255
233
  .punct
256
- :color white
234
+ color: white
257
235
  .escape
258
- :color white
259
- .interp
260
- :color white
261
- .expr
262
- :color white
263
-
236
+ color: white
237
+ .interp
238
+ color: white
239
+ .expr
240
+ color: white
264
241
  .offending
265
- :background #333333
242
+ background: #333333
266
243
  .linenum
267
- :width 75px
268
- :padding 0.1em 1em 0.2em 0
269
- :color #000000
270
- :background #FFFBD3
271
-
244
+ width: 75px
245
+ padding: 0.1em 1em 0.2em 0
246
+ color: black
247
+ background: #fffbd3