| import unittest | 
 | import os | 
 | import stat | 
 | from test.support import TESTFN, run_unittest | 
 |  | 
 |  | 
 | def get_mode(fname=TESTFN): | 
 |     return stat.filemode(os.lstat(fname).st_mode) | 
 |  | 
 |  | 
 | class TestFilemode(unittest.TestCase): | 
 |  | 
 |     def setUp(self): | 
 |         try: | 
 |             os.remove(TESTFN) | 
 |         except OSError: | 
 |             try: | 
 |                 os.rmdir(TESTFN) | 
 |             except OSError: | 
 |                 pass | 
 |     tearDown = setUp | 
 |  | 
 |     def test_mode(self): | 
 |         with open(TESTFN, 'w'): | 
 |             pass | 
 |         if os.name == 'posix': | 
 |             os.chmod(TESTFN, 0o700) | 
 |             self.assertEqual(get_mode(), '-rwx------') | 
 |             os.chmod(TESTFN, 0o070) | 
 |             self.assertEqual(get_mode(), '----rwx---') | 
 |             os.chmod(TESTFN, 0o007) | 
 |             self.assertEqual(get_mode(), '-------rwx') | 
 |             os.chmod(TESTFN, 0o444) | 
 |             self.assertEqual(get_mode(), '-r--r--r--') | 
 |         else: | 
 |             os.chmod(TESTFN, 0o700) | 
 |             self.assertEqual(get_mode()[:3], '-rw') | 
 |  | 
 |     def test_directory(self): | 
 |         os.mkdir(TESTFN) | 
 |         os.chmod(TESTFN, 0o700) | 
 |         if os.name == 'posix': | 
 |             self.assertEqual(get_mode(), 'drwx------') | 
 |         else: | 
 |             self.assertEqual(get_mode()[0], 'd') | 
 |  | 
 |     @unittest.skipUnless(hasattr(os, 'symlink'), 'os.symlink not available') | 
 |     def test_link(self): | 
 |         try: | 
 |             os.symlink(os.getcwd(), TESTFN) | 
 |         except (OSError, NotImplementedError) as err: | 
 |             raise unittest.SkipTest(str(err)) | 
 |         else: | 
 |             self.assertEqual(get_mode()[0], 'l') | 
 |  | 
 |     @unittest.skipUnless(hasattr(os, 'mkfifo'), 'os.mkfifo not available') | 
 |     def test_fifo(self): | 
 |         os.mkfifo(TESTFN, 0o700) | 
 |         self.assertEqual(get_mode(), 'prwx------') | 
 |  | 
 |  | 
 | def test_main(): | 
 |     run_unittest(TestFilemode) | 
 |  | 
 | if __name__ == '__main__': | 
 |     test_main() |