mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-26 06:23:41 +00:00
Merge pull request #234 from darkrho/httpcache-dbm-module-fullpath
allow to use full path in HTTPCACHE_DBM_MODULE setting
This commit is contained in:
commit
f293d08e7a
@ -163,7 +163,7 @@ class DbmCacheStorage(object):
|
||||
def __init__(self, settings):
|
||||
self.cachedir = data_path(settings['HTTPCACHE_DIR'], createdir=True)
|
||||
self.expiration_secs = settings.getint('HTTPCACHE_EXPIRATION_SECS')
|
||||
self.dbmodule = __import__(settings['HTTPCACHE_DBM_MODULE'])
|
||||
self.dbmodule = __import__(settings['HTTPCACHE_DBM_MODULE'], {}, {}, [''])
|
||||
self.db = None
|
||||
|
||||
def open_spider(self, spider):
|
||||
|
0
scrapy/tests/mocks/__init__.py
Normal file
0
scrapy/tests/mocks/__init__.py
Normal file
22
scrapy/tests/mocks/dummydbm.py
Normal file
22
scrapy/tests/mocks/dummydbm.py
Normal file
@ -0,0 +1,22 @@
|
||||
"""DBM-like dummy module"""
|
||||
import collections
|
||||
|
||||
|
||||
class DummyDB(dict):
|
||||
"""Provide dummy DBM-like interface."""
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
|
||||
error = KeyError
|
||||
|
||||
|
||||
_DATABASES = collections.defaultdict(DummyDB)
|
||||
|
||||
def open(file, flag='r', mode=0666):
|
||||
"""Open or create a dummy database compatible.
|
||||
|
||||
Arguments `flag` and `mode` are ignored.
|
||||
"""
|
||||
# return same instance for same file argument
|
||||
return _DATABASES[file]
|
@ -116,6 +116,20 @@ class DbmStorageTest(DefaultStorageTest):
|
||||
storage_class = 'scrapy.contrib.httpcache.DbmCacheStorage'
|
||||
|
||||
|
||||
class DbmStorageWithCustomDbmModuleTest(DbmStorageTest):
|
||||
|
||||
dbm_module = 'scrapy.tests.mocks.dummydbm'
|
||||
|
||||
def _get_settings(self, **new_settings):
|
||||
new_settings.setdefault('HTTPCACHE_DBM_MODULE', self.dbm_module)
|
||||
return super(DbmStorageWithCustomDbmModuleTest, self)._get_settings(**new_settings)
|
||||
|
||||
def test_custom_dbm_module_loaded(self):
|
||||
# make sure our dbm module has been loaded
|
||||
with self._storage() as storage:
|
||||
self.assertEqual(storage.dbmodule.__name__, self.dbm_module)
|
||||
|
||||
|
||||
class FilesystemStorageTest(DefaultStorageTest):
|
||||
|
||||
storage_class = 'scrapy.contrib.httpcache.FilesystemCacheStorage'
|
||||
|
Loading…
x
Reference in New Issue
Block a user