]> granicus.if.org Git - python/commitdiff
test_errno was a no-op test; now it actually tests things and uses unittest.
authorBrett Cannon <bcannon@gmail.com>
Tue, 18 Mar 2008 03:46:22 +0000 (03:46 +0000)
committerBrett Cannon <bcannon@gmail.com>
Tue, 18 Mar 2008 03:46:22 +0000 (03:46 +0000)
Lib/test/test_errno.py
Misc/NEWS

index 6b02e25cf397bd3ce9355748ca58634c488a062f..3f4496563e3f13159f4f5670c871270b1f3e85fc 100755 (executable)
@@ -4,7 +4,8 @@
 """
 
 import errno
-from test.test_support import verbose
+from test import test_support
+import unittest
 
 errors = ['E2BIG', 'EACCES', 'EADDRINUSE', 'EADDRNOTAVAIL', 'EADV',
           'EAFNOSUPPORT', 'EAGAIN', 'EALREADY', 'EBADE', 'EBADF',
@@ -33,17 +34,33 @@ errors = ['E2BIG', 'EACCES', 'EADDRINUSE', 'EADDRNOTAVAIL', 'EADV',
           'ETIMEDOUT', 'ETOOMANYREFS', 'ETXTBSY', 'EUNATCH',
           'EUSERS', 'EWOULDBLOCK', 'EXDEV', 'EXFULL']
 
-#
-# This is a wee bit bogus since the module only conditionally adds
-# errno constants if they have been defined by errno.h  However, this
-# test seems to work on SGI, Sparc & intel Solaris, and linux.
-#
-for error in errors:
-    try:
-        a = getattr(errno, error)
-    except AttributeError:
-        if verbose:
-            print '%s: not found' % error
-    else:
-        if verbose:
-            print '%s: %d' % (error, a)
+
+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__.iterkeys():
+            if attribute.isupper():
+                self.assert_(attribute in errors_set)
+
+    def test_using_errorcode(self):
+        # Every key value in errno.errorcode should be on the module.
+        for value in errno.errorcode.itervalues():
+            self.assert_(hasattr(errno, value))
+
+
+class ErrorcodeTests(unittest.TestCase):
+
+    def test_attributes_in_errorcode(self):
+        for attribute in errno.__dict__.iterkeys():
+            if attribute.isupper():
+                self.assert_(getattr(errno, attribute) in errno.errorcode)
+
+
+def test_main():
+    test_support.run_unittest(ErrnoAttributeTests, ErrorcodeTests)
+
+
+if __name__ == '__main__':
+    test_main()
index cb8449175d36450b60819eb7e92de2b7aa8c089c..890b7f7fca6db9d45397339c22780236072af708 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -78,6 +78,8 @@ Library
 Tests
 -----
 
+- Rewrite test_errno to use unittest and no longer be a no-op.
+
 - GHOP 234: Convert test_extcall to doctest.
 
 - GHOP 290: Convert test_dbm and test_dummy_threading to unittest.