11import asyncio
2+ import logging
23from pathlib import Path
34from types import SimpleNamespace
45from unittest .mock import PropertyMock
56
67import pytest
78from asyncssh import PermissionDenied
89from enum_here import ScreenName , ServerState
9- from main import PythonHereApp
10+ from main import PythonHereApp , configure_logging , main
1011from ui_here .server_screen_here import ServerScreenManager
1112from version_here import __version__
1213
@@ -15,6 +16,36 @@ def test_dev_version_is_set():
1516 assert __version__ == "0.0.0"
1617
1718
19+ def test_configure_logging_sets_default_info_and_asyncssh_warning (mocker ):
20+ set_log_level = mocker .patch ("main.asyncssh.set_log_level" )
21+ root_logger = logging .getLogger ()
22+
23+ original_level = root_logger .level
24+ try :
25+ root_logger .setLevel (logging .NOTSET )
26+
27+ configure_logging ()
28+
29+ assert root_logger .level == logging .INFO
30+ set_log_level .assert_called_once_with ("WARNING" )
31+ finally :
32+ root_logger .setLevel (original_level )
33+
34+
35+ @pytest .mark .asyncio
36+ async def test_main_configures_logging_before_running_app (mocker ):
37+ configure = mocker .patch ("main.configure_logging" )
38+ app = mocker .Mock ()
39+ app .run_app = mocker .AsyncMock ()
40+ app_class = mocker .patch ("main.PythonHereApp" , return_value = app )
41+
42+ await main ()
43+
44+ configure .assert_called_once_with ()
45+ app_class .assert_called_once_with ()
46+ app .run_app .assert_awaited_once_with ()
47+
48+
1849def test_server_screen_update_states (mocker ):
1950 screen = SimpleNamespace (current = None )
2051 app = SimpleNamespace (
0 commit comments