Skip to content

Commit 37551b3

Browse files
daavooefiopskshetry
authored
GDriveFileSystem: Raise FIleNotFoundError on ls. (#283)
* GDriveFileSystem: Raise `FIleNotFoundError` on `ls`. Per https://github.com/iterative/dvc/issues/9607 * Update pydrive2/fs/spec.py Co-authored-by: Ruslan Kuprieiev <[email protected]> * black * Test for empty dir in ls (#284) * test_ls: create dir mkdir in GDriveFileSystem is a noop. --------- Co-authored-by: Ruslan Kuprieiev <[email protected]> Co-authored-by: skshetry <[email protected]> Co-authored-by: Saugat Pachhai (सौगात) <[email protected]>
1 parent ad45ca6 commit 37551b3

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

pydrive2/fs/spec.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,9 @@ def ls(self, path, detail=False):
434434
dir_ids = self._path_to_item_ids(base)
435435

436436
if not dir_ids:
437-
return None
437+
raise FileNotFoundError(
438+
errno.ENOENT, os.strerror(errno.ENOENT), path
439+
)
438440

439441
root_path = posixpath.join(bucket, base)
440442
contents = []

pydrive2/test/test_fs.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,11 @@ def test_rm(fs, remote_dir):
116116
assert not fs.exists(remote_dir + "/dir/c/a")
117117

118118

119-
def test_ls(fs, remote_dir):
120-
fs.mkdir(remote_dir + "dir/")
119+
def test_ls(fs: GDriveFileSystem, remote_dir):
120+
_, base = fs.split_path(remote_dir + "dir/")
121+
fs._path_to_item_ids(base, create=True)
122+
assert fs.ls(remote_dir + "dir/") == []
123+
121124
files = set()
122125
for no in range(8):
123126
file = remote_dir + f"dir/test_{no}"
@@ -138,6 +141,11 @@ def by_name(details):
138141
assert dirs == expected
139142

140143

144+
def test_ls_non_existing_dir(fs, remote_dir):
145+
with pytest.raises(FileNotFoundError):
146+
fs.ls(remote_dir + "dir/")
147+
148+
141149
def test_find(fs, remote_dir):
142150
fs.mkdir(remote_dir + "/dir")
143151

0 commit comments

Comments
 (0)