/usr/lib/python2.7/dist-packages/apptools/persistence/tests/test_version_registry.py is in python-apptools 4.3.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | """Tests for the version registry.
"""
# Author: Prabhu Ramachandran <prabhu_r@users.sf.net>
# Copyright (c) 2005, Enthought, Inc.
# License: BSD Style.
# Standard library imports.
import unittest
# Enthought library imports.
from traits.api import HasTraits
from apptools.persistence import version_registry, state_pickler
class Classic:
__version__ = 0
class New(object):
__version__ = 0
class TraitClass(HasTraits):
__version__ = 0
class Test(New):
__version__ = 1
def __init__(self):
self.a = Classic()
class Handler:
def __init__(self):
self.calls = []
def upgrade(self, state, version):
self.calls.append(('upgrade', state, version))
def upgrade1(self, state, version):
self.calls.append(('upgrade1', state, version))
class TestVersionRegistry(unittest.TestCase):
def test_get_version(self):
"""Test the get_version function."""
c = Classic()
v = version_registry.get_version(c)
res = [(('Classic', __name__), 0)]
self.assertEqual(v, res)
state = state_pickler.get_state(c)
self.assertEqual(state.__metadata__['version'], res)
n = New()
v = version_registry.get_version(n)
res = [(('New', __name__), 0)]
self.assertEqual(v, res)
state = state_pickler.get_state(n)
self.assertEqual(state.__metadata__['version'], res)
t = TraitClass()
v = version_registry.get_version(t)
res = [(('CHasTraits', 'traits.ctraits'), -1),
(('HasTraits', 'traits.has_traits'), -1),
(('TraitClass', __name__), 0)]
self.assertEqual(v, res)
state = state_pickler.get_state(t)
self.assertEqual(state.__metadata__['version'], res)
def test_reload(self):
"""Test if the registry is reload safe."""
# A dummy handler.
def h(x, y):
pass
registry = version_registry.registry
registry.register('A', __name__, h)
self.assertEqual(registry.handlers.get(('A', __name__)), h)
reload(version_registry)
registry = version_registry.registry
self.assertEqual(registry.handlers.get(('A', __name__)), h)
del registry.handlers[('A', __name__)]
self.assertEqual(registry.handlers.has_key(('A', __name__)), False)
def test_update(self):
"""Test if update method calls the handlers in order."""
registry = version_registry.registry
# First an elementary test.
c = Classic()
state = state_pickler.get_state(c)
h = Handler()
registry.register('Classic', __name__, h.upgrade)
c1 = state_pickler.create_instance(state)
state_pickler.set_state(c1, state)
self.assertEqual(h.calls, [('upgrade', state, 0)])
# Remove the handler.
registry.unregister('Classic', __name__)
# Now check to see if this works for inheritance trees.
t = Test()
state = state_pickler.get_state(t)
h = Handler()
registry.register('Classic', __name__, h.upgrade)
registry.register('New', __name__, h.upgrade)
registry.register('Test', __name__, h.upgrade1)
t1 = state_pickler.create_instance(state)
state_pickler.set_state(t1, state)
# This should call New handler, then the Test and then
# Classic.
self.assertEqual(h.calls, [('upgrade', state, 0),
('upgrade1', state, 1),
('upgrade', state.a, 0)])
if __name__ == "__main__":
unittest.main()
|