def test_warn_on_type_dict_non_split_keys(self): class C: pass msg = type = attr = None def cb(*args): nonlocal msg, type, attr msg = args[0] type = args[1] attr = args[2] cinder.cinder_set_warn_handler(cb) try: cinder.warn_on_inst_dict(C) a = C() a.foo = 42 a.bar = 100 a = C() a.baz = 100 a = C() a.quox = 100 self.assertEqual(msg, "WARN001: Dictionary created for flagged instance") self.assertEqual(type, C) self.assertEqual(attr, "quox") self.assertEqual(a.quox, 100) finally: cinder.cinder_set_warn_handler(None)
def test_warn_on_type(self): class C: pass msg = type = attr = None def cb(*args): nonlocal msg, type, attr msg = args[0] type = args[1] attr = args[2] cinder.warn_on_inst_dict(C) cinder.freeze_type(C) cinder.cinder_set_warn_handler(cb) C.foo = 42 self.assertEqual( msg, "WARN002: Type modified that was flagged for immutability") self.assertEqual(type, C) self.assertEqual(attr, "foo")