costypetrisor | 8ed317f | 2018-07-31 20:55:14 +0000 | [diff] [blame] | 1 | import os |
| 2 | import textwrap |
| 3 | import unittest |
| 4 | |
| 5 | from test import support |
| 6 | from test.support.script_helper import assert_python_ok |
| 7 | |
| 8 | |
| 9 | class TestLLTrace(unittest.TestCase): |
| 10 | |
| 11 | def test_lltrace_does_not_crash_on_subscript_operator(self): |
| 12 | # If this test fails, it will reproduce a crash reported as |
| 13 | # bpo-34113. The crash happened at the command line console of |
| 14 | # debug Python builds with __ltrace__ enabled (only possible in console), |
| 15 | # when the interal Python stack was negatively adjusted |
| 16 | with open(support.TESTFN, 'w') as fd: |
| 17 | self.addCleanup(os.unlink, support.TESTFN) |
| 18 | fd.write(textwrap.dedent("""\ |
| 19 | import code |
| 20 | |
| 21 | console = code.InteractiveConsole() |
| 22 | console.push('__ltrace__ = 1') |
| 23 | console.push('a = [1, 2, 3]') |
| 24 | console.push('a[0] = 1') |
| 25 | print('unreachable if bug exists') |
| 26 | """)) |
| 27 | |
| 28 | assert_python_ok(support.TESTFN) |
| 29 | |
| 30 | if __name__ == "__main__": |
| 31 | unittest.main() |