From 3fcd69c3476e88e0eed2285327ce89f5f5c9a412 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Tue, 6 Apr 2010 10:55:21 -0300 Subject: [PATCH] added a couple additional TwistedPluginSpiderManager tests --- .../test_contrib_spidermanager/__init__.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/scrapy/tests/test_contrib_spidermanager/__init__.py b/scrapy/tests/test_contrib_spidermanager/__init__.py index d27c32263..5b0d9e954 100644 --- a/scrapy/tests/test_contrib_spidermanager/__init__.py +++ b/scrapy/tests/test_contrib_spidermanager/__init__.py @@ -1,3 +1,4 @@ +import weakref import unittest # just a hack to avoid cyclic imports of scrapy.spider when running this test @@ -25,6 +26,14 @@ class TwistedPluginSpiderManagerTest(unittest.TestCase): self.assertEqual(spider2.__class__.__name__, 'Spider2') self.assertEqual(spider2.foo, 'bar') + def test_create_uses_cache(self): + # TwistedPluginSpiderManager uses an internal cache which is + # invalidated in close_spider() but this isn't necessarily the best + # thing to do in all cases. + spider1 = self.spiderman.create("spider1") + spider2 = self.spiderman.create("spider1") + assert spider1 is spider2 + def test_find_by_request(self): self.assertEqual(self.spiderman.find_by_request(Request('http://scrapy1.org/test')), ['spider1']) @@ -35,5 +44,19 @@ class TwistedPluginSpiderManagerTest(unittest.TestCase): self.assertEqual(self.spiderman.find_by_request(Request('http://scrapy999.org/test')), []) + def test_close_spider_remove_refs(self): + spider = self.spiderman.create("spider1") + wref = weakref.ref(spider) + assert wref() + self.spiderman.close_spider(spider) + del spider + assert not wref() + + def test_close_spider_invalidates_cache(self): + spider1 = self.spiderman.create("spider1") + self.spiderman.close_spider(spider1) + spider2 = self.spiderman.create("spider1") + assert spider1 is not spider2 + if __name__ == '__main__': unittest.main()