(self)
| 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): |
nothing calls this directly
no test coverage detected