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</home/user/NEW/py-0.9.1/py/test/raises.py:20> - line 1
None</home/user/NEW/py-0.9.1/py/code/testing/test_source.py:193> - line 4
|
def f(x): |
assert (x == |
3 + |
-> 4) | |
magic/assertion.py - line 15
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 | |
code/frame.py - line 16
|
def statement(self): |
-> return self.code.fullsource.getstatement(self.lineno) | |
code/source.py - line 95
|
def getstatement(self, lineno): |
""" return Source statement which contains the |
given linenumber (counted from 0). |
""" |
-> start, end = self.getstatementrange(lineno) |
return self[start:end] | |