view test/pytest_patcher.py @ 6643:5b71a50e833b

try to get more info on failing test looks like m is not being formatted for markdown2 test case. No idea why. Trying to make output more verbose to figure out what's happening. pip in ci reports version 2.4.2 of markdown2 according to: https://app.travis-ci.com/github/roundup-tracker/roundup/jobs/568309619 same version I run locally with python 3.6.9. Fails in CI on 3.6, 3.8, 3.10.4. python 2.7 works on with version 2.3.10 of markdown2
author John Rouillard <rouilj@ieee.org>
date Thu, 28 Apr 2022 00:19:52 -0400
parents 1c94afabb2cb
children
line wrap: on
line source

"""
The following code was taken from:

    https://github.com/pytest-dev/pytest/issues/568#issuecomment-216569420

to resolve a bug with using pytest.mark.skip(). Once the bug is resolved in
pytest this file can be removed along with all the wrapper mark_class()
references in the other test files.
"""
import types


def mark_class(marker):
    '''Workaround for https://github.com/pytest-dev/pytest/issues/568'''
    def copy_func(f):
        try:
            return types.FunctionType(f.__code__, f.__globals__,
                                      name=f.__name__, argdefs=f.__defaults__,
                                      closure=f.__closure__)
        except AttributeError:
            return types.FunctionType(f.func_code, f.func_globals,
                                      name=f.func_name,
                                      argdefs=f.func_defaults,
                                      closure=f.func_closure)

    def mark(cls):
        if isinstance(cls, types.FunctionType):
            return marker(copy_func(cls))

        for method in dir(cls):
            if method.startswith('test'):
                f = copy_func(getattr(cls, method))
                setattr(cls, method, marker(f))
        return cls
    return mark

Roundup Issue Tracker: http://roundup-tracker.org/