home *** CD-ROM | disk | FTP | other *** search
- from test_support import verbose
- import pwd
- import string
-
- print 'pwd.getpwall()'
- entries = pwd.getpwall()
-
- for e in entries:
- name = e[0]
- uid = e[2]
- if verbose:
- print name, uid
- print 'pwd.getpwuid()'
- dbuid = pwd.getpwuid(uid)
- if dbuid[0] <> name:
- print 'Mismatch in pwd.getpwuid()'
- print 'pwd.getpwnam()'
- dbname = pwd.getpwnam(name)
- if dbname[2] <> uid:
- print 'Mismatch in pwd.getpwnam()'
- else:
- print 'name matches uid'
- break
-
- # try to get some errors
- bynames = {}
- byuids = {}
- for n, p, u, g, gecos, d, s in entries:
- bynames[n] = u
- byuids[u] = n
-
- allnames = bynames.keys()
- namei = 0
- fakename = allnames[namei]
- while bynames.has_key(fakename):
- chars = map(None, fakename)
- for i in range(len(chars)):
- if chars[i] == 'z':
- chars[i] = 'A'
- break
- elif chars[i] == 'Z':
- continue
- else:
- chars[i] = chr(ord(chars[i]) + 1)
- break
- else:
- namei = namei + 1
- try:
- fakename = allnames[namei]
- except IndexError:
- # should never happen... if so, just forget it
- break
- fakename = string.join(map(None, chars), '')
-
- try:
- pwd.getpwnam(fakename)
- except KeyError:
- print 'caught expected exception'
- else:
- print 'fakename', fakename, 'did not except pwd.getpwnam()'
-
- # Choose a non-existent uid.
- fakeuid = 4127
- while byuids.has_key(fakeuid):
- fakeuid = (fakeuid * 3) % 0x10000
-
- try:
- pwd.getpwuid(fakeuid)
- except KeyError:
- print 'caught expected exception'
- else:
- print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'
-