cucumber 0.4.4 → 0.4.5.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/.gitignore +2 -1
  2. data/Caliper.yml +5 -0
  3. data/History.txt +24 -1
  4. data/Rakefile +1 -1
  5. data/VERSION.yml +2 -2
  6. data/cucumber.gemspec +18 -27
  7. data/cucumber.yml +10 -4
  8. data/examples/i18n/README.textile +1 -1
  9. data/examples/i18n/bg/features/consecutive_calculations.feature +1 -1
  10. data/examples/i18n/bg/features/division.feature +1 -1
  11. data/examples/i18n/en-lol/Rakefile +1 -3
  12. data/examples/i18n/en/features/division.feature +4 -4
  13. data/examples/i18n/et/features/jagamine.feature +1 -1
  14. data/examples/i18n/fr/features/addition2.feature +17 -0
  15. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +13 -0
  16. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +3 -3
  17. data/examples/i18n/lt/features/addition.feature +2 -2
  18. data/examples/i18n/lt/features/division.feature +1 -1
  19. data/examples/i18n/zh-CN/Rakefile +1 -3
  20. data/examples/i18n/zh-TW/Rakefile +1 -3
  21. data/examples/tcl/README.textile +11 -0
  22. data/examples/tcl/Rakefile +6 -0
  23. data/examples/tcl/features/fibonnacci.feature +17 -0
  24. data/examples/tcl/features/step_definitions/fib_steps.rb +7 -0
  25. data/examples/tcl/features/support/env.rb +6 -0
  26. data/examples/tcl/src/fib.tcl +3 -0
  27. data/examples/tickets/features/177/1.feature +3 -4
  28. data/examples/tickets/features/177/2.feature +2 -3
  29. data/examples/tickets/features/241.feature +2 -3
  30. data/examples/tickets/features/301/filter_background_tagged_hooks.feature +1 -1
  31. data/features/cucumber_cli.feature +4 -2
  32. data/features/custom_formatter.feature +32 -31
  33. data/features/html_formatter/a.html +319 -102
  34. data/features/language_help.feature +12 -14
  35. data/features/support/env.rb +1 -1
  36. data/features/transform.feature +17 -3
  37. data/gem_tasks/features.rake +3 -1
  38. data/lib/cucumber/ast/scenario_outline.rb +1 -1
  39. data/lib/cucumber/ast/step_invocation.rb +2 -2
  40. data/lib/cucumber/cli/configuration.rb +2 -17
  41. data/lib/cucumber/cli/language_help_formatter.rb +1 -1
  42. data/lib/cucumber/cli/options.rb +5 -4
  43. data/lib/cucumber/formatter/cucumber.css +198 -82
  44. data/lib/cucumber/formatter/cucumber.sass +173 -71
  45. data/lib/cucumber/formatter/html.rb +371 -195
  46. data/lib/cucumber/formatter/io.rb +33 -0
  47. data/lib/cucumber/formatter/junit.rb +16 -7
  48. data/lib/cucumber/formatter/pdf.rb +5 -5
  49. data/lib/cucumber/formatter/pretty.rb +6 -8
  50. data/lib/cucumber/formatter/progress.rb +4 -2
  51. data/lib/cucumber/formatter/rerun.rb +4 -2
  52. data/lib/cucumber/formatter/steps.rb +2 -2
  53. data/lib/cucumber/formatter/tag_cloud.rb +6 -2
  54. data/lib/cucumber/formatter/usage.rb +2 -2
  55. data/lib/cucumber/languages.yml +205 -281
  56. data/lib/cucumber/parser/feature.rb +348 -82
  57. data/lib/cucumber/parser/feature.tt +47 -11
  58. data/lib/cucumber/parser/i18n.tt +7 -17
  59. data/lib/cucumber/parser/natural_language.rb +45 -18
  60. data/lib/cucumber/rb_support/rb_transform.rb +1 -1
  61. data/lib/cucumber/step_mother.rb +2 -3
  62. data/lib/cucumber/webrat/element_locator.rb +9 -5
  63. data/spec/cucumber/cli/options_spec.rb +0 -3
  64. data/spec/cucumber/formatter/html_spec.rb +15 -2
  65. data/spec/cucumber/formatter/junit_spec.rb +3 -0
  66. data/spec/cucumber/treetop_parser/fit_scenario.feature +2 -2
  67. data/spec/cucumber/treetop_parser/given_scenario.feature +1 -1
  68. data/spec/cucumber/treetop_parser/multiple_tables.feature +2 -2
  69. data/spec/cucumber/treetop_parser/test_dos.feature +1 -1
  70. metadata +17 -26
  71. data/Manifest.txt +0 -0
  72. data/lib/cucumber/rails/action_controller.rb +0 -38
  73. data/lib/cucumber/rails/active_record.rb +0 -30
  74. data/lib/cucumber/rails/rspec.rb +0 -10
  75. data/lib/cucumber/rails/test_unit.rb +0 -9
  76. data/lib/cucumber/rails/world.rb +0 -30
  77. data/rails_generators/cucumber/USAGE +0 -11
  78. data/rails_generators/cucumber/cucumber_generator.rb +0 -117
  79. data/rails_generators/cucumber/templates/cucumber +0 -17
  80. data/rails_generators/cucumber/templates/cucumber.rake +0 -46
  81. data/rails_generators/cucumber/templates/cucumber_environment.rb +0 -30
  82. data/rails_generators/cucumber/templates/env.rb +0 -49
  83. data/rails_generators/cucumber/templates/paths.rb +0 -27
  84. data/rails_generators/cucumber/templates/spork_env.rb +0 -57
  85. data/rails_generators/cucumber/templates/version_check.rb +0 -31
  86. data/rails_generators/cucumber/templates/webrat_steps.rb +0 -241
  87. data/rails_generators/feature/USAGE +0 -12
  88. data/rails_generators/feature/feature_generator.rb +0 -40
  89. data/rails_generators/feature/templates/feature.erb +0 -31
  90. data/rails_generators/feature/templates/steps.erb +0 -14
@@ -6,20 +6,18 @@ Feature: Language help
6
6
  When I run cucumber -l pt help
7
7
  Then it should pass with
8
8
  """
9
- | name | 'Portuguese' |
10
- | native | 'português' |
11
- | encoding | 'UTF-8' |
12
- | space_after_keyword | 'true' |
13
- | feature | 'Funcionalidade' |
14
- | background | 'Contexto' |
15
- | scenario | 'Cenário' / 'Cenario' |
16
- | scenario_outline | 'Esquema do Cenário' / 'Esquema do Cenario' |
17
- | examples | 'Exemplos' |
18
- | given | 'Dado' |
19
- | when | 'Quando' |
20
- | then | 'Então' / 'Entao' |
21
- | and | 'E' |
22
- | but | 'Mas' |
9
+ | name | Portuguese |
10
+ | native | português |
11
+ | feature | Funcionalidade |
12
+ | background | Contexto |
13
+ | scenario | Cenário / Cenario |
14
+ | scenario_outline | Esquema do Cenário / Esquema do Cenario |
15
+ | examples | Exemplos |
16
+ | given | * / Dado |
17
+ | when | * / Quando |
18
+ | then | * / Então / Entao |
19
+ | and | * / E |
20
+ | but | * / Mas |
23
21
 
24
22
  """
25
23
  Scenario: List languages
@@ -111,7 +111,7 @@ class CucumberWorld
111
111
  exec cmd
112
112
  end
113
113
  end
114
- sleep (ENV["RUN_CODE_RUN"] ? 5.0 : 1.0)
114
+ sleep 1.0
115
115
  end
116
116
 
117
117
  def terminate_background_jobs
@@ -30,6 +30,10 @@ Feature: transform
30
30
  Then /^I should not transform ('\d+') to an Integer$/ do |string|
31
31
  string.should be_kind_of(String)
32
32
  end
33
+
34
+ Then /^I should transform ((?:nothing|'\d+') to an optional Integer)$/ do |integer|
35
+ integer.should be_nil
36
+ end
33
37
  """
34
38
  And a file named "features/support/env.rb" with:
35
39
  """
@@ -37,6 +41,10 @@ Feature: transform
37
41
  /'(\d+)' to an Integer/.match(step_arg).captures[0].to_i
38
42
  end
39
43
 
44
+ Transform /^(?:nothing|'(\d+)') to an optional Integer$/ do |str|
45
+ str ? str.to_i : nil
46
+ end
47
+
40
48
  Transform /^'(\d+)' to a Float$/ do |integer_string|
41
49
  Transform("'#{integer_string}' to an Integer").to_f
42
50
  end
@@ -82,8 +90,11 @@ Feature: transform
82
90
 
83
91
  Scenario: transform without matches
84
92
  Then I should not transform '10' to an Integer
93
+
94
+ Scenario: transform with optional arguments not given
95
+ Then I should transform nothing to an optional Integer
85
96
  """
86
- When I run cucumber -s features
97
+ When I run cucumber --backtrace -s features
87
98
  Then it should pass with
88
99
  """
89
100
  Feature: Step argument transformations
@@ -106,8 +117,11 @@ Feature: transform
106
117
  Scenario: transform without matches
107
118
  Then I should not transform '10' to an Integer
108
119
 
109
- 6 scenarios (6 passed)
110
- 6 steps (6 passed)
120
+ Scenario: transform with optional arguments not given
121
+ Then I should transform nothing to an optional Integer
122
+
123
+ 7 scenarios (7 passed)
124
+ 7 steps (7 passed)
111
125
 
