14
0
forked from pool/python-loguru
Files
python-loguru/loguru-fix-repr-tests.patch
Matej Cepl aed181b600 Accepting request 993287 from home:bnavigator:branches:devel:languages:python
- Update to 0.6.0
  * Remove internal use of pickle.loads() considered as a security
    vulnerability referenced as CVE-2022-0329 (#563).
  * Modify coroutine sink to make it discard log messages when
    loop=None and no event loop is running (due to internally using
    asyncio.get_running_loop() in place of
    asyncio.get_event_loop()).
  * Remove the possibility to add a coroutine sink with
    enqueue=True if loop=None and no event loop is running.
  * Change default encoding of file sink to be utf8 instead of
    locale.getpreferredencoding() (#339).
  * Prevent non-ascii characters to be escaped while logging JSON
    message with serialize=True (#575, thanks @ponponon).
  * Fix flake8 errors and improve code readability (#353, thanks
    @AndrewYakimets).
- Drop merged patches:
  * loguru-exception-formatting-py39.patch
  * pytest-6.2-excepthooks.patch
- Add loguru-fix-repr-tests.patch
  * Fix "repr()" tests failing on Python 3.11 and Python 3.10.6
  * https://github.com/Delgan/loguru/commit/4fe21f66

OBS-URL: https://build.opensuse.org/request/show/993287
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-loguru?expand=0&rev=15
2022-08-05 13:19:57 +00:00

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():