mirror of https://github.com/Delgan/loguru.git
192 lines
4.9 KiB
Python
192 lines
4.9 KiB
Python
import logging
|
|
import pathlib
|
|
import re
|
|
import sys
|
|
|
|
from loguru import logger
|
|
|
|
|
|
def test_no_handler():
|
|
assert repr(logger) == "<loguru.logger handlers=[]>"
|
|
|
|
|
|
def test_stderr():
|
|
logger.add(sys.__stderr__)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<stderr>)]>"
|
|
|
|
|
|
def test_stdout():
|
|
logger.add(sys.__stdout__)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<stdout>)]>"
|
|
|
|
|
|
def test_file_object(tmp_path):
|
|
path = str(tmp_path / "test.log")
|
|
with open(path, "w") as file:
|
|
logger.add(file)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=%s)]>" % path
|
|
|
|
|
|
def test_file_str(tmp_path):
|
|
path = str(tmp_path / "test.log")
|
|
logger.add(path)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink='%s')]>" % path
|
|
|
|
|
|
def test_file_pathlib(tmp_path):
|
|
path = str(tmp_path / "test.log")
|
|
logger.add(pathlib.Path(path))
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink='%s')]>" % path
|
|
|
|
|
|
def test_stream_object():
|
|
class MyStream:
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
def write(self, m):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "MyStream()"
|
|
|
|
logger.add(MyStream("<foobar>"))
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<foobar>)]>"
|
|
|
|
|
|
def test_stream_object_without_name_attr():
|
|
class MyStream:
|
|
def write(self, m):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "MyStream()"
|
|
|
|
logger.add(MyStream())
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=MyStream())]>"
|
|
|
|
|
|
def test_stream_object_with_empty_name():
|
|
class MyStream2:
|
|
def __init__(self):
|
|
self.name = ""
|
|
|
|
def write(self, message):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "MyStream2()"
|
|
|
|
logger.add(MyStream2())
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=MyStream2())]>"
|
|
|
|
|
|
def test_function():
|
|
def my_function(message):
|
|
pass
|
|
|
|
logger.add(my_function)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=my_function)]>"
|
|
|
|
|
|
def test_callable_without_name():
|
|
class Function:
|
|
def __call__(self):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "<FunctionWithout>"
|
|
|
|
logger.add(Function())
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<FunctionWithout>)]>"
|
|
|
|
|
|
def test_callable_with_empty_name():
|
|
class Function:
|
|
__name__ = ""
|
|
|
|
def __call__(self):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "<FunctionEmpty>"
|
|
|
|
logger.add(Function())
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<FunctionEmpty>)]>"
|
|
|
|
|
|
def test_coroutine_function():
|
|
async def my_async_function(message):
|
|
pass
|
|
|
|
logger.add(my_async_function)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=my_async_function)]>"
|
|
|
|
|
|
def test_coroutine_callable_without_name():
|
|
class CoroutineFunction:
|
|
async def __call__(self):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "<AsyncFunctionWithout>"
|
|
|
|
logger.add(CoroutineFunction())
|
|
assert (
|
|
repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<AsyncFunctionWithout>)]>"
|
|
)
|
|
|
|
|
|
def test_coroutine_function_with_empty_name():
|
|
class CoroutineFunction:
|
|
__name__ = ""
|
|
|
|
def __call__(self):
|
|
pass
|
|
|
|
def __repr__(self):
|
|
return "<AsyncFunctionEmpty>"
|
|
|
|
logger.add(CoroutineFunction())
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=10, sink=<AsyncFunctionEmpty>)]>"
|
|
|
|
|
|
def test_standard_handler():
|
|
handler = logging.StreamHandler(sys.__stderr__)
|
|
logger.add(handler)
|
|
if sys.version_info >= (3, 6):
|
|
r = "<loguru.logger handlers=[(id=0, level=10, sink=<StreamHandler <stderr> (NOTSET)>)]>"
|
|
assert repr(logger) == r
|
|
else:
|
|
r = r"<loguru\.logger handlers=\[\(id=0, level=10, sink=<logging\.StreamHandler .*>\)\]>"
|
|
assert re.match(r, repr(logger))
|
|
|
|
|
|
def test_multiple_handlers():
|
|
logger.add(sys.__stdout__)
|
|
logger.add(sys.__stderr__)
|
|
r = (
|
|
"<loguru.logger handlers=["
|
|
"(id=0, level=10, sink=<stdout>), "
|
|
"(id=1, level=10, sink=<stderr>)"
|
|
"]>"
|
|
)
|
|
assert repr(logger) == r
|
|
|
|
|
|
def test_handler_removed():
|
|
i = logger.add(sys.__stdout__)
|
|
logger.add(sys.__stderr__)
|
|
logger.remove(i)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=1, level=10, sink=<stderr>)]>"
|
|
|
|
|
|
def test_handler_level_name():
|
|
logger.add(sys.__stderr__, level="TRACE")
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=5, sink=<stderr>)]>"
|
|
|
|
|
|
def test_handler_level_num():
|
|
logger.add(sys.__stderr__, level=33)
|
|
assert repr(logger) == "<loguru.logger handlers=[(id=0, level=33, sink=<stderr>)]>"
|