| Index: tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil_test.py
|
| diff --git a/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil_test.py b/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil_test.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..4f2651869c3a5c1e04cd24fb33b4be0cc7b3b1bf
|
| --- /dev/null
|
| +++ b/tools/telemetry/third_party/pyfakefs/pyfakefs/fake_filesystem_shutil_test.py
|
| @@ -0,0 +1,305 @@
|
| +#! /usr/bin/env python
|
| +#
|
| +# Copyright 2009 Google Inc. All Rights Reserved.
|
| +#
|
| +# Licensed under the Apache License, Version 2.0 (the "License");
|
| +# you may not use this file except in compliance with the License.
|
| +# You may obtain a copy of the License at
|
| +#
|
| +# http://www.apache.org/licenses/LICENSE-2.0
|
| +#
|
| +# Unless required by applicable law or agreed to in writing, software
|
| +# distributed under the License is distributed on an "AS IS" BASIS,
|
| +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +# See the License for the specific language governing permissions and
|
| +# limitations under the License.
|
| +
|
| +"""Unittest for fake_filesystem_shutil."""
|
| +
|
| +import stat
|
| +import time
|
| +import sys
|
| +if sys.version_info < (2, 7):
|
| + import unittest2 as unittest
|
| +else:
|
| + import unittest
|
| +
|
| +import fake_filesystem
|
| +import fake_filesystem_shutil
|
| +
|
| +
|
| +class FakeShutilModuleTest(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + self.filesystem = fake_filesystem.FakeFilesystem(path_separator='/')
|
| + self.shutil = fake_filesystem_shutil.FakeShutilModule(self.filesystem)
|
| +
|
| + def testRmtree(self):
|
| + directory = 'xyzzy'
|
| + self.filesystem.CreateDirectory(directory)
|
| + self.filesystem.CreateDirectory('%s/subdir' % directory)
|
| + self.filesystem.CreateFile('%s/subfile' % directory)
|
| + self.assertTrue(self.filesystem.Exists(directory))
|
| + self.shutil.rmtree(directory)
|
| + self.assertFalse(self.filesystem.Exists(directory))
|
| +
|
| + def testCopy(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + src_obj = self.filesystem.CreateFile(src_file)
|
| + src_obj.st_mode = ((src_obj.st_mode & ~0o7777) | 0o750)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.copy(src_file, dst_file)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + dst_obj = self.filesystem.GetObject(dst_file)
|
| + self.assertEqual(src_obj.st_mode, dst_obj.st_mode)
|
| +
|
| + def testCopyDirectory(self):
|
| + src_file = 'xyzzy'
|
| + parent_directory = 'parent'
|
| + dst_file = '%s/%s' % (parent_directory, src_file)
|
| + src_obj = self.filesystem.CreateFile(src_file)
|
| + self.filesystem.CreateDirectory(parent_directory)
|
| + src_obj.st_mode = ((src_obj.st_mode & ~0o7777) | 0o750)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(parent_directory))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.copy(src_file, parent_directory)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + dst_obj = self.filesystem.GetObject(dst_file)
|
| + self.assertEqual(src_obj.st_mode, dst_obj.st_mode)
|
| +
|
| + def testCopystat(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + src_obj = self.filesystem.CreateFile(src_file)
|
| + dst_obj = self.filesystem.CreateFile(dst_file)
|
| + src_obj.st_mode = ((src_obj.st_mode & ~0o7777) | 0o750)
|
| + src_obj.st_uid = 123
|
| + src_obj.st_gid = 123
|
| + src_obj.st_atime = time.time()
|
| + src_obj.st_mtime = time.time()
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.shutil.copystat(src_file, dst_file)
|
| + self.assertEqual(src_obj.st_mode, dst_obj.st_mode)
|
| + self.assertEqual(src_obj.st_uid, dst_obj.st_uid)
|
| + self.assertEqual(src_obj.st_gid, dst_obj.st_gid)
|
| + self.assertEqual(src_obj.st_atime, dst_obj.st_atime)
|
| + self.assertEqual(src_obj.st_mtime, dst_obj.st_mtime)
|
| +
|
| + def testCopy2(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + src_obj = self.filesystem.CreateFile(src_file)
|
| + src_obj.st_mode = ((src_obj.st_mode & ~0o7777) | 0o750)
|
| + src_obj.st_uid = 123
|
| + src_obj.st_gid = 123
|
| + src_obj.st_atime = time.time()
|
| + src_obj.st_mtime = time.time()
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.copy2(src_file, dst_file)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + dst_obj = self.filesystem.GetObject(dst_file)
|
| + self.assertEqual(src_obj.st_mode, dst_obj.st_mode)
|
| + self.assertEqual(src_obj.st_uid, dst_obj.st_uid)
|
| + self.assertEqual(src_obj.st_gid, dst_obj.st_gid)
|
| + self.assertEqual(src_obj.st_atime, dst_obj.st_atime)
|
| + self.assertEqual(src_obj.st_mtime, dst_obj.st_mtime)
|
| +
|
| + def testCopy2Directory(self):
|
| + src_file = 'xyzzy'
|
| + parent_directory = 'parent'
|
| + dst_file = '%s/%s' % (parent_directory, src_file)
|
| + src_obj = self.filesystem.CreateFile(src_file)
|
| + self.filesystem.CreateDirectory(parent_directory)
|
| + src_obj.st_mode = ((src_obj.st_mode & ~0o7777) | 0o750)
|
| + src_obj.st_uid = 123
|
| + src_obj.st_gid = 123
|
| + src_obj.st_atime = time.time()
|
| + src_obj.st_mtime = time.time()
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(parent_directory))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.copy2(src_file, parent_directory)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + dst_obj = self.filesystem.GetObject(dst_file)
|
| + self.assertEqual(src_obj.st_mode, dst_obj.st_mode)
|
| + self.assertEqual(src_obj.st_uid, dst_obj.st_uid)
|
| + self.assertEqual(src_obj.st_gid, dst_obj.st_gid)
|
| + self.assertEqual(src_obj.st_atime, dst_obj.st_atime)
|
| + self.assertEqual(src_obj.st_mtime, dst_obj.st_mtime)
|
| +
|
| + def testCopytree(self):
|
| + src_directory = 'xyzzy'
|
| + dst_directory = 'xyzzy_copy'
|
| + self.filesystem.CreateDirectory(src_directory)
|
| + self.filesystem.CreateDirectory('%s/subdir' % src_directory)
|
| + self.filesystem.CreateFile('%s/subfile' % src_directory)
|
| + self.assertTrue(self.filesystem.Exists(src_directory))
|
| + self.assertFalse(self.filesystem.Exists(dst_directory))
|
| + self.shutil.copytree(src_directory, dst_directory)
|
| + self.assertTrue(self.filesystem.Exists(dst_directory))
|
| + self.assertTrue(self.filesystem.Exists('%s/subdir' % dst_directory))
|
| + self.assertTrue(self.filesystem.Exists('%s/subfile' % dst_directory))
|
| +
|
| + def testCopytreeSrcIsFile(self):
|
| + src_file = 'xyzzy'
|
| + dst_directory = 'xyzzy_copy'
|
| + self.filesystem.CreateFile(src_file)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertFalse(self.filesystem.Exists(dst_directory))
|
| + self.assertRaises(OSError,
|
| + self.shutil.copytree,
|
| + src_file,
|
| + dst_directory)
|
| +
|
| + def testMoveFile(self):
|
| + src_file = 'original_xyzzy'
|
| + dst_file = 'moved_xyzzy'
|
| + self.filesystem.CreateFile(src_file)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.move(src_file, dst_file)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.assertFalse(self.filesystem.Exists(src_file))
|
| +
|
| + def testMoveFileIntoDirectory(self):
|
| + src_file = 'xyzzy'
|
| + dst_directory = 'directory'
|
| + dst_file = '%s/%s' % (dst_directory, src_file)
|
| + self.filesystem.CreateFile(src_file)
|
| + self.filesystem.CreateDirectory(dst_directory)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.move(src_file, dst_directory)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.assertFalse(self.filesystem.Exists(src_file))
|
| +
|
| + def testMoveDirectory(self):
|
| + src_directory = 'original_xyzzy'
|
| + dst_directory = 'moved_xyzzy'
|
| + self.filesystem.CreateDirectory(src_directory)
|
| + self.filesystem.CreateFile('%s/subfile' % src_directory)
|
| + self.filesystem.CreateDirectory('%s/subdir' % src_directory)
|
| + self.assertTrue(self.filesystem.Exists(src_directory))
|
| + self.assertFalse(self.filesystem.Exists(dst_directory))
|
| + self.shutil.move(src_directory, dst_directory)
|
| + self.assertTrue(self.filesystem.Exists(dst_directory))
|
| + self.assertTrue(self.filesystem.Exists('%s/subfile' % dst_directory))
|
| + self.assertTrue(self.filesystem.Exists('%s/subdir' % dst_directory))
|
| + self.assertFalse(self.filesystem.Exists(src_directory))
|
| +
|
| +
|
| +class CopyFileTest(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + self.filesystem = fake_filesystem.FakeFilesystem(path_separator='/')
|
| + self.shutil = fake_filesystem_shutil.FakeShutilModule(self.filesystem)
|
| +
|
| + def testCommonCase(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + contents = 'contents of file'
|
| + self.filesystem.CreateFile(src_file, contents=contents)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertFalse(self.filesystem.Exists(dst_file))
|
| + self.shutil.copyfile(src_file, dst_file)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.assertEqual(contents, self.filesystem.GetObject(dst_file).contents)
|
| +
|
| + def testRaisesIfSourceAndDestAreTheSameFile(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = src_file
|
| + contents = 'contents of file'
|
| + self.filesystem.CreateFile(src_file, contents=contents)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertRaises(self.shutil.Error,
|
| + self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testRaisesIfDestIsASymlinkToSrc(self):
|
| + src_file = '/tmp/foo'
|
| + dst_file = '/tmp/bar'
|
| + contents = 'contents of file'
|
| + self.filesystem.CreateFile(src_file, contents=contents)
|
| + self.filesystem.CreateLink(dst_file, src_file)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertRaises(self.shutil.Error,
|
| + self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testSucceedsIfDestExistsAndIsWritable(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + src_contents = 'contents of source file'
|
| + dst_contents = 'contents of dest file'
|
| + self.filesystem.CreateFile(src_file, contents=src_contents)
|
| + self.filesystem.CreateFile(dst_file, contents=dst_contents)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.shutil.copyfile(src_file, dst_file)
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.assertEqual(src_contents,
|
| + self.filesystem.GetObject(dst_file).contents)
|
| +
|
| + def testRaisesIfDestExistsAndIsNotWritable(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + src_contents = 'contents of source file'
|
| + dst_contents = 'contents of dest file'
|
| + self.filesystem.CreateFile(src_file, contents=src_contents)
|
| + self.filesystem.CreateFile(dst_file,
|
| + st_mode=stat.S_IFREG | 0o400,
|
| + contents=dst_contents)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(dst_file))
|
| + self.assertRaises(IOError, self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testRaisesIfDestDirIsNotWritable(self):
|
| + src_file = 'xyzzy'
|
| + dst_dir = '/tmp/foo'
|
| + dst_file = '%s/%s' % (dst_dir, src_file)
|
| + src_contents = 'contents of source file'
|
| + self.filesystem.CreateFile(src_file, contents=src_contents)
|
| + self.filesystem.CreateDirectory(dst_dir, perm_bits=0o555)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(dst_dir))
|
| + self.assertRaises(IOError, self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testRaisesIfSrcDoesntExist(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + self.assertFalse(self.filesystem.Exists(src_file))
|
| + self.assertRaises(IOError, self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testRaisesIfSrcNotReadable(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + src_contents = 'contents of source file'
|
| + self.filesystem.CreateFile(src_file,
|
| + st_mode=stat.S_IFREG | 0o000,
|
| + contents=src_contents)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertRaises(IOError, self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testRaisesIfSrcIsADirectory(self):
|
| + src_file = 'xyzzy'
|
| + dst_file = 'xyzzy_copy'
|
| + self.filesystem.CreateDirectory(src_file)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertRaises(IOError, self.shutil.copyfile, src_file, dst_file)
|
| +
|
| + def testRaisesIfDestIsADirectory(self):
|
| + src_file = 'xyzzy'
|
| + dst_dir = '/tmp/foo'
|
| + src_contents = 'contents of source file'
|
| + self.filesystem.CreateFile(src_file, contents=src_contents)
|
| + self.filesystem.CreateDirectory(dst_dir)
|
| + self.assertTrue(self.filesystem.Exists(src_file))
|
| + self.assertTrue(self.filesystem.Exists(dst_dir))
|
| + self.assertRaises(IOError, self.shutil.copyfile, src_file, dst_dir)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|