gradio

Форк
0
/
test_reload.py 
60 строк · 1.6 Кб
1
import dataclasses
2
from pathlib import Path
3
from typing import List
4

5
import pytest
6

7
import gradio
8
import gradio as gr
9
from gradio.cli.commands.reload import _setup_config
10
from gradio.networking import Server
11

12

13
def build_demo():
14
    with gr.Blocks() as demo:
15
        gr.Textbox("")
16

17
    return demo
18

19

20
@dataclasses.dataclass
21
class Config:
22
    module_name: str
23
    path: Path
24
    watch_dirs: List[str]
25
    demo_name: str
26

27

28
class TestReload:
29
    @pytest.fixture(autouse=True)
30
    def argv(self):
31
        return ["demo/calculator/run.py"]
32

33
    @pytest.fixture
34
    def config(self, monkeypatch, argv) -> Config:
35
        monkeypatch.setattr("sys.argv", ["gradio"] + argv)
36
        name = argv[1].replace("--demo-name", "").strip() if len(argv) > 1 else "demo"
37
        return Config(*_setup_config(argv[0], name))
38

39
    @pytest.fixture(params=[{}])
40
    def reloader(self, config):
41
        reloader = Server(config)
42
        reloader.should_exit = True
43
        yield reloader
44
        reloader.close()
45

46
    def test_config_default_app(self, config):
47
        assert config.module_name == "demo.calculator.run"
48

49
    @pytest.mark.parametrize("argv", [["demo/calculator/run.py", "--demo-name test"]])
50
    def test_config_custom_app(self, config):
51
        assert config.module_name == "demo.calculator.run"
52
        assert config.demo_name == "test"
53

54
    def test_config_watch_gradio(self, config):
55
        gradio_dir = str(Path(gradio.__file__).parent)
56
        assert gradio_dir in config.watch_dirs
57

58
    def test_config_watch_app(self, config):
59
        demo_dir = str(Path("demo/calculator/run.py").resolve().parent)
60
        assert demo_dir in config.watch_dirs
61

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.