Files
slic/tests/test_utils_debug.py
T
tligui_y 074bf9ecf2
Run CI Tests / test (push) Successful in 27s
Update tests/test_utils_debug.py
2025-07-25 12:48:30 +02:00

67 lines
2.1 KiB
Python

import pytest
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from slic.utils.debug import *
from unittest.mock import patch
class A(Traceable):
def __init__(self, a, b, c=None, d=None, **kwargs):
self.a = a
self.b = b
self.c = c
self.d = d
self.extra = kwargs
class CustomObj:
def __init__(self, val):
self.val = val
def __repr__(self):
return f"CustomObj({self.val})"
@pytest.mark.parametrize(
"cls, entry, expected",
[
# A(10, 20)
(A, ([10, 20], {}),
"creating: A(10, 20)"),
# A(10, 20, e=100)
(A, ([10, 20], {"e": 100}),
"creating: A(10, 20, e=100)"),
# A('foo', [1,2,3], flag=True, data={'x': 9})
(A, (['foo', [1,2,3]], {"flag": True, "data": {"x": 9}}),
f"creating: A('foo', [1, 2, 3], flag={short_repr(True)}, data={short_repr({'x': 9})})"),
# A(CustomObj("big"), [0]*12, name="test", meta="y"*70)
(A, ([CustomObj("big"), [0]*12], {"name": "test", "meta": "y"*70}),
f"creating: A({short_repr(CustomObj('big'))}, {short_repr([0]*12)}, name={short_repr('test')}, meta={short_repr('y'*70)})"),
# A("A"*60, [0]*5) # long string, no kwargs
(A, (["A"*60, [0]*5], {}),
f"creating: A({short_repr('A'*60)}, {short_repr([0]*5)})"),
]
)
def test_traceable(cls, entry, expected):
args, kwargs = entry
with patch("slic.utils.debug.log.trace") as mock_trace:
cls(*args, **kwargs)
actual = mock_trace.call_args[0][0]
assert actual == expected
@pytest.mark.parametrize(
"value, cutoff, expected",
[
("abc", 10, "'abc'"),
("a" * 100, 10, "'aaaaaaaaaa..."),
(12345, 10, "12345"),
([0]*100, 15, str(repr([0]*100))[:15] + "..."),
(None, 10, "None"),
(type("Obj", (), {"__repr__": lambda self: "Obj(" + "x"*50 + ")"})(), 20, "Obj(xxxxxxxxxxxxxxxxx..."),
]
)
def test_short_repr(value, cutoff, expected):
assert short_repr(value, cutoff) == expected