capybara_discoball 0.0.3 → 0.1.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
  SHA256:
3
- metadata.gz: cac015fc3b1bc5a40692f0ff66fd5080c555ea1c7070148af280d5bde5f8091a
4
- data.tar.gz: 752a97d51f5e970851bdc1ca92f8ffa9d107a565c9a84fe1770050babc136e8e
3
+ metadata.gz: 3c9c21cc79e65ba2847f9a93894819776dc22c41bef6395040692f930da22676
4
+ data.tar.gz: 99903a02114b594439206b29db95b5e2cdeab490605ee9c7b0abd2c0739afb58
5
5
  SHA512:
6
- metadata.gz: c6fe4ffdf43b29278d96ff7a39c4e4f25e632c4f221f994b61d12115d0927f791fa33e5d6c594cd9a46fa716fd5039b0829519c03cc731bf4168443cef129d8a
7
- data.tar.gz: 7f48ead23ef8dd6a735972d8170be4967649e38d2630d57009dc1ba686b0ef36198e83c91708e8e7c27185aa9ec37b435afe95477377a656b55e39e7a5872f96
6
+ metadata.gz: 3340ad64eb78c8d491cb1370b1a4b87f83026146c9ab84f1f11073b0cef9a16f8341643b6e7c87ff3f0b3ffa7ad457aa6f24df6c3264aac8c90d4fdcf6e08ebd
7
+ data.tar.gz: 5e7f1c8e452cb93a4239d324401db05f0fb296e08a4aee3eb539ee9ea3b547bf2712be717009d87dc5eab84b232f940923ca5385adf57cc2d5fe49d146526112
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ ## v0.1.0
4
+
5
+ - Runner retries finding an unused port [#15]
6
+
7
+ ## v0.0.3
8
+
9
+ - Add Capybara 3.x support [#19]
10
+
11
+ ## v0.0.2
12
+
13
+ - Use `Capybara.register_server`, introduced in Capybara 2.7.0
14
+ - Require Capybara ~> 2.7
15
+
16
+ ## v0.0.1
17
+
18
+ - Initial release
@@ -0,0 +1,17 @@
1
+ module Capybara
2
+ module Discoball
3
+ module Retryable
4
+ def with_retries(retry_count, *rescuable_exceptions)
5
+ yield
6
+ rescue *rescuable_exceptions => e
7
+ if retry_count > 0
8
+ retry_count -= 1
9
+ puts e.inspect if ENV.key?("DEBUG")
10
+ retry
11
+ else
12
+ raise
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,8 +1,13 @@
1
1
  require "capybara"
2
+ require_relative "retryable"
2
3
 
3
4
  module Capybara
4
5
  module Discoball
5
6
  class Runner
7
+ include Capybara::Discoball::Retryable
8
+
9
+ RETRY_COUNT = 3
10
+
6
11
  def initialize(server_factory, &block)
7
12
  @server_factory = server_factory
8
13
  @after_server = block || Proc.new {}
@@ -23,7 +28,8 @@ module Capybara
23
28
  def with_webrick_runner
24
29
  default_server_process = Capybara.server
25
30
  Capybara.server = :webrick
26
- yield
31
+
32
+ with_retries(RETRY_COUNT, Errno::EADDRINUSE) { yield }
27
33
  ensure
28
34
  Capybara.server = default_server_process
29
35
  end
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module Discoball
3
- VERSION = "0.0.3"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -0,0 +1,33 @@
1
+ require "capybara_discoball"
2
+ require "sinatra/base"
3
+
4
+ RSpec.describe Capybara::Discoball::Runner do
5
+ describe "when Capybara fails to find an unused port" do
6
+ it "retries up to 3 times" do
7
+ expected_url = "http://localhost:9999"
8
+
9
+ allow(Capybara::Discoball::Server).to receive(:new).and_return(
10
+ unbootable_server,
11
+ unbootable_server,
12
+ unbootable_server,
13
+ bootable_server(url: expected_url),
14
+ )
15
+
16
+ runner = described_class.new(Sinatra::Base)
17
+
18
+ expect(runner.boot).to eq expected_url
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def bootable_server(url:)
25
+ instance_double(Capybara::Discoball::Server, boot: nil, url: url)
26
+ end
27
+
28
+ def unbootable_server
29
+ server = instance_double(Capybara::Discoball::Server)
30
+ allow(server).to receive(:boot).and_raise(Errno::EADDRINUSE)
31
+ server
32
+ end
33
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara_discoball
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Burns
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-11 00:00:00.000000000 Z
11
+ date: 2018-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -129,20 +129,22 @@ files:
129
129
  - ".rspec"
130
130
  - ".travis.yml"
131
131
  - Appraisals
132
+ - CHANGELOG.md
132
133
  - CONTRIBUTING.md
133
134
  - Gemfile
134
135
  - LICENSE
135
- - NEWS.md
136
136
  - README.md
137
137
  - Rakefile
138
138
  - capybara_discoball.gemspec
139
139
  - gemfiles/capybara_2.gemfile
140
140
  - gemfiles/capybara_3.gemfile
141
141
  - lib/capybara_discoball.rb
142
+ - lib/capybara_discoball/retryable.rb
142
143
  - lib/capybara_discoball/runner.rb
143
144
  - lib/capybara_discoball/server.rb
144
145
  - lib/capybara_discoball/version.rb
145
146
  - spec/black_box/rails_app_spec.rb
147
+ - spec/lib/capybara_discoball/runner_spec.rb
146
148
  - spec/lib/capybara_discoball_spec.rb
147
149
  - spec/spec_helper.rb
148
150
  homepage: ''
@@ -170,5 +172,6 @@ specification_version: 4
170
172
  summary: Spin up an external server just for Capybara
171
173
  test_files:
172
174
  - spec/black_box/rails_app_spec.rb
175
+ - spec/lib/capybara_discoball/runner_spec.rb
173
176
  - spec/lib/capybara_discoball_spec.rb
174
177
  - spec/spec_helper.rb
data/NEWS.md DELETED
@@ -1,4 +0,0 @@
1
- ## 0.0.2 (2016-05-04)
2
-
3
- * Use `Capybara.register_server`, introduced in Capybara 2.7.0
4
- * Require Capybara ~> 2.7