watir-rails 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fe6ed7ba7dacef41325223e9976762b5127a0c7a
4
- data.tar.gz: 39d4cc9bcf2e081eb2e0c9d782131a527bed6196
3
+ metadata.gz: 9a45f26d9da43e400198f49fc425cbe39a382631
4
+ data.tar.gz: ac2b52867c14b010cbebc456db6b2e4ccea2dd18
5
5
  SHA512:
6
- metadata.gz: e2767595de51478f889becb4be7f395f2333fe2020c3edfc25e3e5058e6c47cf365a55defdf210b0983ef445f6417b6b27a00895f4f1f644e1395698db0cede8
7
- data.tar.gz: eb1c37f5b2b112b807e6f45c89f1cd01087a4c1c6f5b1bc7daaf1ea9a4c1ad2f15c9096e630b3a6543633db839771b020babcfe9e05301666c477ff4eb04751b
6
+ metadata.gz: e5a99d40534ecb7e91f12c90f6c310253c3bd79c0955178c9ac67650e063fb84dc1b54d7418fa4c76b989dd3943c346d22966b74db7c0a6839f8c43ec09ab243
7
+ data.tar.gz: b05f51b501f5c6ed21efc0cebd5b3e74dd3c3bcea3de129bbec5175d625397f7d8b85e21970ce25e1616da69b2a8d6f90b319ad1efb5d92d51e207e586afe327
@@ -1,8 +1,6 @@
1
1
  rvm:
2
- - 2.6.2
3
- - 2.5.5
4
- - 2.4.5
5
- - ruby-head
2
+ - 2.6.3
3
+ - ruby-head
6
4
  gemfile:
7
5
  - gemfiles/Gemfile.rails-2.x
8
6
  - gemfiles/Gemfile.rails-3.x
data/CHANGES.md CHANGED
@@ -1,41 +1,46 @@
1
- ### 2.1.0 - 2019/03/19
2
-
3
- * Add support for specifying Rails test-server port. PR #22 by Bartek Wilczek.
4
-
5
- ### 2.0.0 - 2016/09/24
6
-
7
- * Add support for Watir 6.0.
8
-
9
- ### 1.2.1 - 2016/06/15
10
-
11
- * Fix Browser#add_checker deprecation warning. PR #18 by Christophe Bliard.
12
-
13
- ### 1.2.0 - 2016/01/16
14
-
15
- * Add support for running Rails on Puma server. PR #15 by Andrey Koleshko.
16
-
17
- ### 1.1.0 - 2015/07/22
18
-
19
- * Remove strict `mime-types` dependency. See #13
20
-
21
- ### 1.0.4 - 2015/02/28
22
-
23
- * Allow to set Watir::Rails.ignore_exceptions to false. PR #8 by Andrey Koleshko.
24
-
25
- ### 1.0.3 - 2013/11/02
26
-
27
- * Make watir-rails working with Rails 2.3.x too.
28
-
29
- ### 1.0.2 - 2013/11/02
30
-
31
- * Make sure that newest Rails is going to be installed on an empty system.
32
-
33
- ### 1.0.1 - 2013/11/01
34
-
35
- * Add license to gemspec.
36
-
37
- ### 1.0.0 - 2013/10/05
38
-
39
- * Add watir as a dependency to make it possible to use with watir-classic too.
40
- * Add specs to keep the quality high.
41
- * Documentation fixes.
1
+ ### 2.2.0 - 2019
2
+
3
+ * Add support for specifying custom server for test Rails instance. PR #23 by Alex Rodionov.
4
+ * Add support for cleaning up when test Rails server instance has served all requests. PR #23 by Alex Rodionov.
5
+
6
+ ### 2.1.0 - 2019/03/19
7
+
8
+ * Add support for specifying Rails test-server port. PR #22 by Bartek Wilczek.
9
+
10
+ ### 2.0.0 - 2016/09/24
11
+
12
+ * Add support for Watir 6.0.
13
+
14
+ ### 1.2.1 - 2016/06/15
15
+
16
+ * Fix Browser#add_checker deprecation warning. PR #18 by Christophe Bliard.
17
+
18
+ ### 1.2.0 - 2016/01/16
19
+
20
+ * Add support for running Rails on Puma server. PR #15 by Andrey Koleshko.
21
+
22
+ ### 1.1.0 - 2015/07/22
23
+
24
+ * Remove strict `mime-types` dependency. See #13
25
+
26
+ ### 1.0.4 - 2015/02/28
27
+
28
+ * Allow to set Watir::Rails.ignore_exceptions to false. PR #8 by Andrey Koleshko.
29
+
30
+ ### 1.0.3 - 2013/11/02
31
+
32
+ * Make watir-rails working with Rails 2.3.x too.
33
+
34
+ ### 1.0.2 - 2013/11/02
35
+
36
+ * Make sure that newest Rails is going to be installed on an empty system.
37
+
38
+ ### 1.0.1 - 2013/11/01
39
+
40
+ * Add license to gemspec.
41
+
42
+ ### 1.0.0 - 2013/10/05
43
+
44
+ * Add watir as a dependency to make it possible to use with watir-classic too.
45
+ * Add specs to keep the quality high.
46
+ * Documentation fixes.
@@ -18,7 +18,7 @@ module Watir
18
18
  class << self
