[Checkins] SVN: zodbupgrade/trunk/src/zodbupgrade/tests.py Add tests for the dry-run option.
Christian Theune
ct at gocept.com
Mon Jun 15 02:33:18 EDT 2009
Log message for revision 100955:
Add tests for the dry-run option.
Changed:
U zodbupgrade/trunk/src/zodbupgrade/tests.py
-=-
Modified: zodbupgrade/trunk/src/zodbupgrade/tests.py
===================================================================
--- zodbupgrade/trunk/src/zodbupgrade/tests.py 2009-06-15 06:24:37 UTC (rev 100954)
+++ zodbupgrade/trunk/src/zodbupgrade/tests.py 2009-06-15 06:33:17 UTC (rev 100955)
@@ -16,6 +16,7 @@
import ZODB.FileStorage
import logging
import os
+import persistent
import pickle
import sys
import tempfile
@@ -40,7 +41,7 @@
zodbupgrade.analyze.logger.addFilter(ignore)
sys.modules['module1'] = types.ModuleType('module1')
- class Factory(object):
+ class Factory(persistent.Persistent):
pass
sys.modules['module1'].Factory = Factory
Factory.__module__ = 'module1'
@@ -49,10 +50,11 @@
self.db = None
self.reopen_db()
- def update(self):
- updater = zodbupgrade.analyze.Updater(self.storage)
+ def update(self, **args):
+ updater = zodbupgrade.analyze.Updater(self.storage, **args)
updater()
self.storage.close()
+ return updater
def tearDown(self):
zodbupgrade.analyze.logger.removeFilter(ignore)
@@ -106,9 +108,39 @@
self.reopen_db()
+ self.assertEquals('cmodule1\nNewFactory\nq\x01.}q\x02.',
+ self.storage.load(self.root['test']._p_oid, '')[0])
self.assertEquals('module1', self.root['test'].__class__.__module__)
self.assertEquals('NewFactory', self.root['test'].__class__.__name__)
+ def test_factory_renamed_dryrun(self):
+ # Run an update with "dy run" option and see that the transaction is
+ # not updated.
+ self.root['test'] = sys.modules['module1'].Factory()
+ transaction.commit()
+ self.db.close()
+
+ sys.modules['module1'].NewFactory = sys.modules['module1'].Factory
+ sys.modules['module1'].NewFactory.__name__ = 'NewFactory'
+
+ self.db.close()
+ self.reopen_storage()
+
+ self.update(dry=True)
+
+ self.reopen_db()
+
+ self.assertEquals('cmodule1\nFactory\nq\x01.}q\x02.',
+ self.storage.load(self.root['test']._p_oid, '')[0])
+
+ self.db.close()
+ self.reopen_storage()
+ self.update(dry=False)
+ self.reopen_db()
+
+ self.assertEquals('cmodule1\nNewFactory\nq\x01.}q\x02.',
+ self.storage.load(self.root['test']._p_oid, '')[0])
+
def test_factory_registered_with_copy_reg(self):
# Factories registered with copy_reg.pickle loose their __name__.
# We simply ignore those.
More information about the Checkins
mailing list