parent
e53c136342
commit
a55952375b
@ -28,7 +28,6 @@ import collections
|
||||
import textwrap
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
import pytest_bdd as bdd
|
||||
|
||||
from helpers import utils
|
||||
@ -315,14 +314,7 @@ def compare_session(quteproc, expected):
|
||||
partial_compare is used, which means only the keys/values listed will be
|
||||
compared.
|
||||
"""
|
||||
# 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 = quteproc.get_session()
|
||||
expected = loader.get_data()
|
||||
assert utils.partial_compare(data, expected)
|
||||
quteproc.compare_session(expected)
|
||||
|
||||
|
||||
@bdd.then("no crash should happen")
|
||||
|
@ -419,7 +419,7 @@ class QuteProc(testprocess.Process):
|
||||
with open(session, encoding='utf-8') as f:
|
||||
data = f.read()
|
||||
|
||||
self._log(data)
|
||||
self._log('\nCurrent session data:\n' + data)
|
||||
return yaml.load(data)
|
||||
|
||||
def get_content(self, plain=True):
|
||||
@ -464,6 +464,26 @@ class QuteProc(testprocess.Process):
|
||||
raise ValueError('Invalid response from qutebrowser: {}'
|
||||
.format(message))
|
||||
|
||||
def compare_session(self, expected):
|
||||
"""Compare the current sessions against the given template.
|
||||
|
||||
partial_compare is used, which means only the keys/values listed will
|
||||
be compared.
|
||||
"""
|
||||
__tracebackhide__ = True
|
||||
# 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 = self.get_session()
|
||||
expected = loader.get_data()
|
||||
outcome = testutils.partial_compare(data, expected)
|
||||
if not outcome:
|
||||
msg = "Session comparison failed: {}".format(outcome.error)
|
||||
msg += '\nsee stdout for details'
|
||||
pytest.fail(msg)
|
||||
|
||||
|
||||
def _xpath_escape(text):
|
||||
"""Escape a string to be used in an XPath expression.
|
||||
|
Loading…
Reference in New Issue
Block a user