diff --git a/.travis.yml b/.travis.yml index 047f9a5..4023e9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: ruby rvm: - - 1.8.7 + - 1.9.3 + - 2.2.1 before_install: - true && `base64 --decode <<< ZXhwb3J0IEJST1dTRVJTVEFDS19BQ0NFU1NfS0VZPUh5VmZydXJvb3dYb041eGhLZEs2Cg==` diff --git a/README.md b/README.md index 4c9bccb..8a69b8d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # browserstack-local-ruby +[![Build Status](https://travis-ci.org/browserstack/browserstack-local-ruby.svg?branch=master)](https://travis-ci.org/browserstack/browserstack-local-ruby) + ## Setup ``` diff --git a/lib/browserstack/local.rb b/lib/browserstack/local.rb index 622e59c..02d71db 100644 --- a/lib/browserstack/local.rb +++ b/lib/browserstack/local.rb @@ -6,7 +6,7 @@ module BrowserStack class Local attr_reader :pid - def initialize(key = nil) + def initialize(key = ENV["BROWSERSTACK_ACCESS_KEY"]) @key = key @logfile = File.join(Dir.pwd, "local.log") end @@ -58,7 +58,9 @@ def start(options = {}) end system("echo '' > '#{@logfile}'") - @process = IO.popen(command, "w+") + #@pid = spawn() + #Process.detach @pid + @process = IO.popen(command_args) @stdout = File.open(@logfile, "r") while true @@ -95,8 +97,7 @@ def stop return if @pid.nil? Process.kill("TERM", @pid) @process.close - while true - break if !self.isRunning + while self.isRunning sleep 1 end end @@ -104,6 +105,13 @@ def stop def command "#{@binary_path} -logFile '#{@logfile}' #{@folder_flag} #{@key} #{@folder_path} #{@force_local_flag} #{@local_identifier_flag} #{@only_flag} #{@only_automate_flag} #{@proxy_host} #{@proxy_port} #{@proxy_user} #{@proxy_pass} #{@force_flag} #{@verbose_flag} #{@hosts}".strip end + + def command_args + args = ["#{@binary_path}", "-logFile", "#{@logfile}", "#{@key}", "#{@folder_flag}", "#{@folder_path}", "#{@force_local_flag}", "#{@local_identifier_flag}", "#{@only_flag}", "#{@only_automate_flag}", "#{@proxy_host}", "#{@proxy_port}", "#{@proxy_user}", "#{@proxy_pass}", "#{@force_flag}", "#{@verbose_flag}", "#{@hosts}"] + args = args.select {|a| a.to_s != "" } + args.push(:err => [:child, :out]) + args + end end end diff --git a/lib/browserstack/localbinary.rb b/lib/browserstack/localbinary.rb index 5b6c27e..0c8ef74 100644 --- a/lib/browserstack/localbinary.rb +++ b/lib/browserstack/localbinary.rb @@ -13,14 +13,14 @@ def initialize @http_path = case host_os when /mswin|msys|mingw|cygwin|bccwin|wince|emc/ @windows = true - "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal.exe" + "https://s3.amazonaws.com/bs-automate-prod/local/BrowserStackLocal-win32.exe" when /darwin|mac os/ - "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal-darwin-x64" + "https://s3.amazonaws.com/bs-automate-prod/local/BrowserStackLocal-darwin-x64" when /linux/ if 1.size == 8 - "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal-linux-x64" + "https://s3.amazonaws.com/bs-automate-prod/local/BrowserStackLocal-linux-x64" else - "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal-linux-ia32" + "https://s3.amazonaws.com/bs-automate-prod/local/BrowserStackLocal-linux-ia32" end end @@ -41,14 +41,12 @@ def download(dest_parent_dir) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE - http.request_get(uri.path) do |res| - file = open(binary_path, 'w') - res.read_body do |chunk| - file.write(res.body) - end - file.close - FileUtils.chmod 0755, binary_path - end + res = http.get(uri.path) + file = open(binary_path, 'w') + file.write(res.body) + file.close + FileUtils.chmod 0755, binary_path + binary_path end diff --git a/test/browserstack-local-test.rb b/test/browserstack-local-test.rb index 48f4baa..17bebd6 100644 --- a/test/browserstack-local-test.rb +++ b/test/browserstack-local-test.rb @@ -8,20 +8,20 @@ def setup end def test_check_pid - @bs_local.start({'key' => ENV["BROWSERSTACK_ACCESS_KEY"]}) + @bs_local.start refute_nil @bs_local.pid, 0 end def test_is_running - @bs_local.start({'key' => ENV["BROWSERSTACK_ACCESS_KEY"]}) + @bs_local.start assert_equal true, @bs_local.isRunning end def test_multiple_binary - @bs_local.start({'key' => ENV["BROWSERSTACK_ACCESS_KEY"]}) + @bs_local.start bs_local_2 = BrowserStack::Local.new assert_raises BrowserStack::LocalException do - bs_local_2.start({'key' => ENV["BROWSERSTACK_ACCESS_KEY"]}) + bs_local_2.start end end