summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_errno.py
blob: 70bbfbc171806d45b99dc31d27d0a48104e5dc3c (plain)
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
#! /usr/bin/env python
"""Test the errno module
   Roger E. Masse
"""

import errno
from test import test_support
import unittest

errors = ['E2BIG', 'EACCES', 'EADDRINUSE', 'EADDRNOTAVAIL', 'EADV',
          'EAFNOSUPPORT', 'EAGAIN', 'EALREADY', 'EBADE', 'EBADF',
          'EBADFD', 'EBADMSG', 'EBADR', 'EBADRQC', 'EBADSLT',
          'EBFONT', 'EBUSY', 'ECHILD', 'ECHRNG', 'ECOMM',
          'ECONNABORTED', 'ECONNREFUSED', 'ECONNRESET',
          'EDEADLK', 'EDEADLOCK', 'EDESTADDRREQ', 'EDOTDOT', 'EDOM',
          'EDQUOT', 'EEXIST', 'EFAULT', 'EFBIG', 'EHOSTDOWN',
          'EHOSTUNREACH', 'EIDRM', 'EILSEQ', 'EINPROGRESS',
          'EINTR', 'EINVAL', 'EIO', 'EISCONN', 'EISDIR', 'EISNAM',
          'EL2HLT', 'EL2NSYNC', 'EL3HLT', 'EL3RST', 'ELIBACC',
          'ELIBBAD', 'ELIBEXEC', 'ELIBMAX', 'ELIBSCN', 'ELNRNG',
          'ELOOP', 'EMFILE', 'EMLINK', 'EMSGSIZE', 'EMULTIHOP',
          'ENAMETOOLONG', 'ENAVAIL', 'ENETDOWN', 'ENETRESET', 'ENETUNREACH',
          'ENFILE', 'ENOANO', 'ENOBUFS', 'ENOCSI', 'ENODATA',
          'ENODEV', 'ENOENT', 'ENOEXEC', 'ENOLCK', 'ENOLINK',
          'ENOMEM', 'ENOMSG', 'ENONET', 'ENOPKG', 'ENOPROTOOPT',
          'ENOSPC', 'ENOSR', 'ENOSTR', 'ENOSYS', 'ENOTBLK',
          'ENOTCONN', 'ENOTDIR', 'ENOTEMPTY', 'ENOTNAM', 'ENOTOBACCO', 'ENOTSOCK',
          'ENOTTY', 'ENOTUNIQ', 'ENXIO', 'EOPNOTSUPP',
          'EOVERFLOW', 'EPERM', 'EPFNOSUPPORT', 'EPIPE',
          'EPROTO', 'EPROTONOSUPPORT', 'EPROTOTYPE',
          'ERANGE', 'EREMCHG', 'EREMOTE', 'EREMOTEIO', 'ERESTART',
          'EROFS', 'ESHUTDOWN', 'ESOCKTNOSUPPORT', 'ESPIPE',
          'ESRCH', 'ESRMNT', 'ESTALE', 'ESTRPIPE', 'ETIME',
          'ETIMEDOUT', 'ETOOMANYREFS', 'ETXTBSY', 'EUCLEAN', 'EUNATCH',
          'EUSERS', 'EWOULDBLOCK', 'EXDEV', 'EXFULL',
          'WSABASEERR', 'WSADESCRIPTIO', 'WSAEACCES', 'WSAEADDRINUSE',
          'WSAEADDRNOTAVAIL', 'WSAEAFNOSUPPORT', 'WSAEALREADY',
          'WSAEBADF', 'WSAECONNABORTED', 'WSAECONNREFUSED',
          'WSAECONNRESET', 'WSAEDESTADDRREQ', 'WSAEDISCON',
          'WSAEDQUOT', 'WSAEFAULT', 'WSAEHOSTDOWN', 'WSAEHOSTUNREACH',
          'WSAEINPROGRESS', 'WSAEINTR', 'WSAEINVAL', 'WSAEISCONN',
          'WSAELOOP', 'WSAEMFILE', 'WSAEMSGSIZE', 'WSAENAMETOOLONG',
          'WSAENETDOWN', 'WSAENETRESET', 'WSAENETUNREACH',
          'WSAENOBUFS', 'WSAENOPROTOOPT', 'WSAENOTCONN',
          'WSAENOTEMPTY', 'WSAENOTSOCK', 'WSAEOPNOTSUPP',
          'WSAEPFNOSUPPORT', 'WSAEPROCLIM', 'WSAEPROTONOSUPPORT',
          'WSAEPROTOTYPE', 'WSAEREMOTE', 'WSAESHUTDOWN',
          'WSAESOCKTNOSUPPORT', 'WSAESTALE', 'WSAETIMEDOUT',
          'WSAETOOMANYREFS', 'WSAEUSERS', 'WSAEWOULDBLOCK',
          'WSAGETASYNCBUFLE', 'WSAGETASYNCERRO', 'WSAGETSELECTERRO',
          'WSAGETSELECTEVEN', 'WSAHOS', 'WSAMAKEASYNCREPL',
          'WSAMAKESELECTREPL', 'WSAN', 'WSANOTINITIALISED', 'WSASY',
          'WSASYSNOTREADY', 'WSATR', 'WSAVERNOTSUPPORTED']


class ErrnoAttributeTests(unittest.TestCase):

    def test_for_improper_attributes(self):
        # No unexpected attributes should be on the module.
        errors_set = set(errors)
        for attribute in errno.__dict__.keys():
            if attribute.isupper():
                self.assert_(attribute in errors_set,
                                "%s is an unexpected error value" % attribute)

    def test_using_errorcode(self):
        # Every key value in errno.errorcode should be on the module.
        for value in errno.errorcode.values():
            self.assert_(hasattr(errno, value), 'no %s attr in errno' % value)


class ErrorcodeTests(unittest.TestCase):

    def test_attributes_in_errorcode(self):
        for attribute in errno.__dict__.keys():
            if attribute.isupper():
                self.assert_(getattr(errno, attribute) in errno.errorcode,
                             'no %s attr in errno.errorcode' % attribute)


def test_main():
    test_support.run_unittest(ErrnoAttributeTests, ErrorcodeTests)


if __name__ == '__main__':
    test_main()