bdd tests: Add QuteProc.get_session().

This commit is contained in:
Florian Bruhin 2015-11-03 14:55:46 +01:00
parent d992390cbe
commit 17396e1030
2 changed files with 14 additions and 8 deletions

View File

@ -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)

View File

@ -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):