Commit c3eb6b914d235eaf7cfca56f3a283a4656e62f0b
Exists in
colab
and in
4 other branches
Merge pull request #243 from mezuro/fix-konacha-hang
Attempt to fix Konacha test hangs on Travis by changing web server
Showing
3 changed files
with
42 additions
and
8 deletions
Show diff stats
Gemfile
@@ -77,7 +77,10 @@ group :test do | @@ -77,7 +77,10 @@ group :test do | ||
77 | gem 'mocha', require: 'mocha/api' | 77 | gem 'mocha', require: 'mocha/api' |
78 | 78 | ||
79 | # Test coverage report | 79 | # Test coverage report |
80 | - gem "codeclimate-test-reporter", require: nil | 80 | + gem 'codeclimate-test-reporter', require: nil |
81 | + | ||
82 | + # For Konacha | ||
83 | + gem 'thin' | ||
81 | end | 84 | end |
82 | 85 | ||
83 | group :development, :test do | 86 | group :development, :test do |
Gemfile.lock
@@ -105,6 +105,7 @@ GEM | @@ -105,6 +105,7 @@ GEM | ||
105 | mime-types (>= 1.16, < 3) | 105 | mime-types (>= 1.16, < 3) |
106 | nokogiri (~> 1.5) | 106 | nokogiri (~> 1.5) |
107 | rails (>= 3, < 5) | 107 | rails (>= 3, < 5) |
108 | + daemons (1.2.3) | ||
108 | dalli (2.7.4) | 109 | dalli (2.7.4) |
109 | database_cleaner (1.4.1) | 110 | database_cleaner (1.4.1) |
110 | debug_inspector (0.0.2) | 111 | debug_inspector (0.0.2) |
@@ -120,6 +121,7 @@ GEM | @@ -120,6 +121,7 @@ GEM | ||
120 | domain_name (0.5.24) | 121 | domain_name (0.5.24) |
121 | unf (>= 0.0.5, < 1.0.0) | 122 | unf (>= 0.0.5, < 1.0.0) |
122 | erubis (2.7.0) | 123 | erubis (2.7.0) |
124 | + eventmachine (1.0.7) | ||
123 | exception_notification (4.1.1) | 125 | exception_notification (4.1.1) |
124 | actionmailer (>= 3.0.4) | 126 | actionmailer (>= 3.0.4) |
125 | activesupport (>= 3.0.4) | 127 | activesupport (>= 3.0.4) |
@@ -293,6 +295,10 @@ GEM | @@ -293,6 +295,10 @@ GEM | ||
293 | therubyracer (0.12.2) | 295 | therubyracer (0.12.2) |
294 | libv8 (~> 3.16.14.0) | 296 | libv8 (~> 3.16.14.0) |
295 | ref | 297 | ref |
298 | + thin (1.6.3) | ||
299 | + daemons (~> 1.0, >= 1.0.9) | ||
300 | + eventmachine (~> 1.0) | ||
301 | + rack (~> 1.0) | ||
296 | thor (0.19.1) | 302 | thor (0.19.1) |
297 | thread_safe (0.3.5) | 303 | thread_safe (0.3.5) |
298 | tilt (1.4.1) | 304 | tilt (1.4.1) |
@@ -364,6 +370,7 @@ DEPENDENCIES | @@ -364,6 +370,7 @@ DEPENDENCIES | ||
364 | sprockets | 370 | sprockets |
365 | sqlite3 | 371 | sqlite3 |
366 | therubyracer | 372 | therubyracer |
373 | + thin | ||
367 | turbolinks | 374 | turbolinks |
368 | twitter-bootstrap-rails! | 375 | twitter-bootstrap-rails! |
369 | uglifier (>= 1.3.0) | 376 | uglifier (>= 1.3.0) |
config/initializers/konacha.rb
1 | -Konacha.configure do |config| | ||
2 | - require 'capybara/poltergeist' | 1 | +if defined?(Konacha) |
2 | + Konacha.configure do |config| | ||
3 | + require 'capybara/poltergeist' | ||
3 | 4 | ||
4 | - config.spec_dir = "spec/javascripts" | ||
5 | - config.spec_matcher = /_spec\.|_test\./ | ||
6 | - config.stylesheets = %w(application) | ||
7 | - config.driver = :poltergeist | ||
8 | -end if defined?(Konacha) | ||
9 | \ No newline at end of file | 5 | \ No newline at end of file |
6 | + config.spec_dir = "spec/javascripts" | ||
7 | + config.spec_matcher = /_spec\.|_test\./ | ||
8 | + config.stylesheets = %w(application) | ||
9 | + config.driver = :poltergeist | ||
10 | + end | ||
11 | + | ||
12 | + # Use thin to run Konacha tests. This is needed because the tests hang frequently in Travis using the default (WEBRick) | ||
13 | + # We can't just do 'Capybara.server' in the configure block because it will also apply to anything else run by | ||
14 | + # Capybara. So instead, override the Konacha.run method to change the server, and restore it after completion. | ||
15 | + module Konacha | ||
16 | + class << self | ||
17 | + old_run = instance_method(:run) | ||
18 | + | ||
19 | + define_method(:run) do | ||
20 | + prev_server = Capybara.server | ||
21 | + begin | ||
22 | + Capybara.server do |app, port| | ||
23 | + require 'rack/handler/thin' | ||
24 | + Rack::Handler::Thin.run(app, :Port => port) | ||
25 | + end | ||
26 | + old_run.bind(self).call | ||
27 | + ensure | ||
28 | + Capybara.server(&prev_server) | ||
29 | + end | ||
30 | + end | ||
31 | + end | ||
32 | + end | ||
33 | +end |