jasmine-headless-webkit 0.8.4 → 0.9.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. data/Gemfile +16 -8
  2. data/Guardfile +6 -1
  3. data/Rakefile +2 -1
  4. data/config/cucumber.yml +2 -0
  5. data/ext/jasmine-webkit-specrunner/Page.cpp +2 -3
  6. data/ext/jasmine-webkit-specrunner/Page.h +1 -0
  7. data/ext/jasmine-webkit-specrunner/Runner.cpp +37 -16
  8. data/ext/jasmine-webkit-specrunner/Runner.h +15 -5
  9. data/ext/jasmine-webkit-specrunner/specrunner.cpp +17 -7
  10. data/features/bin/failure.feature +7 -0
  11. data/features/bin/files.feature +7 -0
  12. data/features/bin/filtered_run/both_runs.feature +18 -0
  13. data/features/bin/filtered_run/no_full_run.feature +14 -0
  14. data/features/bin/help.feature +7 -0
  15. data/features/bin/quiet_messages.feature +8 -0
  16. data/features/bin/runner_out.feature +8 -0
  17. data/features/bin/spec_files_with_same_basename.feature +7 -0
  18. data/features/bin/success.feature +20 -0
  19. data/features/bin/success_with_js_error.feature +5 -0
  20. data/features/bin/tries_to_leave_page.feature +7 -0
  21. data/features/bin/try_to_click_a_button.feature +7 -0
  22. data/features/bin/two_files_from_src_files.feature +11 -0
  23. data/features/bin/with_coffeescript_error.feature +7 -0
  24. data/features/bin/with_console_log.feature +7 -0
  25. data/features/bin/with_server.feature +7 -0
  26. data/features/bin/with_window_prompt.feature +7 -0
  27. data/features/reporters.feature +24 -0
  28. data/features/runner.feature +34 -0
  29. data/features/steps/given/i_have_test_suite.rb +2 -0
  30. data/features/steps/given/no_existing_file.rb +4 -0
  31. data/features/steps/given/options/i_have_defaults.rb +4 -0
  32. data/features/steps/given/options/i_have_reporters.rb +10 -0
  33. data/features/steps/given/options/i_have_runner_options.rb +3 -0
  34. data/features/steps/then/bin/exit_status_should_be.rb +3 -0
  35. data/features/steps/then/bin/file_should_contain_runner.rb +4 -0
  36. data/features/steps/then/bin/following_files_loaded_in_order.rb +10 -0
  37. data/features/steps/then/bin/i_should_get_help_output.rb +4 -0
  38. data/features/steps/then/bin/output_should_include.rb +3 -0
  39. data/features/steps/then/bin/output_should_not_include.rb +4 -0
  40. data/features/steps/then/reporting/report_does_not_exist.rb +4 -0
  41. data/features/steps/then/reporting/report_should_exist.rb +3 -0
  42. data/features/steps/then/reporting/report_should_have.rb +7 -0
  43. data/features/steps/then/reporting/report_should_have_seed.rb +4 -0
  44. data/features/steps/then/runner/it_should_have_exit_status.rb +3 -0
  45. data/features/steps/then/runner/it_should_include_report_file.rb +4 -0
  46. data/features/steps/then/runner/it_should_not_include_report_file.rb +3 -0
  47. data/features/steps/then/templates/it_should_use_reporter.rb +6 -0
  48. data/features/steps/when/i_delete_file.rb +3 -0
  49. data/features/steps/when/i_get_runner.rb +4 -0
  50. data/features/steps/when/i_get_template_writer.rb +4 -0
  51. data/features/steps/when/i_run_executable.rb +4 -0
  52. data/features/steps/when/i_run_runner.rb +4 -0
  53. data/features/support/env.rb +7 -0
  54. data/lib/jasmine/headless/file_checker.rb +7 -3
  55. data/lib/jasmine/headless/files_list.rb +46 -19
  56. data/lib/jasmine/headless/options.rb +113 -5
  57. data/lib/jasmine/headless/report.rb +6 -1
  58. data/lib/jasmine/headless/report_message/console.rb +2 -4
  59. data/lib/jasmine/headless/report_message/seed.rb +14 -0
  60. data/lib/jasmine/headless/report_message/spec.rb +3 -5
  61. data/lib/jasmine/headless/report_message.rb +1 -0
  62. data/lib/jasmine/headless/runner.rb +169 -28
  63. data/lib/jasmine/headless/task.rb +0 -14
  64. data/lib/jasmine/headless/template_writer.rb +28 -4
  65. data/lib/jasmine/headless/unique_asset_list.rb +1 -1
  66. data/lib/jasmine/headless/version.rb +1 -1
  67. data/lib/jasmine/headless.rb +18 -0
  68. data/lib/jasmine-headless-webkit.rb +0 -4
  69. data/script/hooks/post-commit +4 -0
  70. data/script/hooks/pre-commit +2 -2
  71. data/script/initialize-environment +1 -1
  72. data/skel/template.html.erb +31 -2
  73. data/spec/jasmine/noisy/file.js.erb +0 -0
  74. data/spec/jasmine/noisy/noisy.yml +8 -0
  75. data/spec/jasmine/noisy/other_file.js +2 -0
  76. data/spec/jasmine/two_files_from_src_files/app/app-file.js +0 -0
  77. data/spec/jasmine/two_files_from_src_files/app/app.js +2 -0
  78. data/spec/jasmine/two_files_from_src_files/jasmine.yml +7 -0
  79. data/spec/jasmine/two_files_from_src_files/vendor/vendor-file.js +0 -0
  80. data/spec/jasmine/two_files_from_src_files/vendor/vendor.js +2 -0
  81. data/spec/jasmine/two_spec_files_same_basename/jasmine.yml +6 -0
  82. data/spec/jasmine/two_spec_files_same_basename/spec.coffee +4 -0
  83. data/spec/jasmine/two_spec_files_same_basename/spec.js +6 -0
  84. data/spec/jasmine/window_prompt/source.js +2 -0
  85. data/spec/jasmine/window_prompt/window_prompt.yml +4 -0
  86. data/spec/javascripts/headless_reporter_result_spec.coffee +22 -6
  87. data/spec/javascripts/helpers/spec_helper.coffee +2 -0
  88. data/spec/javascripts/{jasmine.HeadlessConsoleReporter_spec.coffee → jasmine-extensions_spec.coffee} +0 -35
  89. data/spec/javascripts/jasmine.HeadlessReporter.ConsoleBase_spec.coffee +35 -0
  90. data/spec/javascripts/jasmine.HeadlessReporter.Console_spec.coffee +3 -0
  91. data/spec/javascripts/jasmine.HeadlessReporter.Tap_spec.coffee +19 -0
  92. data/spec/javascripts/jasmine.HeadlessReporter_spec.coffee +27 -0
  93. data/spec/javascripts/support/jasmine.yml +6 -5
  94. data/spec/lib/jasmine/headless/file_checker_spec.rb +25 -9
  95. data/spec/lib/jasmine/headless/files_list_spec.rb +132 -158
  96. data/spec/lib/jasmine/headless/options_spec.rb +77 -0
  97. data/spec/lib/jasmine/headless/report_message/seed_spec.rb +18 -0
  98. data/spec/lib/jasmine/headless/report_spec.rb +16 -0
  99. data/spec/lib/jasmine/headless/runner_spec.rb +110 -33
  100. data/spec/lib/jasmine/headless/template_writer_spec.rb +31 -27
  101. data/spec/lib/jasmine/headless/unique_asset_list_spec.rb +3 -3
  102. data/spec/lib/jasmine/headless_spec.rb +36 -0
  103. data/spec/skel/template.html.erb_spec.rb +8 -0
  104. data/vendor/assets/coffeescripts/prolog.coffee +48 -21
  105. data/vendor/assets/javascripts/headless_reporter_result.js +3 -0
  106. data/vendor/assets/{coffeescripts → javascripts}/intense.coffee +0 -0
  107. data/vendor/assets/{coffeescripts → javascripts}/jasmine-extensions.coffee +4 -10
  108. data/vendor/assets/javascripts/jasmine.HeadlessReporter.Console.coffee +8 -0
  109. data/vendor/assets/javascripts/jasmine.HeadlessReporter.ConsoleBase.coffee +92 -0
  110. data/vendor/assets/javascripts/jasmine.HeadlessReporter.File.coffee +24 -0
  111. data/vendor/assets/javascripts/jasmine.HeadlessReporter.Tap.coffee +28 -0
  112. data/vendor/assets/javascripts/jasmine.HeadlessReporter.Verbose.coffee +64 -0
  113. data/vendor/assets/javascripts/jasmine.HeadlessReporter.coffee +58 -0
  114. data/vendor/assets/javascripts/prolog.js +44 -27
  115. metadata +157 -31
  116. data/ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner.pro +0 -19
  117. data/lib/digest/jasmine_test.rb +0 -20
  118. data/spec/bin/jasmine-headless-webkit_spec.rb +0 -142
  119. data/vendor/assets/coffeescripts/jasmine.HeadlessConsoleReporter.coffee +0 -118
  120. data/vendor/assets/javascripts/intense.js +0 -44
  121. data/vendor/assets/javascripts/jasmine-extensions.js +0 -129
  122. data/vendor/assets/javascripts/jasmine.HeadlessConsoleReporter.js +0 -136
