def test_nested_remember_forget_1(): leakfinder.start_tracking_allocations() x = 1234 leakfinder.remember_malloc(x) p2 = leakfinder.start_tracking_allocations() leakfinder.stop_tracking_allocations(True, prev=p2) py.test.raises(leakfinder.MallocMismatch, leakfinder.stop_tracking_allocations, True)
def test_start_stop_nested(): leakfinder.start_tracking_allocations() p2 = leakfinder.start_tracking_allocations() assert leakfinder.TRACK_ALLOCATIONS leakfinder.stop_tracking_allocations(True, prev=p2) assert leakfinder.TRACK_ALLOCATIONS leakfinder.stop_tracking_allocations(True) assert not leakfinder.TRACK_ALLOCATIONS
def test_traceback(): leakfinder.start_tracking_allocations() x = 1234 leakfinder.remember_malloc(x) res = leakfinder.stop_tracking_allocations(check=False) assert res.keys() == [x] print res[x] assert isinstance(res[x], str) assert 'test_traceback' in res[x] assert 'leakfinder.remember_malloc(x)' in res[x]
def pytest_runtest_setup(__multicall__, item): if isinstance(item, py.test.collect.Function): appclass = item.getparent(PyPyClassCollector) if appclass is not None: spaceconfig = getattr(appclass.obj, 'spaceconfig', None) if spaceconfig: appclass.obj.space = gettestobjspace(**spaceconfig) __multicall__.execute() if isinstance(item, py.test.collect.Function): if not getattr(item.obj, 'dont_track_allocations', False): leakfinder.start_tracking_allocations()
def interpret(func, values, view='auto', viewbefore='auto', policy=None, someobjects=False, type_system="lltype", backendopt=False, config=None, malloc_check=True, **kwargs): interp, graph = get_interpreter(func, values, view, viewbefore, policy, someobjects, type_system=type_system, backendopt=backendopt, config=config, **kwargs) if not malloc_check: result = interp.eval_graph(graph, values) else: prev = leakfinder.start_tracking_allocations() try: result = interp.eval_graph(graph, values) finally: leaks = leakfinder.stop_tracking_allocations(False, prev) if leaks: raise leakfinder.MallocMismatch(leaks) return result
def test_start_stop(): leakfinder.start_tracking_allocations() assert leakfinder.TRACK_ALLOCATIONS leakfinder.stop_tracking_allocations(True) assert not leakfinder.TRACK_ALLOCATIONS
def test_remember_forget(): leakfinder.start_tracking_allocations() x = 1234 leakfinder.remember_malloc(x) py.test.raises(leakfinder.MallocMismatch, leakfinder.stop_tracking_allocations, True)
def test_remember_free(): leakfinder.start_tracking_allocations() x = 1234 leakfinder.remember_malloc(x) leakfinder.remember_free(x) leakfinder.stop_tracking_allocations(True)