Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 7 additions & 20 deletions Lib/test/test_pwd.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,11 @@

pwd = support.import_module('pwd')

def _getpwall():
# Android does not have getpwall.
if hasattr(pwd, 'getpwall'):
return pwd.getpwall()
elif hasattr(pwd, 'getpwuid'):
return [pwd.getpwuid(0)]
else:
return []

@unittest.skipUnless(hasattr(pwd, 'getpwall'), 'Does not have getpwall()')
class PwdTest(unittest.TestCase):

def test_values(self):
entries = _getpwall()
entries = pwd.getpwall()

for e in entries:
self.assertEqual(len(e), 7)
Expand All @@ -42,7 +34,7 @@ def test_values(self):
# and check afterwards (done in test_values_extended)

def test_values_extended(self):
entries = _getpwall()
entries = pwd.getpwall()
entriesbyname = {}
entriesbyuid = {}

Expand All @@ -66,13 +58,12 @@ def test_errors(self):
self.assertRaises(TypeError, pwd.getpwuid, 3.14)
self.assertRaises(TypeError, pwd.getpwnam)
self.assertRaises(TypeError, pwd.getpwnam, 42)
if hasattr(pwd, 'getpwall'):
self.assertRaises(TypeError, pwd.getpwall, 42)
self.assertRaises(TypeError, pwd.getpwall, 42)

# try to get some errors
bynames = {}
byuids = {}
for (n, p, u, g, gecos, d, s) in _getpwall():
for (n, p, u, g, gecos, d, s) in pwd.getpwall():
bynames[n] = u
byuids[u] = n

Expand Down Expand Up @@ -106,17 +97,13 @@ def test_errors(self):
# loop, say), pwd.getpwuid() might still be able to find data for that
# uid. Using sys.maxint may provoke the same problems, but hopefully
# it will be a more repeatable failure.
# Android accepts a very large span of uids including sys.maxsize and
# -1; it raises KeyError with 1 or 2 for example.
fakeuid = sys.maxsize
self.assertNotIn(fakeuid, byuids)
if not support.is_android:
self.assertRaises(KeyError, pwd.getpwuid, fakeuid)
self.assertRaises(KeyError, pwd.getpwuid, fakeuid)

# -1 shouldn't be a valid uid because it has a special meaning in many
# uid-related functions
if not support.is_android:
self.assertRaises(KeyError, pwd.getpwuid, -1)
self.assertRaises(KeyError, pwd.getpwuid, -1)
# should be out of uid_t range
self.assertRaises(KeyError, pwd.getpwuid, 2**128)
self.assertRaises(KeyError, pwd.getpwuid, -2**128)
Expand Down