diff options
Diffstat (limited to 'Lib/test/test_fcntl.py')
| -rw-r--r-- | Lib/test/test_fcntl.py | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_fcntl.py b/Lib/test/test_fcntl.py index 29af99cf16..0ce3a5dd7a 100644 --- a/Lib/test/test_fcntl.py +++ b/Lib/test/test_fcntl.py @@ -6,6 +6,7 @@ OS/2+EMX doesn't support the file locking operations.  import os  import struct  import sys +import _testcapi  import unittest  from test.support import verbose, TESTFN, unlink, run_unittest, import_module @@ -76,6 +77,26 @@ class TestFcntl(unittest.TestCase):              rv = fcntl.fcntl(self.f, fcntl.F_SETLKW, lockdata)          self.f.close() +    def test_fcntl_bad_file(self): +        class F: +            def __init__(self, fn): +                self.fn = fn +            def fileno(self): +                return self.fn +        self.assertRaises(ValueError, fcntl.fcntl, -1, fcntl.F_SETFL, os.O_NONBLOCK) +        self.assertRaises(ValueError, fcntl.fcntl, F(-1), fcntl.F_SETFL, os.O_NONBLOCK) +        self.assertRaises(TypeError, fcntl.fcntl, 'spam', fcntl.F_SETFL, os.O_NONBLOCK) +        self.assertRaises(TypeError, fcntl.fcntl, F('spam'), fcntl.F_SETFL, os.O_NONBLOCK) +        # Issue 15989 +        self.assertRaises(OverflowError, fcntl.fcntl, _testcapi.INT_MAX + 1, +                                                      fcntl.F_SETFL, os.O_NONBLOCK) +        self.assertRaises(OverflowError, fcntl.fcntl, F(_testcapi.INT_MAX + 1), +                                                      fcntl.F_SETFL, os.O_NONBLOCK) +        self.assertRaises(OverflowError, fcntl.fcntl, _testcapi.INT_MIN - 1, +                                                      fcntl.F_SETFL, os.O_NONBLOCK) +        self.assertRaises(OverflowError, fcntl.fcntl, F(_testcapi.INT_MIN - 1), +                                                      fcntl.F_SETFL, os.O_NONBLOCK) +      def test_fcntl_64_bit(self):          # Issue #1309352: fcntl shouldn't fail when the third arg fits in a          # C 'long' but not in a C 'int'.  | 
