From 4fe21f66991abeb1905e24c3bc3c634543d959a2 Mon Sep 17 00:00:00 2001 From: Delgan Date: Sun, 17 Jul 2022 09:18:56 +0200 Subject: [PATCH] Fix "repr()" tests failing on Python 3.11 --- tests/test_repr.py | 87 +++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 51 deletions(-) diff --git a/tests/test_repr.py b/tests/test_repr.py index ba488396..76f413d4 100644 --- a/tests/test_repr.py +++ b/tests/test_repr.py @@ -1,34 +1,11 @@ -import builtins import logging import pathlib import re import sys -from inspect import iscoroutinefunction -import loguru from loguru import logger -class Wrapper: - def __init__(self, wrapped, *, repr, name): - self._wrapped = wrapped - self._repr = repr - self._name = name - self.raised = False - - def __repr__(self): - return self._repr - - def __getattr__(self, name): - if name == "__name__": - if self._name is None: - self.raised = True - raise AttributeError - else: - return self._name - return getattr(self._wrapped, name) - - def test_no_handler(): assert repr(logger) == "" @@ -112,22 +89,30 @@ def my_function(message): assert repr(logger) == "" -def test_function_without_name(monkeypatch): - function = Wrapper(lambda _: None, repr="", name=None) - monkeypatch.setattr(builtins, "callable", lambda x: x is function or callable(x)) +def test_callable_without_name(): + class Function: + def __call__(self): + pass + + def __repr__(self): + return "" - logger.add(function) + logger.add(Function()) assert repr(logger) == ")]>" - assert function.raised -def test_function_with_empty_name(monkeypatch): - function = Wrapper(lambda _: None, repr="", name="") - monkeypatch.setattr(builtins, "callable", lambda x: x is function or callable(x)) +def test_callable_with_empty_name(): + class Function: + __name__ = "" + + def __call__(self): + pass + + def __repr__(self): + return "" - logger.add(function) + logger.add(Function()) assert repr(logger) == ")]>" - assert not function.raised def test_coroutine_function(): @@ -138,32 +123,32 @@ async def my_async_function(message): assert repr(logger) == "" -def test_coroutine_function_without_name(monkeypatch): - async_function = Wrapper(lambda _: None, repr="", name=None) - monkeypatch.setattr( - loguru._logger, - "iscoroutinefunction", - lambda x: x is async_function or iscoroutinefunction(x), - ) +def test_coroutine_callable_without_name(): + class CoroutineFunction: + async def __call__(self): + pass + + def __repr__(self): + return "" - logger.add(async_function) + logger.add(CoroutineFunction()) assert ( repr(logger) == ")]>" ) - assert async_function.raised -def test_coroutine_function_with_empty_name(monkeypatch): - async_function = Wrapper(lambda _: None, repr="", name="") - monkeypatch.setattr( - loguru._logger, - "iscoroutinefunction", - lambda x: x is async_function or iscoroutinefunction(x), - ) +def test_coroutine_function_with_empty_name(): + class CoroutineFunction: + __name__ = "" + + def __call__(self): + pass + + def __repr__(self): + return "" - logger.add(async_function) + logger.add(CoroutineFunction()) assert repr(logger) == ")]>" - assert not async_function.raised def test_standard_handler():