Avoid raising exception on format_duration(None)

Fixes #25
This commit is contained in:
Lukáš Kucharczyk 2023-01-09 16:14:01 +01:00
parent 751182df52
commit 24f4459318
3 changed files with 12 additions and 3 deletions

View File

@ -6,7 +6,7 @@ RUN npm install && \
FROM python:3.10.9-alpine
ENV VERSION_NUMBER 0.1.2-5-g33e136a
ENV VERSION_NUMBER 0.1.2-6-g751182d
ENV PROD 1
RUN apk add \

View File

@ -9,7 +9,7 @@ def now() -> datetime:
def format_duration(
duration: timedelta, format_string: str = "%H hours %m minutes"
duration: timedelta | None, format_string: str = "%H hours %m minutes"
) -> str:
"""
Format timedelta into the specified format_string.
@ -23,7 +23,10 @@ def format_duration(
hour_seconds = 60 * minute_seconds
day_seconds = 24 * hour_seconds
if not isinstance(duration, timedelta):
duration = timedelta(seconds=duration)
if duration == None:
duration = timedelta(seconds=0)
else:
duration = timedelta(seconds=duration)
seconds_total = int(duration.total_seconds())
# timestamps where end is before start
if seconds_total < 0:

View File

@ -56,3 +56,9 @@ class FormatDurationTest(unittest.TestCase):
delta = timedelta(hours=-2)
result = format_duration(delta, "%H hours")
self.assertEqual(result, "0 hours")
def test_none(self):
try:
format_duration(None)
except TypeError as exc:
assert False, f"format_duration(None) raised an exception {exc}"