@@ -350,6 +350,7 @@ def __init__(
350350 self .devtools = DevtoolsClient ()
351351
352352 self ._return_value : ReturnType | None = None
353+ self ._exit = False
353354
354355 self .css_monitor = (
355356 FileMonitor (self .css_path , self ._on_css_change )
@@ -425,6 +426,7 @@ def exit(
425426 result (ReturnType | None, optional): Return value. Defaults to None.
426427 message (RenderableType | None): Optional message to display on exit.
427428 """
429+ self ._exit = True
428430 self ._return_value = result
429431 self .post_message_no_wait (messages .ExitApp (sender = self ))
430432 if message :
@@ -1413,28 +1415,29 @@ async def invoke_ready_callback() -> None:
14131415 )
14141416 driver = self ._driver = driver_class (self .console , self , size = terminal_size )
14151417
1416- driver .start_application_mode ()
1417- try :
1418- if headless :
1419- await run_process_messages ()
1420- else :
1421- if self .devtools is not None :
1422- devtools = self .devtools
1423- assert devtools is not None
1424- from .devtools .redirect_output import StdoutRedirector
1425-
1426- redirector = StdoutRedirector (devtools )
1427- with redirect_stderr (redirector ):
1428- with redirect_stdout (redirector ): # type: ignore
1429- await run_process_messages ()
1418+ if not self ._exit :
1419+ driver .start_application_mode ()
1420+ try :
1421+ if headless :
1422+ await run_process_messages ()
14301423 else :
1431- null_file = _NullFile ()
1432- with redirect_stderr (null_file ):
1433- with redirect_stdout (null_file ):
1434- await run_process_messages ()
1424+ if self .devtools is not None :
1425+ devtools = self .devtools
1426+ assert devtools is not None
1427+ from .devtools .redirect_output import StdoutRedirector
1428+
1429+ redirector = StdoutRedirector (devtools )
1430+ with redirect_stderr (redirector ):
1431+ with redirect_stdout (redirector ): # type: ignore
1432+ await run_process_messages ()
1433+ else :
1434+ null_file = _NullFile ()
1435+ with redirect_stderr (null_file ):
1436+ with redirect_stdout (null_file ):
1437+ await run_process_messages ()
14351438
1436- finally :
1437- driver .stop_application_mode ()
1439+ finally :
1440+ driver .stop_application_mode ()
14381441 except Exception as error :
14391442 self ._handle_exception (error )
14401443
0 commit comments