forked from pool/python-loguru
141 lines
4.1 KiB
Diff
141 lines
4.1 KiB
Diff
|
|
From 4fe21f66991abeb1905e24c3bc3c634543d959a2 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Delgan <delgan.py@gmail.com>
|
||
|
|
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 ba48839..76f413d 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) == "<loguru.logger handlers=[]>"
|
||
|
|
|
||
|
|
@@ -112,22 +89,30 @@ def my_function(message):
|
||
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=my_function)]>"
|
||
|
|
|
||
|
|
|
||
|
|
-def test_function_without_name(monkeypatch):
|
||
|
|
- function = Wrapper(lambda _: None, repr="<FunctionWithout>", 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 "<FunctionWithout>"
|
||
|
|
|
||
|
|
- logger.add(function)
|
||
|
|
+ logger.add(Function())
|
||
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<FunctionWithout>)]>"
|
||
|
|
- assert function.raised
|
||
|
|
|
||
|
|
|
||
|
|
-def test_function_with_empty_name(monkeypatch):
|
||
|
|
- function = Wrapper(lambda _: None, repr="<FunctionEmpty>", 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 "<FunctionEmpty>"
|
||
|
|
|
||
|
|
- logger.add(function)
|
||
|
|
+ logger.add(Function())
|
||
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<FunctionEmpty>)]>"
|
||
|
|
- assert not function.raised
|
||
|
|
|
||
|
|
|
||
|
|
def test_coroutine_function():
|
||
|
|
@@ -138,32 +123,32 @@ async def my_async_function(message):
|
||
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=my_async_function)]>"
|
||
|
|
|
||
|
|
|
||
|
|
-def test_coroutine_function_without_name(monkeypatch):
|
||
|
|
- async_function = Wrapper(lambda _: None, repr="<AsyncFunctionWithout>", 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 "<AsyncFunctionWithout>"
|
||
|
|
|
||
|
|
- logger.add(async_function)
|
||
|
|
+ logger.add(CoroutineFunction())
|
||
|
|
assert (
|
||
|
|
repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<AsyncFunctionWithout>)]>"
|
||
|
|
)
|
||
|
|
- assert async_function.raised
|
||
|
|
|
||
|
|
|
||
|
|
-def test_coroutine_function_with_empty_name(monkeypatch):
|
||
|
|
- async_function = Wrapper(lambda _: None, repr="<AsyncFunctionEmpty>", 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 "<AsyncFunctionEmpty>"
|
||
|
|
|
||
|
|
- logger.add(async_function)
|
||
|
|
+ logger.add(CoroutineFunction())
|
||
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<AsyncFunctionEmpty>)]>"
|
||
|
|
- assert not async_function.raised
|
||
|
|
|
||
|
|
|
||
|
|
def test_standard_handler():
|