blob: 70bbfbc171806d45b99dc31d27d0a48104e5dc3c [file] [log] [blame]
Roger E. Masse8ba76d31996-12-16 20:20:33 +00001#! /usr/bin/env python
2"""Test the errno module
3 Roger E. Masse
4"""
Roger E. Masse9c6db351996-12-16 20:40:20 +00005
6import errno
Christian Heimesb186d002008-03-18 15:15:01 +00007from test import test_support
8import unittest
Roger E. Masse8ba76d31996-12-16 20:20:33 +00009
10errors = ['E2BIG', 'EACCES', 'EADDRINUSE', 'EADDRNOTAVAIL', 'EADV',
Guido van Rossum41360a41998-03-26 19:42:58 +000011 'EAFNOSUPPORT', 'EAGAIN', 'EALREADY', 'EBADE', 'EBADF',
12 'EBADFD', 'EBADMSG', 'EBADR', 'EBADRQC', 'EBADSLT',
13 'EBFONT', 'EBUSY', 'ECHILD', 'ECHRNG', 'ECOMM',
14 'ECONNABORTED', 'ECONNREFUSED', 'ECONNRESET',
Christian Heimesb186d002008-03-18 15:15:01 +000015 'EDEADLK', 'EDEADLOCK', 'EDESTADDRREQ', 'EDOTDOT', 'EDOM',
Guido van Rossum41360a41998-03-26 19:42:58 +000016 'EDQUOT', 'EEXIST', 'EFAULT', 'EFBIG', 'EHOSTDOWN',
17 'EHOSTUNREACH', 'EIDRM', 'EILSEQ', 'EINPROGRESS',
Christian Heimesb186d002008-03-18 15:15:01 +000018 'EINTR', 'EINVAL', 'EIO', 'EISCONN', 'EISDIR', 'EISNAM',
Guido van Rossum41360a41998-03-26 19:42:58 +000019 'EL2HLT', 'EL2NSYNC', 'EL3HLT', 'EL3RST', 'ELIBACC',
20 'ELIBBAD', 'ELIBEXEC', 'ELIBMAX', 'ELIBSCN', 'ELNRNG',
21 'ELOOP', 'EMFILE', 'EMLINK', 'EMSGSIZE', 'EMULTIHOP',
Christian Heimesb186d002008-03-18 15:15:01 +000022 'ENAMETOOLONG', 'ENAVAIL', 'ENETDOWN', 'ENETRESET', 'ENETUNREACH',
Guido van Rossum41360a41998-03-26 19:42:58 +000023 'ENFILE', 'ENOANO', 'ENOBUFS', 'ENOCSI', 'ENODATA',
24 'ENODEV', 'ENOENT', 'ENOEXEC', 'ENOLCK', 'ENOLINK',
25 'ENOMEM', 'ENOMSG', 'ENONET', 'ENOPKG', 'ENOPROTOOPT',
26 'ENOSPC', 'ENOSR', 'ENOSTR', 'ENOSYS', 'ENOTBLK',
Christian Heimesb186d002008-03-18 15:15:01 +000027 'ENOTCONN', 'ENOTDIR', 'ENOTEMPTY', 'ENOTNAM', 'ENOTOBACCO', 'ENOTSOCK',
Guido van Rossum41360a41998-03-26 19:42:58 +000028 'ENOTTY', 'ENOTUNIQ', 'ENXIO', 'EOPNOTSUPP',
29 'EOVERFLOW', 'EPERM', 'EPFNOSUPPORT', 'EPIPE',
30 'EPROTO', 'EPROTONOSUPPORT', 'EPROTOTYPE',
Christian Heimesb186d002008-03-18 15:15:01 +000031 'ERANGE', 'EREMCHG', 'EREMOTE', 'EREMOTEIO', 'ERESTART',
Guido van Rossum41360a41998-03-26 19:42:58 +000032 'EROFS', 'ESHUTDOWN', 'ESOCKTNOSUPPORT', 'ESPIPE',
33 'ESRCH', 'ESRMNT', 'ESTALE', 'ESTRPIPE', 'ETIME',
Christian Heimesb186d002008-03-18 15:15:01 +000034 'ETIMEDOUT', 'ETOOMANYREFS', 'ETXTBSY', 'EUCLEAN', 'EUNATCH',
35 'EUSERS', 'EWOULDBLOCK', 'EXDEV', 'EXFULL',
36 'WSABASEERR', 'WSADESCRIPTIO', 'WSAEACCES', 'WSAEADDRINUSE',
37 'WSAEADDRNOTAVAIL', 'WSAEAFNOSUPPORT', 'WSAEALREADY',
38 'WSAEBADF', 'WSAECONNABORTED', 'WSAECONNREFUSED',
39 'WSAECONNRESET', 'WSAEDESTADDRREQ', 'WSAEDISCON',
40 'WSAEDQUOT', 'WSAEFAULT', 'WSAEHOSTDOWN', 'WSAEHOSTUNREACH',
41 'WSAEINPROGRESS', 'WSAEINTR', 'WSAEINVAL', 'WSAEISCONN',
42 'WSAELOOP', 'WSAEMFILE', 'WSAEMSGSIZE', 'WSAENAMETOOLONG',
43 'WSAENETDOWN', 'WSAENETRESET', 'WSAENETUNREACH',
44 'WSAENOBUFS', 'WSAENOPROTOOPT', 'WSAENOTCONN',
45 'WSAENOTEMPTY', 'WSAENOTSOCK', 'WSAEOPNOTSUPP',
46 'WSAEPFNOSUPPORT', 'WSAEPROCLIM', 'WSAEPROTONOSUPPORT',
47 'WSAEPROTOTYPE', 'WSAEREMOTE', 'WSAESHUTDOWN',
48 'WSAESOCKTNOSUPPORT', 'WSAESTALE', 'WSAETIMEDOUT',
49 'WSAETOOMANYREFS', 'WSAEUSERS', 'WSAEWOULDBLOCK',
50 'WSAGETASYNCBUFLE', 'WSAGETASYNCERRO', 'WSAGETSELECTERRO',
51 'WSAGETSELECTEVEN', 'WSAHOS', 'WSAMAKEASYNCREPL',
52 'WSAMAKESELECTREPL', 'WSAN', 'WSANOTINITIALISED', 'WSASY',
53 'WSASYSNOTREADY', 'WSATR', 'WSAVERNOTSUPPORTED']
Roger E. Masse8ba76d31996-12-16 20:20:33 +000054
Christian Heimesb186d002008-03-18 15:15:01 +000055
56class ErrnoAttributeTests(unittest.TestCase):
57
58 def test_for_improper_attributes(self):
59 # No unexpected attributes should be on the module.
60 errors_set = set(errors)
61 for attribute in errno.__dict__.keys():
62 if attribute.isupper():
63 self.assert_(attribute in errors_set,
64 "%s is an unexpected error value" % attribute)
65
66 def test_using_errorcode(self):
67 # Every key value in errno.errorcode should be on the module.
68 for value in errno.errorcode.values():
69 self.assert_(hasattr(errno, value), 'no %s attr in errno' % value)
70
71
72class ErrorcodeTests(unittest.TestCase):
73
74 def test_attributes_in_errorcode(self):
75 for attribute in errno.__dict__.keys():
76 if attribute.isupper():
77 self.assert_(getattr(errno, attribute) in errno.errorcode,
78 'no %s attr in errno.errorcode' % attribute)
79
80
81def test_main():
82 test_support.run_unittest(ErrnoAttributeTests, ErrorcodeTests)
83
84
85if __name__ == '__main__':
86 test_main()