This repository was archived by the owner on Feb 20, 2026. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -252,10 +252,15 @@ def message(
252252 write_and_flush (fileobj , to_write )
253253
254254
255- def fatal (* tokens : Token , ** kwargs : Any ) -> None :
256- """Print an error message and call ``sys.exit``"""
255+ def fatal (* tokens : Token , exit_code : int = 1 , ** kwargs : Any ) -> None :
256+ """Print an error message and exit the program
257+
258+ :param tokens: list of `ui` constants or strings, like
259+ ``(cli_ui.red, "this is a fatal error")``
260+ :param exit_code: value of the exit code (default: 1)
261+ """
257262 error (* tokens , ** kwargs )
258- sys .exit (1 )
263+ sys .exit (exit_code )
259264
260265
261266def error (* tokens : Token , ** kwargs : Any ) -> None :
Original file line number Diff line number Diff line change @@ -331,6 +331,20 @@ def test_quiet(message_recorder: MessageRecorder) -> None:
331331 assert not message_recorder .find ("info" )
332332
333333
334+ def test_fatal () -> None :
335+ cli_ui .setup (quiet = True )
336+ with pytest .raises (SystemExit ) as e :
337+ cli_ui .fatal ("default exit code" )
338+ assert e .value .code == 1
339+
340+
341+ def test_fatal_with_custom_code () -> None :
342+ cli_ui .setup (quiet = True )
343+ with pytest .raises (SystemExit ) as e :
344+ cli_ui .fatal ("custom exit code" , exit_code = 3 )
345+ assert e .value .code == 3
346+
347+
334348def test_color_always (dumb_tty : DumbTTY ) -> None :
335349 cli_ui .setup (color = "always" )
336350 cli_ui .info (cli_ui .red , "this is red" , fileobj = dumb_tty )
Original file line number Diff line number Diff line change 11Changelog
22----------
33
4+ unreleased
5+ ++++++++++
6+
7+ * `fatal ` can now be called with a custom exit code, different than
8+ the default 1.
9+
410v0.14.1 (2021-06-06)
511++++++++++++++++++++
612
Original file line number Diff line number Diff line change @@ -194,7 +194,11 @@ Functions below use ``sys.stderr`` by default:
194194
195195 >>> cli_ui.fatal("Message")
196196 Error: message
197- exit()
197+ exit(1)
198+
199+ >>> cli_ui.fatal("Another message", exit_code=2)
200+ Error: Another message
201+ exit(2)
198202
199203
200204Progress messages
You can’t perform that action at this time.
0 commit comments