Skip to content

Commit d471ba9

Browse files
Merge branch 'master' into LOC_3656_log_exception_data
2 parents 1e3475b + 5e95d78 commit d471ba9

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ MANIFEST
77
venv
88
build
99
browserstack_local.egg-info
10+
build
11+
browserstack_local.egg-info

browserstack/local.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
from browserstack.bserrors import BrowserStackLocalError
66

77
logger = logging.getLogger(__name__)
8+
try:
9+
from importlib.metadata import version as package_version, PackageNotFoundError
10+
except:
11+
import pkg_resources
812

913
class Local:
1014
def __init__(self, key=None, binary_path=None, **kwargs):
@@ -22,8 +26,30 @@ def __xstr(self, key, value):
2226
else:
2327
return ['-' + key, value]
2428

29+
def get_package_version(self):
30+
name = "browserstack-local"
31+
version = 'None'
32+
use_fallback = False
33+
try:
34+
temp = package_version
35+
except NameError: # Only catch if package_version is not defined(and not other errors)
36+
use_fallback = True
37+
38+
if use_fallback:
39+
try:
40+
version = pkg_resources.get_distribution(name).version
41+
except pkg_resources.DistributionNotFound:
42+
version = 'None'
43+
else:
44+
try:
45+
version = package_version(name)
46+
except PackageNotFoundError:
47+
version = 'None'
48+
49+
return version
50+
2551
def _generate_cmd(self):
26-
cmd = [self.binary_path, '-d', 'start', '-logFile', self.local_logfile_path, "-k", self.key]
52+
cmd = [self.binary_path, '-d', 'start', '-logFile', self.local_logfile_path, "-k", self.key, '--source', 'python:' + self.get_package_version()]
2753
for o in self.options.keys():
2854
if self.options.get(o) is not None:
2955
cmd = cmd + self.__xstr(o, self.options.get(o))
@@ -55,7 +81,11 @@ def start(self, **kwargs):
5581
if "onlyCommand" in kwargs and kwargs["onlyCommand"]:
5682
return
5783

58-
self.proc = subprocess.Popen('ls', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
84+
85+
if 'source' in self.options:
86+
del self.options['source']
87+
88+
self.proc = subprocess.Popen(self._generate_cmd(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
5989
(out, err) = self.proc.communicate()
6090

6191
os.system('echo "" > "'+ self.local_logfile_path +'"')

browserstack/local_binary.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import platform, os, sys, zipfile, stat, tempfile, re, subprocess
1+
import platform, os, sys, stat, tempfile, re, subprocess
22
from browserstack.bserrors import BrowserStackLocalError
33

44
try:
@@ -12,15 +12,18 @@ def __init__(self):
1212
self.is_windows = False
1313
osname = platform.system()
1414
if osname == 'Darwin':
15-
self.http_path = "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal-darwin-x64"
15+
self.http_path = "https://bstack-local-prod.s3.amazonaws.com/BrowserStackLocal-darwin-x64"
1616
elif osname == 'Linux':
17-
if is_64bits:
18-
self.http_path = "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal-linux-x64"
17+
if self.is_alpine():
18+
self.http_path = "https://bstack-local-prod.s3.amazonaws.com/BrowserStackLocal-alpine"
1919
else:
20-
self.http_path = "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal-linux-ia32"
20+
if is_64bits:
21+
self.http_path = "https://bstack-local-prod.s3.amazonaws.com/BrowserStackLocal-linux-x64"
22+
else:
23+
self.http_path = "https://bstack-local-prod.s3.amazonaws.com/BrowserStackLocal-linux-ia32"
2124
else:
2225
self.is_windows = True
23-
self.http_path = "https://s3.amazonaws.com/browserStack/browserstack-local/BrowserStackLocal.exe"
26+
self.http_path = "https://bstack-local-prod.s3.amazonaws.com/BrowserStackLocal.exe"
2427

2528
self.ordered_paths = [
2629
os.path.join(os.path.expanduser('~'), '.browserstack'),
@@ -29,6 +32,12 @@ def __init__(self):
2932
]
3033
self.path_index = 0
3134

35+
def is_alpine(self):
36+
grepOutput = subprocess.run("gfrep -w NAME /etc/os-release", capture_output=True, shell=True)
37+
if grepOutput.stdout.decode('utf-8').find('Alpine') > -1:
38+
return True
39+
return False
40+
3241
def __make_path(self, dest_path):
3342
try:
3443
if not os.path.exists(dest_path):

0 commit comments

Comments
 (0)