disassembly = self.get_disassembly_as_string(x)
if argval is _UNSPECIFIED:
msg = '%s occurs in bytecode:\n%s' % (opname, disassembly)
+ self.fail(msg)
elif instr.argval == argval:
msg = '(%s,%r) occurs in bytecode:\n%s'
msg = msg % (opname, argval, disassembly)
- self.fail(msg)
+ self.fail(msg)
b = dis.Bytecode.from_traceback(tb)
self.assertEqual(b.dis(), dis_traceback)
+
+class TestBytecodeTestCase(BytecodeTestCase):
+ def test_assert_not_in_with_op_not_in_bytecode(self):
+ code = compile("a = 1", "<string>", "exec")
+ self.assertInBytecode(code, "LOAD_CONST", 1)
+ self.assertNotInBytecode(code, "LOAD_NAME")
+ self.assertNotInBytecode(code, "LOAD_NAME", "a")
+
+ def test_assert_not_in_with_arg_not_in_bytecode(self):
+ code = compile("a = 1", "<string>", "exec")
+ self.assertInBytecode(code, "LOAD_CONST")
+ self.assertInBytecode(code, "LOAD_CONST", 1)
+ self.assertNotInBytecode(code, "LOAD_CONST", 2)
+
+ def test_assert_not_in_with_arg_in_bytecode(self):
+ code = compile("a = 1", "<string>", "exec")
+ with self.assertRaises(AssertionError):
+ self.assertNotInBytecode(code, "LOAD_CONST", 1)
+
if __name__ == "__main__":
unittest.main()