Skip to content

Commit

Permalink
gh-100077: make test_code.test_invalid_bytecode more robust and maint…
Browse files Browse the repository at this point in the history
…ainable (#100078)
  • Loading branch information
iritkatriel committed Dec 7, 2022
1 parent 68e4129 commit f3e97c9
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions Lib/test/test_code.py
Expand Up @@ -143,7 +143,7 @@
gc_collect)
from test.support.script_helper import assert_python_ok
from test.support import threading_helper
from opcode import opmap
from opcode import opmap, opname
COPY_FREE_VARS = opmap['COPY_FREE_VARS']


Expand Down Expand Up @@ -339,15 +339,19 @@ def func():
self.assertEqual(list(new_code.co_lines()), [])

def test_invalid_bytecode(self):
def foo(): pass
foo.__code__ = co = foo.__code__.replace(co_code=b'\xee\x00d\x00S\x00')
def foo():
pass

with self.assertRaises(SystemError) as se:
foo()
self.assertEqual(
f"{co.co_filename}:{co.co_firstlineno}: unknown opcode 238",
str(se.exception))
# assert that opcode 238 is invalid
self.assertEqual(opname[238], '<238>')

# change first opcode to 0xee (=238)
foo.__code__ = foo.__code__.replace(
co_code=b'\xee' + foo.__code__.co_code[1:])

msg = f"unknown opcode 238"
with self.assertRaisesRegex(SystemError, msg):
foo()

@requires_debug_ranges()
def test_co_positions_artificial_instructions(self):
Expand Down

0 comments on commit f3e97c9

Please sign in to comment.