diff options
author | mrbean-bremen <hansemrbean@googlemail.com> | 2022-08-08 19:00:55 +0200 |
---|---|---|
committer | mrbean-bremen <mrbean-bremen@users.noreply.github.com> | 2022-08-08 20:10:19 +0200 |
commit | 35c2fb6372a3317660c615d23604f71a9f6a9e2d (patch) | |
tree | 53ec103168cde1b0b0601c3e2a55e006dd6ac1b5 /pyfakefs | |
parent | e073e341c233b4925d79937bd7f5a106943ca420 (diff) | |
download | pyfakefs-35c2fb6372a3317660c615d23604f71a9f6a9e2d.tar.gz |
Add support for path-like objects in shutil.disk_usage
- fixes #699
Diffstat (limited to 'pyfakefs')
-rw-r--r-- | pyfakefs/fake_filesystem.py | 6 | ||||
-rw-r--r-- | pyfakefs/tests/fake_filesystem_shutil_test.py | 13 |
2 files changed, 16 insertions, 3 deletions
diff --git a/pyfakefs/fake_filesystem.py b/pyfakefs/fake_filesystem.py index 1e66e0d..89eec97 100644 --- a/pyfakefs/fake_filesystem.py +++ b/pyfakefs/fake_filesystem.py @@ -1285,7 +1285,8 @@ class FakeFilesystem: if path is None: mount_point = next(iter(self.mount_points.values())) else: - mount_point = self._mount_point_for_path(path) + file_path = make_string_path(path) + mount_point = self._mount_point_for_path(file_path) if mount_point and mount_point['total_size'] is not None: return DiskUsage(mount_point['total_size'], mount_point['used_size'], @@ -4395,7 +4396,8 @@ class FakeOsModule: def lstat(self, path: AnyStr, *, dir_fd: Optional[int] = None) -> FakeStatResult: - """Return the os.stat-like tuple for entry_path, not following symlinks. + """Return the os.stat-like tuple for entry_path, + not following symlinks. Args: path: path to filesystem object to retrieve. diff --git a/pyfakefs/tests/fake_filesystem_shutil_test.py b/pyfakefs/tests/fake_filesystem_shutil_test.py index 5861e63..9676b97 100644 --- a/pyfakefs/tests/fake_filesystem_shutil_test.py +++ b/pyfakefs/tests/fake_filesystem_shutil_test.py @@ -22,6 +22,7 @@ import shutil import sys import tempfile import unittest +from pathlib import Path from pyfakefs import fake_filesystem_unittest from pyfakefs.fake_filesystem import is_root, set_uid, USER_ID @@ -351,7 +352,6 @@ class FakeShutilModuleTest(RealFsTestCase): self.skip_real_fs() file_path = self.make_path('foo', 'bar') self.fs.create_file(file_path, st_size=400) - # root = self.os.path.splitdrive(file_path)[0] + self.fs.path_separator disk_usage = shutil.disk_usage(file_path) self.assertEqual(1000, disk_usage.total) self.assertEqual(400, disk_usage.used) @@ -365,6 +365,17 @@ class FakeShutilModuleTest(RealFsTestCase): disk_usage = shutil.disk_usage(dir_path) self.assertEqual((500, 400, 100), disk_usage) + def test_disk_usage_with_path(self): + self.skip_real_fs() + file_path = self.make_path('foo', 'bar') + self.fs.create_file(file_path, st_size=400) + path = Path(file_path) + disk_usage = shutil.disk_usage(path) + self.assertEqual(1000, disk_usage.total) + self.assertEqual(400, disk_usage.used) + self.assertEqual(600, disk_usage.free) + self.assertEqual((1000, 400, 600), disk_usage) + def create_mount_point(self): mount_point = 'M:' if self.is_windows_fs else '/mount' self.fs.add_mount_point(mount_point, total_size=500) |