diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2016-09-17 20:23:13 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2016-09-17 20:23:13 (GMT) |
commit | 5d625cff07bf9a9dbe9be3b598fbaf673a3be819 (patch) | |
tree | e134a898a89944401a695310dc71d47780666a41 /Lib | |
parent | ed51b268580c1100b46bf5dbc4b4201146019644 (diff) | |
parent | bcfb35f80d9d1f87d9fa6993c1d3bc35dd5db865 (diff) | |
download | cpython-5d625cff07bf9a9dbe9be3b598fbaf673a3be819.zip cpython-5d625cff07bf9a9dbe9be3b598fbaf673a3be819.tar.gz cpython-5d625cff07bf9a9dbe9be3b598fbaf673a3be819.tar.bz2 |
Issue #26384: Merge from 3.5
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/socket.py | 2 | ||||
-rw-r--r-- | Lib/test/test_socket.py | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Lib/socket.py b/Lib/socket.py index bc8f467..740e717 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -268,7 +268,7 @@ class socket(_socket.socket): raise _GiveupOnSendfile(err) # not a regular file try: fsize = os.fstat(fileno).st_size - except OSError: + except OSError as err: raise _GiveupOnSendfile(err) # not a regular file if not fsize: return 0 # empty file diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 441926f..41c206b 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1485,6 +1485,25 @@ class GeneralModuleTests(unittest.TestCase): self.assertEqual(s.family, 42424) self.assertEqual(s.type, 13331) + @unittest.skipUnless(hasattr(os, 'sendfile'), 'test needs os.sendfile()') + def test__sendfile_use_sendfile(self): + class File: + def __init__(self, fd): + self.fd = fd + + def fileno(self): + return self.fd + with socket.socket() as sock: + fd = os.open(os.curdir, os.O_RDONLY) + os.close(fd) + with self.assertRaises(socket._GiveupOnSendfile): + sock._sendfile_use_sendfile(File(fd)) + with self.assertRaises(OverflowError): + sock._sendfile_use_sendfile(File(2**1000)) + with self.assertRaises(TypeError): + sock._sendfile_use_sendfile(File(None)) + + @unittest.skipUnless(HAVE_SOCKET_CAN, 'SocketCan required for this test.') class BasicCANTest(unittest.TestCase): |