49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
 | 
						|
""" test magic abilities of tracer
 | 
						|
"""
 | 
						|
 | 
						|
import py
 | 
						|
py.test.skip("These features have been disabled")
 | 
						|
 | 
						|
from py.__.apigen.tracer.magic import trace, get_storage, stack_copier, \
 | 
						|
    DocStorageKeeper
 | 
						|
from py.__.apigen.tracer.docstorage import DocStorage
 | 
						|
from py.__.apigen.tracer import model
 | 
						|
 | 
						|
#def setup_function(f):
 | 
						|
#    DocStorageKeeper.set_storage(DocStorage().from_dict({}))
 | 
						|
 | 
						|
def fun(a, b, c):
 | 
						|
    return "a"
 | 
						|
fun = trace()(fun)
 | 
						|
 | 
						|
def test_magic():
 | 
						|
    fun(1, 2, 3)
 | 
						|
    
 | 
						|
    ds = get_storage()
 | 
						|
    assert 'fun' in ds.descs
 | 
						|
    assert len(ds.descs.keys()) == 2
 | 
						|
    desc = ds.descs['fun']
 | 
						|
    inputcells = desc.inputcells
 | 
						|
    assert isinstance(inputcells[0], model.SomeInt)
 | 
						|
    assert isinstance(inputcells[1], model.SomeInt)
 | 
						|
    assert isinstance(inputcells[2], model.SomeInt)
 | 
						|
    assert isinstance(desc.retval, model.SomeString)
 | 
						|
 | 
						|
def g(x):
 | 
						|
    return f(x)
 | 
						|
 | 
						|
def f(x):
 | 
						|
    return x + 3
 | 
						|
f = trace(keep_frames=True, frame_copier=stack_copier)(f)
 | 
						|
 | 
						|
def test_fancy_copier():
 | 
						|
    g(1)
 | 
						|
    
 | 
						|
    ds = get_storage()
 | 
						|
    assert 'f' in ds.descs
 | 
						|
    desc = ds.descs['f']
 | 
						|
    stack = desc.call_sites.values()[0][0]
 | 
						|
    assert str(stack[0].statement) == '    return f(x)'
 | 
						|
    assert str(stack[1].statement) == '    g(1)'
 |