19
19
  private :new
20
20
  attr_reader :port, :middleware
21
- attr_writer :ignore_exceptions
21
+ attr_writer :ignore_exceptions, :server
22
22
 
23
23
  # Start the Rails server for tests.
24
24
  # Will be called automatically by {Watir::Browser#initialize}.
@@ -30,7 +30,7 @@ module Watir
30
30
  @port = port || find_available_port
31
31
 
32
32
  @server_thread = Thread.new do
33
- run_default_server @middleware, @port
33
+ server.call @middleware, @port
34
34
  end
35
35
 
36
36
  Timeout.timeout(boot_timeout) { @server_thread.join(0.1) until running? }
@@ -67,6 +67,13 @@ module Watir
67
67
  @middleware.error
68
68
  end
69
69
 
70
+ # Returns true if there are pending requests to server.
71
+ #
72
+ # @return [Boolean]
73
+ def pending_requests?
74
+ @middleware.pending_requests?
75
+ end
76
+
70
77
  # Set error rescued by the middleware.
71
78
  #
72
79
  # @param value
@@ -139,22 +146,24 @@ module Watir
139
146
  server.close if server
140
147
  end
141
148
 
142
- def run_default_server(app, port)
143
- begin
144
- require 'rack/handler/thin'
145
- Thin::Logging.silent = true
146
- return Rack::Handler::Thin.run(app, :Port => port)
147
- rescue LoadError
148
- end
149
+ def server
150
+ @server ||= lambda do |app, port|
151
+ begin
152
+ require 'rack/handler/thin'
153
+ Thin::Logging.silent = true
154
+ return Rack::Handler::Thin.run(app, :Port => port)
155
+ rescue LoadError
156
+ end
149
157
 
150
- begin
151
- require 'rack/handler/puma'
152
- return Rack::Handler::Puma.run(app, :Port => port, :Silent => true)
153
- rescue LoadError
154
- end
158
+ begin
159
+ require 'rack/handler/puma'
160
+ return Rack::Handler::Puma.run(app, :Port => port, :Silent => true)
161
+ rescue LoadError
162
+ end
155
163
 
156
- require 'rack/handler/webrick'
157
- Rack::Handler::WEBrick.run(app, :Port => port, :AccessLog => [], :Logger => WEBrick::Log::new(nil, 0))
164
+ require 'rack/handler/webrick'
165
+ Rack::Handler::WEBrick.run(app, :Port => port, :AccessLog => [], :Logger => WEBrick::Log::new(nil, 0))
166
+ end
158
167
  end
159
168
 
160
169
  def legacy_rails?