@@ -0,0 +1,3 @@
1
+ Then /^the runner should have an exit status of (\d+)$/ do |exit_status|
2
+ @result.should == exit_status.to_i
3
+ end
@@ -0,0 +1,4 @@
1
+ Then /^the command to run the runner should include the report file "([^"]*)"$/ do |file|
2
+ @runner.jasmine_command.should include("-r #{file}")
3
+ end
4
+
@@ -0,0 +1,3 @@
1
+ Then /^the command to run the runner should not include a report file$/ do
2
+ @runner.jasmine_command.should_not include('-r')
3
+ end
@@ -0,0 +1,6 @@
1
+ Then /^the template should use the "([^"]*)" reporter to "([^"]*)"$/ do |reporter, target|
2
+ output = @template_writer.render
3
+
4
+ output.should include(%{jasmine.HeadlessReporter.#{reporter}("#{target}")})
5
+ end
6
+
@@ -0,0 +1,3 @@
1
+ When /^I delete the file "([^"]*)"$/ do |file|
2
+ FileUtils.rm_f(file)
3
+ end
@@ -0,0 +1,4 @@
1
+ When /^I get a runner$/ do
2
+ @runner = Jasmine::Headless::Runner.new(@options)
3
+ end
4
+
@@ -0,0 +1,4 @@
1
+ When /^I get a template writer$/ do
2
+ @template_writer = Jasmine::Headless::TemplateWriter.new(@runner)
3
+ end
4
+
@@ -0,0 +1,4 @@
1
+ When /^I run `(.*)`$/ do |command|
2
+ @output = `#{command}`
3
+ end
4
+
@@ -0,0 +1,4 @@
1
+ When /^I run the runner$/ do
2
+ @result = @runner.run
3
+ end
4
+
@@ -0,0 +1,7 @@
1
+ require 'jasmine-headless-webkit'
2
+
3
+ After do
4
+ FileUtils.rm_f 'spec/report.txt'
5
+ FileUtils.rm_f 'spec/runner.html'
6
+ end
7
+
@@ -1,14 +1,18 @@
1
1
  module Jasmine::Headless::FileChecker
2
+ def excluded_formats
3
+ ::Jasmine::Headless::EXCLUDED_FORMATS
4
+ end
5
+
2
6
  def bad_format?(file)
3
7
  return if file.nil?
4
8
 
5
- ::Jasmine::Headless::EXCLUDED_FORMATS.any? do |format|
9
+ excluded_formats.any? do |format|
6
10
  file[%r{\.#{format}(\.|$)}]
7
11
  end
8
12
  end
9
-
13
+
10
14
  def alert_bad_format(file)
11
- puts "[%s] %s: %s" % [ 'Skipping File'.color(:red), file.color(:yellow), "unsupported format".color(:white) ]
15
+ Jasmine::Headless.warn("[%s] %s: %s" % [ 'Skipping File'.color(:red), file.color(:yellow), "unsupported format".color(:white) ])
12
16
  end
13
17
 
14
18
  def alert_if_bad_format?(file)
@@ -39,14 +39,23 @@ module Jasmine::Headless
39
39
  def reset!
40
40
  @asset_paths = nil
41
41
 
42
- # register haml-sprockets if it's available...
43
- %w{haml-sprockets}.each do |library|
42
+ # register haml-sprockets and handlebars_assets if it's available...
43
+ %w{haml-sprockets handlebars_assets}.each do |library|
44
44
  begin
45
45
  require library
46
46
  rescue LoadError
47
47
  end
48
48
  end
49
49
 
50
+ if ENV['JHW_ENV']
51
+ begin
52
+ require 'bundler'
53
+
54
+ Bundler.require(ENV['JHW_ENV'].to_sym)
55
+ rescue LoadError
56
+ end
57
+ end
58
+
50
59
  # ...and unregister ones we don't want/need
51
60
  Sprockets.instance_eval do
52
61
  EXCLUDED_FORMATS.each do |extension|
@@ -61,7 +70,10 @@ module Jasmine::Headless
61
70
  end
62
71
 
63
72
  def default_files
64
- %w{jasmine.js jasmine-html jasmine.css jasmine-extensions intense headless_reporter_result jasmine.HeadlessConsoleReporter jsDump beautify-html}
73
+ %w{jasmine.js jasmine-html jasmine.css jasmine-extensions
74
+ intense headless_reporter_result jasmine.HeadlessReporter
75
+ jasmine.HeadlessReporter.ConsoleBase
76
+ jsDump beautify-html}
65
77
  end
66
78
 
67
79
  def extension_filter
@@ -73,25 +85,33 @@ module Jasmine::Headless
73
85
 
74
86
  PLEASE_WAIT_IM_WORKING_TIME = 2
75
87
 
76
- attr_reader :required_files, :potential_files_to_filter
88
+ attr_reader :options, :required_files, :potential_files_to_filter
77
89
 
78
90
  def initialize(options = {})
79
91
  @options = options
80
92
 
81
- Kernel.srand(@options[:seed]) if @options[:seed]
93
+ Kernel.srand(options[:seed]) if options[:seed]
82
94
 
83
95
  @required_files = UniqueAssetList.new
84
96
  @potential_files_to_filter = []
85
97
 
98
+ load_initial_assets
99
+
100
+ use_config if config?
101
+ end
102
+
103
+ def load_initial_assets
86
104
  self.class.default_files.each do |file|
87
105
  begin
88
- @required_files << sprockets_environment.find_asset(file, :bundle => false)
106
+ add_path(file)
89
107
  rescue InvalidUniqueAsset => e
90
108
  raise StandardError.new("Not an asset: #{file}")
91
109
  end
92
110
  end
93
111
 
94
- use_config! if config?
112
+ (options[:reporters] || []).each do |reporter, identifier, file|
113
+ add_path("jasmine.HeadlessReporter.#{reporter}")
114
+ end
95
115
  end
96
116
 
97
117
  def files
@@ -117,6 +137,7 @@ module Jasmine::Headless
117
137
  @search_paths += asset_paths.collect { |dir| File.expand_path(dir) }
118
138
  @search_paths += spec_dir.collect { |dir| File.expand_path(dir) }
119
139
 
140
+ @search_paths.uniq!
120
141
  @search_paths
121
142
  end
122
143
 
@@ -194,7 +215,7 @@ module Jasmine::Headless
194
215
  'spec_files' => 'spec_dir'
195
216
  }
196
217
 
197
- def use_config!
218
+ def use_config
198
219
  @config = @options[:config].dup
199
220
  @searches = {}
200
221
  @potential_files_to_filter = []
@@ -207,13 +228,13 @@ module Jasmine::Headless
207
228
  end
208
229
 
209
230
  def add_files(patterns, type, dirs)
210
- dirs.product(patterns).each do |search|
211
- files = expanded_dir(File.join(*search))
231
+ patterns.each do |pattern|
232
+ dirs.collect { |dir| expanded_dir(File.join(dir, pattern)) }.each do |files|
233
+ files.sort! { |a, b| Kernel.rand(3) - 1 } if type == 'spec_files'
212
234
 
213
- files.sort! { |a, b| Kernel.rand(3) - 1 } if type == 'spec_files'
214
-
215
- files.each do |path|
216
- add_path(path, type)
235
+ files.each do |path|
236
+ add_path(path, type)
237
+ end
217
238
  end
218
239
  end
219
240
 
@@ -240,7 +261,7 @@ module Jasmine::Headless
240
261
  self.class.extension_filter
241
262
  end
242
263
 
243
- def add_path(path, type)
264
+ def add_path(path, type = nil)
244
265
  asset = sprockets_environment.find_asset(path)
245
266
 
246
267
  @required_files << asset
@@ -251,7 +272,7 @@ module Jasmine::Headless
251
272
  end
252
273
 
253
274
  def src_dir
254
- @src_dir ||= config_dir_or_pwd('src_dir')
275
+ @src_dir ||= config_dir_or_pwd('src_dir') + asset_paths
255
276
  end
256
277
 
257
278
  def spec_dir
@@ -259,7 +280,7 @@ module Jasmine::Headless
259
280
  end
260
281
 
261
282
  def asset_paths
262
- @asset_paths ||= config_dir_or_pwd('asset_paths')
283
+ @asset_paths ||= config_dir('asset_paths')
263
284
  end
264
285
 
265
286
  def spec_file_searches
@@ -267,9 +288,15 @@ module Jasmine::Headless
267
288
  end
268
289
 
269
290
  def config_dir_or_pwd(dir)
270
- found_dir = (@options[:config] && @options[:config][dir]) || Dir.pwd
291
+ if (found = config_dir(dir)).empty?
292
+ found = [ Dir.pwd ]
293
+ end
294
+
295
+ found
296
+ end
271
297
 
272
- [ found_dir ].flatten.collect { |dir| File.expand_path(dir) }
298
+ def config_dir(dir)
299
+ [ @options[:config] && @options[:config][dir] ].flatten.compact.collect { |dir| File.expand_path(dir) }
273
300
  end
274
301
 
275
302
  def filter_for_requested_specs(files)
@@ -13,16 +13,21 @@ module Jasmine
13
13
  :remove_html_file => true,
14
14
  :runner_output_filename => false,
15
15
  :jasmine_config => 'spec/javascripts/support/jasmine.yml',
16
- :report => false,
17
16
  :do_list => false,
18
17
  :full_run => true,
19
18
  :enable_cache => true,
20
- :files => []
19
+ :files => [],
20
+ :reporters => [ [ 'Console' ] ],
21
+ :quiet => false,
22
+ :use_server => false,
23
+ :server_port => nil
21
24
  }
22
25
 
23
26
  DEFAULTS_FILE = File.join(Dir.pwd, '.jasmine-headless-webkit')
24
27
  GLOBAL_DEFAULTS_FILE = File.expand_path('~/.jasmine-headless-webkit')
25
28
 
29
+ REPORT_DEPRECATED_MESSAGE = "--report is deprecated. Use --format HeadlessFileReporter --out <filename>"
30
+
26
31
  def self.from_command_line
27
32
  options = new
28
33
  options.process_command_line_args
@@ -35,6 +40,7 @@ module Jasmine
35
40
  srand
36
41
  @options[:seed] = rand(10000)
37
42
  read_defaults_files
43
+
38
44
  opts.each { |k, v| @options[k] = v if v }
39
45
  end
40
46
 
@@ -53,7 +59,10 @@ module Jasmine
53
59
  when '--keep'
54
60
  @options[:remove_html_file] = false
55
61
  when '--report'
56
- @options[:report] = arg
62
+ warn REPORT_DEPRECATED_MESSAGE
63
+
64
+ add_reporter('File', arg)
65
+ add_reporter('Console')
57
66
  when '--runner-out'
58
67
  @options[:runner_output_filename] = arg
59
68
  when '--jasmine-config', '-j'
@@ -62,8 +71,22 @@ module Jasmine
62
71
  @options[:full_run] = false
63
72
  when '--list', '-l'
64
73
  @options[:do_list] = true
74
+ when '--quiet', '-q'
75
+ @options[:quiet] = true
65
76
  when '--seed'
66
77
  @options[:seed] = arg.to_i
78
+ when '--format', '-f'
79
+ add_reporter(arg)
80
+ when '--use-server'
81
+ @options[:use_server] = true
82
+ when '--server-port'
83
+ @options[:server_port] = arg.to_i
84
+ when '--out'
85
+ add_reporter_file(arg)
86
+ when '-h', '--help'
87
+ print_help
88
+
89
+ exit
67
90
  end
68
91
  end
69
92
 
@@ -80,18 +103,103 @@ module Jasmine
80
103
  [ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
81
104
  [ '--no-colors', GetoptLong::NO_ARGUMENT ],
82
105
  [ '--cache', GetoptLong::NO_ARGUMENT ],
83
- [ '--no-t stcache', GetoptLong::NO_ARGUMENT ],
106
+ [ '--no-cache', GetoptLong::NO_ARGUMENT ],
84
107
  [ '--keep', GetoptLong::NO_ARGUMENT ],
85
108
  [ '--runner-out', GetoptLong::REQUIRED_ARGUMENT ],
86
109
  [ '--report', GetoptLong::REQUIRED_ARGUMENT ],
87
110
  [ '--jasmine-config', '-j', GetoptLong::REQUIRED_ARGUMENT ],
88
111
  [ '--no-full-run', GetoptLong::NO_ARGUMENT ],
89
112
  [ '--list', '-l', GetoptLong::NO_ARGUMENT ],
90
- [ '--seed', GetoptLong::REQUIRED_ARGUMENT ]
113
+ [ '--seed', GetoptLong::REQUIRED_ARGUMENT ],
114
+ [ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
115
+ [ '--out', GetoptLong::REQUIRED_ARGUMENT ],
116
+ [ '--use-server', GetoptLong::NO_ARGUMENT ],
117
+ [ '--server-port', GetoptLong::REQUIRED_ARGUMENT ],
118
+ [ '-h', '--help', GetoptLong::NO_ARGUMENT ],
119
+ [ '-q', '--quiet', GetoptLong::NO_ARGUMENT ]
91
120
  )
92
121
 
93
122
  command_line_args.each { |*args| process_option(*args) }
94
123
  end
124
+
125
+ def reporters
126
+ file_index = 0
127
+
128
+ @options[:reporters].collect do |reporter, file|
129
+ output = [ reporter ]
130
+ if file
131
+ output << "report:#{file_index}"
132
+ output << file
133
+ file_index += 1
134
+ else
135
+ output << "stdout"
136
+ end
137
+
138
+ output
139
+ end
140
+ end
141
+
142
+ def file_reporters
143
+ reporters.find_all { |reporter| reporter[1]["report:"] }
144
+ end
145
+
146
+ private
147
+ def add_reporter(name, file = nil)
148
+ if !@added_reporter
149
+ @options[:reporters] = []
150
+ @added_reporter = true
151
+ end
152
+
153
+ if (parts = name.split(':')).length == 2
154
+ name, file = parts
155
+ end
156
+
157
+ @options[:reporters] << [ name ]
158
+
159
+ add_reporter_file(file) if file
160
+ end
161
+
162
+ def add_reporter_file(file)
163
+ @options[:reporters].last << file
164
+ end
165
+
166
+ def print_help
167
+ options = [
168
+ [ '-c, --colors', 'Enable colors (default: disabled)' ],
169
+ [ '-nc, --no-colors', 'Disable colors' ],
170
+ [ '--cache', 'Enable cache (default: enabled)' ],
171
+ [ '--no-cache', 'Disable cache' ],
172
+ [ '--keep', 'Keep runner files on failure' ],
173
+ [ '--runner-out <filename>', 'Write runner to specified filename' ],
174
+ [ '-j, --jasmine-config <config file>', 'Jasmine Yaml config to use' ],
175
+ [ '--no-full-run', 'Do not perform a full spec run after a successful targeted spec run' ],
176
+ [ '--use-server', 'Load tests from an HTTP server instead of from filesystem' ],
177
+ [ '-l, --list', 'List files in the order they will be required' ],
178
+ [ '--seed <seed>', 'Random order seed for spec file ordering' ],
179
+ [ '-f, --format <reporter<:filename>>', 'Specify an output reporter and possibly output filename' ],
180
+ [ '--out <filename>', 'Specify output filename for last defined reporter' ],
181
+ [ '-q, --quiet', "Silence most non-test related warnings" ],
182
+ [ '-h, --help', "You're looking at it" ]
183
+ ]
184
+
185
+ longest_length = options.collect(&:first).collect(&:length).max
186
+
187
+ puts <<-HELP
188
+ Usage: #{$0} [ options ] [ spec files ]
189
+
190
+ Options:
191
+ #{options.collect { |option, description| " #{option.ljust(longest_length)} #{description}" }.join("\n")}
192
+
193
+ Available reporters:
194
+ Console Write out spec results to the console in a progress format (default)
195
+ Verbose Write out spec results to the console in a verbose format
196
+ File Write spec results in jasmine-headless-webkit ReportFile format
197
+ Tap Write spec results in TAP format
198
+
199
+ Add reporters to the jasmine.HeadlessReporter object to access them
200
+ (ex: jasmine.HeadlessReporter.Teamcity for the Teamcity reporter)
201
+ HELP
202
+ end
95
203
  end
96
204
  end
97
205
  end
@@ -60,8 +60,13 @@ module Jasmine::Headless
60
60
  }.collect(&:filename).uniq.compact
61
61
  end
62
62
 
63
- private
63
+ def seed
64
+ if seed = report.find { |entry| entry.respond_to?(:seed) }
65
+ seed.seed
66
+ end
67
+ end
64
68
 
69
+ private
65
70
  def last_total
66
71
  @report.reverse.find { |entry| entry.respond_to?(:total) }
67
72
  end
@@ -1,9 +1,7 @@
1
1
  module Jasmine::Headless::ReportMessage
2
2
  class Console
3
- class << self
4
- def new_from_parts(parts)
5
- new(parts.first)
6
- end
3
+ def self.new_from_parts(parts)
4
+ new(parts.first)
7
5
  end
8
6
 
9
7
  attr_reader :message
@@ -0,0 +1,14 @@
1
+ module Jasmine::Headless::ReportMessage
2
+ class Seed
3
+ def self.new_from_parts(parts)
4
+ new(parts.first)
5
+ end
6
+
7
+ attr_reader :seed
8
+
9
+ def initialize(seed)
10
+ @seed = seed.to_i
11
+ end
12
+ end
13
+ end
14
+
@@ -1,11 +1,9 @@
1
1
  module Jasmine::Headless::ReportMessage
2
2
  class Spec
3
- class << self
4
- def new_from_parts(parts)
5
- file_info = parts.pop
3
+ def self.new_from_parts(parts)
4
+ file_info = parts.pop
6
5
 
7
- new(parts.join(' '), file_info)
8
- end
6
+ new(parts.join(' '), file_info)
9
7
  end
10
8
 
11
9
  attr_reader :statement, :file_info
@@ -6,6 +6,7 @@ module Jasmine::Headless
6
6
  autoload :Console, 'jasmine/headless/report_message/console'
7
7
  autoload :Error, 'jasmine/headless/report_message/error'
8
8
  autoload :Total, 'jasmine/headless/report_message/total'
9
+ autoload :Seed, 'jasmine/headless/report_message/seed'
9
10
  end
10
11
  end
11
12