diff options
Diffstat (limited to 'Lib/test/test_stat.py')
| -rw-r--r-- | Lib/test/test_stat.py | 66 | 
1 files changed, 66 insertions, 0 deletions
diff --git a/Lib/test/test_stat.py b/Lib/test/test_stat.py new file mode 100644 index 0000000000..48d5e3801e --- /dev/null +++ b/Lib/test/test_stat.py @@ -0,0 +1,66 @@ +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()  | 