112
126
  """
113
127
 
@@ -3,7 +3,9 @@ require 'cucumber/rake/task'
3
3
  require 'cucumber/platform'
4
4
 
5
5
  Cucumber::Rake::Task.new do |t|
6
- if(Cucumber::JRUBY)
6
+ if(ENV["RUN_CODE_RUN"])
7
+ t.profile = 'run_code_run'
8
+ elsif(Cucumber::JRUBY)
7
9
  t.profile = 'jruby'
8
10
  elsif(Cucumber::WINDOWS_MRI)
9
11
  t.profile = 'windows_mri'
@@ -73,7 +73,7 @@ module Cucumber
73
73
 
74
74
  def visit_scenario_name(visitor, row)
75
75
  visitor.visit_scenario_name(
76
- @feature.language.scenario_keyword,
76
+ @feature.language.scenario_keywords[0] + ":",
77
77
  row.name,
78
78
  file_colon_line(row.line),
79
79
  source_indent(first_line_length)
@@ -106,7 +106,7 @@ module Cucumber
106
106
 
107
107
  def filter_backtrace(e)
108
108
  return e if Cucumber.use_full_backtrace
109
- pwd = /#{Dir.pwd}\//m
109
+ pwd = /#{Regexp.escape(Dir.pwd)}\//m
110
110
  (e.backtrace || []).each{|line| line.gsub!(pwd, "./")}
111
111
 
112
112
  filtered = (e.backtrace || []).reject do |line|
@@ -142,7 +142,7 @@ module Cucumber
142
142
  end
143
143
 
144
144
  def actual_keyword
145
- repeat_keywords = [language.but_keywords, language.and_keywords].flatten
145
+ repeat_keywords = [language.but_keywords(false), language.and_keywords(false)].flatten
146
146
  if repeat_keywords.index(@step.keyword) && previous
147
147
  previous.actual_keyword
148
148
  else
@@ -130,25 +130,10 @@ module Cucumber
130
130
  return [Formatter::Pretty.new(step_mother, nil, @options)] if @options[:autoformat]
131
131
  @options[:formats].map do |format_and_out|
132
132
  format = format_and_out[0]
133
- out = format_and_out[1]
134
- if String === out # file name
135
- unless File.directory?(out)
136
- out = File.open(out, Cucumber.file_mode('w'))
137
- at_exit do
138
-
139
- # Since Spork "never" actually exits, I want to flush and close earlier...
140
- unless out.closed?
141
- out.flush
142
- out.close
143
- end
144
-
145
- end
146
- end
147
- end
148
-
133
+ path_or_io = format_and_out[1]
149
134
  begin
150
135
  formatter_class = formatter_class(format)
151
- formatter_class.new(step_mother, out, @options)
136
+ formatter_class.new(step_mother, path_or_io, @options)
152
137
  rescue Exception => e
153
138
  e.message << "\nError creating formatter: #{format}"
154
139
  raise e
@@ -31,7 +31,7 @@ http://wiki.github.com/aslakhellesoy/cucumber/spoken-languages
31
31
  def list_keywords(io, lang)
32
32
  language = Parser::NaturalLanguage.get(nil, lang)
33
33
  raw = Parser::NaturalLanguage::KEYWORD_KEYS.map do |key|
34
- [key, language.keywords(key)]
34
+ [key, language.keywords(key).join(" / ")]
35
35
  end
36
36
 
37
37
  print_table io, raw, :incomplete => language.incomplete?
@@ -101,7 +101,7 @@ module Cucumber
101
101
  "Examples:",
102
102
  "cucumber examples/i18n/en/features",
103
103
  "cucumber @features.txt (See --format rerun)",
104
- "cucumber --language it examples/i18n/it/features/somma.feature:6:98:113",
104
+ "cucumber examples/i18n/it/features/somma.feature:6:98:113",
105
105
  "cucumber -s -i http://rubyurl.com/eeCl", "", "",
106
106
  ].join("\n")
107
107
  opts.on("-r LIBRARY|DIR", "--require LIBRARY|DIR",
@@ -115,15 +115,16 @@ module Cucumber
115
115
  "This option can be specified multiple times.") do |v|
116
116
  @options[:require] << v
117
117
  end
118
- opts.on("-l LANG", "--language LANG",
118
+ opts.on("-l LANG", "--language LANG (DEPRECATED)",
119
119
  "Specify language for features (Default: #{@options[:lang]})",
120
120
  %{Run with "--language help" to see all languages},
121
121
  %{Run with "--language LANG help" to list keywords for LANG}) do |v|
122
122
  if v == 'help'
123
123
  list_languages_and_exit
124
- elsif args==['help'] # I think this conditional is just cruft and can be removed
124
+ elsif args==['help']
125
125
  list_keywords_and_exit(v)
126
126
  else
127
+ warn("\nWARNING: --language is deprecated and will be removed in version 0.5.\nSee http://wiki.github.com/aslakhellesoy/cucumber/spoken-languages")
127
128
  @options[:lang] = v
128
129
  end
129
130
  end
@@ -188,7 +189,7 @@ module Cucumber
188
189
  @options[:dry_run] = true
189
190
  @options[:snippets] = false
190
191
  end
191
- opts.on("-a", "--autoformat DIRECTORY",
192
+ opts.on("-a", "--autoformat DIR",
192
193
  "Reformats (pretty prints) feature files and write them to DIRECTORY.",
193
194
  "Be careful if you choose to overwrite the originals.",
194
195
  "Implies --dry-run --formatter pretty.") do |directory|
@@ -1,132 +1,248 @@
1
+ /* cucumber.css is generated from cucumber.sass */
2
+ /* Regenerate with rake sass */
3
+ body {
4
+ font-size: 0px;
5
+ color: #FFFFFF;
6
+ margin: 0px;
7
+ padding: 0px;
8
+ }
1
9
 
2
-
3
- .cucumber {
4
- font-family: "Lucida Grande", Helvetica, sans-serif;
5
- font-size: 0.7em;
10
+ .cucumber, td, th {
11
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
6
12
  background: white;
7
- padding: 1em;
13
+ color: #000000;
14
+ }
15
+ .cucumber #cucumber-header, td #cucumber-header, th #cucumber-header {
16
+ background: #65C400;
17
+ color: #FFFFFF;
18
+ height: 5em;
19
+ }
20
+ .cucumber .scenario h3, td .scenario h3, th .scenario h3 {
21
+ font-size: 11px;
22
+ padding: 3px;
23
+ margin: 0;
24
+ background: #65C400;
25
+ color: #FFFFFF;
26
+ font-weight: bold;
8
27
  }
9
- .cucumber h1, .cucumber h2, .cucumber h3, .cucumber h4, .cucumber ol, .cucumber li, .cucumber pre, .cucumber p {
10
- font-size: 1em;
11
- padding: 0px;
12
- margin: 0px;
28
+ .cucumber h1, td h1, th h1 {
29
+ margin: 0px 10px 0px 10px;
30
+ padding: 10px;
31
+ font-family: "Lucida Grande", Helvetica, sans-serif;
32
+ font-size: 1.8em;
33
+ position: absolute;
13
34
  }
14
- .cucumber div.feature {
15
- border: 1px solid;
16
- padding: 2px;
17
- margin: 4px;
35
+ .cucumber h4, td h4, th h4 {
36
+ margin-bottom: 2px;
18
37
  }
19
- .cucumber div.feature div.background, .cucumber div.feature div.scenario, .cucumber div.feature p {
20
- padding: 0em 0em 0em 1em;
38
+ .cucumber div.feature, td div.feature, th div.feature {
39
+ padding: 2px;
40
+ margin: 0px 10px 5px 10px;
21
41
  }
22
- .cucumber div.feature div.background div.examples, .cucumber div.feature div.scenario div.examples, .cucumber div.feature p div.examples {
42
+ .cucumber div.examples, td div.examples, th div.examples {
23
43
  padding: 0em 0em 0em 1em;
24
44
  }
25
- .cucumber .stats {
45
+ .cucumber .stats, td .stats, th .stats {
26
46
  margin: 2em;
27
47
  }
28
- .cucumber .summary ul.features li {
48
+ .cucumber .summary ul.features li, td .summary ul.features li, th .summary ul.features li {
29
49
  display: inline;
30
50
  }
31
- .cucumber .backtrace {
51
+ .cucumber .tag, td .tag, th .tag {
52
+ font-weight: bold;
53
+ color: #246AC1;
54
+ }
55
+ .cucumber .backtrace, td .backtrace, th .backtrace {
32
56
  margin-top: 0;
33
57
  margin-bottom: 0;
34
58
  margin-left: 1em;
59
+ color: #000000;
35
60
  }
36
- .cucumber a {
61
+ .cucumber a, td a, th a {
37
62
  text-decoration: none;
38
- color: inherit;
63
+ color: #BE5C00;
39
64
  }
40
- .cucumber a:hover {
65
+ .cucumber a:hover, td a:hover, th a:hover {
41
66
  text-decoration: underline;
42
67
  }
43
- .cucumber a:visited {
68
+ .cucumber a:visited, td a:visited, th a:visited {
44
69
  font-weight: normal;
45
70
  }
46
- .cucumber a div.examples {
47
- border: 1px solid;
48
- padding: 2px;
49
- margin: 4px;
71
+ .cucumber a div.examples, td a div.examples, th a div.examples {
72
+ margin: 5px 0px 5px 15px;
73
+ color: #000000;
50
74
  }
51
- .cucumber table {
75
+ .cucumber .outline table, td .outline table, th .outline table {
76
+ margin: 0px 0px 5px 10px;
77
+ }
78
+ .cucumber table, td table, th table {
52
79
  border-collapse: collapse;
53
80
  }
54
- .cucumber table td, .cucumber table th {
55
- font-size: 0.7em;
56
- border: 1px solid #AAAAAA;
81
+ .cucumber table td, td table td, th table td {
82
+ padding: 3px 3px 3px 5px;
57
83
  }
58
- .cucumber table td.failed {
59
- background: #FFC0CB;
60
- color: #8B0000;
84
+ .cucumber table td.failed, .cucumber table td.passed, .cucumber table td.skipped, .cucumber table td.pending, .cucumber table td.undefined, td table td.failed, td table td.passed, td table td.skipped, td table td.pending, td table td.undefined, th table td.failed, th table td.passed, th table td.skipped, th table td.pending, th table td.undefined {
85
+ padding-left: 18px;
86
+ padding-right: 10px;
61
87
  }
62
- .cucumber table td.passed {
63
- background: #98FB98;
64
- color: #001111;
88
+ .cucumber table td.failed, td table td.failed, th table td.failed {
89
+ border-left: 5px solid #c20000;
90
+ border-bottom: 1px solid #c20000;
91
+ background: #fffbd3;
92
+ color: #c20000;
93
+ }
94
+ .cucumber table td.passed, td table td.passed, th table td.passed {
95
+ border-left: 5px solid #65c400;
96
+ border-bottom: 1px solid #65c400;
97
+ background: #dbffb4;
98
+ color: #3d7700;
65
99
  }
66
- .cucumber table td.skipped {
100
+ .cucumber table td.skipped, td table td.skipped, th table td.skipped {
101
+ border-left: 5px solid aqua;
102
+ border-bottom: 1px solid aqua;
67
103
  background: #e0ffff;
68
104
  color: #001111;
69
105
  }
70
- .cucumber table td.pending {
71
- background: #FFFFE0;
72
- color: #111100;
106
+ .cucumber table td.pending, td table td.pending, th table td.pending {
107
+ border-left: 5px solid #faf834;
108
+ border-bottom: 1px solid #faf834;
109
+ background: #fcfb98;
110
+ color: #131313;
73
111
  }
74
- .cucumber table td.undefined {
75
- background: #FFFFE0;
76
- color: #111100;
112
+ .cucumber table td.undefined, td table td.undefined, th table td.undefined {
113
+ border-left: 5px solid #faf834;
114
+ border-bottom: 1px solid #faf834;
115
+ background: #fcfb98;
116
+ color: #131313;
77
117
  }
78
- .cucumber ol {
118
+ .cucumber ol, td ol, th ol {
79
119
  list-style: none;
120
+ margin: 0px;
121
+ padding: 0px;
122
+ }
123
+ .cucumber ol li.step, td ol li.step, th ol li.step {
124
+ padding: 3px 3px 3px 18px;
125
+ margin: 5px 0px 5px 5px;
80
126
  }
81
- .cucumber ol li {
127
+ .cucumber ol li, td ol li, th ol li {
82
128
  margin: 0em 0em 0em 1em;
83
129
  padding: 0em 0em 0em 0.2em;
84
130
  }
85
- .cucumber ol li span.param {
131
+ .cucumber ol li span.param, td ol li span.param, th ol li span.param {
86
132
  font-weight: bold;
87
133
  }
88
- .cucumber ol li.failed {
89
- border-left: 5px solid #ff0000;
90
- border-bottom: 1px solid #ff0000;
91
- background: #ffc0cb;
92
- color: #8b0000;
134
+ .cucumber ol li.failed, td ol li.failed, th ol li.failed {
135
+ border-left: 5px solid #c20000;
136
+ border-bottom: 1px solid #c20000;
137
+ background: #fffbd3;
138
+ color: #c20000;
139
+ }
140
+ .cucumber ol li.passed, td ol li.passed, th ol li.passed {
141
+ border-left: 5px solid #65c400;
142
+ border-bottom: 1px solid #65c400;
143
+ background: #dbffb4;
144
+ color: #3d7700;
145
+ }
146
+ .cucumber ol li.skipped, td ol li.skipped, th ol li.skipped {
147
+ border-left: 5px solid aqua;
148
+ border-bottom: 1px solid aqua;
149
+ background: #e0ffff;
150
+ color: #001111;
93
151
  }
94
- .cucumber ol li.failed span.param {
95
- background: !failed_dark;
152
+ .cucumber ol li.pending, td ol li.pending, th ol li.pending {
153
+ border-left: 5px solid #faf834;
154
+ border-bottom: 1px solid #faf834;
155
+ background: #fcfb98;
156
+ color: #131313;
96
157
  }
97
- .cucumber ol li.passed {
98
- border-left: 5px solid #00ff00;
99
- border-bottom: 1px solid #00ff00;
100
- background: #98fb98;
101
- color: #001111;
158
+ .cucumber ol li.undefined, td ol li.undefined, th ol li.undefined {
159
+ border-left: 5px solid #faf834;
160
+ border-bottom: 1px solid #faf834;
161
+ background: #fcfb98;
162
+ color: #131313;
102
163
  }
103
- .cucumber ol li.passed span.param {
104
- background: #00ff00;
164
+ .cucumber #summary, td #summary, th #summary {
165
+ margin: 0px;
166
+ padding: 5px 10px;
167
+ text-align: right;
168
+ top: 0px;
169
+ right: 0px;
170
+ float: right;
105
171
  }
106
- .cucumber ol li.skipped {
107
- border-left: 5px solid #00ffff;
108
- border-bottom: 1px solid #00ffff;
109
- background: #e0ffff;
110
- color: #001111;
172
+ .cucumber #summary p, td #summary p, th #summary p {
173
+ margin: 0 0 0 2px;
174
+ }
175
+ .cucumber #summary #totals, td #summary #totals, th #summary #totals {
176
+ font-size: 1.2em;
177
+ }
178
+
179
+ .ruby {
180
+ font-size: 12px;
181
+ font-family: monospace;
182
+ color: white;
183
+ background: black;
184
+ padding: 0.1em 0 0.2em 0;
185
+ }
186
+ .ruby .keyword {
187
+ color: #FF6600;
188
+ }
189
+ .ruby .constant {
190
+ color: #339999;
191
+ }
192
+ .ruby .attribute {
193
+ color: white;
194
+ }
195
+ .ruby .global {
196
+ color: white;
197
+ }
198
+ .ruby .module {
199
+ color: white;
200
+ }
201
+ .ruby .class {
202
+ color: white;
203
+ }
204
+ .ruby .string {
205
+ color: #66FF00;
206
+ }
207
+ .ruby .ident {
208
+ color: white;
209
+ }
210
+ .ruby .method {
211
+ color: #FFCC00;
212
+ }
213
+ .ruby .number {
214
+ color: white;
215
+ }
216
+ .ruby .char {
217
+ color: white;
218
+ }
219
+ .ruby .comment {
220
+ color: #9933CC;
221
+ }
222
+ .ruby .symbol {
223
+ color: white;
224
+ }
225
+ .ruby .regex {
226
+ color: #44B4CC;
227
+ }
228
+ .ruby .punct {
229
+ color: white;
111
230
  }
112
- .cucumber ol li.skipped span.param {
113
- background: #00ffff;
231
+ .ruby .escape {
232
+ color: white;
114
233
  }
115
- .cucumber ol li.pending {
116
- border-left: 5px solid #ff8000;
117
- border-bottom: 1px solid #ff8000;
118
- background: #ffff00;
119
- color: #2a1b0a;
234
+ .ruby .interp {
235
+ color: white;
120
236
  }
121
- .cucumber ol li.pending span.param {
122
- background: #ff8000;
237
+ .ruby .expr {
238
+ color: white;
123
239
  }
124
- .cucumber ol li.undefined {
125
- border-left: 5px solid #ff8000;
126
- border-bottom: 1px solid #ff8000;
127
- background: #ffff00;
128
- color: #2a1b0a;
240
+ .ruby .offending {
241
+ background: #333333;
129
242
  }
130
- .cucumber ol li.undefined span.param {
131
- background: #ff8000;
243
+ .ruby .linenum {
244
+ width: 75px;
245
+ padding: 0.1em 1em 0.2em 0;
246
+ color: #000000;
247
+ background: #FFFBD3;
132
248
  }