blob: f22d8655063442f58f33ced2780b2dcd2c601a55 [file] [log] [blame]
Giampaolo Rodola'ffa1d0b2012-05-15 15:30:25 +02001import unittest
2import os
3import stat
4from test.support import TESTFN, run_unittest
5
6
7def get_mode(fname=TESTFN):
8 return stat.filemode(os.lstat(fname).st_mode)
9
10
11class TestFilemode(unittest.TestCase):
12
13 def setUp(self):
14 try:
15 os.remove(TESTFN)
16 except OSError:
17 try:
18 os.rmdir(TESTFN)
19 except OSError:
20 pass
21 tearDown = setUp
22
23 def test_mode(self):
24 with open(TESTFN, 'w'):
25 pass
26 os.chmod(TESTFN, 0o700)
27 self.assertEqual(get_mode(), '-rwx------')
28 os.chmod(TESTFN, 0o070)
29 self.assertEqual(get_mode(), '----rwx---')
30 os.chmod(TESTFN, 0o007)
31 self.assertEqual(get_mode(), '-------rwx')
32 os.chmod(TESTFN, 0o444)
33 self.assertEqual(get_mode(), '-r--r--r--')
34
35 def test_directory(self):
36 os.mkdir(TESTFN)
37 os.chmod(TESTFN, 0o700)
38 self.assertEqual(get_mode(), 'drwx------')
39
40 @unittest.skipUnless(hasattr(os, 'symlink'), 'os.symlink not available')
41 def test_link(self):
42 os.symlink(os.getcwd(), TESTFN)
43 self.assertEqual(get_mode(), 'lrwxrwxrwx')
44
45 @unittest.skipUnless(hasattr(os, 'mkfifo'), 'os.mkfifo not available')
46 def test_fifo(self):
47 os.mkfifo(TESTFN, 0o700)
48 self.assertEqual(get_mode(), 'prwx------')
49
50
51def test_main():
52 run_unittest(TestFilemode)
53
54if __name__ == '__main__':
55 test_main()