aboutsummaryrefslogtreecommitdiff
path: root/pyfakefs
diff options
context:
space:
mode:
authormrbean-bremen <hansemrbean@googlemail.com>2022-08-08 19:00:55 +0200
committermrbean-bremen <mrbean-bremen@users.noreply.github.com>2022-08-08 20:10:19 +0200
commit35c2fb6372a3317660c615d23604f71a9f6a9e2d (patch)
tree53ec103168cde1b0b0601c3e2a55e006dd6ac1b5 /pyfakefs
parente073e341c233b4925d79937bd7f5a106943ca420 (diff)
downloadpyfakefs-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.py6
-rw-r--r--pyfakefs/tests/fake_filesystem_shutil_test.py13
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)