Spaces:
Running on Zero
Running on Zero
File size: 1,998 Bytes
043ecd7 | 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 | import pytest
import torch
# --- Fast tests (no model loading required) ---
def test_app_imports_without_model_load():
"""Importing app should not trigger model download."""
import app
assert hasattr(app, "translate")
assert hasattr(app, "_load_tokenizer")
assert hasattr(app, "_load_model")
# --- Slow tests (require GPU + model download) ---
gpu_available = torch.backends.mps.is_available() or torch.cuda.is_available()
@pytest.fixture(scope="module")
def loaded_app():
import app
# Force model/tokenizer loading
app._load_tokenizer()
app._load_model()
return app
@pytest.mark.slow
@pytest.mark.skipif(not gpu_available, reason="Requires MPS or CUDA")
def test_name_to_code_matches_language_names(loaded_app):
name_to_code, language_names = loaded_app._build_language_mappings()
assert set(name_to_code.keys()) == set(language_names)
@pytest.mark.slow
@pytest.mark.skipif(not gpu_available, reason="Requires MPS or CUDA")
def test_language_names_sorted(loaded_app):
_, language_names = loaded_app._build_language_mappings()
assert language_names == sorted(language_names)
@pytest.mark.slow
@pytest.mark.skipif(not gpu_available, reason="Requires MPS or CUDA")
def test_all_codes_are_bcp47_tokens(loaded_app):
name_to_code, _ = loaded_app._build_language_mappings()
for name, code in name_to_code.items():
assert code.startswith("<2") and code.endswith(">"), f"Invalid code {code} for {name}"
@pytest.mark.slow
@pytest.mark.skipif(not gpu_available, reason="Requires MPS or CUDA")
def test_translate_unsupported_language(loaded_app):
with pytest.raises(ValueError, match="Unsupported language"):
loaded_app.translate("hello", "FakeLanguage")
@pytest.mark.slow
@pytest.mark.skipif(not gpu_available, reason="Requires MPS or CUDA")
def test_translate_returns_string(loaded_app):
result = loaded_app.translate("Hello", "French")
assert isinstance(result, str)
assert len(result) > 0
|