o Eho@s8dZddlZddlZddlZeZGdddejZdS)zGbytecode_helper - support tools for testing correct bytecode generationNc@s0eZdZdZddZefddZefddZdS) BytecodeTestCasez1Custom assertion methods for inspecting bytecode.cCst}tj||d|S)N)file)ioStringIOdisgetvalue)selfcosr 3/usr/lib/python3.10/test/support/bytecode_helper.pyget_disassembly_as_string sz*BytecodeTestCase.get_disassembly_as_stringcCstt|D]}|j|kr|tus|j|kr|Sq||}|tur*d||f}n d}||||f}||dS)zAReturns instr if opname is found, otherwise throws AssertionErrorz%s not found in bytecode: %sz!(%s,%r) not found in bytecode: %sN)rget_instructionsopname _UNSPECIFIEDargvalr failrxrrinstr disassemblymsgr r r assertInBytecodes  z!BytecodeTestCase.assertInBytecodecCsnt|D]/}|j|kr4||}|tur!d||f}||q|j|kr4d}||||f}||qdS)z(Throws AssertionError if opname is foundz%s occurs in bytecode: %sz(%s,%r) occurs in bytecode: %sN)rrrr rrrrr r r assertNotInBytecodes      z$BytecodeTestCase.assertNotInBytecodeN)__name__ __module__ __qualname____doc__r rrrr r r r r s  r)runittestrrobjectrTestCaserr r r r s