Coverage for tests/test_utils_default_file.py: 100%
50 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-11-11 09:18 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-11-11 09:18 +0000
1import importlib 1abcdefghijklmn
2import sys 1abcdefghijklmn
3from pathlib import Path 1abcdefghijklmn
5import pytest 1abcdefghijklmn
6from pytest import CaptureFixture 1abcdefghijklmn
8from fastapi_cli.discover import get_import_data 1abcdefghijklmn
9from fastapi_cli.exceptions import FastAPICLIException 1abcdefghijklmn
11from .utils import changing_dir 1abcdefghijklmn
13assets_path = Path(__file__).parent / "assets" 1abcdefghijklmn
16def test_single_file_main() -> None: 1abcdefghijklmn
17 root_path = assets_path / "default_files" / "default_main" 1opqrstuvwxyzAB
18 old_sys_path = sys.path.copy() 1opqrstuvwxyzAB
19 with changing_dir(root_path): 1opqrstuvwxyzAB
20 sys.path.insert(0, str(root_path)) 1opqrstuvwxyzAB
21 mod = importlib.import_module("main") 1opqrstuvwxyzAB
23 importlib.reload(mod) 1opqrstuvwxyzAB
24 import_data = get_import_data() 1opqrstuvwxyzAB
26 assert import_data.import_string == "main:app" 1opqrstuvwxyzAB
27 assert import_data.module_data.extra_sys_path == root_path 1opqrstuvwxyzAB
28 assert import_data.module_data.module_import_str == "main" 1opqrstuvwxyzAB
30 sys.path = old_sys_path 1opqrstuvwxyzAB
33def test_single_file_app() -> None: 1abcdefghijklmn
34 root_path = assets_path / "default_files" / "default_app" 1CDEFGHIJKLMNOP
35 old_sys_path = sys.path.copy() 1CDEFGHIJKLMNOP
36 with changing_dir(root_path): 1CDEFGHIJKLMNOP
37 sys.path.insert(0, str(root_path)) 1CDEFGHIJKLMNOP
38 mod = importlib.import_module("app") 1CDEFGHIJKLMNOP
40 importlib.reload(mod) 1CDEFGHIJKLMNOP
41 import_data = get_import_data() 1CDEFGHIJKLMNOP
43 assert import_data.import_string == "app:app" 1CDEFGHIJKLMNOP
44 assert import_data.module_data.extra_sys_path == root_path 1CDEFGHIJKLMNOP
45 assert import_data.module_data.module_import_str == "app" 1CDEFGHIJKLMNOP
47 sys.path = old_sys_path 1CDEFGHIJKLMNOP
50def test_single_file_api() -> None: 1abcdefghijklmn
51 root_path = assets_path / "default_files" / "default_api" 1QRSTUVWXYZ0123
52 old_sys_path = sys.path.copy() 1QRSTUVWXYZ0123
53 with changing_dir(root_path): 1QRSTUVWXYZ0123
54 sys.path.insert(0, str(root_path)) 1QRSTUVWXYZ0123
55 mod = importlib.import_module("api") 1QRSTUVWXYZ0123
57 importlib.reload(mod) 1QRSTUVWXYZ0123
58 import_data = get_import_data() 1QRSTUVWXYZ0123
60 assert import_data.import_string == "api:app" 1QRSTUVWXYZ0123
61 assert import_data.module_data.extra_sys_path == root_path 1QRSTUVWXYZ0123
62 assert import_data.module_data.module_import_str == "api" 1QRSTUVWXYZ0123
64 sys.path = old_sys_path 1QRSTUVWXYZ0123
67def test_non_default_file(capsys: CaptureFixture[str]) -> None: 1abcdefghijklmn
68 with changing_dir(assets_path / "default_files" / "non_default"): 1456789!#$%'()*
69 with pytest.raises(FastAPICLIException) as e: 1456789!#$%'()*
70 get_import_data() 1456789!#$%'()*
71 assert ( 1456789!#$%'()*
72 "Could not find a default file to run, please provide an explicit path"
73 in e.value.args[0]
74 )