Coverage for tests/test_utils_default_dir.py: 100%

32 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-11-11 09:18 +0000

1from pathlib import Path 1abcdefghijklmn

2 

3import pytest 1abcdefghijklmn

4 

5from fastapi_cli.discover import get_import_data 1abcdefghijklmn

6from fastapi_cli.exceptions import FastAPICLIException 1abcdefghijklmn

7 

8from .utils import changing_dir 1abcdefghijklmn

9 

10assets_path = Path(__file__).parent / "assets" 1abcdefghijklmn

11 

12 

13def test_app_dir_main() -> None: 1abcdefghijklmn

14 dir = assets_path / "default_files" / "default_app_dir_main" 1opqrstuvwxyzAB

15 with changing_dir(dir): 1opqrstuvwxyzAB

16 import_data = get_import_data() 1opqrstuvwxyzAB

17 

18 assert import_data.import_string == "app.main:app" 1opqrstuvwxyzAB

19 

20 assert import_data.module_data.extra_sys_path == dir 1opqrstuvwxyzAB

21 assert import_data.module_data.module_import_str == "app.main" 1opqrstuvwxyzAB

22 

23 

24def test_app_dir_app() -> None: 1abcdefghijklmn

25 dir = assets_path / "default_files" / "default_app_dir_app" 1CDEFGHIJKLMNOP

26 with changing_dir(dir): 1CDEFGHIJKLMNOP

27 import_data = get_import_data() 1CDEFGHIJKLMNOP

28 

29 assert import_data.import_string == "app.app:app" 1CDEFGHIJKLMNOP

30 

31 assert import_data.module_data.extra_sys_path == dir 1CDEFGHIJKLMNOP

32 assert import_data.module_data.module_import_str == "app.app" 1CDEFGHIJKLMNOP

33 

34 

35def test_app_dir_api() -> None: 1abcdefghijklmn

36 dir = assets_path / "default_files" / "default_app_dir_api" 1QRSTUVWXYZ0123

37 with changing_dir(dir): 1QRSTUVWXYZ0123

38 import_data = get_import_data() 1QRSTUVWXYZ0123

39 

40 assert import_data.import_string == "app.api:app" 1QRSTUVWXYZ0123

41 

42 assert import_data.module_data.extra_sys_path == dir 1QRSTUVWXYZ0123

43 assert import_data.module_data.module_import_str == "app.api" 1QRSTUVWXYZ0123

44 

45 

46def test_app_dir_non_default() -> None: 1abcdefghijklmn

47 with changing_dir(assets_path / "default_files" / "default_app_dir_non_default"): 1456789!#$%'()*

48 with pytest.raises(FastAPICLIException) as e: 1456789!#$%'()*

49 get_import_data() 1456789!#$%'()*

50 assert ( 1456789!#$%'()*

51 "Could not find a default file to run, please provide an explicit path" 

52 in e.value.args[0] 

53 )