Skip to content

Commit ee18b90

Browse files
fix: testing] Test OSError/ValueError in HF download (#265)
* 🧪 [testing] Test OSError/ValueError in HF download Co-authored-by: n24q02m <135627235+n24q02m@users.noreply.github.com> * 🧪 [testing] Fix ruff format check Co-authored-by: n24q02m <135627235+n24q02m@users.noreply.github.com> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1 parent 7db4d0a commit ee18b90

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

tests/test_model_management.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,70 @@ def test_online_download_failure_raises_value_error(
567567
extra_patterns=["model.onnx"],
568568
)
569569

570+
@patch("qwen3_embed.common.model_management.list_repo_tree")
571+
@patch("qwen3_embed.common.model_management.model_info")
572+
@patch("qwen3_embed.common.model_management.snapshot_download")
573+
def test_metadata_save_mkdir_oserror_swallowed(
574+
self, mock_snap, mock_info, mock_tree, tmp_path
575+
):
576+
"""OSError while creating metadata directory is logged but does not raise."""
577+
snapshot_dir = tmp_path / "models--org--repo"
578+
# We DO NOT create snapshot_dir so that .exists() is False
579+
580+
repo_files = [make_repo_file("model.onnx", size=500, oid="aaa")]
581+
mock_info.return_value = Mock(sha="rev123")
582+
mock_tree.return_value = repo_files
583+
mock_snap.return_value = str(snapshot_dir)
584+
585+
# Patch Path.mkdir to raise OSError
586+
original_mkdir = Path.mkdir
587+
588+
def patched_mkdir(self, *args, **kwargs):
589+
if "models--org--repo" in str(self):
590+
raise OSError("permission denied")
591+
return original_mkdir(self, *args, **kwargs)
592+
593+
with patch.object(Path, "mkdir", patched_mkdir):
594+
# Should not raise
595+
result = ModelManagement.download_files_from_huggingface(
596+
hf_source_repo="org/repo",
597+
cache_dir=str(tmp_path),
598+
extra_patterns=["model.onnx"],
599+
)
600+
assert result == str(snapshot_dir)
601+
602+
@patch("qwen3_embed.common.model_management.list_repo_tree")
603+
@patch("qwen3_embed.common.model_management.model_info")
604+
@patch("qwen3_embed.common.model_management.snapshot_download")
605+
def test_metadata_save_mkdir_valueerror_swallowed(
606+
self, mock_snap, mock_info, mock_tree, tmp_path
607+
):
608+
"""ValueError while creating metadata directory is logged but does not raise."""
609+
snapshot_dir = tmp_path / "models--org--repo"
610+
# We DO NOT create snapshot_dir so that .exists() is False
611+
612+
repo_files = [make_repo_file("model.onnx", size=500, oid="aaa")]
613+
mock_info.return_value = Mock(sha="rev123")
614+
mock_tree.return_value = repo_files
615+
mock_snap.return_value = str(snapshot_dir)
616+
617+
# Patch Path.mkdir to raise ValueError
618+
original_mkdir = Path.mkdir
619+
620+
def patched_mkdir(self, *args, **kwargs):
621+
if "models--org--repo" in str(self):
622+
raise ValueError("invalid path")
623+
return original_mkdir(self, *args, **kwargs)
624+
625+
with patch.object(Path, "mkdir", patched_mkdir):
626+
# Should not raise
627+
result = ModelManagement.download_files_from_huggingface(
628+
hf_source_repo="org/repo",
629+
cache_dir=str(tmp_path),
630+
extra_patterns=["model.onnx"],
631+
)
632+
assert result == str(snapshot_dir)
633+
570634
@patch("qwen3_embed.common.model_management.list_repo_tree")
571635
@patch("qwen3_embed.common.model_management.model_info")
572636
@patch("qwen3_embed.common.model_management.snapshot_download")

0 commit comments

Comments
 (0)