def pytest_runtest_setup(self, item): if not isinstance(item, py.test.collect.Function): return if not getattr(item.obj, 'dont_track_allocations', False): leakfinder.start_tracking_allocations() from rpython.rlib import rgil rgil._reset_emulated_gil_holder()
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_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_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 interpret( func, values, view="auto", viewbefore="auto", policy=None, type_system="lltype", backendopt=False, config=None, malloc_check=True, **kwargs ): interp, graph = get_interpreter( func, values, view, viewbefore, policy, 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 interpret(func, values, view='auto', viewbefore='auto', policy=None, backendopt=False, config=None, malloc_check=True, **kwargs): interp, graph = get_interpreter(func, values, view, viewbefore, policy, 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 pytest_runtest_setup(self, item): if not isinstance(item, py.test.collect.Function): return if not getattr(item.obj, 'dont_track_allocations', False): leakfinder.start_tracking_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)
def pytest_runtest_setup(self, __multicall__, item): __multicall__.execute() if not isinstance(item, py.test.collect.Function): return if not getattr(item.obj, 'dont_track_allocations', False): leakfinder.start_tracking_allocations()