[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