Add ignore list for coverage (pytest), rename json default function to default_isoformat

This commit is contained in:
Clemens Schwaighofer
2025-10-27 10:05:31 +09:00
parent caf0039de4
commit c7b38b0d70
3 changed files with 38 additions and 15 deletions

View File

@@ -67,3 +67,26 @@ init-hook='import sys; sys.path.append("src/")'
testpaths = [
"tests",
]
[tool.coverage.run]
omit = [
"*/tests/*",
"*/test_*.py",
"*/__init__.py"
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"def __str__",
"raise AssertionError",
"raise NotImplementedError",
"if __name__ == .__main__.:"
]
exclude_also = [
"def __.*__\\(",
"def __.*\\(",
"def _.*\\(",
]

View File

@@ -13,7 +13,7 @@ from jsonpath_ng import parse # pyright: ignore[reportMissingTypeStubs, reportU
class DateTimeEncoder(JSONEncoder):
"""
Override the default method
cls=DateTimeEncoder
dumps(..., cls=DateTimeEncoder, ...)
"""
def default(self, o: Any) -> str | None:
if isinstance(o, (date, datetime)):
@@ -21,10 +21,10 @@ class DateTimeEncoder(JSONEncoder):
return None
def default(obj: Any) -> str | None:
def default_isoformat(obj: Any) -> str | None:
"""
default override
default=default
dumps(..., default=default, ...)
"""
if isinstance(obj, (date, datetime)):
return obj.isoformat()

View File

@@ -7,7 +7,7 @@ from datetime import datetime, date
from typing import Any
from corelibs.json_handling.json_helper import (
DateTimeEncoder,
default,
default_isoformat,
json_dumps,
modify_with_jsonpath
)
@@ -132,30 +132,30 @@ class TestDefaultFunction:
def test_default_datetime(self):
"""Test default function with datetime"""
dt = datetime(2025, 10, 23, 15, 30, 45)
result = default(dt)
result = default_isoformat(dt)
assert result == "2025-10-23T15:30:45"
def test_default_date(self):
"""Test default function with date"""
d = date(2025, 10, 23)
result = default(d)
result = default_isoformat(d)
assert result == "2025-10-23"
def test_default_with_microseconds(self):
"""Test default function with datetime including microseconds"""
dt = datetime(2025, 10, 23, 15, 30, 45, 123456)
result = default(dt)
result = default_isoformat(dt)
assert result == "2025-10-23T15:30:45.123456"
def test_default_returns_none_for_other_types(self):
"""Test that default returns None for non-date/datetime objects"""
assert default("string") is None
assert default(42) is None
assert default(3.14) is None
assert default(True) is None
assert default(None) is None
assert default([1, 2, 3]) is None
assert default({"key": "value"}) is None
assert default_isoformat("string") is None
assert default_isoformat(42) is None
assert default_isoformat(3.14) is None
assert default_isoformat(True) is None
assert default_isoformat(None) is None
assert default_isoformat([1, 2, 3]) is None
assert default_isoformat({"key": "value"}) is None
def test_default_as_json_default_parameter(self):
"""Test using default function as default parameter in json.dumps"""
@@ -165,7 +165,7 @@ class TestDefaultFunction:
"name": "test"
}
result = json.dumps(data, default=default)
result = json.dumps(data, default=default_isoformat)
decoded = json.loads(result)
assert decoded["timestamp"] == "2025-10-23T15:30:45"