mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
gh-89928: Fix integer conversion of device numbers (GH-31794)
Fix os.major(), os.minor() and os.makedev(). Support device numbers larger than 2**63-1. Support non-existent device number (NODEV).
This commit is contained in:
parent
5f03f09134
commit
7111d9605f
4 changed files with 99 additions and 39 deletions
|
|
@ -704,7 +704,8 @@ class PosixTester(unittest.TestCase):
|
|||
self.assertEqual(posix.major(dev), major)
|
||||
self.assertRaises(TypeError, posix.major, float(dev))
|
||||
self.assertRaises(TypeError, posix.major)
|
||||
self.assertRaises((ValueError, OverflowError), posix.major, -1)
|
||||
for x in -2, 2**64, -2**63-1:
|
||||
self.assertRaises((ValueError, OverflowError), posix.major, x)
|
||||
|
||||
minor = posix.minor(dev)
|
||||
self.assertIsInstance(minor, int)
|
||||
|
|
@ -712,13 +713,23 @@ class PosixTester(unittest.TestCase):
|
|||
self.assertEqual(posix.minor(dev), minor)
|
||||
self.assertRaises(TypeError, posix.minor, float(dev))
|
||||
self.assertRaises(TypeError, posix.minor)
|
||||
self.assertRaises((ValueError, OverflowError), posix.minor, -1)
|
||||
for x in -2, 2**64, -2**63-1:
|
||||
self.assertRaises((ValueError, OverflowError), posix.minor, x)
|
||||
|
||||
self.assertEqual(posix.makedev(major, minor), dev)
|
||||
self.assertRaises(TypeError, posix.makedev, float(major), minor)
|
||||
self.assertRaises(TypeError, posix.makedev, major, float(minor))
|
||||
self.assertRaises(TypeError, posix.makedev, major)
|
||||
self.assertRaises(TypeError, posix.makedev)
|
||||
for x in -2, 2**32, 2**64, -2**63-1:
|
||||
self.assertRaises((ValueError, OverflowError), posix.makedev, x, minor)
|
||||
self.assertRaises((ValueError, OverflowError), posix.makedev, major, x)
|
||||
|
||||
if sys.platform == 'linux':
|
||||
NODEV = -1
|
||||
self.assertEqual(posix.major(NODEV), NODEV)
|
||||
self.assertEqual(posix.minor(NODEV), NODEV)
|
||||
self.assertEqual(posix.makedev(NODEV, NODEV), NODEV)
|
||||
|
||||
def _test_all_chown_common(self, chown_func, first_param, stat_func):
|
||||
"""Common code for chown, fchown and lchown tests."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue