This file is indexed.

/usr/lib/python3/dist-packages/twisted/test/test_error.py is in python3-twisted-experimental 13.2.0-0ubuntu1.

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.

from __future__ import division, absolute_import

import socket, errno
from twisted.trial import unittest
from twisted.internet import error
from twisted.python.runtime import platformType


class TestStringification(unittest.SynchronousTestCase):
    """Test that the exceptions have useful stringifications.
    """

    listOfTests = [
        #(output, exception[, args[, kwargs]]),

        ("An error occurred binding to an interface.",
         error.BindError),

        ("An error occurred binding to an interface: foo.",
         error.BindError, ['foo']),

        ("An error occurred binding to an interface: foo bar.",
         error.BindError, ['foo', 'bar']),

        ("Couldn't listen on eth0:4242: Foo.",
         error.CannotListenError,
         ('eth0', 4242, socket.error('Foo'))),

        ("Message is too long to send.",
         error.MessageLengthError),

        ("Message is too long to send: foo bar.",
         error.MessageLengthError, ['foo', 'bar']),

        ("DNS lookup failed.",
         error.DNSLookupError),

        ("DNS lookup failed: foo bar.",
         error.DNSLookupError, ['foo', 'bar']),

        ("An error occurred while connecting.",
         error.ConnectError),

        ("An error occurred while connecting: someOsError.",
         error.ConnectError, ['someOsError']),

        ("An error occurred while connecting: foo.",
         error.ConnectError, [], {'string': 'foo'}),

        ("An error occurred while connecting: someOsError: foo.",
         error.ConnectError, ['someOsError', 'foo']),

        ("Couldn't bind.",
         error.ConnectBindError),

        ("Couldn't bind: someOsError.",
         error.ConnectBindError, ['someOsError']),

        ("Couldn't bind: someOsError: foo.",
         error.ConnectBindError, ['someOsError', 'foo']),

        ("Hostname couldn't be looked up.",
         error.UnknownHostError),

        ("No route to host.",
         error.NoRouteError),

        ("Connection was refused by other side.",
         error.ConnectionRefusedError),

        ("TCP connection timed out.",
         error.TCPTimedOutError),

        ("File used for UNIX socket is no good.",
         error.BadFileError),

        ("Service name given as port is unknown.",
         error.ServiceNameUnknownError),

        ("User aborted connection.",
         error.UserError),

        ("User timeout caused connection failure.",
         error.TimeoutError),

        ("An SSL error occurred.",
         error.SSLError),

        ("Connection to the other side was lost in a non-clean fashion.",
         error.ConnectionLost),

        ("Connection to the other side was lost in a non-clean fashion: foo bar.",
         error.ConnectionLost, ['foo', 'bar']),

        ("Connection was closed cleanly.",
         error.ConnectionDone),

        ("Connection was closed cleanly: foo bar.",
         error.ConnectionDone, ['foo', 'bar']),

        ("Uh.", #TODO nice docstring, you've got there.
         error.ConnectionFdescWentAway),

        ("Tried to cancel an already-called event.",
         error.AlreadyCalled),

        ("Tried to cancel an already-called event: foo bar.",
         error.AlreadyCalled, ['foo', 'bar']),

        ("Tried to cancel an already-cancelled event.",
         error.AlreadyCancelled),

        ("Tried to cancel an already-cancelled event: x 2.",
         error.AlreadyCancelled, ["x", "2"]),

        ("A process has ended without apparent errors: process finished with exit code 0.",
         error.ProcessDone,
         [None]),

        ("A process has ended with a probable error condition: process ended.",
         error.ProcessTerminated),

        ("A process has ended with a probable error condition: process ended with exit code 42.",
         error.ProcessTerminated,
         [],
         {'exitCode': 42}),

        ("A process has ended with a probable error condition: process ended by signal SIGBUS.",
         error.ProcessTerminated,
         [],
         {'signal': 'SIGBUS'}),

        ("The Connector was not connecting when it was asked to stop connecting.",
         error.NotConnectingError),

        ("The Connector was not connecting when it was asked to stop connecting: x 13.",
         error.NotConnectingError, ["x", "13"]),

        ("The Port was not listening when it was asked to stop listening.",
         error.NotListeningError),

        ("The Port was not listening when it was asked to stop listening: a 12.",
         error.NotListeningError, ["a", "12"]),
        ]

    def testThemAll(self):
        for entry in self.listOfTests:
            output = entry[0]
            exception = entry[1]
            try:
                args = entry[2]
            except IndexError:
                args = ()
            try:
                kwargs = entry[3]
            except IndexError:
                kwargs = {}

            self.assertEqual(
                str(exception(*args, **kwargs)),
                output)


    def test_connectionLostSubclassOfConnectionClosed(self):
        """
        L{error.ConnectionClosed} is a superclass of L{error.ConnectionLost}.
        """
        self.assertTrue(issubclass(error.ConnectionLost,
                                   error.ConnectionClosed))


    def test_connectionDoneSubclassOfConnectionClosed(self):
        """
        L{error.ConnectionClosed} is a superclass of L{error.ConnectionDone}.
        """
        self.assertTrue(issubclass(error.ConnectionDone,
                                   error.ConnectionClosed))


    def test_connectingCancelledError(self):
        """
        L{error.ConnectingCancelledError} has an C{address} attribute.
        """
        address = object()
        e = error.ConnectingCancelledError(address)
        self.assertIdentical(e.address, address)



class GetConnectErrorTests(unittest.SynchronousTestCase):
    """
    Given an exception instance thrown by C{socket.connect},
    L{error.getConnectError} returns the appropriate high-level Twisted
    exception instance.
    """

    def assertErrnoException(self, errno, expectedClass):
        """
        When called with a tuple with the given errno,
        L{error.getConnectError} returns an exception which is an instance of
        the expected class.
        """
        e = (errno, "lalala")
        result = error.getConnectError(e)
        self.assertCorrectException(errno, "lalala", result, expectedClass)


    def assertCorrectException(self, errno, message, result, expectedClass):
        """
        The given result of L{error.getConnectError} has the given attributes
        (C{osError} and C{args}), and is an instance of the given class.
        """

        # Want exact class match, not inherited classes, so no isinstance():
        self.assertEqual(result.__class__, expectedClass)
        self.assertEqual(result.osError, errno)
        self.assertEqual(result.args, (message,))


    def test_errno(self):
        """
        L{error.getConnectError} converts based on errno for C{socket.error}.
        """
        self.assertErrnoException(errno.ENETUNREACH, error.NoRouteError)
        self.assertErrnoException(errno.ECONNREFUSED, error.ConnectionRefusedError)
        self.assertErrnoException(errno.ETIMEDOUT, error.TCPTimedOutError)
        if platformType == "win32":
            self.assertErrnoException(errno.WSAECONNREFUSED, error.ConnectionRefusedError)
            self.assertErrnoException(errno.WSAENETUNREACH, error.NoRouteError)


    def test_gaierror(self):
        """
        L{error.getConnectError} converts to a L{error.UnknownHostError} given
        a C{socket.gaierror} instance.
        """
        result = error.getConnectError(socket.gaierror(12, "hello"))
        self.assertCorrectException(12, "hello", result, error.UnknownHostError)


    def test_nonTuple(self):
        """
        L{error.getConnectError} converts to a L{error.ConnectError} given
        an argument that cannot be unpacked.
        """
        e = Exception()
        result = error.getConnectError(e)
        self.assertCorrectException(None, e, result, error.ConnectError)