blob: ca76b93ccf16f1f58e9b0e8ddcc25ee79c5b32a6 [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
Brett Cannonb7ec8e52008-03-18 03:46:22 +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',
Martin v. Löwis637f2392008-03-18 12:45:37 +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',
Martin v. Löwis637f2392008-03-18 12:45:37 +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',
Martin v. Löwis637f2392008-03-18 12:45:37 +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',
Martin v. Löwis637f2392008-03-18 12:45:37 +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',
Martin v. Löwisd43ca3b2008-03-18 12:20:15 +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',
Martin v. Löwis637f2392008-03-18 12:45:37 +000034 'ETIMEDOUT', 'ETOOMANYREFS', 'ETXTBSY', 'EUCLEAN', 'EUNATCH',
Martin v. Löwisafb416b2008-03-18 13:05:03 +000035 '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
Brett Cannonb7ec8e52008-03-18 03:46:22 +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__.iterkeys():
62 if attribute.isupper():
Brett Cannon08811dd2008-03-18 05:43:04 +000063 self.assert_(attribute in errors_set,
64 "%s is an unexpected error value" % attribute)
Brett Cannonb7ec8e52008-03-18 03:46:22 +000065
66 def test_using_errorcode(self):
67 # Every key value in errno.errorcode should be on the module.
68 for value in errno.errorcode.itervalues():
Neal Norwitzd1befd72008-03-18 06:03:46 +000069 self.assert_(hasattr(errno, value), 'no %s attr in errno' % value)
Brett Cannonb7ec8e52008-03-18 03:46:22 +000070
71
72class ErrorcodeTests(unittest.TestCase):
73
74 def test_attributes_in_errorcode(self):
75 for attribute in errno.__dict__.iterkeys():
76 if attribute.isupper():
Neal Norwitzd1befd72008-03-18 06:03:46 +000077 self.assert_(getattr(errno, attribute) in errno.errorcode,
78 'no %s attr in errno.errorcode' % attribute)
Brett Cannonb7ec8e52008-03-18 03:46:22 +000079
80
81def test_main():
82 test_support.run_unittest(ErrnoAttributeTests, ErrorcodeTests)
83
84
85if __name__ == '__main__':
86 test_main()