guard-jasmine 1.8.3 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -361,6 +361,11 @@ The server options configures the server environment that is needed to run Guard
361
361
 
362
362
  :timeout => 20000 # The time in ms to wait for the spec runner to finish.
363
363
  # default: 10000
364
+
365
+ :rackup_config => 'spec/dummy/config.ru' # Path to rackup config file (i.e. for webrick, mongrel, thin, unicorn).
366
+ # default: ./config.ru
367
+ # This option is useful when using guard-jasmine in a mountable engine
368
+ # and the config.ru is within the dummy app
364
369
  ```
365
370
 
366
371
  If you're setting the `:server` option to `:none`, you can supply the Jasmine runner url manually:
data/lib/guard/jasmine.rb CHANGED
@@ -25,6 +25,7 @@ module Guard
25
25
  :server_env => ENV['RAILS_ENV'] || 'development',
26
26
  :server_timeout => 15,
27
27
  :port => 8888,
28
+ :rackup_config => nil,
28
29
  :jasmine_url => 'http://localhost:8888/jasmine',
29
30
  :timeout => 10000,
30
31
  :spec_dir => 'spec/javascripts',
@@ -49,6 +50,7 @@ module Guard
49
50
  # @option options [String] :server_env the server environment to use, for example :development, :test
50
51
  # @option options [Integer] :server_timeout the number of seconds to wait for the Jasmine spec server
51
52
  # @option options [String] :port the port for the Jasmine test server
53
+ # @option options [String] :rackup_config custom rackup config to use
52
54
  # @option options [String] :jasmine_url the url of the Jasmine test runner
53
55
  # @option options [String] :phantomjs_bin the location of the PhantomJS binary
54
56
  # @option options [Integer] :timeout the maximum time in milliseconds to wait for the spec runner to finish
@@ -88,7 +90,7 @@ module Guard
88
90
  def start
89
91
  if Jasmine.phantomjs_bin_valid?(options[:phantomjs_bin])
90
92
 
91
- Server.start(options[:server], options[:port], options[:server_env], options[:spec_dir]) unless options[:server] == :none
93
+ Server.start(options) unless options[:server] == :none
92
94
 
93
95
  if Jasmine.runner_available?(options)
94
96
  run_all if options[:all_on_start]
@@ -1,5 +1,7 @@
1
1
  # coding: utf-8
2
2
 
3
+ require 'socket'
4
+ require 'timeout'
3
5
  require 'childprocess'
4
6
 
5
7
  module Guard
@@ -15,31 +17,36 @@ module Guard
15
17
 
16
18
  # Start the internal test server for getting the Jasmine runner.
17
19
  #
18
- # @param [String] strategy the server strategy to use
19
- # @param [Number] port the server port
20
- # @param [String] environment the Rails environment
21
- # @param [String] spec_dir the spec directory
20
+ # @param [Hash] options the server options
21
+ # @option options [String] server the server to use
22
+ # @option options [Number] port the server port
23
+ # @option options [String] server_env the Rails environment
24
+ # @option options [String] spec_dir the spec directory
25
+ # @option options [String] rackup_config custom rackup config to use (i.e. spec/dummy/config.ru for mountable engines)
22
26
  #
23
- def start(strategy, port, environment, spec_dir)
24
- strategy = detect_server(spec_dir) if strategy == :auto
27
+ def start(options)
28
+ server = options[:server]
29
+ server = detect_server(options[:spec_dir]) if server == :auto
30
+ port = options[:port]
31
+ timeout = options[:server_timeout]
25
32
 
26
- case strategy
33
+ case server
27
34
  when :webrick, :mongrel, :thin, :unicorn
28
- start_rack_server(port, environment, strategy)
35
+ start_rack_server(options)
29
36
  when :jasmine_gem
30
37
  start_rake_server(port, 'jasmine')
31
38
  else
32
- start_rake_server(port, strategy.to_s) unless strategy == :none
39
+ start_rake_server(port, server.to_s) unless server == :none
33
40
  end
34
41
 
35
- wait_for_server(port) unless strategy == :none
42
+ wait_for_server(port, timeout) unless server == :none
36
43
  end
37
44
 
38
45
  # Stop the server thread.
39
46
  #
40
47
  def stop
41
48
  if self.process
42
- ::Guard::UI.info "Guard::Jasmine stops server."
49
+ ::Guard::UI.info 'Guard::Jasmine stops server.'
43
50
  self.process.stop(5)
44
51
  end
45
52
  end
@@ -50,14 +57,21 @@ module Guard
50
57
  # will simply start a server that uses the `config.ru`
51
58
  # in the current directory.
52
59
  #
53
- # @param [Number] port the server port
54
- # @param [String] environment the Rails environment
55
- # @param [Symbol] server the rack server to use
60
+ # @param [Hash] options the server options
61
+ # @option options [Symbol] server the rack server to use
62
+ # @option options [String] server_env the Rails environment
63
+ # @option options [Number] port the server port
64
+ # @option options [String] rackup_config custom rackup config to use (i.e. spec/dummy/config.ru for mountable engines)
56
65
  #
57
- def start_rack_server(port, environment, server)
66
+ def start_rack_server(options)
67
+ server = options[:server]
68
+ environment = options[:server_env]
69
+ port = options[:port]
70
+ rackup_config = options[:rackup_config]
71
+
58
72
  ::Guard::UI.info "Guard::Jasmine starts #{ server } test server on port #{ port } in #{ environment } environment."
59
73
 
60
- self.process = ChildProcess.build('rackup', '-E', environment.to_s, '-p', port.to_s, '-s', server.to_s)
74
+ self.process = ChildProcess.build(*['rackup', '-E', environment.to_s, '-p', port.to_s, '-s', server.to_s, rackup_config].compact)
61
75
  self.process.io.inherit! if ::Guard.respond_to?(:options) && ::Guard.options && ::Guard.options[:verbose]
62
76
  self.process.start
63
77
 
@@ -88,6 +102,14 @@ module Guard
88
102
  #
89
103
  def detect_server(spec_dir)
90
104
  if File.exists?('config.ru')
105
+ %w(unicorn thin mongrel).each do |server|
106
+ begin
107
+ require server
108
+ return server.to_sym
109
+ rescue LoadError
110
+ # Ignore missing server and try next
111
+ end
112
+ end
91
113
  :webrick
92
114
  elsif File.exists?(File.join(spec_dir, 'support', 'jasmine.yml'))
93
115
  :jasmine_gem
@@ -99,19 +121,23 @@ module Guard
99
121
  # Wait until the Jasmine test server is running.
100
122
  #
101
123
  # @param [Number] port the server port
124
+ # @param [Number] timeout the server wait timeout
102
125
  #
103
- def wait_for_server(port)
104
- require 'socket'
105
-
106
- while true
107
- begin
108
- ::TCPSocket.new('127.0.0.1', port).close
109
- break
110
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
111
- # Ignore, server still not available
126
+ def wait_for_server(port, timeout)
127
+ Timeout::timeout(timeout) do
128
+ while true
129
+ begin
130
+ ::TCPSocket.new('127.0.0.1', port).close
131
+ break
132
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
133
+ # Ignore, server still not available
134
+ end
135
+ sleep 0.1
112
136
  end
113
- sleep 0.1
114
137
  end
138
+
139
+ rescue Timeout::Error
140
+ ::Guard::UI.warning 'Timeout while waiting for the server startup.'
115
141
  end
116
142
 
117
143
  end
@@ -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.8.3'
4
+ VERSION = '1.9.0'
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-jasmine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.3
4
+ version: 1.9.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-19 00:00:00.000000000 Z
12
+ date: 2012-10-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard
@@ -139,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
139
  version: '0'
140
140
  segments:
141
141
  - 0
142
- hash: -3730569496598151722
142
+ hash: 3448154215617801820
143
143
  required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  none: false
145
145
  requirements: