diff options
author | Daniel Hahler <git@thequod.de> | 2020-02-02 22:23:41 +0100 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2020-02-02 23:13:23 +0100 |
commit | 99d162e44a0d40675b855dbcde9734b29032f8aa (patch) | |
tree | 176c129139c32d77068a9d97a769267d630162a7 /testing/test_main.py | |
parent | 8bd612b36734972d54bdf3f9c27cd69919372927 (diff) | |
download | pytest-99d162e44a0d40675b855dbcde9734b29032f8aa.tar.gz |
Handle `Exit` exception in `pytest_sessionfinish`
Similar to a7268aa (https://github.com/pytest-dev/pytest/pull/6258).
Diffstat (limited to 'testing/test_main.py')
-rw-r--r-- | testing/test_main.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/testing/test_main.py b/testing/test_main.py index b47791b29..49e3decd0 100644 --- a/testing/test_main.py +++ b/testing/test_main.py @@ -1,5 +1,8 @@ +from typing import Optional + import pytest from _pytest.main import ExitCode +from _pytest.pytester import Testdir @pytest.mark.parametrize( @@ -50,3 +53,25 @@ def test_wrap_session_notify_exception(ret_exc, testdir): assert result.stderr.lines == ["mainloop: caught unexpected SystemExit!"] else: assert result.stderr.lines == ["Exit: exiting after {}...".format(exc.__name__)] + + +@pytest.mark.parametrize("returncode", (None, 42)) +def test_wrap_session_exit_sessionfinish( + returncode: Optional[int], testdir: Testdir +) -> None: + testdir.makeconftest( + """ + import pytest + def pytest_sessionfinish(): + pytest.exit(msg="exit_pytest_sessionfinish", returncode={returncode}) + """.format( + returncode=returncode + ) + ) + result = testdir.runpytest() + if returncode: + assert result.ret == returncode + else: + assert result.ret == ExitCode.NO_TESTS_COLLECTED + assert result.stdout.lines[-1] == "collected 0 items" + assert result.stderr.lines == ["Exit: exit_pytest_sessionfinish"] |