@@ -1,26 +1,50 @@
1
- module Watir
2
- class Rails
3
- # @private
4
- class Middleware
5
- attr_accessor :error
6
-
7
- def initialize(app)
8
- @app = app
9
- end
10
-
11
- def call(env)
12
- if env["PATH_INFO"] == "/__identify__"
13
- [200, {}, [@app.object_id.to_s]]
14
- else
15
- begin
16
- @app.call(env)
17
- rescue => e
18
- @error = e
19
- raise e
20
- end
21
- end
22
- end
23
- end
24
-
25
- end
26
- end
1
+ module Watir
2
+ class Rails
3
+ # @private
4
+ class Middleware
5
+ class PendingRequestsCounter
6
+ attr_reader :value
7
+
8
+ def initialize
9
+ @value = 0
10
+ @mutex = Mutex.new
11
+ end
12
+
13
+ def increment
14
+ @mutex.synchronize { @value += 1 }
15
+ end
16
+
17
+ def decrement
18
+ @mutex.synchronize { @value -= 1 }
19
+ end
20
+ end
21
+
22
+ attr_accessor :error
23
+
24
+ def initialize(app)
25
+ @app = app
26
+ @counter = PendingRequestsCounter.new
27
+ end
28
+
29
+ def pending_requests?
30
+ @counter.value > 0
31
+ end
32
+
33
+ def call(env)
34
+ if env["PATH_INFO"] == "/__identify__"
35
+ [200, {}, [@app.object_id.to_s]]
36
+ else
37
+ @counter.increment
38
+ begin
39
+ @app.call(env)
40
+ rescue => e
41
+ @error = e
42
+ raise e
43
+ ensure
44
+ @counter.decrement
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,5 +1,5 @@
1
- module Watir
2
- class Rails
3
- VERSION = "2.1.0"
4
- end
5
- end
1
+ module Watir
2
+ class Rails
3
+ VERSION = "2.2.0"
4
+ end
5
+ end
@@ -9,9 +9,11 @@ describe Watir::Rails do
9
9
 
10
10
  context ".boot" do
11
11
  it "starts the server unless already running" do
12
+ server = ->(app, port) {}
12
13
  allow(described_class).to receive_messages(app: double("app"), find_available_port: 42)
13
14
  expect(described_class).to receive(:running?).twice.and_return(false, true)
14
- expect(described_class).to receive(:run_default_server).once
15
+ expect(described_class).to receive(:server).and_return(server)
16
+ expect(server).to receive(:call).once
15
17
 
16
18
  described_class.boot
17
19
  wait_until_server_started
@@ -20,16 +22,18 @@ describe Watir::Rails do
20
22
  it "does nothing if server is already running" do
21
23
  allow(described_class).to receive_messages(app: double("app"), find_available_port: 42)
22
24
  expect(described_class).to receive(:running?).once.and_return(true)
23
- expect(described_class).not_to receive(:run_default_server)
25
+ expect(described_class).not_to receive(:server)
24
26
 
25
27
  described_class.boot
26
28
  end
27
29
 
28
30
  it "raises an error if Rails won't boot with timeout" do
31
+ server = ->(app, port) {}
29
32
  allow(described_class).to receive_messages(app: double("app"),
30
33
  find_available_port: 42, boot_timeout: 0.01)
31
34
  expect(described_class).to receive(:running?).at_least(:twice).and_return(false)
32
- expect(described_class).to receive(:run_default_server)
35
+ expect(described_class).to receive(:server).and_return(server)
36
+ expect(server).to receive(:call)
33
37
 
34
38
  expect {
35
39
  described_class.boot
@@ -41,6 +45,19 @@ describe Watir::Rails do
41
45
  end
42
46
  end
43
47
 
48
+ context ".server" do
49
+ it "allows to customize server" do
50
+ allow(described_class).to receive_messages(app: double("app"), find_available_port: 42)
51
+ allow(described_class).to receive(:running?).twice.and_return(false, true)
52
+
53
+ server = ->(app, port) {}
54
+ described_class.server = server
55
+ expect(server).to receive(:call)
56
+
57
+ described_class.boot
58
+ end
59
+ end
60
+
44
61
  context ".host" do
45
62
  it "@host if specified" do
46
63
  described_class.host = "my_host"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jarmo Pertman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-19 00:00:00.000000000 Z
11
+ date: 2019-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack