MCPcopy Index your code
hub / github.com/python/cpython / test_finalize

Method test_finalize

Lib/test/test_weakref.py:2123–2162  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2121 support.gc_collect()
2122
2123 def test_finalize(self):
2124 def add(x,y,z):
2125 res.append(x + y + z)
2126 return x + y + z
2127
2128 a = self.A()
2129
2130 res = []
2131 f = weakref.finalize(a, add, 67, 43, z=89)
2132 self.assertEqual(f.alive, True)
2133 self.assertEqual(f.peek(), (a, add, (67,43), {'z':89}))
2134 self.assertEqual(f(), 199)
2135 self.assertEqual(f(), None)
2136 self.assertEqual(f(), None)
2137 self.assertEqual(f.peek(), None)
2138 self.assertEqual(f.detach(), None)
2139 self.assertEqual(f.alive, False)
2140 self.assertEqual(res, [199])
2141
2142 res = []
2143 f = weakref.finalize(a, add, 67, 43, 89)
2144 self.assertEqual(f.peek(), (a, add, (67,43,89), {}))
2145 self.assertEqual(f.detach(), (a, add, (67,43,89), {}))
2146 self.assertEqual(f(), None)
2147 self.assertEqual(f(), None)
2148 self.assertEqual(f.peek(), None)
2149 self.assertEqual(f.detach(), None)
2150 self.assertEqual(f.alive, False)
2151 self.assertEqual(res, [])
2152
2153 res = []
2154 f = weakref.finalize(a, add, x=67, y=43, z=89)
2155 del a
2156 self._collect_if_necessary()
2157 self.assertEqual(f(), None)
2158 self.assertEqual(f(), None)
2159 self.assertEqual(f.peek(), None)
2160 self.assertEqual(f.detach(), None)
2161 self.assertEqual(f.alive, False)
2162 self.assertEqual(res, [199])
2163
2164 def test_arg_errors(self):
2165 def fin(*args, **kwargs):

Callers

nothing calls this directly

Calls 7

_collect_if_necessaryMethod · 0.95
AMethod · 0.80
fFunction · 0.70
finalizeMethod · 0.45
assertEqualMethod · 0.45
peekMethod · 0.45
detachMethod · 0.45

Tested by

no test coverage detected