From: Barry Warsaw Date: Wed, 11 Dec 1996 16:53:51 +0000 (+0000) Subject: Test of the pwd module X-Git-Tag: v1.5a1~794 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d070fb39115a69924095bcb9cd8e4efb7b48cca;p=python Test of the pwd module --- diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py new file mode 100644 index 0000000000..b182d02396 --- /dev/null +++ b/Lib/test/test_pwd.py @@ -0,0 +1,70 @@ +import pwd +import string + +verbose = 0 +if __name__ == '__main__': + verbose = 1 + +entries = pwd.getpwall() + +for e in entries: + name = e[0] + uid = e[2] + if verbose: + print name, uid + dbuid = pwd.getpwuid(uid) + if dbuid[0] <> name: + print 'Mismatch in pwd.getpwuid()' + dbname = pwd.getpwnam(name) + if dbname[2] <> uid: + print 'Mismatch in pwd.getpwnam()' + 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: + pass +else: + print 'fakename', fakename, 'did not except pwd.getpwnam()' + +uids = byuids.keys() +uids.sort() +uids.reverse() +fakeuid = uids[0] + 1 + +try: + pwd.getpwuid(fakeuid) +except KeyError: + pass +else: + print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'