1 """Test script for the grp module."""
5 from test
import test_support
7 class GroupDatabaseTestCase(unittest
.TestCase
):
9 def check_value(self
, value
):
10 # check that a grp tuple has the entries and
11 # attributes promised by the docs
12 self
.assertEqual(len(value
), 4)
13 self
.assertEqual(value
[0], value
.gr_name
)
14 self
.assert_(isinstance(value
.gr_name
, basestring
))
15 self
.assertEqual(value
[1], value
.gr_passwd
)
16 self
.assert_(isinstance(value
.gr_passwd
, basestring
))
17 self
.assertEqual(value
[2], value
.gr_gid
)
18 self
.assert_(isinstance(value
.gr_gid
, int))
19 self
.assertEqual(value
[3], value
.gr_mem
)
20 self
.assert_(isinstance(value
.gr_mem
, list))
22 def test_values(self
):
23 entries
= grp
.getgrall()
29 e2
= grp
.getgrgid(e
.gr_gid
)
31 self
.assertEqual(e2
.gr_gid
, e
.gr_gid
)
32 e2
= grp
.getgrnam(e
.gr_name
)
34 self
.assertEqual(e2
.gr_name
, e
.gr_name
)
36 def test_errors(self
):
37 self
.assertRaises(TypeError, grp
.getgrgid
)
38 self
.assertRaises(TypeError, grp
.getgrnam
)
39 self
.assertRaises(TypeError, grp
.getgrall
, 42)
41 # try to get some errors
44 for (n
, p
, g
, mem
) in grp
.getgrall():
48 allnames
= bynames
.keys()
50 fakename
= allnames
[namei
]
51 while fakename
in bynames
:
52 chars
= map(None, fakename
)
53 for i
in xrange(len(chars
)):
60 chars
[i
] = chr(ord(chars
[i
]) + 1)
65 fakename
= allnames
[namei
]
67 # should never happen... if so, just forget it
69 fakename
= ''.join(map(None, chars
))
71 self
.assertRaises(KeyError, grp
.getgrnam
, fakename
)
73 # Choose a non-existent gid.
75 while fakegid
in bygids
:
76 fakegid
= (fakegid
* 3) % 0x10000
78 self
.assertRaises(KeyError, grp
.getgrgid
, fakegid
)
81 test_support
.run_unittest(GroupDatabaseTestCase
)
83 if __name__
== "__main__":