Lines Matching refs:self

38 # An instance of C1055820 has a self-loop, so becomes cyclic trash when
41 def __init__(self, i):
42 self.i = i
43 self.loop = self
49 def __init__(self):
50 self.gc_happened = False
53 self.gc_happened = True
57 self.wr = weakref.ref(C1055820(666), it_happened)
67 def __init__(self, partner=None):
69 self.partner = Uncollectable(partner=self)
71 self.partner = partner
72 def __tp_del__(self):
87 def test_list(self):
92 self.assertEqual(gc.collect(), 1)
94 def test_dict(self):
99 self.assertEqual(gc.collect(), 1)
101 def test_tuple(self):
109 self.assertEqual(gc.collect(), 2)
111 def test_class(self):
117 self.assertNotEqual(gc.collect(), 0)
119 def test_newstyleclass(self):
124 self.assertNotEqual(gc.collect(), 0)
126 def test_instance(self):
133 self.assertNotEqual(gc.collect(), 0)
135 def test_newinstance(self):
142 self.assertNotEqual(gc.collect(), 0)
151 self.assertNotEqual(gc.collect(), 0)
153 self.assertNotEqual(gc.collect(), 0)
156 self.assertNotEqual(gc.collect(), 0)
157 self.assertEqual(gc.collect(), 0)
159 def test_method(self):
160 # Tricky: self.__init__ is a bound method, it references the instance.
162 def __init__(self):
163 self.init = self.__init__
167 self.assertNotEqual(gc.collect(), 0)
170 def test_legacy_finalizer(self):
175 def __tp_del__(self): pass
186 self.assertNotEqual(gc.collect(), 0)
192 self.fail("didn't find obj in garbage (finalizer)")
196 def test_legacy_finalizer_newclass(self):
201 def __tp_del__(self): pass
212 self.assertNotEqual(gc.collect(), 0)
218 self.fail("didn't find obj in garbage (finalizer)")
221 def test_function(self):
228 self.assertEqual(gc.collect(), 2)
230 def test_function_tp_clear_leaves_consistent_state(self):
240 def __del__(self):
246 func = self.ref()
254 def __del__(self):
259 self[1].ref = weakref.ref(self[0])
293 self.assertEqual(rc, 0)
294 self.assertRegex(stdout, rb"""\A\s*func=<function at \S+>\s*\Z""")
295 self.assertFalse(stderr)
298 def test_frame(self):
303 self.assertEqual(gc.collect(), 1)
305 def test_saveall(self):
313 self.assertEqual(gc.garbage, [])
325 self.assertEqual(len(gc.garbage), 1)
327 self.assertEqual(id(obj), id_L)
329 def test_del(self):
336 def __del__(self):
337 dir(self)
344 def test_del_newclass(self):
351 def __del__(self):
352 dir(self)
366 def test_get_count(self):
371 self.assertEqual((b, c), (0, 0))
372 self.assertEqual((e, f), (0, 0))
374 self.assertLess(a, 5)
377 self.assertGreater(d, a)
380 def test_collect_generations(self):
396 self.assertEqual((b, c), (1, 0))
397 self.assertEqual((e, f), (0, 1))
398 self.assertEqual((h, i), (0, 0))
400 def test_trashcan(self):
403 def __del__(self):
436 def test_trashcan_threads(self):
452 def __init__(self, alist):
453 self[:] = alist
455 def __del__(self):
492 self.assertEqual(len(C.inits), len(C.dels))
494 def test_boom(self):
496 def __getattr__(self, someattribute):
497 del self.attr
515 self.assertEqual(gc.collect(), 2)
516 self.assertEqual(len(gc.garbage), garbagelen)
518 def test_boom2(self):
520 def __init__(self):
521 self.x = 0
523 def __getattr__(self, someattribute):
524 self.x += 1
525 if self.x > 1:
526 del self.attr
542 self.assertEqual(gc.collect(), 2)
543 self.assertEqual(len(gc.garbage), garbagelen)
545 def test_boom_new(self):
550 def __getattr__(self, someattribute):
551 del self.attr
562 self.assertEqual(gc.collect(), 2)
563 self.assertEqual(len(gc.garbage), garbagelen)
565 def test_boom2_new(self):
567 def __init__(self):
568 self.x = 0
570 def __getattr__(self, someattribute):
571 self.x += 1
572 if self.x > 1:
573 del self.attr
584 self.assertEqual(gc.collect(), 2)
585 self.assertEqual(len(gc.garbage), garbagelen)
587 def test_get_referents(self):
591 self.assertEqual(got, alist)
596 self.assertEqual(got, alist)
602 self.assertEqual(got, expected)
606 self.assertEqual(got, [0, 0] + list(range(5)))
608 self.assertEqual(gc.get_referents(1, 'a', 4j), [])
610 def test_is_tracked(self):
615 self.assertFalse(gc.is_tracked(None))
616 self.assertFalse(gc.is_tracked(1))
617 self.assertFalse(gc.is_tracked(1.0))
618 self.assertFalse(gc.is_tracked(1.0 + 5.0j))
619 self.assertFalse(gc.is_tracked(True))
620 self.assertFalse(gc.is_tracked(False))
621 self.assertFalse(gc.is_tracked(b"a"))
622 self.assertFalse(gc.is_tracked("a"))
623 self.assertFalse(gc.is_tracked(bytearray(b"a")))
624 self.assertFalse(gc.is_tracked(type))
625 self.assertFalse(gc.is_tracked(int))
626 self.assertFalse(gc.is_tracked(object))
627 self.assertFalse(gc.is_tracked(object()))
647 self.assertTrue(gc.is_tracked(gc))
648 self.assertTrue(gc.is_tracked(UserClass))
649 self.assertTrue(gc.is_tracked(UserClass()))
650 self.assertTrue(gc.is_tracked(UserInt()))
651 self.assertTrue(gc.is_tracked([]))
652 self.assertTrue(gc.is_tracked(set()))
653 self.assertTrue(gc.is_tracked(UserClassSlots()))
654 self.assertTrue(gc.is_tracked(UserFloatSlots()))
655 self.assertTrue(gc.is_tracked(UserIntSlots()))
657 def test_is_finalized(self):
659 self.assertFalse(gc.is_finalized(3))
663 def __del__(self):
664 storage.append(self)
667 self.assertFalse(gc.is_finalized(lazarus))
673 self.assertTrue(gc.is_finalized(lazarus))
675 def test_bug1055820b(self):
687 self.assertEqual(len(ouch), 0)
693 self.assertEqual(len(ouch), 2) # else the callbacks didn't run
697 self.assertEqual(x, None)
699 def test_bug21435(self):
715 def __init__(self, x):
716 self.x = x
718 def __del__(self):
719 self.attr = None
733 def test_garbage_at_shutdown(self):
740 def __init__(self, name):
741 self.name = name
742 def __repr__(self):
743 return "<X %%r>" %% self.name
744 def __tp_del__(self):
760 self.assertEqual(p.returncode, 0)
761 self.assertEqual(stdout, b"")
765 self.assertIn(b"ResourceWarning: gc: 2 uncollectable objects at "
767 self.assertNotIn(b"<X 'first'>", stderr)
770 self.assertIn(b"ResourceWarning: gc: 2 uncollectable objects at "
772 self.assertTrue(
779 self.assertNotIn(b"uncollectable objects at shutdown", stderr)
781 def test_gc_main_module_at_shutdown(self):
786 def __del__(self):
792 self.assertEqual(out.strip(), b'__del__ called')
794 def test_gc_ordinary_module_at_shutdown(self):
799 def __del__(self):
811 self.assertEqual(out.strip(), b'__del__ called')
813 def test_global_del_SystemExit(self):
816 def __del__(self):
821 self.addCleanup(unlink, TESTFN)
825 self.assertEqual(out.strip(), b'__del__ called')
827 def test_get_stats(self):
829 self.assertEqual(len(stats), 3)
831 self.assertIsInstance(st, dict)
832 self.assertEqual(set(st),
834 self.assertGreaterEqual(st["collected"], 0)
835 self.assertGreaterEqual(st["collections"], 0)
836 self.assertGreaterEqual(st["uncollectable"], 0)
839 self.addCleanup(gc.enable)
844 self.assertEqual(new[0]["collections"], old[0]["collections"] + 1)
845 self.assertEqual(new[1]["collections"], old[1]["collections"])
846 self.assertEqual(new[2]["collections"], old[2]["collections"])
849 self.assertEqual(new[0]["collections"], old[0]["collections"] + 1)
850 self.assertEqual(new[1]["collections"], old[1]["collections"])
851 self.assertEqual(new[2]["collections"], old[2]["collections"] + 1)
853 def test_freeze(self):
855 self.assertGreater(gc.get_freeze_count(), 0)
857 self.assertEqual(gc.get_freeze_count(), 0)
859 def test_get_objects(self):
863 self.assertTrue(
866 self.assertFalse(
869 self.assertFalse(
873 self.assertFalse(
876 self.assertTrue(
879 self.assertFalse(
883 self.assertFalse(
886 self.assertFalse(
889 self.assertTrue(
893 self.assertFalse(
896 self.assertFalse(
899 self.assertTrue(
905 def test_get_objects_arguments(self):
907 self.assertEqual(len(gc.get_objects()),
910 self.assertRaises(ValueError, gc.get_objects, 1000)
911 self.assertRaises(ValueError, gc.get_objects, -1000)
912 self.assertRaises(TypeError, gc.get_objects, "1")
913 self.assertRaises(TypeError, gc.get_objects, 1.234)
915 def test_resurrection_only_happens_once_per_object(self):
916 class A: # simple self-loop
917 def __init__(self):
918 self.me = self
924 def __del__(self):
926 Lazarus.resurrected_instances.append(self)
933 self.assertEqual(Lazarus.resurrected, 0)
939 self.assertEqual(Lazarus.resurrected, 1)
940 self.assertEqual(len(Lazarus.resurrected_instances), 1)
945 self.assertEqual(Lazarus.resurrected, 1)
947 self.assertEqual(Lazarus.resurrected, 1)
951 def test_resurrection_is_transitive(self):
953 def __init__(self):
954 self.me = self
959 def __del__(self):
960 Lazarus.resurrected_instances.append(self)
977 self.assertEqual(len(Lazarus.resurrected_instances), 1)
979 self.assertTrue(hasattr(instance, "cargo"))
980 self.assertEqual(id(instance.cargo), cargo_id)
985 def test_resurrection_does_not_block_cleanup_of_other_objects(self):
992 class A: # simple self-loop
993 def __init__(self):
994 self.me = self
997 def __del__(self):
998 zs.append(self)
1015 self.assertEqual(t, N) # instance objects
1016 self.assertEqual(c - oldc, N)
1017 self.assertEqual(nc - oldnc, 0)
1025 self.assertEqual(t, 0)
1026 self.assertEqual(c - oldc, 0)
1027 self.assertEqual(nc - oldnc, 0)
1036 self.assertEqual(t, N)
1037 self.assertEqual(c - oldc, N)
1038 self.assertEqual(nc - oldnc, 0)
1046 self.assertEqual(t, 2)
1047 self.assertEqual(c - oldc, 2)
1048 self.assertEqual(nc - oldnc, 0)
1054 def test_trash_weakref_clear(self):
1113 def setUp(self):
1115 self.enabled = gc.isenabled()
1117 self.debug = gc.get_debug()
1119 gc.callbacks.append(self.cb1)
1120 gc.callbacks.append(self.cb2)
1121 self.othergarbage = []
1123 def tearDown(self):
1125 del self.visit
1126 gc.callbacks.remove(self.cb1)
1127 gc.callbacks.remove(self.cb2)
1128 gc.set_debug(self.debug)
1129 if self.enabled:
1137 del self.othergarbage
1140 def preclean(self):
1142 # manually rather than through self.setUp() for maximum
1144 self.visit = []
1147 self.othergarbage.append(garbage)
1148 self.visit = []
1150 def cb1(self, phase, info):
1151 self.visit.append((1, phase, dict(info)))
1153 def cb2(self, phase, info):
1154 self.visit.append((2, phase, dict(info)))
1155 if phase == "stop" and hasattr(self, "cleanup"):
1163 def test_collect(self):
1164 self.preclean()
1166 # Algorithmically verify the contents of self.visit
1170 n = [v[0] for v in self.visit]
1173 self.assertEqual(n1, [1]*2)
1174 self.assertEqual(n2, [2]*2)
1177 n = [v[1] for v in self.visit]
1180 self.assertEqual(n1, ["start"]*2)
1181 self.assertEqual(n2, ["stop"]*2)
1184 for v in self.visit:
1186 self.assertTrue("generation" in info)
1187 self.assertTrue("collected" in info)
1188 self.assertTrue("uncollectable" in info)
1190 def test_collect_generation(self):
1191 self.preclean()
1193 for v in self.visit:
1195 self.assertEqual(info["generation"], 2)
1198 def test_collect_garbage(self):
1199 self.preclean()
1205 for v in self.visit:
1209 self.assertEqual(info["collected"], 1)
1210 self.assertEqual(info["uncollectable"], 4)
1213 self.assertEqual(len(gc.garbage), 4)
1215 self.assertIsInstance(e, Uncollectable)
1218 self.cleanup=True
1219 self.visit = []
1222 for v in self.visit:
1226 self.assertEqual(info["collected"], 0)
1227 self.assertEqual(info["uncollectable"], 2)
1230 self.assertEqual(len(gc.garbage), 0)
1235 def test_refcount_errors(self):
1236 self.preclean()
1269 self.assertRegex(stderr,
1271 self.assertRegex(stderr,
1276 self.assertRegex(stderr,
1278 self.assertRegex(stderr,
1280 self.assertRegex(stderr,
1282 self.assertRegex(stderr,
1284 self.assertRegex(stderr,
1289 def setUp(self):
1292 def tearDown(self):
1295 def test_bug1055820c(self):
1321 # it. c1 and c2 are in generation 0, and are in self-loops. There's a
1355 self.fail("gc didn't happen after 10000 iterations")
1356 self.assertEqual(len(ouch), 0)
1359 self.assertEqual(len(ouch), 1) # else the callback wasn't invoked
1363 self.assertEqual(x, None)
1365 def test_bug1055820d(self):
1372 def __del__(self):
1390 # it. c1 and c2 are in generation 0, and are in self-loops. There's
1422 self.fail("gc didn't happen after 10000 iterations")
1423 self.assertEqual(len(ouch), 0)
1426 self.assertEqual(len(ouch), 1) # else __del__ wasn't invoked
1430 self.assertEqual(x, None)
1434 def test_ast_fini(self):