| Index: third_party/twisted_8_1/twisted/python/test/test_util.py
|
| diff --git a/third_party/twisted_8_1/twisted/python/test/test_util.py b/third_party/twisted_8_1/twisted/python/test/test_util.py
|
| deleted file mode 100644
|
| index a680d82c0ffbf6080e325d6db105e09edd7824b1..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/python/test/test_util.py
|
| +++ /dev/null
|
| @@ -1,597 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_util -*-
|
| -# Copyright (c) 2001-2008 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -import os.path, sys
|
| -import shutil, errno
|
| -try:
|
| - import pwd, grp
|
| -except ImportError:
|
| - pwd = grp = None
|
| -
|
| -from twisted.trial import unittest
|
| -
|
| -from twisted.python import util
|
| -from twisted.internet import reactor
|
| -from twisted.internet.interfaces import IReactorProcess
|
| -from twisted.internet.protocol import ProcessProtocol
|
| -from twisted.internet.defer import Deferred
|
| -from twisted.internet.error import ProcessDone
|
| -
|
| -
|
| -class UtilTestCase(unittest.TestCase):
|
| -
|
| - def testUniq(self):
|
| - l = ["a", 1, "ab", "a", 3, 4, 1, 2, 2, 4, 6]
|
| - self.assertEquals(util.uniquify(l), ["a", 1, "ab", 3, 4, 2, 6])
|
| -
|
| - def testRaises(self):
|
| - self.failUnless(util.raises(ZeroDivisionError, divmod, 1, 0))
|
| - self.failIf(util.raises(ZeroDivisionError, divmod, 0, 1))
|
| -
|
| - try:
|
| - util.raises(TypeError, divmod, 1, 0)
|
| - except ZeroDivisionError:
|
| - pass
|
| - else:
|
| - raise unittest.FailTest, "util.raises didn't raise when it should have"
|
| -
|
| - def testUninterruptably(self):
|
| - def f(a, b):
|
| - self.calls += 1
|
| - exc = self.exceptions.pop()
|
| - if exc is not None:
|
| - raise exc(errno.EINTR, "Interrupted system call!")
|
| - return a + b
|
| -
|
| - self.exceptions = [None]
|
| - self.calls = 0
|
| - self.assertEquals(util.untilConcludes(f, 1, 2), 3)
|
| - self.assertEquals(self.calls, 1)
|
| -
|
| - self.exceptions = [None, OSError, IOError]
|
| - self.calls = 0
|
| - self.assertEquals(util.untilConcludes(f, 2, 3), 5)
|
| - self.assertEquals(self.calls, 3)
|
| -
|
| - def testUnsignedID(self):
|
| - util.id = lambda x: x
|
| - try:
|
| - for i in range(1, 100):
|
| - self.assertEquals(util.unsignedID(i), i)
|
| - top = (sys.maxint + 1L) * 2L
|
| - for i in range(-100, -1):
|
| - self.assertEquals(util.unsignedID(i), top + i)
|
| - finally:
|
| - del util.id
|
| -
|
| - def testNameToLabel(self):
|
| - """
|
| - Test the various kinds of inputs L{nameToLabel} supports.
|
| - """
|
| - nameData = [
|
| - ('f', 'F'),
|
| - ('fo', 'Fo'),
|
| - ('foo', 'Foo'),
|
| - ('fooBar', 'Foo Bar'),
|
| - ('fooBarBaz', 'Foo Bar Baz'),
|
| - ]
|
| - for inp, out in nameData:
|
| - got = util.nameToLabel(inp)
|
| - self.assertEquals(
|
| - got, out,
|
| - "nameToLabel(%r) == %r != %r" % (inp, got, out))
|
| -
|
| -
|
| - def test_uidFromNumericString(self):
|
| - """
|
| - When L{uidFromString} is called with a base-ten string representation
|
| - of an integer, it returns the integer.
|
| - """
|
| - self.assertEqual(util.uidFromString("100"), 100)
|
| -
|
| -
|
| - def test_uidFromUsernameString(self):
|
| - """
|
| - When L{uidFromString} is called with a base-ten string representation
|
| - of an integer, it returns the integer.
|
| - """
|
| - pwent = pwd.getpwuid(os.getuid())
|
| - self.assertEqual(util.uidFromString(pwent.pw_name), pwent.pw_uid)
|
| - if pwd is None:
|
| - test_uidFromUsernameString.skip = (
|
| - "Username/UID conversion requires the pwd module.")
|
| -
|
| -
|
| - def test_gidFromNumericString(self):
|
| - """
|
| - When L{gidFromString} is called with a base-ten string representation
|
| - of an integer, it returns the integer.
|
| - """
|
| - self.assertEqual(util.gidFromString("100"), 100)
|
| -
|
| -
|
| - def test_gidFromGroupnameString(self):
|
| - """
|
| - When L{gidFromString} is called with a base-ten string representation
|
| - of an integer, it returns the integer.
|
| - """
|
| - grent = grp.getgrgid(os.getgid())
|
| - self.assertEqual(util.gidFromString(grent.gr_name), grent.gr_gid)
|
| - if grp is None:
|
| - test_gidFromGroupnameString.skip = (
|
| - "Group Name/GID conversion requires the grp module.")
|
| -
|
| -
|
| -
|
| -class TestMergeFunctionMetadata(unittest.TestCase):
|
| - """
|
| - Tests for L{mergeFunctionMetadata}.
|
| - """
|
| -
|
| - def test_mergedFunctionBehavesLikeMergeTarget(self):
|
| - """
|
| - After merging C{foo}'s data into C{bar}, the returned function behaves
|
| - as if it is C{bar}.
|
| - """
|
| - foo_object = object()
|
| - bar_object = object()
|
| -
|
| - def foo():
|
| - return foo_object
|
| -
|
| - def bar(x, y, (a, b), c=10, *d, **e):
|
| - return bar_object
|
| -
|
| - baz = util.mergeFunctionMetadata(foo, bar)
|
| - self.assertIdentical(baz(1, 2, (3, 4), quux=10), bar_object)
|
| -
|
| -
|
| - def test_moduleIsMerged(self):
|
| - """
|
| - Merging C{foo} into C{bar} returns a function with C{foo}'s
|
| - C{__module__}.
|
| - """
|
| - def foo():
|
| - pass
|
| -
|
| - def bar():
|
| - pass
|
| - bar.__module__ = 'somewhere.else'
|
| -
|
| - baz = util.mergeFunctionMetadata(foo, bar)
|
| - self.assertEqual(baz.__module__, foo.__module__)
|
| -
|
| -
|
| - def test_docstringIsMerged(self):
|
| - """
|
| - Merging C{foo} into C{bar} returns a function with C{foo}'s docstring.
|
| - """
|
| -
|
| - def foo():
|
| - """
|
| - This is foo.
|
| - """
|
| -
|
| - def bar():
|
| - """
|
| - This is bar.
|
| - """
|
| -
|
| - baz = util.mergeFunctionMetadata(foo, bar)
|
| - self.assertEqual(baz.__doc__, foo.__doc__)
|
| -
|
| -
|
| - def test_nameIsMerged(self):
|
| - """
|
| - Merging C{foo} into C{bar} returns a function with C{foo}'s name.
|
| - """
|
| -
|
| - def foo():
|
| - pass
|
| -
|
| - def bar():
|
| - pass
|
| -
|
| - baz = util.mergeFunctionMetadata(foo, bar)
|
| - self.assertEqual(baz.__name__, foo.__name__)
|
| -
|
| -
|
| - def test_instanceDictionaryIsMerged(self):
|
| - """
|
| - Merging C{foo} into C{bar} returns a function with C{bar}'s
|
| - dictionary, updated by C{foo}'s.
|
| - """
|
| -
|
| - def foo():
|
| - pass
|
| - foo.a = 1
|
| - foo.b = 2
|
| -
|
| - def bar():
|
| - pass
|
| - bar.b = 3
|
| - bar.c = 4
|
| -
|
| - baz = util.mergeFunctionMetadata(foo, bar)
|
| - self.assertEqual(foo.a, baz.a)
|
| - self.assertEqual(foo.b, baz.b)
|
| - self.assertEqual(bar.c, baz.c)
|
| -
|
| -
|
| -
|
| -class OrderedDictTest(unittest.TestCase):
|
| - def testOrderedDict(self):
|
| - d = util.OrderedDict()
|
| - d['a'] = 'b'
|
| - d['b'] = 'a'
|
| - d[3] = 12
|
| - d[1234] = 4321
|
| - self.assertEquals(repr(d), "{'a': 'b', 'b': 'a', 3: 12, 1234: 4321}")
|
| - self.assertEquals(d.values(), ['b', 'a', 12, 4321])
|
| - del d[3]
|
| - self.assertEquals(repr(d), "{'a': 'b', 'b': 'a', 1234: 4321}")
|
| - self.assertEquals(d, {'a': 'b', 'b': 'a', 1234:4321})
|
| - self.assertEquals(d.keys(), ['a', 'b', 1234])
|
| - self.assertEquals(list(d.iteritems()),
|
| - [('a', 'b'), ('b','a'), (1234, 4321)])
|
| - item = d.popitem()
|
| - self.assertEquals(item, (1234, 4321))
|
| -
|
| - def testInitialization(self):
|
| - d = util.OrderedDict({'monkey': 'ook',
|
| - 'apple': 'red'})
|
| - self.failUnless(d._order)
|
| -
|
| - d = util.OrderedDict(((1,1),(3,3),(2,2),(0,0)))
|
| - self.assertEquals(repr(d), "{1: 1, 3: 3, 2: 2, 0: 0}")
|
| -
|
| -class InsensitiveDictTest(unittest.TestCase):
|
| - def testPreserve(self):
|
| - InsensitiveDict=util.InsensitiveDict
|
| - dct=InsensitiveDict({'Foo':'bar', 1:2, 'fnz':{1:2}}, preserve=1)
|
| - self.assertEquals(dct['fnz'], {1:2})
|
| - self.assertEquals(dct['foo'], 'bar')
|
| - self.assertEquals(dct.copy(), dct)
|
| - self.assertEquals(dct['foo'], dct.get('Foo'))
|
| - assert 1 in dct and 'foo' in dct
|
| - self.assertEquals(eval(repr(dct)), dct)
|
| - keys=['Foo', 'fnz', 1]
|
| - for x in keys:
|
| - assert x in dct.keys()
|
| - assert (x, dct[x]) in dct.items()
|
| - self.assertEquals(len(keys), len(dct))
|
| - del dct[1]
|
| - del dct['foo']
|
| -
|
| - def testNoPreserve(self):
|
| - InsensitiveDict=util.InsensitiveDict
|
| - dct=InsensitiveDict({'Foo':'bar', 1:2, 'fnz':{1:2}}, preserve=0)
|
| - keys=['foo', 'fnz', 1]
|
| - for x in keys:
|
| - assert x in dct.keys()
|
| - assert (x, dct[x]) in dct.items()
|
| - self.assertEquals(len(keys), len(dct))
|
| - del dct[1]
|
| - del dct['foo']
|
| -
|
| -
|
| -
|
| -
|
| -class PasswordTestingProcessProtocol(ProcessProtocol):
|
| - """
|
| - Write the string C{"secret\n"} to a subprocess and then collect all of
|
| - its output and fire a Deferred with it when the process ends.
|
| - """
|
| - def connectionMade(self):
|
| - self.output = []
|
| - self.transport.write('secret\n')
|
| -
|
| - def childDataReceived(self, fd, output):
|
| - self.output.append((fd, output))
|
| -
|
| - def processEnded(self, reason):
|
| - self.finished.callback((reason, self.output))
|
| -
|
| -
|
| -class GetPasswordTest(unittest.TestCase):
|
| - if not IReactorProcess.providedBy(reactor):
|
| - skip = "Process support required to test getPassword"
|
| -
|
| - def test_stdin(self):
|
| - """
|
| - Making sure getPassword accepts a password from standard input by
|
| - running a child process which uses getPassword to read in a string
|
| - which it then writes it out again. Write a string to the child
|
| - process and then read one and make sure it is the right string.
|
| - """
|
| - p = PasswordTestingProcessProtocol()
|
| - p.finished = Deferred()
|
| - reactor.spawnProcess(
|
| - p,
|
| - sys.executable,
|
| - [sys.executable,
|
| - '-c',
|
| - ('import sys\n'
|
| - 'from twisted.python.util import getPassword\n'
|
| - 'sys.stdout.write(getPassword())\n'
|
| - 'sys.stdout.flush()\n')],
|
| - env={'PYTHONPATH': os.pathsep.join(sys.path)})
|
| -
|
| - def processFinished((reason, output)):
|
| - reason.trap(ProcessDone)
|
| - self.assertIn((1, 'secret'), output)
|
| -
|
| - return p.finished.addCallback(processFinished)
|
| -
|
| -
|
| -
|
| -class SearchUpwardsTest(unittest.TestCase):
|
| - def testSearchupwards(self):
|
| - os.makedirs('searchupwards/a/b/c')
|
| - file('searchupwards/foo.txt', 'w').close()
|
| - file('searchupwards/a/foo.txt', 'w').close()
|
| - file('searchupwards/a/b/c/foo.txt', 'w').close()
|
| - os.mkdir('searchupwards/bar')
|
| - os.mkdir('searchupwards/bam')
|
| - os.mkdir('searchupwards/a/bar')
|
| - os.mkdir('searchupwards/a/b/bam')
|
| - actual=util.searchupwards('searchupwards/a/b/c',
|
| - files=['foo.txt'],
|
| - dirs=['bar', 'bam'])
|
| - expected=os.path.abspath('searchupwards') + os.sep
|
| - self.assertEqual(actual, expected)
|
| - shutil.rmtree('searchupwards')
|
| - actual=util.searchupwards('searchupwards/a/b/c',
|
| - files=['foo.txt'],
|
| - dirs=['bar', 'bam'])
|
| - expected=None
|
| - self.assertEqual(actual, expected)
|
| -
|
| -class Foo:
|
| - def __init__(self, x):
|
| - self.x = x
|
| -
|
| -class DSU(unittest.TestCase):
|
| - def testDSU(self):
|
| - L = [Foo(x) for x in range(20, 9, -1)]
|
| - L2 = util.dsu(L, lambda o: o.x)
|
| - self.assertEquals(range(10, 21), [o.x for o in L2])
|
| -
|
| -class IntervalDifferentialTestCase(unittest.TestCase):
|
| - def testDefault(self):
|
| - d = iter(util.IntervalDifferential([], 10))
|
| - for i in range(100):
|
| - self.assertEquals(d.next(), (10, None))
|
| -
|
| - def testSingle(self):
|
| - d = iter(util.IntervalDifferential([5], 10))
|
| - for i in range(100):
|
| - self.assertEquals(d.next(), (5, 0))
|
| -
|
| - def testPair(self):
|
| - d = iter(util.IntervalDifferential([5, 7], 10))
|
| - for i in range(100):
|
| - self.assertEquals(d.next(), (5, 0))
|
| - self.assertEquals(d.next(), (2, 1))
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (4, 1))
|
| - self.assertEquals(d.next(), (1, 0))
|
| - self.assertEquals(d.next(), (5, 0))
|
| - self.assertEquals(d.next(), (1, 1))
|
| - self.assertEquals(d.next(), (4, 0))
|
| - self.assertEquals(d.next(), (3, 1))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (5, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| -
|
| - def testTriple(self):
|
| - d = iter(util.IntervalDifferential([2, 4, 5], 10))
|
| - for i in range(100):
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| - self.assertEquals(d.next(), (1, 2))
|
| - self.assertEquals(d.next(), (1, 0))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (0, 2))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (1, 2))
|
| - self.assertEquals(d.next(), (1, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (2, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| - self.assertEquals(d.next(), (0, 2))
|
| -
|
| - def testInsert(self):
|
| - d = iter(util.IntervalDifferential([], 10))
|
| - self.assertEquals(d.next(), (10, None))
|
| - d.addInterval(3)
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (3, 0))
|
| - d.addInterval(6)
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (0, 1))
|
| -
|
| - def testRemove(self):
|
| - d = iter(util.IntervalDifferential([3, 5], 10))
|
| - self.assertEquals(d.next(), (3, 0))
|
| - self.assertEquals(d.next(), (2, 1))
|
| - self.assertEquals(d.next(), (1, 0))
|
| - d.removeInterval(3)
|
| - self.assertEquals(d.next(), (4, 0))
|
| - self.assertEquals(d.next(), (5, 0))
|
| - d.removeInterval(5)
|
| - self.assertEquals(d.next(), (10, None))
|
| - self.assertRaises(ValueError, d.removeInterval, 10)
|
| -
|
| -
|
| -
|
| -class Record(util.FancyEqMixin):
|
| - """
|
| - Trivial user of L{FancyEqMixin} used by tests.
|
| - """
|
| - compareAttributes = ('a', 'b')
|
| -
|
| - def __init__(self, a, b):
|
| - self.a = a
|
| - self.b = b
|
| -
|
| -
|
| -
|
| -class DifferentRecord(util.FancyEqMixin):
|
| - """
|
| - Trivial user of L{FancyEqMixin} which is not related to L{Record}.
|
| - """
|
| - compareAttributes = ('a', 'b')
|
| -
|
| - def __init__(self, a, b):
|
| - self.a = a
|
| - self.b = b
|
| -
|
| -
|
| -
|
| -class DerivedRecord(Record):
|
| - """
|
| - A class with an inheritance relationship to L{Record}.
|
| - """
|
| -
|
| -
|
| -
|
| -class EqualToEverything(object):
|
| - """
|
| - A class the instances of which consider themselves equal to everything.
|
| - """
|
| - def __eq__(self, other):
|
| - return True
|
| -
|
| -
|
| - def __ne__(self, other):
|
| - return False
|
| -
|
| -
|
| -
|
| -class EqualToNothing(object):
|
| - """
|
| - A class the instances of which consider themselves equal to nothing.
|
| - """
|
| - def __eq__(self, other):
|
| - return False
|
| -
|
| -
|
| - def __ne__(self, other):
|
| - return True
|
| -
|
| -
|
| -
|
| -class EqualityTests(unittest.TestCase):
|
| - """
|
| - Tests for L{FancyEqMixin}.
|
| - """
|
| - def test_identity(self):
|
| - """
|
| - Instances of a class which mixes in L{FancyEqMixin} but which
|
| - defines no comparison attributes compare by identity.
|
| - """
|
| - class Empty(util.FancyEqMixin):
|
| - pass
|
| -
|
| - self.assertFalse(Empty() == Empty())
|
| - self.assertTrue(Empty() != Empty())
|
| - empty = Empty()
|
| - self.assertTrue(empty == empty)
|
| - self.assertFalse(empty != empty)
|
| -
|
| -
|
| - def test_equality(self):
|
| - """
|
| - Instances of a class which mixes in L{FancyEqMixin} should compare
|
| - equal if all of their attributes compare equal. They should not
|
| - compare equal if any of their attributes do not compare equal.
|
| - """
|
| - self.assertTrue(Record(1, 2) == Record(1, 2))
|
| - self.assertFalse(Record(1, 2) == Record(1, 3))
|
| - self.assertFalse(Record(1, 2) == Record(2, 2))
|
| - self.assertFalse(Record(1, 2) == Record(3, 4))
|
| -
|
| -
|
| - def test_unequality(self):
|
| - """
|
| - Unequality between instances of a particular L{record} should be
|
| - defined as the negation of equality.
|
| - """
|
| - self.assertFalse(Record(1, 2) != Record(1, 2))
|
| - self.assertTrue(Record(1, 2) != Record(1, 3))
|
| - self.assertTrue(Record(1, 2) != Record(2, 2))
|
| - self.assertTrue(Record(1, 2) != Record(3, 4))
|
| -
|
| -
|
| - def test_differentClassesEquality(self):
|
| - """
|
| - Instances of different classes which mix in L{FancyEqMixin} should not
|
| - compare equal.
|
| - """
|
| - self.assertFalse(Record(1, 2) == DifferentRecord(1, 2))
|
| -
|
| -
|
| - def test_differentClassesInequality(self):
|
| - """
|
| - Instances of different classes which mix in L{FancyEqMixin} should
|
| - compare unequal.
|
| - """
|
| - self.assertTrue(Record(1, 2) != DifferentRecord(1, 2))
|
| -
|
| -
|
| - def test_inheritedClassesEquality(self):
|
| - """
|
| - An instance of a class which derives from a class which mixes in
|
| - L{FancyEqMixin} should compare equal to an instance of the base class
|
| - if and only if all of their attributes compare equal.
|
| - """
|
| - self.assertTrue(Record(1, 2) == DerivedRecord(1, 2))
|
| - self.assertFalse(Record(1, 2) == DerivedRecord(1, 3))
|
| - self.assertFalse(Record(1, 2) == DerivedRecord(2, 2))
|
| - self.assertFalse(Record(1, 2) == DerivedRecord(3, 4))
|
| -
|
| -
|
| - def test_inheritedClassesInequality(self):
|
| - """
|
| - An instance of a class which derives from a class which mixes in
|
| - L{FancyEqMixin} should compare unequal to an instance of the base
|
| - class if any of their attributes compare unequal.
|
| - """
|
| - self.assertFalse(Record(1, 2) != DerivedRecord(1, 2))
|
| - self.assertTrue(Record(1, 2) != DerivedRecord(1, 3))
|
| - self.assertTrue(Record(1, 2) != DerivedRecord(2, 2))
|
| - self.assertTrue(Record(1, 2) != DerivedRecord(3, 4))
|
| -
|
| -
|
| - def test_rightHandArgumentImplementsEquality(self):
|
| - """
|
| - The right-hand argument to the equality operator is given a chance
|
| - to determine the result of the operation if it is of a type
|
| - unrelated to the L{FancyEqMixin}-based instance on the left-hand
|
| - side.
|
| - """
|
| - self.assertTrue(Record(1, 2) == EqualToEverything())
|
| - self.assertFalse(Record(1, 2) == EqualToNothing())
|
| -
|
| -
|
| - def test_rightHandArgumentImplementsUnequality(self):
|
| - """
|
| - The right-hand argument to the non-equality operator is given a
|
| - chance to determine the result of the operation if it is of a type
|
| - unrelated to the L{FancyEqMixin}-based instance on the left-hand
|
| - side.
|
| - """
|
| - self.assertFalse(Record(1, 2) != EqualToEverything())
|
| - self.assertTrue(Record(1, 2) != EqualToNothing())
|
|
|