From b9ff6f37102099dac0bcf621cf3693a9ee05ec9e Mon Sep 17 00:00:00 2001 From: Ajesh Sen Thapa Date: Mon, 13 May 2024 22:27:39 +0545 Subject: [PATCH] test: refactor tests for system exit --- tests/test_cli.py | 71 +++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index ec19dcf..25feba4 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -3,6 +3,8 @@ from unittest.mock import MagicMock, call, mock_open, patch +import pytest + from commitlint.cli import get_args, main from commitlint.exceptions import CommitlintException from commitlint.messages import ( @@ -137,15 +139,14 @@ def test__main__valid_commit_message_using_skip_detail( ), ) @patch("sys.stderr.write") - @patch("sys.exit") def test__main__invalid_commit_message( self, - mock_sys_exit, mock_stderr_write, *_, ): - main() - mock_sys_exit.assert_called_with(1) + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_has_calls( [ call("⧗ Input:\nInvalid commit message\n\n"), @@ -166,15 +167,14 @@ def test__main__invalid_commit_message( ), ) @patch("sys.stderr.write") - @patch("sys.exit") def test__main__invalid_commit_message_using_skip_detail( self, - mock_sys_exit, mock_stderr_write, *_, ): - main() - mock_sys_exit.assert_called_with(1) + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_has_calls( [ call("⧗ Input:\nInvalid commit message\n\n"), @@ -199,13 +199,11 @@ def test__main__valid_commit_message_with_file(self, mock_stdout_write, *_): return_value=MagicMock(file="path/to/file.txt", skip_detail=False, quiet=False), ) @patch("sys.stderr.write") - @patch("sys.exit") @patch("builtins.open", mock_open(read_data="Invalid commit message 2")) - def test__main__invalid_commit_message_with_file( - self, mock_sys_exit, mock_stderr_write, *_ - ): - main() - mock_sys_exit.assert_called_with(1) + def test__main__invalid_commit_message_with_file(self, mock_stderr_write, *_): + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_has_calls( [ call("⧗ Input:\nInvalid commit message 2\n\n"), @@ -239,13 +237,14 @@ def test__main__valid_commit_message_with_hash( ) @patch("commitlint.cli.get_commit_message_of_hash") @patch("sys.stderr.write") - @patch("sys.exit") def test__main__invalid_commit_message_with_hash( - self, mock_sys_exit, mock_stderr_write, mock_get_commit_message_of_hash, *_ + self, mock_stderr_write, mock_get_commit_message_of_hash, *_ ): mock_get_commit_message_of_hash.return_value = "Invalid commit message" - main() - mock_sys_exit.assert_called_with(1) + + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_has_calls( [ call("⧗ Input:\nInvalid commit message\n\n"), @@ -292,16 +291,16 @@ def test__main__valid_commit_message_with_hash_range( ) @patch("sys.stderr.write") @patch("commitlint.cli.get_commit_messages_of_hash_range") - @patch("sys.exit") def test__main__invalid_commit_message_with_hash_range( - self, mock_sys_exit, mock_get_commit_messages, *_ + self, mock_get_commit_messages, *_ ): mock_get_commit_messages.return_value = [ "Invalid commit message 1", "Invalid commit message 2", ] - main() - mock_sys_exit.assert_called_with(1) + + with pytest.raises(SystemExit): + main() # main : exception handling @@ -315,13 +314,14 @@ def test__main__invalid_commit_message_with_hash_range( "commitlint.cli.lint_commit_message", ) @patch("sys.stderr.write") - @patch("sys.exit") def test__main__handle_exceptions( - self, mock_sys_exit, mock_stderr_write, mock_lint_commit_message, *_ + self, mock_stderr_write, mock_lint_commit_message, *_ ): mock_lint_commit_message.side_effect = CommitlintException("Test message") - main() - mock_sys_exit.assert_called_with(1) + + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_called_with("Test message\n") @patch( @@ -337,11 +337,12 @@ def test__main__handle_exceptions( ) @patch("sys.stdout.write") @patch("sys.stderr.write") - @patch("sys.exit") def test__main__quiet_option_with_invalid_commit_message( - self, mock_sys_exit, mock_stderr_write, mock_stdout_write, *_ + self, mock_stderr_write, mock_stdout_write, *_ ): - main() + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_not_called() mock_stdout_write.assert_not_called() @@ -358,14 +359,12 @@ def test__main__quiet_option_with_invalid_commit_message( ) @patch("sys.stdout.write") @patch("sys.stderr.write") - @patch("sys.exit") def test__main__quiet_option_with_valid_commit_message( - self, mock_sys_exit, mock_stderr_write, mock_stdout_write, *_ + self, mock_stderr_write, mock_stdout_write, *_ ): main() mock_stderr_write.assert_not_called() mock_stdout_write.assert_not_called() - mock_sys_exit.assert_not_called() @patch( "commitlint.cli.get_args", @@ -402,14 +401,12 @@ def test__valid_commit_message_with_hash_range_in_quiet( ), ) @patch("commitlint.cli.get_commit_messages_of_hash_range") - @patch("sys.exit") @patch("sys.stdout.write") @patch("sys.stderr.write") def test__invalid_commit_message_with_hash_range_in_quiet( self, mock_stderr_write, mock_stdout_write, - mock_sys_exit, mock_get_commit_messages, *_, ): @@ -417,7 +414,9 @@ def test__invalid_commit_message_with_hash_range_in_quiet( "Invalid commit message 1", "Invalid commit message 2", ] - main() + + with pytest.raises(SystemExit): + main() + mock_stderr_write.assert_not_called() - mock_sys_exit.assert_called_once_with(1) mock_stdout_write.assert_not_called()