Initial import to Tizen
[profile/ivi/python-twisted.git] / twisted / test / test_error.py
1 # Copyright (c) Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4
5 from twisted.trial import unittest
6 from twisted.internet import error
7 import socket
8
9 class TestStringification(unittest.TestCase):
10     """Test that the exceptions have useful stringifications.
11     """
12
13     listOfTests = [
14         #(output, exception[, args[, kwargs]]),
15
16         ("An error occurred binding to an interface.",
17          error.BindError),
18
19         ("An error occurred binding to an interface: foo.",
20          error.BindError, ['foo']),
21
22         ("An error occurred binding to an interface: foo bar.",
23          error.BindError, ['foo', 'bar']),
24
25         ("Couldn't listen on eth0:4242: Foo.",
26          error.CannotListenError,
27          ('eth0', 4242, socket.error('Foo'))),
28
29         ("Message is too long to send.",
30          error.MessageLengthError),
31
32         ("Message is too long to send: foo bar.",
33          error.MessageLengthError, ['foo', 'bar']),
34
35         ("DNS lookup failed.",
36          error.DNSLookupError),
37
38         ("DNS lookup failed: foo bar.",
39          error.DNSLookupError, ['foo', 'bar']),
40
41         ("An error occurred while connecting.",
42          error.ConnectError),
43
44         ("An error occurred while connecting: someOsError.",
45          error.ConnectError, ['someOsError']),
46
47         ("An error occurred while connecting: foo.",
48          error.ConnectError, [], {'string': 'foo'}),
49
50         ("An error occurred while connecting: someOsError: foo.",
51          error.ConnectError, ['someOsError', 'foo']),
52
53         ("Couldn't bind.",
54          error.ConnectBindError),
55
56         ("Couldn't bind: someOsError.",
57          error.ConnectBindError, ['someOsError']),
58
59         ("Couldn't bind: someOsError: foo.",
60          error.ConnectBindError, ['someOsError', 'foo']),
61
62         ("Hostname couldn't be looked up.",
63          error.UnknownHostError),
64
65         ("No route to host.",
66          error.NoRouteError),
67
68         ("Connection was refused by other side.",
69          error.ConnectionRefusedError),
70
71         ("TCP connection timed out.",
72          error.TCPTimedOutError),
73
74         ("File used for UNIX socket is no good.",
75          error.BadFileError),
76
77         ("Service name given as port is unknown.",
78          error.ServiceNameUnknownError),
79
80         ("User aborted connection.",
81          error.UserError),
82
83         ("User timeout caused connection failure.",
84          error.TimeoutError),
85
86         ("An SSL error occurred.",
87          error.SSLError),
88
89         ("Connection to the other side was lost in a non-clean fashion.",
90          error.ConnectionLost),
91
92         ("Connection to the other side was lost in a non-clean fashion: foo bar.",
93          error.ConnectionLost, ['foo', 'bar']),
94
95         ("Connection was closed cleanly.",
96          error.ConnectionDone),
97
98         ("Connection was closed cleanly: foo bar.",
99          error.ConnectionDone, ['foo', 'bar']),
100
101         ("Uh.", #TODO nice docstring, you've got there.
102          error.ConnectionFdescWentAway),
103
104         ("Tried to cancel an already-called event.",
105          error.AlreadyCalled),
106
107         ("Tried to cancel an already-called event: foo bar.",
108          error.AlreadyCalled, ['foo', 'bar']),
109
110         ("Tried to cancel an already-cancelled event.",
111          error.AlreadyCancelled),
112
113         ("A process has ended without apparent errors: process finished with exit code 0.",
114          error.ProcessDone,
115          [None]),
116
117         ("A process has ended with a probable error condition: process ended.",
118          error.ProcessTerminated),
119
120         ("A process has ended with a probable error condition: process ended with exit code 42.",
121          error.ProcessTerminated,
122          [],
123          {'exitCode': 42}),
124
125         ("A process has ended with a probable error condition: process ended by signal SIGBUS.",
126          error.ProcessTerminated,
127          [],
128          {'signal': 'SIGBUS'}),
129
130         ("The Connector was not connecting when it was asked to stop connecting.",
131          error.NotConnectingError),
132
133         ("The Port was not listening when it was asked to stop listening.",
134          error.NotListeningError),
135
136         ]
137
138     def testThemAll(self):
139         for entry in self.listOfTests:
140             output = entry[0]
141             exception = entry[1]
142             try:
143                 args = entry[2]
144             except IndexError:
145                 args = ()
146             try:
147                 kwargs = entry[3]
148             except IndexError:
149                 kwargs = {}
150
151             self.assertEqual(
152                 str(exception(*args, **kwargs)),
153                 output)
154
155
156     def test_connectionLostSubclassOfConnectionClosed(self):
157         """
158         L{error.ConnectionClosed} is a superclass of L{error.ConnectionLost}.
159         """
160         self.assertTrue(issubclass(error.ConnectionLost,
161                                    error.ConnectionClosed))
162
163
164     def test_connectionDoneSubclassOfConnectionClosed(self):
165         """
166         L{error.ConnectionClosed} is a superclass of L{error.ConnectionDone}.
167         """
168         self.assertTrue(issubclass(error.ConnectionDone,
169                                    error.ConnectionClosed))
170