|
4 | 4 | import tempfile |
5 | 5 | from dataclasses import dataclass |
6 | 6 | from pathlib import Path |
| 7 | +from types import SimpleNamespace |
| 8 | +from unittest.mock import Mock |
7 | 9 |
|
8 | 10 | import pytest |
9 | 11 |
|
@@ -120,3 +122,27 @@ def test_kernel_upload_deletes_as_expected(): |
120 | 122 | str(filename_to_change) in k for k in repo_filenames |
121 | 123 | ), f"{repo_filenames=}" |
122 | 124 | _get_hf_api().delete_repo(repo_id=REPO_ID) |
| 125 | + |
| 126 | + |
| 127 | +def test_large_kernel_upload_uses_kernel_root_path(monkeypatch, tmp_path): |
| 128 | + kernel_root = tmp_path / "kernel" |
| 129 | + build_variant = kernel_root / "build" / "torch-cpu" |
| 130 | + build_variant.mkdir(parents=True, exist_ok=True) |
| 131 | + (build_variant / "metadata.json").write_text("{}") |
| 132 | + for i in range(1001): |
| 133 | + (build_variant / f"file_{i}.py").touch() |
| 134 | + |
| 135 | + api = Mock() |
| 136 | + api.create_repo.return_value = SimpleNamespace(repo_id=REPO_ID) |
| 137 | + monkeypatch.setattr("kernels.cli.upload._get_hf_api", lambda: api) |
| 138 | + |
| 139 | + upload_kernels(UploadArgs(kernel_root, REPO_ID, False, "main")) |
| 140 | + |
| 141 | + api.upload_large_folder.assert_called_once() |
| 142 | + kwargs = api.upload_large_folder.call_args.kwargs |
| 143 | + assert kwargs["repo_id"] == REPO_ID |
| 144 | + assert kwargs["folder_path"] == kernel_root.resolve() |
| 145 | + assert kwargs["revision"] == "main" |
| 146 | + assert kwargs["repo_type"] == "model" |
| 147 | + assert kwargs["allow_patterns"] == ["build/torch*"] |
| 148 | + api.upload_folder.assert_not_called() |
0 commit comments