|
1 | | -import subprocess, os, time, json, psutil |
| 1 | +import subprocess, os, time, json,logging |
| 2 | +import psutil |
| 3 | + |
2 | 4 | from browserstack.local_binary import LocalBinary |
3 | 5 | from browserstack.bserrors import BrowserStackLocalError |
4 | 6 |
|
| 7 | +logger = logging.getLogger(__name__) |
5 | 8 | try: |
6 | 9 | from importlib.metadata import version as package_version, PackageNotFoundError |
7 | 10 | except: |
8 | 11 | import pkg_resources |
9 | 12 |
|
10 | | - |
11 | 13 | class Local: |
12 | 14 | def __init__(self, key=None, binary_path=None, **kwargs): |
13 | 15 | self.key = os.environ['BROWSERSTACK_ACCESS_KEY'] if 'BROWSERSTACK_ACCESS_KEY' in os.environ else key |
@@ -88,16 +90,19 @@ def start(self, **kwargs): |
88 | 90 | os.system('echo "" > "'+ self.local_logfile_path +'"') |
89 | 91 | try: |
90 | 92 | if out: |
91 | | - data = json.loads(out.decode()) |
| 93 | + output_string = out.decode() |
92 | 94 | else: |
93 | | - data = json.loads(err.decode()) |
| 95 | + output_string = err.decode() |
| 96 | + |
| 97 | + data = json.loads(output_string) |
94 | 98 |
|
95 | 99 | if data['state'] != "connected": |
96 | 100 | raise BrowserStackLocalError(data["message"]["message"]) |
97 | 101 | else: |
98 | 102 | self.pid = data['pid'] |
99 | 103 | except ValueError: |
100 | | - raise BrowserStackLocalError('Error parsing JSON output from daemon') |
| 104 | + logger.error("BinaryOutputParseError: Raw String = '{}'".format(output_string) ) |
| 105 | + raise BrowserStackLocalError('Error parsing JSON output from daemon. Raw String = "{}"'.format(output_string)) |
101 | 106 |
|
102 | 107 | def isRunning(self): |
103 | 108 | return hasattr(self, 'pid') and psutil.pid_exists(self.pid) |
|
0 commit comments