Beispiel #1
0
def test_get_real_func():
    """Check that get_real_func correctly unwraps decorators until reaching the real function"""

    def decorator(f):
        @wraps(f)
        def inner():
            pass

        if six.PY2:
            inner.__wrapped__ = f
        return inner

    def func():
        pass

    wrapped_func = decorator(decorator(func))
    assert get_real_func(wrapped_func) is func

    wrapped_func2 = decorator(decorator(wrapped_func))
    assert get_real_func(wrapped_func2) is func

    # special case for __pytest_wrapped__ attribute: used to obtain the function up until the point
    # a function was wrapped by pytest itself
    wrapped_func2.__pytest_wrapped__ = _PytestWrapper(wrapped_func)
    assert get_real_func(wrapped_func2) is wrapped_func
Beispiel #2
0
def test_get_real_func():
    """Check that get_real_func correctly unwraps decorators until reaching the real function"""

    def decorator(f):
        @wraps(f)
        def inner():
            pass

        if six.PY2:
            inner.__wrapped__ = f
        return inner

    def func():
        pass

    wrapped_func = decorator(decorator(func))
    assert get_real_func(wrapped_func) is func

    wrapped_func2 = decorator(decorator(wrapped_func))
    assert get_real_func(wrapped_func2) is func

    # special case for __pytest_wrapped__ attribute: used to obtain the function up until the point
    # a function was wrapped by pytest itself
    wrapped_func2.__pytest_wrapped__ = _PytestWrapper(wrapped_func)
    assert get_real_func(wrapped_func2) is wrapped_func
Beispiel #3
0
def wrap_function_to_error_out_if_called_directly(function, fixture_marker):
    """Wrap the given fixture function so we can raise an error about it being called directly,
    instead of used as an argument in a test function.
    """
    message = FIXTURE_FUNCTION_CALL.format(
        name=fixture_marker.name or function.__name__)

    @six.wraps(function)
    def result(*args, **kwargs):
        fail(message, pytrace=False)

    # keep reference to the original function in our own custom attribute so we don't unwrap
    # further than this point and lose useful wrappings like @mock.patch (#3774)
    result.__pytest_wrapped__ = _PytestWrapper(function)

    return result
Beispiel #4
0
def wrap_function_to_error_out_if_called_directly(function, fixture_marker):
    """Wrap the given fixture function so we can raise an error about it being called directly,
    instead of used as an argument in a test function.
    """
    message = FIXTURE_FUNCTION_CALL.format(
        name=fixture_marker.name or function.__name__
    )

    @six.wraps(function)
    def result(*args, **kwargs):
        fail(message, pytrace=False)

    # keep reference to the original function in our own custom attribute so we don't unwrap
    # further than this point and lose useful wrappings like @mock.patch (#3774)
    result.__pytest_wrapped__ = _PytestWrapper(function)

    return result