@unittest.skipUnless(hasattr(socket, 'if_indextoname'),
'socket.if_indextoname() not available.')
def testInvalidInterfaceIndexToName(self):
- self.assertRaises(OSError, socket.if_indextoname, 0)
+ with self.assertRaises(OSError) as cm:
+ socket.if_indextoname(0)
+ self.assertIsNotNone(cm.exception.errno)
+
self.assertRaises(OverflowError, socket.if_indextoname, -1)
self.assertRaises(OverflowError, socket.if_indextoname, 2**1000)
self.assertRaises(TypeError, socket.if_indextoname, '_DEADBEEF')
@unittest.skipUnless(hasattr(socket, 'if_nametoindex'),
'socket.if_nametoindex() not available.')
def testInvalidInterfaceNameToIndex(self):
+ with self.assertRaises(OSError) as cm:
+ socket.if_nametoindex("_DEADBEEF")
+ self.assertIsNotNone(cm.exception.errno)
+
self.assertRaises(TypeError, socket.if_nametoindex, 0)
- self.assertRaises(OSError, socket.if_nametoindex, '_DEADBEEF')
@unittest.skipUnless(hasattr(sys, 'getrefcount'),
'test needs sys.getrefcount()')
unsigned long index;
#endif
+ errno = ENODEV; // in case 'if_nametoindex' does not set errno
index = if_nametoindex(PyBytes_AS_STRING(oname));
if (index == 0) {
- /* if_nametoindex() doesn't set errno */
- PyErr_SetString(PyExc_OSError, "no interface with this name");
+ PyErr_SetFromErrno(PyExc_OSError);
return NULL;
}
return NULL;
}
+ errno = ENXIO; // in case 'if_indextoname' does not set errno
char name[IF_NAMESIZE + 1];
if (if_indextoname(index, name) == NULL) {
PyErr_SetFromErrno(PyExc_OSError);