Skip to content

Commit 40bd677

Browse files
committed
More robust unit tests
1 parent f02cdb5 commit 40bd677

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

jupyter_server/services/contents/filemanager.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,11 @@ def is_non_empty_dir(os_path):
493493
return False
494494

495495
if self.delete_to_trash:
496-
if not self.always_delete_dir and sys.platform == 'win32' and is_non_empty_dir(os_path):
496+
if (
497+
not self.always_delete_dir
498+
and sys.platform == "win32"
499+
and is_non_empty_dir(os_path)
500+
):
497501
# send2trash can really delete files on Windows, so disallow
498502
# deleting non-empty files. See Github issue 3631.
499503
raise web.HTTPError(400, u'Directory %s not empty' % os_path)

jupyter_server/tests/services/contents/test_manager.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -510,14 +510,20 @@ async def test_delete(jp_contents_manager):
510510
await ensure_async(cm.get(path))
511511

512512

513-
@pytest.mark.parametrize("delete_to_trash, always_delete, error", (
514-
[True, True, False],
515-
# on linux test folder won't be on home folder => _check_trash will be False
516-
[True, False, True if sys.platform in {"win32", "linux"} else False],
517-
[False, True, False],
518-
[False, False, True],
519-
))
520-
async def test_delete_non_empty_folder(delete_to_trash, always_delete, error, jp_contents_manager):
513+
@pytest.mark.parametrize(
514+
"delete_to_trash, always_delete, error",
515+
(
516+
[True, True, False],
517+
# on linux test folder may not be on home folder drive
518+
# => if this is the case, _check_trash will be False
519+
[True, False, None],
520+
[False, True, False],
521+
[False, False, True],
522+
),
523+
)
524+
async def test_delete_non_empty_folder(
525+
delete_to_trash, always_delete, error, jp_contents_manager
526+
):
521527
cm = jp_contents_manager
522528
cm.delete_to_trash = delete_to_trash
523529
cm.always_delete_dir = always_delete
@@ -527,8 +533,20 @@ async def test_delete_non_empty_folder(delete_to_trash, always_delete, error, jp
527533
await make_populated_dir(cm, dir)
528534
await check_populated_dir_files(cm, dir)
529535

536+
if error is None:
537+
error = False
538+
if sys.platform == "win32":
539+
error = True
540+
elif sys.platform == "linux":
541+
file_dev = os.stat(cm.root_dir).st_dev
542+
home_dev = os.stat(os.path.expanduser("~")).st_dev
543+
error = file_dev != home_dev
544+
530545
if error:
531-
with pytest.raises(HTTPError, match=r"HTTP 400: Bad Request \(Directory .*?to_delete not empty\)"):
546+
with pytest.raises(
547+
HTTPError,
548+
match=r"HTTP 400: Bad Request \(Directory .*?to_delete not empty\)",
549+
):
532550
await ensure_async(cm.delete_file(dir))
533551
else:
534552
await ensure_async(cm.delete_file(dir))

0 commit comments

Comments
 (0)