8000 pass through unexpected errors (#287) · python-lsp/python-lsp-server@7fda2ab · GitHub
[go: up one dir, main page]

Skip to content

Commit 7fda2ab

Browse files
authored
pass through unexpected errors (#287)
* pass through unexpected errors * fix tests
1 parent 36e57d5 commit 7fda2ab

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

pyls/rpc_manager.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Copyright 2017 Palantir Technologies, Inc.
22
import logging
3+
import traceback
34
from uuid import uuid4
45

56
from concurrent.futures import ThreadPoolExecutor, Future
@@ -118,7 +119,7 @@ def _handle_request(self, request):
118119< 10000 /code>
output = _make_response(request, error=e.error._data)
119120
except Exception as e: # pylint: disable=broad-except
120121
log.exception('synchronous method handler exception for request: %s', request)
121-
output = _make_response(request, error=JSONRPCServerError()._data)
122+
output = _make_response(request, error={'code': JSONRPCServerError.CODE, 'message': traceback.format_exc()})
122123
else:
123124
if request._id in self._received_requests:
124125
log.error('Received request %s with duplicate id', request.data)
@@ -147,10 +148,11 @@ def did_finish_callback(completed_future):
147148
result = completed_future.result()
148149
except JSONRPCDispatchException as e:
149150
output = _make_response(request, error=e.error._data)
150-
except Exception as e: # pylint: disable=broad-except
151-
# TODO(forozco): add more descriptive error
151+
except Exception: # pylint: disable=broad-except
152152
log.exception('asynchronous method handler exception for request: %s', request)
153-
output = _make_response(request, error=JSONRPCServerError()._data)
153+
output = _make_response(request, error={
154+
'code': JSONRPCServerError.CODE, 'message': traceback.format_exc()
155+
})
154156
else:
155157
output = _make_response(request, result=result)
156158
finally:

test/test_rpc_manager.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ def wrapper():
5353
rpc_manager._sent_requests.values()[0].result(timeout=1)
5454
message_manager.write_message.assert_called_once()
5555
(sent_message, ), _ = message_manager.write_message.call_args
56-
assert sent_message.data == JSONRPC20Response(_id=1, error=JSONRPCServerError()._data).data
56+
data = sent_message.data
57+
assert data['id'] == 1
58+
assert data['error']['code'] == JSONRPCServerError.CODE
59+
assert 'something bad happened' in data['error']['message']
5760

5861

5962
def test_handle_request_async_error(rpc_management):

0 commit comments

Comments
 (0)
0