File size: 2,183 Bytes
a358eab 0faa034 a358eab | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | from pathlib import Path
import shutil
import uuid
from facecloak.deploy import (
HF_TOKEN_ENV_VAR,
create_or_update_space,
default_space_repo_id,
read_env_file,
)
class DummyRuntime:
stage = "BUILDING"
hardware = "cpu-basic"
class DummyCommit:
oid = "abc123"
class DummyApi:
def __init__(self) -> None:
self.created = None
self.uploaded = None
def whoami(self, token, cache=False):
return {"name": "example-user"}
def create_repo(self, **kwargs):
self.created = kwargs
def upload_folder(self, **kwargs):
self.uploaded = kwargs
return DummyCommit()
def get_space_runtime(self, repo_id, token=None):
return DummyRuntime()
def _local_temp_dir(name: str) -> Path:
path = Path("tests") / "_tmp" / f"{name}_{uuid.uuid4().hex}"
path.mkdir(parents=True, exist_ok=True)
return path
def test_read_env_file_parses_simple_key_values() -> None:
temp_dir = _local_temp_dir("env")
env_path = temp_dir / ".env"
env_path.write_text(
f"{HF_TOKEN_ENV_VAR}=hf_test_token\nOTHER=value\n", encoding="utf-8"
)
values = read_env_file(env_path)
assert values[HF_TOKEN_ENV_VAR] == "hf_test_token"
assert values["OTHER"] == "value"
shutil.rmtree(temp_dir)
def test_default_space_repo_id_uses_hf_username() -> None:
repo_id = default_space_repo_id(DummyApi(), "hf_test_token")
assert repo_id == "example-user/facecloak"
def test_create_or_update_space_uses_space_repo_settings() -> None:
api = DummyApi()
temp_dir = _local_temp_dir("deploy")
folder_path = temp_dir / "repo"
folder_path.mkdir()
(folder_path / "app.py").write_text("print('ok')\n", encoding="utf-8")
result = create_or_update_space(
api=api,
token="hf_test_token",
repo_id="example-user/facecloak",
folder_path=folder_path,
)
assert api.created["repo_type"] == "space"
assert api.created["space_sdk"] == "gradio"
assert api.uploaded["repo_type"] == "space"
assert result.repo_id == "example-user/facecloak"
assert result.runtime_stage == "BUILDING"
shutil.rmtree(temp_dir)
|