code/testing/test_source.py - line 196
| 192 |
| 193 |
| 194 |
| 195 |
| 196 |
| 197 |
| 198 |
| 199 |
| 200 | |
def test_compile_and_getsource(self): |
co = self.source.compile() |
exec co |
f(7) |
-> excinfo = py.test.raises(AssertionError, "f(6)") |
frame = excinfo.traceback[-1].frame |
stmt = frame.code.fullsource.getstatement(frame.lineno) |
|
assert str(stmt).strip().startswith('assert') | |
test/raises.py - line 20
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 | |
def raises(ExpectedException, *args, **kwargs): |
""" raise AssertionError, if target code does not raise the expected |
exception. |
""" |
assert args |
__tracebackhide__ = True |
if isinstance(args[0], str): |
expr, = args |
assert isinstance(expr, str) |
frame = sys._getframe(1) |
loc = frame.f_locals.copy() |
loc.update(kwargs) |
|
source = py.code.Source(expr) |
try: |
-> exec source.compile() in frame.f_globals, loc |
|
|
|
except ExpectedException: |
return py.code.ExceptionInfo() |
else: |
func = args[0] |
assert callable |
try: |
func(*args[1:], **kwargs) |
|
except ExpectedException: |
return py.code.ExceptionInfo() |
k = ", ".join(["%s=%r" % x for x in kwargs.items()]) |
if k: |
k = ', ' + k |
expr = '%s(%r%s)' %(func.__name__, args, k) |
raise ExceptionFailure(msg="DID NOT RAISE", |
expr=args, expected=ExpectedException) | |
None</build/buildd/codespeak-lib-0.9.1/py/test/raises.py:20> - line 1
None</build/buildd/codespeak-lib-0.9.1/py/code/testing/test_source.py:193> - line 4
|
|
def f(x): |
assert (x == |
3 + |
-> 4) | |
magic/assertion.py - line 22
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 | |
def __init__(self, *args): |
BuiltinAssertionError.__init__(self, *args) |
if args: |
self.msg = str(args[0]) |
else: |
f = sys._getframe(1) |
try: |
source = py.code.Frame(f).statement |
source = str(source.deindent()).strip() |
except py.error.ENOENT: |
source = None |
|
|
if source: |
-> self.msg = exprinfo.interpret(source, f, should_fail=True) |
if not self.args: |
self.args = (self.msg,) |
else: |
self.msg = None | |
magic/exprinfo.py - line 422
| 416 |
| 417 |
| 418 |
| 419 |
| 420 |
| 421 |
| 422 |
| 423 |
| 424 |
| 425 |
| 426 |
| 427 |
| 428 |
| 429 |
| 430 |
| 431 |
| 432 |
| 433 | |
def interpret(source, frame, should_fail=False): |
module = Interpretable(parse(source, 'exec').node) |
|
if isinstance(frame, py.std.types.FrameType): |
frame = py.code.Frame(frame) |
try: |
-> module.run(frame) |
except Failure, e: |
return getfailure(e) |
except passthroughex: |
raise |
except: |
import traceback |
traceback.print_exc() |
if should_fail: |
return "(inconsistently failed then succeeded)" |
else: |
return None | |
magic/exprinfo.py - line 382
|
|
def run(self, frame): |
for stmt in self.nodes: |
stmt = Interpretable(stmt) |
-> stmt.run(frame) | |
magic/exprinfo.py - line 331
| 329 |
| 330 |
| 331 |
| 332 |
| 333 |
| 334 |
| 335 |
| 336 |
| 337 |
| 338 |
| 339 |
| 340 |
| 341 |
| 342 |
| 343 |
| 344 |
| 345 | |
def run(self, frame): |
test = Interpretable(self.test) |
-> test.eval(frame) |
|
if (test.explanation.startswith('False\n{False = ') and |
test.explanation.endswith('\n}')): |
test.explanation = test.explanation[15:-2] |
|
self.result = test.result |
self.explanation = 'assert ' + test.explanation |
if not frame.is_true(test.result): |
try: |
raise BuiltinAssertionError |
except passthroughex: |
raise |
except: |
raise Failure(self) | |
magic/exprinfo.py - line 126
| 121 |
| 122 |
| 123 |
| 124 |
| 125 |
| 126 |
| 127 |
| 128 |
| 129 |
| 130 |
| 131 |
| 132 |
| 133 |
| 134 |
| 135 |
| 136 |
| 137 |
| 138 |
| 139 |
| 140 | |
def eval(self, frame): |
expr = Interpretable(self.expr) |
expr.eval(frame) |
for operation, expr2 in self.ops: |
expr2 = Interpretable(expr2) |
-> expr2.eval(frame) |
self.explanation = "%s %s %s" % ( |
expr.explanation, operation, expr2.explanation) |
co = compile("__exprinfo_left %s __exprinfo_right" % operation, |
'?', 'eval') |
try: |
self.result = frame.eval(co, __exprinfo_left=expr.result, |
__exprinfo_right=expr2.result) |
except passthroughex: |
raise |
except: |
raise Failure(self) |
if not frame.is_true(self.result): |
break |
expr = expr2 | |
magic/exprinfo.py - line 220
| 209 |
| 210 |
| 211 |
| 212 |
| 213 |
| 214 |
| 215 |
| 216 |
| 217 |
| 218 |
| 219 |
| 220 |
| 221 |
| 222 |
| 223 |
| 224 | |
def eval(self, frame, astpattern=astpattern, |
co=compile(astpattern, '?', 'eval')): |
left = Interpretable(self.left) |
left.eval(frame) |
right = Interpretable(self.right) |
right.eval(frame) |
self.explanation = (astpattern |
.replace('__exprinfo_left', left .explanation) |
.replace('__exprinfo_right', right.explanation)) |
try: |
self.result = frame.eval(co, __exprinfo_left=left.result, |
-> __exprinfo_right=right.result) |
except passthroughex: |
raise |
except: |
raise Failure(self) | |