Пример #1
0
 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)
Пример #2
0
 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))
Пример #3
0
 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)
Пример #4
0
    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]
Пример #5
0
    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]
Пример #6
0
 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))