This commit was manufactured by cvs2svn to create tag 'r211c1'.
[python/dscho.git] / Lib / test / test_pwd.py
blob2cb122beeea6c458900cc03387452390f780fab9
1 from test_support import verbose
2 import pwd
4 print 'pwd.getpwall()'
5 entries = pwd.getpwall()
7 for e in entries:
8 name = e[0]
9 uid = e[2]
10 if verbose:
11 print name, uid
12 print 'pwd.getpwuid()'
13 dbuid = pwd.getpwuid(uid)
14 if dbuid[0] != name:
15 print 'Mismatch in pwd.getpwuid()'
16 print 'pwd.getpwnam()'
17 dbname = pwd.getpwnam(name)
18 if dbname[2] != uid:
19 print 'Mismatch in pwd.getpwnam()'
20 else:
21 print 'name matches uid'
22 break
24 # try to get some errors
25 bynames = {}
26 byuids = {}
27 for n, p, u, g, gecos, d, s in entries:
28 bynames[n] = u
29 byuids[u] = n
31 allnames = bynames.keys()
32 namei = 0
33 fakename = allnames[namei]
34 while bynames.has_key(fakename):
35 chars = map(None, fakename)
36 for i in range(len(chars)):
37 if chars[i] == 'z':
38 chars[i] = 'A'
39 break
40 elif chars[i] == 'Z':
41 continue
42 else:
43 chars[i] = chr(ord(chars[i]) + 1)
44 break
45 else:
46 namei = namei + 1
47 try:
48 fakename = allnames[namei]
49 except IndexError:
50 # should never happen... if so, just forget it
51 break
52 fakename = ''.join(map(None, chars))
54 try:
55 pwd.getpwnam(fakename)
56 except KeyError:
57 print 'caught expected exception'
58 else:
59 print 'fakename', fakename, 'did not except pwd.getpwnam()'
61 # Choose a non-existent uid.
62 fakeuid = 4127
63 while byuids.has_key(fakeuid):
64 fakeuid = (fakeuid * 3) % 0x10000
66 try:
67 pwd.getpwuid(fakeuid)
68 except KeyError:
69 print 'caught expected exception'
70 else:
71 print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'