Handle inspect.getsourcelines failures in FixtureLookupError

Fixes #553

--HG--
branch : getsourcelines-error-issue-553-pytest2.7
This commit is contained in:
Bruno Oliveira
2015-04-15 19:31:22 -03:00
parent 6591d7a209
commit 15328c04eb
3 changed files with 34 additions and 7 deletions

View File

@@ -1537,13 +1537,18 @@ class FixtureLookupError(LookupError):
# it at the requesting side
for function in stack:
fspath, lineno = getfslineno(function)
lines, _ = inspect.getsourcelines(function)
addline("file %s, line %s" % (fspath, lineno+1))
for i, line in enumerate(lines):
line = line.rstrip()
addline(" " + line)
if line.lstrip().startswith('def'):
break
try:
lines, _ = inspect.getsourcelines(function)
except IOError:
error_msg = "file %s, line %s: source code not available"
addline(error_msg % (fspath, lineno+1))
else:
addline("file %s, line %s" % (fspath, lineno+1))
for i, line in enumerate(lines):
line = line.rstrip()
addline(" " + line)
if line.lstrip().startswith('def'):
break
if msg is None:
fm = self.request._fixturemanager