summaryrefslogtreecommitdiff
path: root/testing/test_main.py
diff options
context:
space:
mode:
authorDaniel Hahler <git@thequod.de>2020-02-02 22:23:41 +0100
committerDaniel Hahler <git@thequod.de>2020-02-02 23:13:23 +0100
commit99d162e44a0d40675b855dbcde9734b29032f8aa (patch)
tree176c129139c32d77068a9d97a769267d630162a7 /testing/test_main.py
parent8bd612b36734972d54bdf3f9c27cd69919372927 (diff)
downloadpytest-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.py25
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"]