parent
e53c136342
commit
a55952375b
@ -28,7 +28,6 @@ import collections
|
|||||||
import textwrap
|
import textwrap
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import yaml
|
|
||||||
import pytest_bdd as bdd
|
import pytest_bdd as bdd
|
||||||
|
|
||||||
from helpers import utils
|
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
|
partial_compare is used, which means only the keys/values listed will be
|
||||||
compared.
|
compared.
|
||||||
"""
|
"""
|
||||||
# Translate ... to ellipsis in YAML.
|
quteproc.compare_session(expected)
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
@bdd.then("no crash should happen")
|
@bdd.then("no crash should happen")
|
||||||
|
@ -419,7 +419,7 @@ class QuteProc(testprocess.Process):
|
|||||||
with open(session, encoding='utf-8') as f:
|
with open(session, encoding='utf-8') as f:
|
||||||
data = f.read()
|
data = f.read()
|
||||||
|
|
||||||
self._log(data)
|
self._log('\nCurrent session data:\n' + data)
|
||||||
return yaml.load(data)
|
return yaml.load(data)
|
||||||
|
|
||||||
def get_content(self, plain=True):
|
def get_content(self, plain=True):
|
||||||
@ -464,6 +464,26 @@ class QuteProc(testprocess.Process):
|
|||||||
raise ValueError('Invalid response from qutebrowser: {}'
|
raise ValueError('Invalid response from qutebrowser: {}'
|
||||||
.format(message))
|
.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):
|
def _xpath_escape(text):
|
||||||
"""Escape a string to be used in an XPath expression.
|
"""Escape a string to be used in an XPath expression.
|
||||||
|
Loading…
Reference in New Issue
Block a user