bdd: Fix separations between tests.
With this change, no test should affect another one anymore. Changes in detail: - Before each test, invalid lines are cleaned so the invalid output from the previous test doesn't affect the next one. - Before each test, qutebrowser is restarted if it was quit. - After each test, the data is cleared properly in every case. - If there was an invalid output, the test waits for 1s for more output, and then terminates qutebrowser so it's restarted with a clean state.
This commit is contained in:
parent
8b016df023
commit
021ea444a1
@ -240,5 +240,6 @@ def quteproc(qapp, httpbin):
|
|||||||
@pytest.yield_fixture(autouse=True)
|
@pytest.yield_fixture(autouse=True)
|
||||||
def quteproc_after_test(quteproc):
|
def quteproc_after_test(quteproc):
|
||||||
"""Fixture to run cleanup tasks after each test."""
|
"""Fixture to run cleanup tasks after each test."""
|
||||||
|
quteproc.before_test()
|
||||||
yield
|
yield
|
||||||
quteproc.after_test()
|
quteproc.after_test()
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
"""Base class for a subprocess run for tests.."""
|
"""Base class for a subprocess run for tests.."""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
import time
|
||||||
import fnmatch
|
import fnmatch
|
||||||
|
|
||||||
import pytestqt.plugin # pylint: disable=import-error
|
import pytestqt.plugin # pylint: disable=import-error
|
||||||
@ -153,15 +154,27 @@ class Process(QObject):
|
|||||||
assert ok
|
assert ok
|
||||||
assert self.is_running()
|
assert self.is_running()
|
||||||
|
|
||||||
|
def before_test(self):
|
||||||
|
"""Restart process before a test if it exited before."""
|
||||||
|
self._invalid = []
|
||||||
|
if not self.is_running():
|
||||||
|
self.start()
|
||||||
|
|
||||||
def after_test(self):
|
def after_test(self):
|
||||||
"""Clean up data after each test.
|
"""Clean up data after each test.
|
||||||
|
|
||||||
Also checks self._invalid so the test counts as failed if there were
|
Also checks self._invalid so the test counts as failed if there were
|
||||||
unexpected output lines earlier.
|
unexpected output lines earlier.
|
||||||
"""
|
"""
|
||||||
self._data.clear()
|
|
||||||
if self._invalid:
|
if self._invalid:
|
||||||
|
# Wait for a bit so the full error has a chance to arrive
|
||||||
|
time.sleep(1)
|
||||||
|
# Exit the process to make sure we're in a defined state again
|
||||||
|
self.terminate()
|
||||||
|
self._data.clear()
|
||||||
raise InvalidLine(self._invalid)
|
raise InvalidLine(self._invalid)
|
||||||
|
|
||||||
|
self._data.clear()
|
||||||
if not self.is_running():
|
if not self.is_running():
|
||||||
raise ProcessExited
|
raise ProcessExited
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user