Author: janne.t.harkonen
Date: Thu Sep 25 06:46:34 2008
New Revision: 831
Modified:
trunk/proto/remote/Remote.py
trunk/proto/remote/python/robotremoteserver.py
Log:
returning traceback
Modified: trunk/proto/remote/Remote.py
==============================================================================
--- trunk/proto/remote/Remote.py (original)
+++ trunk/proto/remote/Remote.py Thu Sep 25 06:46:34 2008
@@ -2,8 +2,8 @@
try:
from robot.errors import RemoteError
-except ImportError: # RemoteError available only after 2.0.2
- RemoteError = AssertionError
+except ImportError:
+ RemoteError = None
class Remote:
@@ -13,7 +13,7 @@
def __init__(self, uri='http://localhost:8270'):
if '://' not in uri:
uri = 'http://' + uri
- self._library = xmlrpclib.Server(uri) #.robotframework
+ self._library = xmlrpclib.Server(uri)
def get_keyword_names(self):
# TODO: Support also getKeywordNames (and runKeyword etc.)
@@ -34,7 +34,7 @@
raise RuntimeError(err.faultString)
print result['output']
if result['status'] != 'PASS':
- raise RemoteError(result['message'])
+ self._raise_failed(result['error'],
result.get('traceback', ''))
return result['return']
def _handle_argument(self, arg):
@@ -51,3 +51,11 @@
if item is None:
return ''
return str(item)
+
+ def _raise_failed(self, message, traceback):
+ if RemoteError is not None:
+ raise RemoteError(message, traceback)
+ # Support for Robot Framework 2.0.2 and earlier.
+ print '*INFO*', traceback
+ raise AssertionError(message)
+
Modified: trunk/proto/remote/python/robotremoteserver.py
==============================================================================
--- trunk/proto/remote/python/robotremoteserver.py (original)
+++ trunk/proto/remote/python/robotremoteserver.py Thu Sep 25 06:46:34 2008
@@ -41,20 +41,17 @@
return names + ['stop_remote_server']
def run_keyword(self, name, args):
- result = {'status':'PASS', 'return':'', 'message':'', 'output':''}
+ result = {'status':'PASS', 'return':'', 'error':'',
+ 'traceback': '', 'output':''}
self._intercept_stdout()
try:
return_value = self._get_keyword(name)(*args)
except:
result['status'] = 'FAIL'
- result['message'], trace = self._get_error_details()
+ result['error'], result['traceback'] =
self._get_error_details()
else:
result['return'] = self._handle_return_value(return_value)
- trace = None
- output = self._restore_stdout()
- if trace is not None:
- output = output != '' and '%s\n*INFO* %s' % (output, trace) or
trace
- result['output'] = output
+ result['output'] = self._restore_stdout()
return result
def get_keyword_arguments(self, name):