def test_frame_stack(): def to_code_names(frames): code_names = deque() for frame in reversed(frames): code_name = frame.f_code.co_name if code_name not in mock_code_names: break code_names.appendleft(code_name) return list(code_names) baz_frame = foo() foo_frame = baz_frame.f_back.f_back frames = frame_stack(baz_frame) assert to_code_names(frames) == ['foo', 'bar', 'baz'] # base frame. frames = frame_stack(baz_frame, base_frame=foo_frame) assert to_code_names(frames) == ['bar', 'baz'] # ignored codes. frames = frame_stack(baz_frame, ignored_codes=[ six.get_function_code(foo), six.get_function_code(baz), ]) assert to_code_names(frames) == ['bar']
def test_frame_stack(): def to_code_names(frames): code_names = deque() for frame in reversed(frames): code_name = frame.f_code.co_name if code_name not in mock_code_names: break code_names.appendleft(code_name) return list(code_names) frame = foo() frames = frame_stack(frame) assert to_code_names(frames) == ['foo', 'bar', 'baz'] # top frame frames = frame_stack(frame, top_frame=frame.f_back) assert to_code_names(frames) == ['bar', 'baz'] # top code frames = frame_stack(frame, top_code=frame.f_back.f_code) assert to_code_names(frames) == ['bar', 'baz'] # both of top frame and top code frames = frame_stack(frame, top_frame=frame.f_back, top_code=frame.f_back.f_code) assert to_code_names(frames) == ['bar', 'baz']
def test_frame_stack(): def to_code_names(frames): code_names = deque() for frame in reversed(frames): code_name = frame.f_code.co_name if code_name not in mock_code_names: break code_names.appendleft(code_name) return list(code_names) frame = foo() frames = frame_stack(frame) assert to_code_names(frames) == ['foo', 'bar', 'baz'] # top frame frames = frame_stack(frame, top_frames=[frame.f_back]) assert to_code_names(frames) == ['bar', 'baz'] # top code frames = frame_stack(frame, top_codes=[frame.f_back.f_code]) assert to_code_names(frames) == ['bar', 'baz'] # both of top frame and top code frames = frame_stack(frame, top_frames=[frame.f_back], top_codes=[frame.f_back.f_code]) assert to_code_names(frames) == ['bar', 'baz']
def frame_stack(self, frame): return frame_stack(frame, self.base_frame, self.base_code, self.ignored_frames, self.ignored_codes)