From c7daae9f2816fd330d2a3af7ada2203fc26043f8 Mon Sep 17 00:00:00 2001 From: Niklas Hofer Date: Sat, 15 Sep 2012 18:22:08 +0200 Subject: [PATCH] detect browser by parsing $PATH env var instead of relying on unreliable `which` --- lib/capybara/poltergeist/inspector.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/capybara/poltergeist/inspector.rb b/lib/capybara/poltergeist/inspector.rb index 6b63af1..fdd7bd0 100644 --- a/lib/capybara/poltergeist/inspector.rb +++ b/lib/capybara/poltergeist/inspector.rb @@ -3,7 +3,7 @@ module Capybara::Poltergeist BROWSERS = %w(chromium chromium-browser google-chrome open) def self.detect_browser - @browser ||= BROWSERS.find { |name| system("which #{name} &>/dev/null") } + @browser ||= BROWSERS.find { |name| browser_binary_exists?(name) } end def initialize(browser = nil) @@ -31,5 +31,16 @@ module Capybara::Poltergeist "as a configuration option for Poltergeist." end end + + def self.browser_binary_exists?(browser) + exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] + ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| + exts.each { |ext| + exe = "#{path}#{File::SEPARATOR}#{browser}#{ext}" + return exe if File.executable? exe + } + end + return nil + end end end