diff --git a/tests/integration/features/conftest.py b/tests/integration/features/conftest.py index 2f2a20ebb..fe2d37e1b 100644 --- a/tests/integration/features/conftest.py +++ b/tests/integration/features/conftest.py @@ -86,18 +86,12 @@ def expect_error(quteproc, httpbin, category, message): @bdd.then(bdd.parsers.parse("The session should look like:\n{expected}")) -def compare_session(quteproc, tmpdir, expected): - session = tmpdir / 'session.yml' - quteproc.send_cmd(':session-save "{}"'.format(session)) - quteproc.wait_for(category='message', loglevel=logging.INFO, - message='Saved session {}.'.format(session)) - +def compare_session(quteproc, expected): # Translate ... to ellipsis in YAML. loader = yaml.SafeLoader(expected) loader.add_constructor('!ellipsis', lambda loader, node: ...) loader.add_implicit_resolver('!ellipsis', re.compile(r'\.\.\.'), None) - data = yaml.load(session.read()) + data = quteproc.get_session() expected = loader.get_data() - assert utils.partial_compare(data, expected) diff --git a/tests/integration/quteprocess.py b/tests/integration/quteprocess.py index aaa01e077..029f63ac8 100644 --- a/tests/integration/quteprocess.py +++ b/tests/integration/quteprocess.py @@ -28,7 +28,9 @@ import time import os.path import datetime import logging +import tempfile +import yaml import pytest from PyQt5.QtCore import pyqtSignal @@ -222,6 +224,16 @@ class QuteProc(testprocess.Process): message=message) line.expected = True + def get_session(self): + """Save the session and get the parsed session data.""" + with tempfile.TemporaryDirectory() as tmpdir: + session = os.path.join(tmpdir, 'session.yml') + self.send_cmd(':session-save "{}"'.format(session)) + self.wait_for(category='message', loglevel=logging.INFO, + message='Saved session {}.'.format(session)) + with open(session, encoding='utf-8') as f: + return yaml.load(f) + @pytest.yield_fixture(scope='module') def quteproc(qapp, httpbin):