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()) |