def check_insert_to_line_with_exec(self, func_to_modify, func_to_insert, line_number): code_orig = func_to_modify.__code__ code_to_insert = func_to_insert.__code__ success, result = insert_code(code_orig, code_to_insert, line_number) exec(result) output = sys.stdout.getvalue().strip().split(self.lines_separator)[-1] self.assertTrue(TRACE_MESSAGE in output)
def check_insert_to_line_by_symbols(self, func_to_modify, func_to_insert, line_number, code_for_check): code_orig = func_to_modify.__code__ code_to_insert = func_to_insert.__code__ success, result = insert_code(code_orig, code_to_insert, line_number) self.compare_bytes_sequence(list(result.co_code), list(code_for_check.co_code))
def check_insert_to_line_with_exec(self, func_to_modify, func_to_insert, line_number): code_orig = func_to_modify.__code__ code_to_insert = func_to_insert.__code__ success, result = insert_code(code_orig, code_to_insert, line_number) exec(result) output = sys.stdout.getvalue().strip().split(self.lines_separator)[-1] self.assertTrue(TRACE_MESSAGE in output)
def test_line(self): def foo(): global global_loaded global_loaded() def method(): a = 10 b = 20 c = 20 success, result = insert_code(method.__code__, foo.__code__, method.__code__.co_firstlineno + 1) assert success assert list(result.co_lnotab) == [10, 1, 4, 1, 4, 1] success, result = insert_code(method.__code__, foo.__code__, method.__code__.co_firstlineno + 2) assert success assert list(result.co_lnotab) == [0, 1, 14, 1, 4, 1] success, result = insert_code(method.__code__, foo.__code__, method.__code__.co_firstlineno + 3) assert success assert list(result.co_lnotab) == [0, 1, 4, 1, 14, 1]
def test_line(self): def foo(): global global_loaded global_loaded() def method(): a = 10 b = 20 c = 20 success, result = insert_code(method.__code__, foo.__code__, method.__code__.co_firstlineno + 1) assert success assert list(result.co_lnotab) == [10, 1, 4, 1, 4, 1] success, result = insert_code(method.__code__, foo.__code__, method.__code__.co_firstlineno + 2) assert success assert list(result.co_lnotab) == [0, 1, 14, 1, 4, 1] success, result = insert_code(method.__code__, foo.__code__, method.__code__.co_firstlineno + 3) assert success assert list(result.co_lnotab) == [0, 1, 4, 1, 14, 1]
def check_insert_to_line_by_symbols(self, func_to_modify, func_to_insert, line_number, code_for_check): code_orig = func_to_modify.__code__ code_to_insert = func_to_insert.__code__ success, result = insert_code(code_orig, code_to_insert, line_number) self.compare_bytes_sequence(list(result.co_code), list(code_for_check.co_code), len(code_to_insert.co_code))