From 4fb781b1466e650837e2c830a8de6001908047ca Mon Sep 17 00:00:00 2001 From: Pulkit Sharma Date: Mon, 2 Jan 2017 19:48:09 +0530 Subject: [PATCH] redownload binary if it is corrupt --- lib/browserstack/localbinary.rb | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/browserstack/localbinary.rb b/lib/browserstack/localbinary.rb index f883eaa..1e9c77c 100644 --- a/lib/browserstack/localbinary.rb +++ b/lib/browserstack/localbinary.rb @@ -50,13 +50,35 @@ def download(dest_parent_dir) binary_path end + def verify_binary(binary_path) + binary_response = IO.popen(binary_path + " --version").readline + binary_response =~ /BrowserStack Local version \d+\.\d+/ + rescue Exception => e + false + end + def binary_path dest_parent_dir = get_available_dirs binary_path = File.join(dest_parent_dir, "BrowserStackLocal#{".exe" if @windows}") + if File.exists? binary_path binary_path else - download(dest_parent_dir) + binary_path = download(dest_parent_dir) + end + + valid_binary = verify_binary(binary_path) + + if valid_binary + binary_path + else + binary_path = download(dest_parent_dir) + valid_binary = verify_binary(binary_path) + if valid_binary + binary_path + else + raise BrowserStack::LocalException.new('BrowserStack Local binary is corrupt') + end end end