File size: 2,056 Bytes
b46d0f8
 
4576e13
b46d0f8
 
 
 
 
 
 
 
 
 
 
 
 
5b38545
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4576e13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f36bcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import importlib
import sys
from types import SimpleNamespace

import gradio as gr


def test_app_module_exposes_top_level_server_demo() -> None:
    sys.modules.pop("app", None)

    module = importlib.import_module("app")

    assert isinstance(module.app, gr.Server)
    assert hasattr(module, "demo")
    assert isinstance(module.demo, gr.Blocks)
    assert module.demo.mode == "server"


def test_launch_app_disables_ssr_for_custom_server_mode(monkeypatch) -> None:
    sys.modules.pop("app", None)
    module = importlib.import_module("app")
    captured = {}

    def fake_launch(**kwargs):
        captured.update(kwargs)

    monkeypatch.setattr(module.demo, "launch", fake_launch)

    module._launch_app(7860)

    assert captured["server_name"] == "0.0.0.0"
    assert captured["server_port"] == 7860
    assert captured["ssr_mode"] is False
    assert captured["_app"] is module.app


def test_app_import_warns_for_modal_dashboard_url(monkeypatch) -> None:
    sys.modules.pop("app", None)
    printed = []

    monkeypatch.setenv(
        "SCRIPTORIUM_MODAL_BASE_URL",
        "https://modal.com/apps/mattkevan/main/deployed/scriptorium-tts",
    )
    monkeypatch.setattr("builtins.print", lambda *args, **kwargs: printed.append(" ".join(str(arg) for arg in args)))

    importlib.import_module("app")

    assert any("SCRIPTORIUM_MODAL_BASE_URL" in line for line in printed)
    assert any("modal.run" in line for line in printed)


def test_app_import_reports_modal_runtime_configuration(monkeypatch) -> None:
    sys.modules.pop("app", None)
    printed = []

    monkeypatch.setenv(
        "SCRIPTORIUM_MODAL_BASE_URL",
        "https://scriptorium-tts--mattkevan.modal.run",
    )
    monkeypatch.setenv("SCRIPTORIUM_MODAL_TIMEOUT_SECONDS", "300")
    monkeypatch.setattr("builtins.print", lambda *args, **kwargs: printed.append(" ".join(str(arg) for arg in args)))

    importlib.import_module("app")

    assert any("Modal backend configured" in line for line in printed)
    assert any("timeout=300.0s" in line for line in printed)