report keyboardintterupt even if inteerrupted during sessionstartup

This commit is contained in:
holger krekel 2011-07-07 21:24:09 +02:00
parent c25ea2cbe2
commit d1684e8052
3 changed files with 19 additions and 0 deletions

View File

@ -15,6 +15,7 @@ Changes between 2.0.3 and 2.1.0.DEV
- fix issue44: env/username expansion for junitxml file path
- show releaselevel information in test runs for pypy
- reworked doc pages for better navigation and PDF generation
- report KeyboardInterrupt even if interrupted during session startup
Changes between 2.0.2 and 2.0.3
----------------------------------------------

View File

@ -318,12 +318,17 @@ class TerminalReporter:
self.config.hook.pytest_terminal_summary(terminalreporter=self)
if exitstatus == 2:
self._report_keyboardinterrupt()
del self._keyboardinterrupt_memo
self.summary_deselected()
self.summary_stats()
def pytest_keyboard_interrupt(self, excinfo):
self._keyboardinterrupt_memo = excinfo.getrepr(funcargs=True)
def pytest_unconfigure(self):
if hasattr(self, '_keyboardinterrupt_memo'):
self._report_keyboardinterrupt()
def _report_keyboardinterrupt(self):
excrepr = self._keyboardinterrupt_memo
msg = excrepr.reprcrash.message

View File

@ -167,6 +167,19 @@ class TestTerminal:
])
result.stdout.fnmatch_lines(['*KeyboardInterrupt*'])
def test_keyboard_in_sessionstart(self, testdir):
testdir.makeconftest("""
def pytest_sessionstart():
raise KeyboardInterrupt
""")
p = testdir.makepyfile("""
def test_foobar():
pass
""")
result = testdir.runpytest()
assert result.ret == 2
result.stdout.fnmatch_lines(['*KeyboardInterrupt*'])
class TestCollectonly: