ZONOS3-Mini / tests /test_http.py
fffiloni's picture
Deploy ZONOS3 Mini ZeroGPU integration v0.1.0
6d1acb0 verified
Raw History Blame Contribute Delete
1.8 kB
"""Real Gradio HTTP transport, with a synthetic CPU engine. Never loads weights."""
import json
import urllib.parse
import urllib.request
import pytest
from gradio_client import Client
from test_lifecycle import FakeEngine
def test_http_session_injection_file_access_and_api_errors(monkeypatch, tmp_path):
monkeypatch.setenv("ZONOS_UI_ONLY", "1")
import app
# The bound controller retains its identity in Gradio's registered callbacks.
monkeypatch.setattr(app.controller, "engine", FakeEngine())
monkeypatch.setattr(app.controller, "outputs", tmp_path / "outputs")
app.controller.outputs.mkdir()
_, url, _ = app.demo.launch(prevent_thread_lock=True, quiet=True,
allowed_paths=[str(app.controller.outputs.resolve())])
try:
client = Client(url, verbose=False)
args = ["A short test.", json.dumps({"voice":"Savannah", "language":"en_us"}),
"Preset", None, False, True, 42, False, .75, .69, 80, 2.4, 0]
result = client.predict(*args, api_name="/generate")
take = json.loads(result[0])
with urllib.request.urlopen(urllib.parse.urljoin(url, take["url"])) as response:
assert response.status == 200 and response.read(4) == b"RIFF"
assert take["seed"] == 42 and app.controller.jobs.active() == 0
files = list(app.controller.outputs.glob("*.wav"))
args[0] = ""
with pytest.raises(Exception, match="Write something"):
client.predict(*args, api_name="/generate")
assert list(app.controller.outputs.glob("*.wav")) == files
client.predict(api_name="/cancel") # Request injected with this client's session.
assert app.controller.jobs.active() == 0
client.close()
finally:
app.demo.close()