Modified tests to use global_registries.remove() instead of relying on gc.
| | |
| | | self.assertEqual(pyramid.config.global_registries.last, app.registry) |
| | | self.assertEqual(len(subscriber), 1) |
| | | self.assertTrue(IApplicationCreated.providedBy(subscriber[0])) |
| | | pyramid.config.global_registries.empty() |
| | | |
| | | def test_global_registries_empty(self): |
| | | import gc |
| | | from pyramid.config import global_registries |
| | | gc.collect() # force weakref updates |
| | | self.assertEqual(global_registries.last, None) |
| | | |
| | | def test_global_registries(self): |
| | | import gc |
| | | from pyramid.config import global_registries |
| | | global_registries.empty() |
| | | config1 = self._makeOne() |
| | | config1.make_wsgi_app() |
| | | self.assertEqual(global_registries.last, config1.registry) |
| | |
| | | self.assertEqual(global_registries.last, config2.registry) |
| | | self.assertEqual(list(global_registries), |
| | | [config1.registry, config2.registry]) |
| | | del config2 |
| | | gc.collect() # force weakref updates |
| | | global_registries.remove(config2.registry) |
| | | self.assertEqual(global_registries.last, config1.registry) |
| | | global_registries.empty() |
| | | |
| | | def test_include_with_dotted_name(self): |
| | | from pyramid import tests |
| | |
| | | request = self._callFUT('/hello') |
| | | self.assertEqual(request.environ['path'], '/hello') |
| | | self.assertEqual(request.registry, registry) |
| | | global_registries.empty() |
| | | |
| | | class Dummy: |
| | | pass |
| | |
| | | self.assertEqual(wos.last, reg) |
| | | |
| | | def test_weakref_removal(self): |
| | | import gc |
| | | wos = self._makeOne() |
| | | reg = Dummy() |
| | | wos.add(reg) |
| | | del reg |
| | | gc.collect() # force gc |
| | | wos.remove(reg) |
| | | self.assertEqual(len(wos), 0) |
| | | self.assertEqual(list(wos), []) |
| | | self.assertEqual(wos.last, None) |
| | | |
| | | def test_last_updated(self): |
| | | import gc |
| | | wos = self._makeOne() |
| | | reg = Dummy() |
| | | reg2 = Dummy() |
| | | wos.add(reg) |
| | | wos.add(reg2) |
| | | del reg2 |
| | | gc.collect() # force gc |
| | | wos.remove(reg2) |
| | | self.assertEqual(len(wos), 1) |
| | | self.assertEqual(list(wos), [reg]) |
| | | self.assertEqual(wos.last, reg) |
| | | |
| | | def test_empty(self): |
| | | wos = self._makeOne() |
| | | reg = Dummy() |
| | | reg2 = Dummy() |
| | | wos.add(reg) |
| | | wos.add(reg2) |
| | | wos.empty() |
| | | self.assertEqual(len(wos), 0) |
| | | self.assertEqual(list(wos), []) |
| | | self.assertEqual(wos.last, None) |
| | | |
| | | class Dummy(object): |
| | | pass |
| | |
| | | self._order = [] |
| | | |
| | | def add(self, item): |
| | | """ Add a registry to the set.""" |
| | | """ Add an item to the set.""" |
| | | oid = id(item) |
| | | if oid in self._items: |
| | | return |
| | | def cleanup(ref): |
| | | del self._items[oid] |
| | | self._order.remove(oid) |
| | | ref = weakref.ref(item, cleanup) |
| | | ref = weakref.ref(item, lambda x: self.remove(item)) |
| | | self._items[oid] = ref |
| | | self._order.append(oid) |
| | | |
| | | def remove(self, item): |
| | | """ Remove an item from the set.""" |
| | | oid = id(item) |
| | | if oid in self._items: |
| | | del self._items[oid] |
| | | self._order.remove(oid) |
| | | |
| | | def empty(self): |
| | | """ Clear all objects from the set.""" |
| | | self._items = {} |
| | | self._order = [] |
| | | |
| | | def __len__(self): |
| | | return len(self._order) |
| | | |