[Zodb-checkins] CVS: ZODB4/src/zodb/storage/tests - base.py:1.4
Barry Warsaw
barry@wooz.org
Fri, 24 Jan 2003 13:55:34 -0500
Update of /cvs-repository/ZODB4/src/zodb/storage/tests
In directory cvs.zope.org:/tmp/cvs-serv8043
Modified Files:
base.py
Log Message:
BerkeleyTestBase: Refactor the way storages are set up and torn down.
=== ZODB4/src/zodb/storage/tests/base.py 1.3 => 1.4 ===
--- ZODB4/src/zodb/storage/tests/base.py:1.3 Wed Jan 22 14:44:58 2003
+++ ZODB4/src/zodb/storage/tests/base.py Fri Jan 24 13:55:31 2003
@@ -24,6 +24,7 @@
import sys
import errno
import types
+import shutil
import unittest
from transaction import get_transaction
@@ -195,40 +196,48 @@
class BerkeleyTestBase(StorageTestBase):
- def _zap_dbhome(self, dir):
- # If the tests exited with any uncommitted objects, they'll blow up
- # subsequent tests because the next transaction commit will try to
- # commit those object. But they're tied to closed databases, so
- # that's broken. Aborting the transaction now saves us the headache.
- try:
- for file in os.listdir(dir):
- os.unlink(os.path.join(dir, file))
- os.removedirs(dir)
- except OSError, e:
- if e.errno <> errno.ENOENT:
- raise
-
- def _mk_dbhome(self, dir):
+ def _config(self):
# Checkpointing just slows the tests down because we have to wait for
# the thread to properly shutdown. This can take up to 10 seconds, so
# for the purposes of the test suite we shut off this thread.
config = BerkeleyConfig()
config.interval = 0
+ return config
+
+ def _envdir(self):
+ return DBHOME
+
+ def _open(self):
+ self._storage = self.ConcreteStorage(self._envdir(), self._config())
+
+ def _zap_dbhome(self, dir=None):
+ if dir is None:
+ dir = self._envdir()
+ # XXX Pre-Python 2.3 doesn't ignore errors if the first arg doesn't
+ # exist, even if the second is True.
+ try:
+ shutil.rmtree(dir, True)
+ except OSError, e:
+ if e.errno <> errno.ENOENT: raise
+
+ def _mk_dbhome(self, dir=None):
+ if dir is None:
+ dir = self._get_envdir()
os.mkdir(dir)
try:
- return self.ConcreteStorage(dir, config=config)
+ return self.ConcreteStorage(dir, config=self._config())
except:
- self._zap_dbhome(dir)
+ self._zap_dbhome()
raise
def setUp(self):
StorageTestBase.setUp(self)
- self._zap_dbhome(DBHOME)
- self._storage = self._mk_dbhome(DBHOME)
+ self._zap_dbhome()
+ self._open()
def tearDown(self):
StorageTestBase.tearDown(self)
- self._zap_dbhome(DBHOME)
+ self._zap_dbhome()