From ead437be825fc67648fcdf8ac165dae7aab7af4f Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 30 Jun 2016 17:40:54 +0200 Subject: [PATCH] Don't define pytest_bdd_apply_tag when frozen This should help with the undefined hook while not requiring to install the pytest-bdd plugin when frozen. --- tests/conftest.py | 67 ++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index e587c45d5..f8aa5d44a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -187,41 +187,42 @@ def pytest_sessionfinish(exitstatus): f.write(str(exitstatus)) -def pytest_bdd_apply_tag(tag, function): - version_re = re.compile(r""" - (?Pqt|pyqt) - (?P==|>|>=|<|<=|!=) - (?P\d+\.\d+\.\d+) - """, re.VERBOSE) +if not getattr(sys, 'frozen', False): + def pytest_bdd_apply_tag(tag, function): + version_re = re.compile(r""" + (?Pqt|pyqt) + (?P==|>|>=|<|<=|!=) + (?P\d+\.\d+\.\d+) + """, re.VERBOSE) - match = version_re.match(tag) - if not match: - # Use normal tag mapping - return None + match = version_re.match(tag) + if not match: + # Use normal tag mapping + return None - operators = { - '==': operator.eq, - '>': operator.gt, - '<': operator.lt, - '>=': operator.ge, - '<=': operator.le, - '!=': operator.ne, - } + operators = { + '==': operator.eq, + '>': operator.gt, + '<': operator.lt, + '>=': operator.ge, + '<=': operator.le, + '!=': operator.ne, + } - package = match.group('package') - op = operators[match.group('operator')] - version = match.group('version') + package = match.group('package') + op = operators[match.group('operator')] + version = match.group('version') - if package == 'qt': - mark = pytest.mark.skipif(qtutils.version_check(version, op), - reason='Needs ' + tag) - elif package == 'pyqt': - major, minor, patch = [int(e) for e in version.split('.')] - hex_version = (major << 16) | (minor << 8) | patch - mark = pytest.mark.skipif(not op(PYQT_VERSION, hex_version), - reason='Needs ' + tag) - else: - raise ValueError("Invalid package {!r}".format(package)) + if package == 'qt': + mark = pytest.mark.skipif(qtutils.version_check(version, op), + reason='Needs ' + tag) + elif package == 'pyqt': + major, minor, patch = [int(e) for e in version.split('.')] + hex_version = (major << 16) | (minor << 8) | patch + mark = pytest.mark.skipif(not op(PYQT_VERSION, hex_version), + reason='Needs ' + tag) + else: + raise ValueError("Invalid package {!r}".format(package)) - mark(function) - return True + mark(function) + return True