Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Unified Diff: third_party/twisted_8_1/twisted/test/test_persisted.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/test/test_persisted.py
diff --git a/third_party/twisted_8_1/twisted/test/test_persisted.py b/third_party/twisted_8_1/twisted/test/test_persisted.py
deleted file mode 100644
index 1e60df6e49cb47e08a758ecc378f532bd680f84a..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/test/test_persisted.py
+++ /dev/null
@@ -1,474 +0,0 @@
-
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-# System Imports
-import sys
-
-from twisted.trial import unittest
-
-try:
- import cPickle as pickle
-except ImportError:
- import pickle
-
-try:
- import cStringIO as StringIO
-except ImportError:
- import StringIO
-
-# Twisted Imports
-from twisted.persisted import styles, aot, crefutil
-
-
-class VersionTestCase(unittest.TestCase):
- def testNullVersionUpgrade(self):
- global NullVersioned
- class NullVersioned:
- ok = 0
- pkcl = pickle.dumps(NullVersioned())
- class NullVersioned(styles.Versioned):
- persistenceVersion = 1
- def upgradeToVersion1(self):
- self.ok = 1
- mnv = pickle.loads(pkcl)
- styles.doUpgrade()
- assert mnv.ok, "initial upgrade not run!"
-
- def testVersionUpgrade(self):
- global MyVersioned
- class MyVersioned(styles.Versioned):
- persistenceVersion = 2
- persistenceForgets = ['garbagedata']
- v3 = 0
- v4 = 0
-
- def __init__(self):
- self.somedata = 'xxx'
- self.garbagedata = lambda q: 'cant persist'
-
- def upgradeToVersion3(self):
- self.v3 += 1
-
- def upgradeToVersion4(self):
- self.v4 += 1
- mv = MyVersioned()
- assert not (mv.v3 or mv.v4), "hasn't been upgraded yet"
- pickl = pickle.dumps(mv)
- MyVersioned.persistenceVersion = 4
- obj = pickle.loads(pickl)
- styles.doUpgrade()
- assert obj.v3, "didn't do version 3 upgrade"
- assert obj.v4, "didn't do version 4 upgrade"
- pickl = pickle.dumps(obj)
- obj = pickle.loads(pickl)
- styles.doUpgrade()
- assert obj.v3 == 1, "upgraded unnecessarily"
- assert obj.v4 == 1, "upgraded unnecessarily"
-
- def testNonIdentityHash(self):
- global ClassWithCustomHash
- class ClassWithCustomHash(styles.Versioned):
- def __init__(self, unique, hash):
- self.unique = unique
- self.hash = hash
- def __hash__(self):
- return self.hash
-
- v1 = ClassWithCustomHash('v1', 0)
- v2 = ClassWithCustomHash('v2', 0)
-
- pkl = pickle.dumps((v1, v2))
- del v1, v2
- ClassWithCustomHash.persistenceVersion = 1
- ClassWithCustomHash.upgradeToVersion1 = lambda self: setattr(self, 'upgraded', True)
- v1, v2 = pickle.loads(pkl)
- styles.doUpgrade()
- self.assertEquals(v1.unique, 'v1')
- self.assertEquals(v2.unique, 'v2')
- self.failUnless(v1.upgraded)
- self.failUnless(v2.upgraded)
-
- def testUpgradeDeserializesObjectsRequiringUpgrade(self):
- global ToyClassA, ToyClassB
- class ToyClassA(styles.Versioned):
- pass
- class ToyClassB(styles.Versioned):
- pass
- x = ToyClassA()
- y = ToyClassB()
- pklA, pklB = pickle.dumps(x), pickle.dumps(y)
- del x, y
- ToyClassA.persistenceVersion = 1
- def upgradeToVersion1(self):
- self.y = pickle.loads(pklB)
- styles.doUpgrade()
- ToyClassA.upgradeToVersion1 = upgradeToVersion1
- ToyClassB.persistenceVersion = 1
- ToyClassB.upgradeToVersion1 = lambda self: setattr(self, 'upgraded', True)
-
- x = pickle.loads(pklA)
- styles.doUpgrade()
- self.failUnless(x.y.upgraded)
-
-class MyEphemeral(styles.Ephemeral):
-
- def __init__(self, x):
- self.x = x
-
-
-class EphemeralTestCase(unittest.TestCase):
-
- def testEphemeral(self):
- o = MyEphemeral(3)
- self.assertEquals(o.__class__, MyEphemeral)
- self.assertEquals(o.x, 3)
-
- pickl = pickle.dumps(o)
- o = pickle.loads(pickl)
-
- self.assertEquals(o.__class__, styles.Ephemeral)
- self.assert_(not hasattr(o, 'x'))
-
-
-class Pickleable:
-
- def __init__(self, x):
- self.x = x
-
- def getX(self):
- return self.x
-
-class A:
- """
- dummy class
- """
- def amethod(self):
- pass
-
-class B:
- """
- dummy class
- """
- def bmethod(self):
- pass
-
-def funktion():
- pass
-
-try:
- from twisted.persisted import marmalade
-except ImportError:
- pass
-else:
- class Marmaladeable(marmalade.DOMJellyable):
-
- jellyDOMVersion = 1
-
- def __init__(self, integer, instance, name, sequence):
- self.integer = integer
- self.instance = instance
- self.sequence = sequence
- self.name = name
-
- def jellyToDOM_1(self, jellier, element):
- from twisted.python.reflect import qual
- element.setAttribute("integer", str(self.integer))
- element.setAttribute("instance", qual(self.instance.__class__)) # not l33t enough
- element.setAttribute("name", str(self.name))
- # oops forgot self.sequence
-
- def unjellyFromDOM_1(self, unjellier, element):
- from twisted.python.reflect import namedClass
- self.integer = int(element.getAttribute("integer"))
- self.instance = namedClass(element.getAttribute("instance"))()
- self.name = element.getAttribute("name")
- # just give us any ol' list
- self.sequence = [self.instance, self.instance]
-
- def jellyToDOM_2(self, jellier, element):
- element.setAttribute("integer", str(self.integer))
- element.setAttribute("name", str(self.name))
- instanceNode = jellier.jellyToNode(self.instance) # l33ter!
- instanceNode.setAttribute("parent:role", "instance")
- element.appendChild(instanceNode)
- i = 0
- for seqel in self.sequence:
- seqNode = jellier.jellyToNode(seqel)
- seqNode.setAttribute("parent:role", "sequence:%d" % i)
- element.appendChild(seqNode)
- i = i + 1
-
- def unjellyFromDOM_2(self, unjellier, element):
- self.integer = int(element.getAttribute("integer"))
- self.name = element.getAttribute("name")
-
- # Note to people reading this as an example: if you don't use
- # "unjellyInto", and instead use "unjellyFromNode", it will appear to
- # work. _however_, it will also have some really surprising results
- # when you have references in your application; i.e. you will get
- # _Dereference instances in places where you thought you should have
- # references to back-referenced data. I am working on making this
- # simpler.
- from twisted.web.microdom import Element
- self.sequence = []
- i = 0
- for node in element.childNodes:
- if isinstance(node, Element):
- if node.getAttribute("parent:role") == 'instance':
- unjellier.unjellyAttribute(self, "instance", node)
- else:
- self.sequence.append(None)
- unjellier.unjellyLater(node).addCallback(
- self.gotSequenceItem, i)
- i = i + 1
-
- def gotSequenceItem(self, seqitem, num):
- self.sequence[num] = seqitem
-
-
- class MarmaladeTestCase(unittest.TestCase):
-
- def testMarmaladeable(self):
- m = Marmaladeable(1, B(), "testing", [1, 2, 3])
- s = marmalade.jellyToXML(m)
- u = marmalade.unjellyFromXML(s)
- assert u.sequence == [u.instance, u.instance]
- u.sequence.append(u.instance)
- u.jellyDOMVersion = 2
- s2 = marmalade.jellyToXML(u)
- u2 = marmalade.unjellyFromXML(s2)
- self.assertEquals( u2.sequence, [u2.instance, u2.instance, u2.instance])
-
- def testCopyReg(self):
- s = "foo_bar"
- sio = StringIO.StringIO()
- sio.write(s)
- assert marmalade.unjellyFromXML(marmalade.jellyToXML({1:sio}))[1].getvalue() == s
-
- def testMethodSelfIdentity(self):
- a = A()
- b = B()
- a.bmethod = b.bmethod
- b.a = a
- im_ = marmalade.unjellyFromXML(marmalade.jellyToXML(b)).a.bmethod
- self.assertEquals(im_.im_class, im_.im_self.__class__)
-
-
- def test_methodNotSelfIdentity(self):
- """
- If a class change after an instance has been created,
- L{marmalade.unjellyFromXML} shoud raise a C{TypeError} when trying
- to unjelly the instance.
- """
- a = A()
- b = B()
- a.bmethod = b.bmethod
- b.a = a
- savedbmethod = B.bmethod
- del B.bmethod
- try:
- self.assertRaises(TypeError, marmalade.unjellyFromXML,
- marmalade.jellyToXML(b))
- finally:
- B.bmethod = savedbmethod
-
-
- def test_unjellyWrongRole(self):
- """
- When trying to unjelly a dictionnary dump, C{role} attributes
- should have the C{key}. Otherwise, L{marmalade.unjellyFromXML}
- should raise a C{TypeError}.
- """
- data = marmalade.jellyToXML({"a": 1})
- data = data.replace('role="key"', 'role="foo"')
- self.assertRaises(TypeError, marmalade.unjellyFromXML, data)
-
-
- def test_unjellyUnknownNodeType(self):
- """
- L{marmalade.unjellyFromXML} should raise a C{TypeError} when trying
- to unjelly an unknown type.
- """
- data = marmalade.jellyToXML({})
- data = data.replace('dictionary', 'unknowntype')
- self.assertRaises(TypeError, marmalade.unjellyFromXML, data)
-
-
- def testBasicIdentity(self):
- # Anyone wanting to make this datastructure more complex, and thus this
- # test more comprehensive, is welcome to do so.
- dj = marmalade.DOMJellier().jellyToNode
- d = {'hello': 'world', "method": dj}
- l = [1, 2, 3,
- "he\tllo\n\n\"x world!",
- u"goodbye \n\t\u1010 world!",
- 1, 1.0, 100 ** 100l, unittest, marmalade.DOMJellier, d,
- funktion,
- True, False,
- (2, 4, [2]),
- ]
- t = tuple(l)
- l.append(l)
- l.append(t)
- l.append(t)
- uj = marmalade.unjellyFromXML(marmalade.jellyToXML([l, l]))
- assert uj[0] is uj[1]
- assert uj[1][0:5] == l[0:5]
-
-class PicklingTestCase(unittest.TestCase):
- """Test pickling of extra object types."""
-
- def testModule(self):
- pickl = pickle.dumps(styles)
- o = pickle.loads(pickl)
- self.assertEquals(o, styles)
-
- def testClassMethod(self):
- pickl = pickle.dumps(Pickleable.getX)
- o = pickle.loads(pickl)
- self.assertEquals(o, Pickleable.getX)
-
- def testInstanceMethod(self):
- obj = Pickleable(4)
- pickl = pickle.dumps(obj.getX)
- o = pickle.loads(pickl)
- self.assertEquals(o(), 4)
- self.assertEquals(type(o), type(obj.getX))
-
- def testStringIO(self):
- f = StringIO.StringIO()
- f.write("abc")
- pickl = pickle.dumps(f)
- o = pickle.loads(pickl)
- self.assertEquals(type(o), type(f))
- self.assertEquals(f.getvalue(), "abc")
-
-
-class EvilSourceror:
- def __init__(self, x):
- self.a = self
- self.a.b = self
- self.a.b.c = x
-
-class NonDictState:
- def __getstate__(self):
- return self.state
- def __setstate__(self, state):
- self.state = state
-
-class AOTTestCase(unittest.TestCase):
- def testSimpleTypes(self):
- obj = (1, 2.0, 3j, True, slice(1, 2, 3), 'hello', u'world', sys.maxint + 1, None, Ellipsis)
- rtObj = aot.unjellyFromSource(aot.jellyToSource(obj))
- self.assertEquals(obj, rtObj)
-
- def testMethodSelfIdentity(self):
- a = A()
- b = B()
- a.bmethod = b.bmethod
- b.a = a
- im_ = aot.unjellyFromSource(aot.jellyToSource(b)).a.bmethod
- self.assertEquals(im_.im_class, im_.im_self.__class__)
-
-
- def test_methodNotSelfIdentity(self):
- """
- If a class change after an instance has been created,
- L{aot.unjellyFromSource} shoud raise a C{TypeError} when trying to
- unjelly the instance.
- """
- a = A()
- b = B()
- a.bmethod = b.bmethod
- b.a = a
- savedbmethod = B.bmethod
- del B.bmethod
- try:
- self.assertRaises(TypeError, aot.unjellyFromSource,
- aot.jellyToSource(b))
- finally:
- B.bmethod = savedbmethod
-
-
- def test_unsupportedType(self):
- """
- L{aot.jellyToSource} should raise a C{TypeError} when trying to jelly
- an unknown type.
- """
- try:
- set
- except:
- from sets import Set as set
- self.assertRaises(TypeError, aot.jellyToSource, set())
-
-
- def testBasicIdentity(self):
- # Anyone wanting to make this datastructure more complex, and thus this
- # test more comprehensive, is welcome to do so.
- aj = aot.AOTJellier().jellyToAO
- d = {'hello': 'world', "method": aj}
- l = [1, 2, 3,
- "he\tllo\n\n\"x world!",
- u"goodbye \n\t\u1010 world!",
- 1, 1.0, 100 ** 100l, unittest, aot.AOTJellier, d,
- funktion
- ]
- t = tuple(l)
- l.append(l)
- l.append(t)
- l.append(t)
- uj = aot.unjellyFromSource(aot.jellyToSource([l, l]))
- assert uj[0] is uj[1]
- assert uj[1][0:5] == l[0:5]
-
-
- def testNonDictState(self):
- a = NonDictState()
- a.state = "meringue!"
- assert aot.unjellyFromSource(aot.jellyToSource(a)).state == a.state
-
- def testCopyReg(self):
- s = "foo_bar"
- sio = StringIO.StringIO()
- sio.write(s)
- uj = aot.unjellyFromSource(aot.jellyToSource(sio))
- # print repr(uj.__dict__)
- assert uj.getvalue() == s
-
- def testFunkyReferences(self):
- o = EvilSourceror(EvilSourceror([]))
- j1 = aot.jellyToAOT(o)
- oj = aot.unjellyFromAOT(j1)
-
- assert oj.a is oj
- assert oj.a.b is oj.b
- assert oj.c is not oj.c.c
-
-
-class CrefUtilTestCase(unittest.TestCase):
- """
- Tests for L{crefutil}.
- """
-
- def test_dictUnknownKey(self):
- """
- L{crefutil._DictKeyAndValue} only support keys C{0} and C{1}.
- """
- d = crefutil._DictKeyAndValue({})
- self.assertRaises(RuntimeError, d.__setitem__, 2, 3)
-
-
- def test_deferSetMultipleTimes(self):
- """
- L{crefutil._Defer} can be assigned a key only one time.
- """
- d = crefutil._Defer()
- d[0] = 1
- self.assertRaises(RuntimeError, d.__setitem__, 0, 1)
-
-
-
-testCases = [VersionTestCase, EphemeralTestCase, PicklingTestCase]
-
« no previous file with comments | « third_party/twisted_8_1/twisted/test/test_pcp.py ('k') | third_party/twisted_8_1/twisted/test/test_plugin.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698