view test/pytest_patcher.py @ 7683:b04e222501b8

fix: rest - set self.start from client.start Make elasped time include time since client was initialized. So elapsed is as close as we can get to an overall request service time. May need to add rest_elapsed or some other subsystem based timers as we try to track a possible performance regression in 2.3.0.
author John Rouillard <rouilj@ieee.org>
date Wed, 25 Oct 2023 13:12:18 -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/