diff -r 5379bba2fb21 Lib/test/test_spwd.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/test_spwd.py Sun Dec 08 12:13:18 2013 +0800 @@ -0,0 +1,41 @@ +import os +import unittest +from test.support import import_module + +def is_root(): + return os.getuid() == 0 + +spwd = import_module('spwd') + + +@unittest.skipUnless(is_root(), "Must be root to run this test.") +class TestSpwdRoot(unittest.TestCase): + + def setUp(self): + self.entries = spwd.getspall() + self.random_entry = self.entries[0] + + def test_getspwdall(self): + for entry in self.entries: + self.assertTrue(isinstance(entry, spwd.struct_spwd)) + + def test_getspwnam(self): + entry = spwd.getspnam(self.random_entry.sp_namp) + self.assertTrue(isinstance(entry, spwd.struct_spwd)) + self.assertEqual(entry.sp_namp, self.random_entry.sp_namp) + self.assertTrue(isinstance(entry.sp_pwdp, str)) + self.assertTrue(isinstance(entry.sp_lstchg, int)) + self.assertTrue(isinstance(entry.sp_min, int)) + self.assertTrue(isinstance(entry.sp_max, int)) + self.assertTrue(isinstance(entry.sp_warn, int)) + self.assertTrue(isinstance(entry.sp_inact, int)) + self.assertTrue(isinstance(entry.sp_expire, int)) + self.assertTrue(isinstance(entry.sp_flag, int)) + with self.assertRaises(KeyError) as cx: + spwd.getspnam('invalid user name') + self.assertEqual(str(cx.exception), "'getspnam(): name not found'") + self.assertRaises(TypeError, spwd.getspnam, 1) + + +if __name__ == "__main__": + unittest.main()