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 123
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 115
|
def eval(self, frame): |
super(Name, self).eval(frame) |
-> if not self.is_local(frame): |
self.explanation = self.name | |
magic/exprinfo.py - line 88
|
def is_local(self, frame): |
co = compile('%r in locals() is not globals()' % self.name, '?', 'eval') |
try: |
-> return frame.is_true(frame.eval(co)) |
except passthroughex: |
raise |
except: |
return False | |