guard-jasmine 1.14.0 → 1.15.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 35f755fd7988fb41009cc1377514706c7d2d8700
4
+ data.tar.gz: 2d67d8daefc22be085e6d883778766a8e10e1795
5
+ SHA512:
6
+ metadata.gz: a563757370395d7a09befdea85915bebcbff02c4fda5d0244894ea0b86b29a2f0dc85c74e3d558b7a1c83d246a4d45040540f7f1dfa43cd5212c103a5beddd5e
7
+ data.tar.gz: 9433f80970d0d1a4b6347c15e0b580658ed2bd4939db6bb157ef538c62eff82ab125294807852c7938e5221a1702db8250e11380a4c373261a6f48a36875b868
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Guard::Jasmine automatically tests your Jasmine specs when files are modified.
4
4
 
5
- Tested on MRI Ruby 1.8.7, 1.9.2, 1.9.3, REE and the latest versions of JRuby and Rubinius.
5
+ Tested on MRI Ruby 1.9.2, 1.9.3, 2.0.0 and the latest version of JRuby.
6
6
 
7
7
  If you have any questions please join us on our [Google group](http://groups.google.com/group/guard-dev) or on `#guard`
8
8
  (irc.freenode.net).
@@ -170,7 +170,7 @@ Now you can access `/jasmine-stories` when you start your Rails server normally.
170
170
  accordingly:
171
171
 
172
172
  ```ruby
173
- guard :jasmine, :port => 8888, :jasmine_url => 'http://127.0.0.1:8888/jasmine-stories' do
173
+ guard :jasmine, port: 8888, jasmine_url: 'http://127.0.0.1:8888/jasmine-stories' do
174
174
  ...
175
175
  end
176
176
  ```
@@ -234,8 +234,8 @@ It is also possible to use CoffeeScript in this setup, by using [Guard::CoffeeSc
234
234
  specs. Just add something like this *before* Guard::Jasmine:
235
235
 
236
236
  ```ruby
237
- guard 'coffeescript', :input => 'app/coffeescripts', :output => 'public/javascripts'
238
- guard 'coffeescript', :input => 'spec/coffeescripts', :output => 'spec/javascripts'
237
+ guard 'coffeescript', input: 'app/coffeescripts', output: 'public/javascripts'
238
+ guard 'coffeescript', input: 'spec/coffeescripts', output: 'spec/javascripts'
239
239
  ```
240
240
 
241
241
  ## Ruby projects
@@ -279,7 +279,7 @@ require 'jquery-rails'
279
279
 
280
280
  class JasmineTest < Rails::Application
281
281
  routes.append do
282
- mount Jasminerice::Engine => '/jasmine'
282
+ mount Jasminerice::Engine: '/jasmine'
283
283
  end
284
284
 
285
285
  config.cache_classes = true
@@ -329,7 +329,7 @@ There are many options that can customize Guard::Jasmine to your needs. Options
329
329
  defining the Guard in your `Guardfile`:
330
330
 
331
331
  ```ruby
332
- guard 'jasmine', :all_on_start => false, :specdoc => :always do
332
+ guard 'jasmine', all_on_start: false, specdoc: :always do
333
333
  ...
334
334
  end
335
335
  ```
@@ -339,27 +339,27 @@ end
339
339
  The server options configures the server environment that is needed to run Guard::Jasmine:
340
340
 
341
341
  ```ruby
342
- :server => :jasmine_gem # Jasmine server to use, either :auto, :none,
342
+ server: :jasmine_gem # Jasmine server to use, either :auto, :none,
343
343
  # :webrick, :mongrel, :thin, :unicorn, :jasmine_gem, :puma
344
344
  # default: :auto
345
345
 
346
- :server_env => :test # Jasmine server Rails environment to set,
346
+ server_env: :test # Jasmine server Rails environment to set,
347
347
  # e.g. :development or :test
348
348
  # default: RAILS_ENV is exists, otherwise :development
349
349
 
350
- :server_timeout => 30 # The number of seconds to wait for the Jasmine spec server
350
+ server_timeout: 30 # The number of seconds to wait for the Jasmine spec server
351
351
  # default: 15
352
352
 
353
- :port => 8888 # Jasmine server port to use.
353
+ port: 8888 # Jasmine server port to use.
354
354
  # default: a random, free server port
355
355
 
356
- :phantomjs_bin => '~/bin/phantomjs' # Path to phantomjs.
356
+ phantomjs_bin: '~/bin/phantomjs' # Path to phantomjs.
357
357
  # default: auto-detect 'phantomjs'
358
358
 
359
- :timeout => 20 # The time in seconds to wait for the spec runner to finish.
359
+ timeout: 20 # The time in seconds to wait for the spec runner to finish.
360
360
  # default: 10
361
361
 
362
- :rackup_config => 'spec/dummy/config.ru' # Path to rackup config file (i.e. for webrick, mongrel, thin, unicorn, puma).
362
+ rackup_config: 'spec/dummy/config.ru' # Path to rackup config file (i.e. for webrick, mongrel, thin, unicorn, puma).
363
363
  # default: ./config.ru
364
364
  # This option is useful when using guard-jasmine in a mountable engine
365
365
  # and the config.ru is within the dummy app
@@ -369,7 +369,7 @@ If you're setting the `:server` option to `:none` or need to access your specs o
369
369
  supply the Jasmine runner url manually:
370
370
 
371
371
  ```ruby
372
- :jasmine_url => 'http://192.168.1.5:1234/jasmine' # URL where Jasmine is served.
372
+ jasmine_url: 'http://192.168.1.5:1234/jasmine' # URL where Jasmine is served.
373
373
  # default: nil
374
374
  ```
375
375
  You may want to have also a fixed port instead of the random generated one.
@@ -382,7 +382,7 @@ instead of a ridiculous high line number in a single, very large JavaScript.
382
382
 
383
383
  If you supply an unknown server name as the `:server` option, then Guard::Jasmine will execute
384
384
  a `rake` task with the given server name as task in a child process. For example, if you configure
385
- `:server => 'start_my_server'`, then the command `rake start_my_server` will be executed and
385
+ `server: 'start_my_server'`, then the command `rake start_my_server` will be executed and
386
386
  you have to make sure the server starts on the port that you can get from the `JASMINE_PORT`
387
387
  environment variable.
388
388
 
@@ -391,19 +391,19 @@ environment variable.
391
391
  The spec runner options configures the behavior driven development (or BDD) cycle:
392
392
 
393
393
  ```ruby
394
- :spec_dir => 'app/spec' # Directory with the Jasmine specs.
394
+ spec_dir: 'app/spec' # Directory with the Jasmine specs.
395
395
  # default: 'spec/javascripts'
396
396
 
397
- :clean => false # Clean the spec list by only keep Jasmine specs within the project.
397
+ clean: false # Clean the spec list by only keep Jasmine specs within the project.
398
398
  # default: true
399
399
 
400
- :all_on_start => false # Run all suites on start.
400
+ all_on_start: false # Run all suites on start.
401
401
  # default: true
402
402
 
403
- :keep_failed => false # Keep failed suites and add them to the next run again.
403
+ keep_failed: false # Keep failed suites and add them to the next run again.
404
404
  # default: true
405
405
 
406
- :all_after_pass => false # Run all suites after a suite has passed again
406
+ all_after_pass: false # Run all suites after a suite has passed again
407
407
  # after failing.
408
408
  # default: true
409
409
  ```
@@ -422,19 +422,19 @@ Guard::Jasmine can generate an RSpec like specdoc in the console after running t
422
422
  be shown in the console:
423
423
 
424
424
  ```ruby
425
- :specdoc => :always # Specdoc output options,
425
+ specdoc: :always # Specdoc output options,
426
426
  # either :always, :never or :failure
427
427
  # default: :failure
428
428
 
429
- :focus => false # Specdoc focus to hide successful specs when
429
+ focus: false # Specdoc focus to hide successful specs when
430
430
  # at least one spec fails.
431
431
  # default: true
432
432
 
433
- :console => :always # Console.log output options,
433
+ console: :always # Console.log output options,
434
434
  # either :always, :never or :failure
435
435
  # default: :failure
436
436
 
437
- :errors => :always # Error output options,
437
+ errors: :always # Error output options,
438
438
  # either :always, :never or :failure
439
439
  # default: :failure
440
440
  ```
@@ -455,7 +455,7 @@ You may want to have different options when the spec runner runs all specs. You
455
455
  as a Hash that contains any valid runner option and will overwrite the general options.
456
456
 
457
457
  ```ruby
458
- :run_all => { :specdoc => :never } # Run all options,
458
+ run_all: { specdoc: :never } # Run all options,
459
459
  # Takes any valid option
460
460
  # default: {}
461
461
  ```
@@ -499,7 +499,7 @@ $ npm install -g istanbul
499
499
  You also need to explicit enable the coverage support in the options:
500
500
 
501
501
  ```ruby
502
- :coverage => true # Enable/disable JavaScript coverage support
502
+ coverage: true # Enable/disable JavaScript coverage support
503
503
  # default: false
504
504
  ```
505
505
 
@@ -524,16 +524,16 @@ By default Guard::Jasmine just outputs the coverage when enable without any effe
524
524
  make Guard::Jasmine fail the spec run when a given threshold is not met. You can set the following thresholds:
525
525
 
526
526
  ```ruby
527
- :statements_threshold => 95 # Statements coverage threshold
527
+ statements_threshold: 95 # Statements coverage threshold
528
528
  # default: 0
529
529
 
530
- :functions_threshold => 85 # Functions coverage threshold
530
+ functions_threshold: 85 # Functions coverage threshold
531
531
  # default: 0
532
532
 
533
- :branches_threshold => -10 # Branches coverage threshold
533
+ branches_threshold: -10 # Branches coverage threshold
534
534
  # default: 0
535
535
 
536
- :lines_threshold => -15 # Lines coverage threshold
536
+ lines_threshold: -15 # Lines coverage threshold
537
537
  # default: 0
538
538
  ```
539
539
 
@@ -546,10 +546,10 @@ Guard::Jasmine always shows the Istanbul text report after a spec run that conta
546
546
  can also enable two more reports:
547
547
 
548
548
  ```ruby
549
- :coverage_html => true # Enable Istanbul HTML coverage report
549
+ coverage_html: true # Enable Istanbul HTML coverage report
550
550
  # default: false
551
551
 
552
- :coverage_summary => true # Enable Istanbul summary coverage report
552
+ coverage_summary: true # Enable Istanbul summary coverage report
553
553
  # default: false
554
554
  ```
555
555
 
@@ -568,13 +568,13 @@ name in opposite to Jasmine).
568
568
  These options affects what system notifications are shown after a spec run:
569
569
 
570
570
  ```ruby
571
- :notifications => false # Show success and error notifications.
571
+ notifications: false # Show success and error notifications.
572
572
  # default: true
573
573
 
574
- :hide_success => true # Disable successful spec run notification.
574
+ hide_success: true # Disable successful spec run notification.
575
575
  # default: false
576
576
 
577
- :max_error_notify => 5 # Maximum error notifications to show.
577
+ max_error_notify: 5 # Maximum error notifications to show.
578
578
  # default: 3
579
579
  ```
580
580
 
@@ -22,32 +22,32 @@ module Guard
22
22
  attr_accessor :last_run_failed, :last_failed_paths, :run_all_options
23
23
 
24
24
  DEFAULT_OPTIONS = {
25
- :server => :auto,
26
- :server_env => ENV['RAILS_ENV'] || 'development',
27
- :server_timeout => 60,
28
- :port => nil,
29
- :rackup_config => nil,
30
- :jasmine_url => nil,
31
- :timeout => 60,
32
- :spec_dir => 'spec/javascripts',
33
- :notification => true,
34
- :hide_success => false,
35
- :all_on_start => true,
36
- :keep_failed => true,
37
- :clean => true,
38
- :all_after_pass => true,
39
- :max_error_notify => 3,
40
- :specdoc => :failure,
41
- :console => :failure,
42
- :errors => :failure,
43
- :focus => true,
44
- :coverage => false,
45
- :coverage_html => false,
46
- :coverage_summary => false,
47
- :statements_threshold => 0,
48
- :functions_threshold => 0,
49
- :branches_threshold => 0,
50
- :lines_threshold => 0
25
+ server: :auto,
26
+ server_env: ENV['RAILS_ENV'] || 'development',
27
+ server_timeout: 60,
28
+ port: nil,
29
+ rackup_config: nil,
30
+ jasmine_url: nil,
31
+ timeout: 60,
32
+ spec_dir: nil,
33
+ notification: true,
34
+ hide_success: false,
35
+ all_on_start: true,
36
+ keep_failed: true,
37
+ clean: true,
38
+ all_after_pass: true,
39
+ max_error_notify: 3,
40
+ specdoc: :failure,
41
+ console: :failure,
42
+ errors: :failure,
43
+ focus: true,
44
+ coverage: false,
45
+ coverage_html: false,
46
+ coverage_summary: false,
47
+ statements_threshold: 0,
48
+ functions_threshold: 0,
49
+ branches_threshold: 0,
50
+ lines_threshold: 0
51
51
  }
52
52
 
53
53
  # Initialize Guard::Jasmine.
@@ -84,11 +84,14 @@ module Guard
84
84
  # @option options [Hash] :run_all options overwrite options when run all specs
85
85
  #
86
86
  def initialize(watchers = [], options = { })
87
- options[:port] ||= Jasmine.find_free_server_port
88
- options[:jasmine_url] = "http://localhost:#{ options[:port] }#{ options[:server] == :jasmine_gem ? '/' : '/jasmine' }" unless options[:jasmine_url]
89
87
  options = DEFAULT_OPTIONS.merge(options)
90
- options[:specdoc] = :failure if ![:always, :never, :failure].include? options[:specdoc]
91
- options[:server] ||= :auto
88
+
89
+ options[:spec_dir] ||= File.exists?(File.join('spec', 'javascripts')) ? File.join('spec', 'javascripts') : 'spec'
90
+ options[:port] ||= Jasmine.find_free_server_port
91
+ options[:server] ||= :auto
92
+ options[:server] = ::Guard::Jasmine::Server.detect_server(options[:spec_dir]) if options[:server] == :auto
93
+ options[:jasmine_url] = "http://localhost:#{ options[:port] }#{ options[:server] == :jasmine_gem ? '/' : '/jasmine' }" unless options[:jasmine_url]
94
+ options[:specdoc] = :failure if ![:always, :never, :failure].include? options[:specdoc]
92
95
  options[:phantomjs_bin] = Jasmine.which('phantomjs') unless options[:phantomjs_bin]
93
96
 
94
97
  self.run_all_options = options.delete(:run_all) || { }
@@ -5,6 +5,7 @@ require 'guard/jasmine/runner'
5
5
  require 'guard/jasmine/formatter'
6
6
  require 'guard/jasmine/server'
7
7
  require 'guard/jasmine/util'
8
+ require 'guard/jasmine/server'
8
9
 
9
10
  module Guard
10
11
  class Jasmine
@@ -23,114 +24,113 @@ module Guard
23
24
  desc 'spec', 'Run the Jasmine spec runner_options'
24
25
 
25
26
  method_option :server,
26
- :type => :string,
27
- :aliases => '-s',
28
- :default => 'auto',
29
- :desc => 'Server to start, either `auto`, `webrick`, `mongrel`, `thin`, `unicorn`, `jasmine_gem` or `none`'
27
+ type: :string,
28
+ aliases: '-s',
29
+ default: 'auto',
30
+ desc: 'Server to start, either `auto`, `webrick`, `mongrel`, `thin`, `unicorn`, `jasmine_gem` or `none`'
30
31
 
31
32
  method_option :port,
32
- :type => :numeric,
33
- :aliases => '-p',
34
- :desc => 'Server port to use'
33
+ type: :numeric,
34
+ aliases: '-p',
35
+ desc: 'Server port to use'
35
36
 
36
37
  method_option :server_env,
37
- :type => :string,
38
- :aliases => '-e',
39
- :default => ENV['RAILS_ENV'] || 'test',
40
- :desc => 'The server environment to use, for example `development`, `test` etc.'
38
+ type: :string,
39
+ aliases: '-e',
40
+ default: ENV['RAILS_ENV'] || 'test',
41
+ desc: 'The server environment to use, for example `development`, `test` etc.'
41
42
 
42
43
  method_option :server_timeout,
43
- :type => :numeric,
44
- :default => 60,
45
- :desc => 'The number of seconds to wait for the Jasmine spec server'
44
+ type: :numeric,
45
+ default: 60,
46
+ desc: 'The number of seconds to wait for the Jasmine spec server'
46
47
 
47
48
  method_option :verbose,
48
- :type => :boolean,
49
- :default => false,
50
- :desc => 'Show the server output in the console'
49
+ type: :boolean,
50
+ default: false,
51
+ desc: 'Show the server output in the console'
51
52
 
52
53
  method_option :rackup_config,
53
- :type => :string,
54
- :aliases => '-c',
55
- :desc => 'The rackup config to use (jasminerice only)'
54
+ type: :string,
55
+ aliases: '-c',
56
+ desc: 'The rackup config to use (jasminerice only)'
56
57
 
57
58
  method_option :bin,
58
- :type => :string,
59
- :aliases => '-b',
60
- :desc => 'The location of the PhantomJS binary'
59
+ type: :string,
60
+ aliases: '-b',
61
+ desc: 'The location of the PhantomJS binary'
61
62
 
62
63
  method_option :spec_dir,
63
- :type => :string,
64
- :aliases => '-d',
65
- :default => 'spec/javascripts',
66
- :desc => 'The directory with the Jasmine specs'
64
+ type: :string,
65
+ aliases: '-d',
66
+ desc: 'The directory with the Jasmine specs'
67
67
 
68
68
  method_option :url,
69
- :type => :string,
70
- :aliases => '-u',
71
- :desc => 'The url of the Jasmine test runner'
69
+ type: :string,
70
+ aliases: '-u',
71
+ desc: 'The url of the Jasmine test runner'
72
72
 
73
73
  method_option :timeout,
74
- :type => :numeric,
75
- :aliases => '-t',
76
- :default => 60,
77
- :desc => 'The maximum time in seconds to wait for the spec runner to finish'
74
+ type: :numeric,
75
+ aliases: '-t',
76
+ default: 60,
77
+ desc: 'The maximum time in seconds to wait for the spec runner to finish'
78
78
 
79
79
  method_option :console,
80
- :type => :string,
81
- :default => 'failure',
82
- :desc => 'Whether to show console.log statements in the spec runner, either `always`, `never` or `failure`'
80
+ type: :string,
81
+ default: 'failure',
82
+ desc: 'Whether to show console.log statements in the spec runner, either `always`, `never` or `failure`'
83
83
 
84
84
  method_option :errors,
85
- :type => :string,
86
- :default => 'failure',
87
- :desc => 'Whether to show errors in the spec runner, either `always`, `never` or `failure`'
85
+ type: :string,
86
+ default: 'failure',
87
+ desc: 'Whether to show errors in the spec runner, either `always`, `never` or `failure`'
88
88
 
89
89
  method_option :focus,
90
- :type => :boolean,
91
- :aliases => '-f',
92
- :default => true,
93
- :desc => 'Specdoc focus to hide successful tests when at least one test fails'
90
+ type: :boolean,
91
+ aliases: '-f',
92
+ default: true,
93
+ desc: 'Specdoc focus to hide successful tests when at least one test fails'
94
94
 
95
95
  method_option :specdoc,
96
- :type => :string,
97
- :default => :always,
98
- :desc => 'Whether to show successes in the spec runner, either `always`, `never` or `failure`'
96
+ type: :string,
97
+ default: :always,
98
+ desc: 'Whether to show successes in the spec runner, either `always`, `never` or `failure`'
99
99
 
100
100
  method_option :coverage,
101
- :type => :boolean,
102
- :default => false,
103
- :desc => 'Whether to enable the coverage support or not'
101
+ type: :boolean,
102
+ default: false,
103
+ desc: 'Whether to enable the coverage support or not'
104
104
 
105
105
  method_option :coverage_html,
106
- :type => :boolean,
107
- :default => false,
108
- :desc => 'Whether to generate html coverage report. Implies --coverage'
106
+ type: :boolean,
107
+ default: false,
108
+ desc: 'Whether to generate html coverage report. Implies --coverage'
109
109
 
110
110
  method_option :coverage_summary,
111
- :type => :boolean,
112
- :default => false,
113
- :desc => 'Whether to generate html coverage summary. Implies --coverage'
111
+ type: :boolean,
112
+ default: false,
113
+ desc: 'Whether to generate html coverage summary. Implies --coverage'
114
114
 
115
115
  method_option :statements_threshold,
116
- :type => :numeric,
117
- :default => 0,
118
- :desc => 'Statements coverage threshold'
116
+ type: :numeric,
117
+ default: 0,
118
+ desc: 'Statements coverage threshold'
119
119
 
120
120
  method_option :functions_threshold,
121
- :type => :numeric,
122
- :default => 0,
123
- :desc => 'Functions coverage threshold'
121
+ type: :numeric,
122
+ default: 0,
123
+ desc: 'Functions coverage threshold'
124
124
 
125
125
  method_option :branches_threshold,
126
- :type => :numeric,
127
- :default => 0,
128
- :desc => 'Branches coverage threshold'
126
+ type: :numeric,
127
+ default: 0,
128
+ desc: 'Branches coverage threshold'
129
129
 
130
130
  method_option :lines_threshold,
131
- :type => :numeric,
132
- :default => 0,
133
- :desc => 'Lines coverage threshold'
131
+ type: :numeric,
132
+ default: 0,
133
+ desc: 'Lines coverage threshold'
134
134
 
135
135
  # Run the Guard::Jasmine::Runner with options from
136
136
  # the command line.
@@ -138,19 +138,17 @@ module Guard
138
138
  # @param [Array<String>] paths the name of the specs to run
139
139
  #
140
140
  def spec(*paths)
141
- paths = [options.spec_dir] if paths.empty?
142
-
143
- runner_options = { }
141
+ runner_options = {}
144
142
  runner_options[:port] = options.port || CLI.find_free_server_port
143
+ runner_options[:spec_dir] = options.spec_dir || (File.exists?(File.join('spec', 'javascripts')) ? File.join('spec', 'javascripts') : 'spec')
144
+ runner_options[:server] = options.server.to_sym == :auto ? ::Guard::Jasmine::Server.detect_server(runner_options[:spec_dir]) : options.server.to_sym
145
145
  runner_options[:jasmine_url] = options.url || "http://localhost:#{ runner_options[:port] }#{ options.server.to_sym == :jasmine_gem ? '/' : '/jasmine' }"
146
146
  runner_options[:phantomjs_bin] = options.bin || CLI.which('phantomjs')
147
147
  runner_options[:timeout] = options.timeout
148
148
  runner_options[:verbose] = options.verbose
149
- runner_options[:server] = options.server.to_sym
150
149
  runner_options[:server_env] = options.server_env
151
150
  runner_options[:server_timeout] = options.server_timeout
152
151
  runner_options[:rackup_config] = options.rackup_config
153
- runner_options[:spec_dir] = options.spec_dir
154
152
  runner_options[:console] = [:always, :never, :failure].include?(options.console.to_sym) ? options.console.to_sym : :failure
155
153
  runner_options[:errors] = [:always, :never, :failure].include?(options.errors.to_sym) ? options.errors.to_sym : :failure
156
154
  runner_options[:specdoc] = [:always, :never, :failure].include?(options.specdoc.to_sym) ? options.specdoc.to_sym : :always
@@ -166,6 +164,8 @@ module Guard
166
164
  runner_options[:hide_success] = true
167
165
  runner_options[:max_error_notify] = 0
168
166
 
167
+ paths = [runner_options[:spec_dir]] if paths.empty?
168
+
169
169
  if CLI.phantomjs_bin_valid?(runner_options[:phantomjs_bin])
170
170
  catch(:task_has_failed) do
171
171
  ::Guard::Jasmine::Server.start(runner_options) unless runner_options[:server] == :none
@@ -24,7 +24,7 @@ errors = {}
24
24
  # Catch JavaScript errors
25
25
  #
26
26
  page.onError = (msg, trace) ->
27
- if currentSpecId && currentSpecId isnt -1
27
+ if currentSpecId
28
28
  errors[currentSpecId] ||= []
29
29
  errors[currentSpecId].push({ msg: msg, trace: trace })
30
30
 
@@ -42,7 +42,7 @@ page.onConsoleMessage = (msg, line, source) ->
42
42
  logs[currentSpecId] = []
43
43
 
44
44
  else
45
- logs[currentSpecId].push(msg) if currentSpecId isnt -1
45
+ logs[currentSpecId].push(msg)
46
46
 
47
47
  # Initialize the page before the JavaScript is run.
48
48
  #
@@ -1,3 +1,4 @@
1
+ // Generated by CoffeeScript 1.3.3
1
2
  (function() {
2
3
  var currentSpecId, errors, logs, options, page, specsReady, waitFor;
3
4
 
@@ -21,7 +22,7 @@
21
22
  errors = {};
22
23
 
23
24
  page.onError = function(msg, trace) {
24
- if (currentSpecId && currentSpecId !== -1) {
25
+ if (currentSpecId) {
25
26
  errors[currentSpecId] || (errors[currentSpecId] = []);
26
27
  return errors[currentSpecId].push({
27
28
  msg: msg,
@@ -44,9 +45,7 @@
44
45
  currentSpecId = Number(RegExp.$1);
45
46
  return logs[currentSpecId] = [];
46
47
  } else {
47
- if (currentSpecId !== -1) {
48
- return logs[currentSpecId].push(msg);
49
- }
48
+ return logs[currentSpecId].push(msg);
50
49
  }
51
50
  };
52
51
 
@@ -1,3 +1,4 @@
1
+ // Generated by CoffeeScript 1.3.3
1
2
  (function() {
2
3
  var Result;
3
4
 
@@ -76,6 +77,24 @@
76
77
  return suite;
77
78
  };
78
79
 
80
+ Result.prototype.addGlobalErrors = function(suite) {
81
+ var b, err, errMsg, globalErrors, noSpecs, noSuites, _i, _len, _ref;
82
+ noSuites = !suite.suites || suite.suites.length === 0;
83
+ noSpecs = !suite.specs || suite.specs.length === 0;
84
+ globalErrors = this.errors[-1] && this.errors[-1].length !== 0;
85
+ if (noSuites && noSpecs && globalErrors) {
86
+ err = this.errors[-1][0];
87
+ errMsg = [err.msg];
88
+ _ref = err.trace;
89
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
90
+ b = _ref[_i];
91
+ errMsg.push("\n " + b.file + ":" + b.line + " " + b["function"]);
92
+ }
93
+ suite.error = errMsg.join("");
94
+ return suite.passed = false;
95
+ }
96
+ };
97
+
79
98
  Result.prototype.cleanResult = function(suite) {
80
99
  var s, spec, _i, _len, _ref;
81
100
  suite.suites = (function() {
@@ -106,6 +125,7 @@
106
125
  }
107
126
  if (this.options.errors !== 'never') {
108
127
  this.addErrors(this.result);
128
+ this.addGlobalErrors(this.result);
109
129
  }
110
130
  this.cleanResult(this.result);
111
131
  return this.result;
@@ -45,6 +45,19 @@ class Result
45
45
 
46
46
  suite
47
47
 
48
+ addGlobalError: (suite) ->
49
+ noSuites = !suite.suites || suite.suites.length == 0
50
+ noSpecs = !suite.specs || suite.specs.length == 0
51
+ globalErrors = @errors[-1] && @errors[-1].length != 0
52
+
53
+ if noSuites && noSpecs && globalErrors
54
+ err = @errors[-1][0]
55
+ errMsg = [ err.msg ]
56
+ for b in err.trace
57
+ errMsg.push "\n #{b.file}:#{b.line} #{b.function}"
58
+ suite.error = errMsg.join("")
59
+ suite.passed = false
60
+
48
61
  # Clean unnecessary properties from the result
49
62
  #
50
63
  # @param [Object] suite the suite result
@@ -69,7 +82,9 @@ class Result
69
82
  #
70
83
  process: ->
71
84
  @addLogs(@result) if @options.console isnt 'never'
72
- @addErrors(@result) if @options.errors isnt 'never'
85
+ if @options.errors isnt 'never'
86
+ @addErrors(@result)
87
+ @addGlobalError(@result)
73
88
  @cleanResult(@result)
74
89
 
75
90
  @result
@@ -64,7 +64,7 @@ module Guard
64
64
  "Run Jasmine suite#{ paths.size == 1 ? '' : 's' } #{ paths.join(' ') }"
65
65
  end
66
66
 
67
- Formatter.info(message, :reset => true)
67
+ Formatter.info(message, reset: true)
68
68
  end
69
69
 
70
70
  # Returns the failed spec file names.
@@ -167,7 +167,7 @@ module Guard
167
167
  json = json.encode('UTF-8') if json.respond_to?(:encode)
168
168
 
169
169
  begin
170
- result = MultiJson.decode(json, { :max_nesting => false })
170
+ result = MultiJson.decode(json, { max_nesting: false })
171
171
 
172
172
  if result['error']
173
173
  notify_runtime_error(result, options)
@@ -204,7 +204,7 @@ module Guard
204
204
  def notify_runtime_error(result, options)
205
205
  message = "An error occurred: #{ result['error'] }"
206
206
  Formatter.error(message)
207
- Formatter.notify(message, :title => 'Jasmine error', :image => :failed, :priority => 2) if options[:notification]
207
+ Formatter.notify(message, title: 'Jasmine error', image: :failed, priority: 2) if options[:notification]
208
208
  end
209
209
 
210
210
  # Notification about a spec run, success or failure,
@@ -231,12 +231,12 @@ module Guard
231
231
  if passed
232
232
  report_specdoc(result, passed, options)
233
233
  Formatter.success(message)
234
- Formatter.notify(full_message, :title => 'Jasmine suite passed') if options[:notification] && !options[:hide_success]
234
+ Formatter.notify(full_message, title: 'Jasmine suite passed') if options[:notification] && !options[:hide_success]
235
235
  else
236
236
  report_specdoc(result, passed, options)
237
237
  Formatter.error(message)
238
238
  notify_errors(result, options)
239
- Formatter.notify(full_message, :title => 'Jasmine suite failed', :image => :failed, :priority => 2) if options[:notification]
239
+ Formatter.notify(full_message, title: 'Jasmine suite failed', image: :failed, priority: 2) if options[:notification]
240
240
  end
241
241
 
242
242
  Formatter.info("Done.\n")
@@ -307,10 +307,10 @@ module Guard
307
307
 
308
308
  if failed
309
309
  Formatter.error coverage
310
- Formatter.notify(coverage, :title => 'Code coverage failed', :image => :failed, :priority => 2) if options[:notification]
310
+ Formatter.notify(coverage, title: 'Code coverage failed', image: :failed, priority: 2) if options[:notification]
311
311
  else
312
312
  Formatter.success 'Code coverage succeed'
313
- Formatter.notify('All code is adequately covered with specs', :title => 'Code coverage succeed') if options[:notification] && !options[:hide_success]
313
+ Formatter.notify('All code is adequately covered with specs', title: 'Code coverage succeed') if options[:notification] && !options[:hide_success]
314
314
  end
315
315
  end
316
316
  end
@@ -523,9 +523,9 @@ module Guard
523
523
  if !spec['passed'] && options[:max_error_notify] > index
524
524
  msg = spec['messages'].map { |message| format_message(message, true) }.join(', ')
525
525
  Formatter.notify("#{ spec['description'] }: #{ msg }",
526
- :title => 'Jasmine spec failed',
527
- :image => :failed,
528
- :priority => 2) if options[:notification]
526
+ title: 'Jasmine spec failed',
527
+ image: :failed,
528
+ priority: 2) if options[:notification]
529
529
  end
530
530
  end
531
531
  end
@@ -575,17 +575,17 @@ module Guard
575
575
  #
576
576
  def update_coverage(coverage, file, options)
577
577
  if file == options[:spec_dir]
578
- File.write(coverage_file, MultiJson.encode(coverage, { :max_nesting => false }))
578
+ File.write(coverage_file, MultiJson.encode(coverage, { max_nesting: false }))
579
579
  else
580
580
  if File.exist?(coverage_file)
581
581
  impl = file.sub('_spec', '').sub(options[:spec_dir], '')
582
- coverage = MultiJson.decode(File.read(coverage_file), { :max_nesting => false })
582
+ coverage = MultiJson.decode(File.read(coverage_file), { max_nesting: false })
583
583
 
584
584
  coverage.each do |coverage_file, data|
585
585
  coverage[coverage_file] = data if coverage_file == impl
586
586
  end
587
587
 
588
- File.write(coverage_file, MultiJson.encode(coverage, { :max_nesting => false }))
588
+ File.write(coverage_file, MultiJson.encode(coverage, { max_nesting: false }))
589
589
  else
590
590
  File.write(coverage_file, MultiJson.encode({ }))
591
591
  end
@@ -27,7 +27,6 @@ module Guard
27
27
  #
28
28
  def start(options)
29
29
  server = options[:server]
30
- server = detect_server(options[:spec_dir]) if server == :auto
31
30
  port = options[:port]
32
31
  timeout = options[:server_timeout]
33
32
 
@@ -54,6 +53,29 @@ module Guard
54
53
  end
55
54
  end
56
55
 
56
+ # Detect the server to use
57
+ #
58
+ # @param [String] spec_dir the spec directory
59
+ # @return [Symbol] the server strategy
60
+ #
61
+ def detect_server(spec_dir)
62
+ if File.exists?('config.ru')
63
+ %w(unicorn thin mongrel).each do |server|
64
+ begin
65
+ require server
66
+ return server.to_sym
67
+ rescue LoadError
68
+ # Ignore missing server and try next
69
+ end
70
+ end
71
+ :webrick
72
+ elsif spec_dir && File.exists?(File.join(spec_dir, 'support', 'jasmine.yml'))
73
+ :jasmine_gem
74
+ else
75
+ :none
76
+ end
77
+ end
78
+
57
79
  private
58
80
 
59
81
  # Start the Rack server of the current project. This
@@ -123,29 +145,6 @@ module Guard
123
145
  ::Guard::UI.error "Cannot start Rake task server: #{ e.message }"
124
146
  end
125
147
 
126
- # Detect the server to use
127
- #
128
- # @param [String] spec_dir the spec directory
129
- # @return [Symbol] the server strategy
130
- #
131
- def detect_server(spec_dir)
132
- if File.exists?('config.ru')
133
- %w(unicorn thin mongrel).each do |server|
134
- begin
135
- require server
136
- return server.to_sym
137
- rescue LoadError
138
- # Ignore missing server and try next
139
- end
140
- end
141
- :webrick
142
- elsif File.exists?(File.join(spec_dir, 'support', 'jasmine.yml'))
143
- :jasmine_gem
144
- else
145
- :none
146
- end
147
- end
148
-
149
148
  # Wait until the Jasmine test server is running.
150
149
  #
151
150
  # @param [Number] port the server port
@@ -1,6 +1,6 @@
1
1
  module Guard
2
2
  module JasmineVersion
3
3
  # Guard::Jasmine version that is used for the Gem specification
4
- VERSION = '1.14.0'
4
+ VERSION = '1.15.0'
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,94 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-jasmine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
5
- prerelease:
4
+ version: 1.15.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Kessler
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-03 00:00:00.000000000 Z
11
+ date: 2013-04-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: guard
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.1.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.1.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: multi_json
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: childprocess
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: thor
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: bundler
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: Guard::Jasmine automatically tests your Jasmine specs on PhantomJS
@@ -128,27 +117,26 @@ files:
128
117
  - README.md
129
118
  homepage: https://github.com/netzpirat/guard-jasmine
130
119
  licenses: []
120
+ metadata: {}
131
121
  post_install_message:
132
122
  rdoc_options: []
133
123
  require_paths:
134
124
  - lib
135
125
  required_ruby_version: !ruby/object:Gem::Requirement
136
- none: false
137
126
  requirements:
138
- - - ! '>='
127
+ - - '>='
139
128
  - !ruby/object:Gem::Version
140
129
  version: '0'
141
130
  required_rubygems_version: !ruby/object:Gem::Requirement
142
- none: false
143
131
  requirements:
144
- - - ! '>='
132
+ - - '>='
145
133
  - !ruby/object:Gem::Version
146
134
  version: 1.3.6
147
135
  requirements: []
148
136
  rubyforge_project: guard-jasmine
149
- rubygems_version: 1.8.24
137
+ rubygems_version: 2.0.3
150
138
  signing_key:
151
- specification_version: 3
139
+ specification_version: 4
152
140
  summary: Guard gem for headless testing with Jasmine
153
141
  test_files: []
154
142
  has_rdoc: