@@ -98,10 +98,33 @@ class SlaveInteractor:
|
||||
|
||||
|
||||
def serialize_report(rep):
|
||||
def disassembled_report(rep):
|
||||
reprtraceback = rep.longrepr.reprtraceback.__dict__
|
||||
reprcrash = rep.longrepr.reprcrash.__dict__
|
||||
|
||||
new_entries = []
|
||||
for entry in reprtraceback['reprentries']:
|
||||
new_entry = entry.__dict__
|
||||
for key, value in new_entry.items():
|
||||
if hasattr(value, '__dict__'):
|
||||
new_entry[key] = value.__dict__
|
||||
new_entries.append(new_entry)
|
||||
|
||||
reprtraceback['reprentries'] = new_entries
|
||||
|
||||
return {
|
||||
'reprcrash': reprcrash,
|
||||
'reprtraceback': reprtraceback
|
||||
}
|
||||
|
||||
import py
|
||||
d = rep.__dict__.copy()
|
||||
if hasattr(rep.longrepr, 'toterminal'):
|
||||
d['longrepr'] = str(rep.longrepr)
|
||||
if hasattr(rep.longrepr, 'reprtraceback') \
|
||||
and hasattr(rep.longrepr, 'reprcrash'):
|
||||
d['longrepr'] = disassembled_report(rep)
|
||||
else:
|
||||
d['longrepr'] = str(rep.longrepr)
|
||||
else:
|
||||
d['longrepr'] = rep.longrepr
|
||||
for name in d:
|
||||
|
||||
@@ -327,7 +327,45 @@ class SlaveController(object):
|
||||
|
||||
|
||||
def unserialize_report(name, reportdict):
|
||||
def assembled_report(reportdict):
|
||||
from _pytest._code.code import (
|
||||
ReprExceptionInfo,
|
||||
ReprFileLocation,
|
||||
ReprEntry,
|
||||
ReprFuncArgs,
|
||||
ReprTraceback
|
||||
)
|
||||
if reportdict['longrepr']:
|
||||
if 'reprcrash' and 'reprtraceback' in reportdict['longrepr']:
|
||||
|
||||
reprtraceback = reportdict['longrepr']['reprtraceback']
|
||||
reprcrash = reportdict['longrepr']['reprcrash']
|
||||
|
||||
unserialized_entries = []
|
||||
for entry in reprtraceback['reprentries']:
|
||||
reprfuncargs, reprfileloc = None, None
|
||||
if entry['reprfuncargs']:
|
||||
reprfuncargs = ReprFuncArgs(**entry['reprfuncargs'])
|
||||
if entry['reprfileloc']:
|
||||
reprfileloc = ReprFileLocation(**entry['reprfileloc'])
|
||||
|
||||
reprentry = ReprEntry(
|
||||
lines=entry['lines'],
|
||||
reprfuncargs=reprfuncargs,
|
||||
reprlocals=entry['reprlocals'],
|
||||
filelocrepr=reprfileloc,
|
||||
style=entry['style']
|
||||
)
|
||||
unserialized_entries.append(reprentry)
|
||||
reprtraceback['reprentries'] = unserialized_entries
|
||||
|
||||
reportdict['longrepr'] = ReprExceptionInfo(
|
||||
reprtraceback=ReprTraceback(**reprtraceback),
|
||||
reprcrash=ReprFileLocation(**reprcrash),
|
||||
)
|
||||
return reportdict
|
||||
|
||||
if name == "testreport":
|
||||
return runner.TestReport(**reportdict)
|
||||
return runner.TestReport(**assembled_report(reportdict))
|
||||
elif name == "collectreport":
|
||||
return runner.CollectReport(**reportdict)
|
||||
return runner.CollectReport(**assembled_report(reportdict))
|
||||
|
||||
Reference in New Issue
Block a user