Skip to content

Commit 8314379

Browse files
authored
fix(prune): handle failed_min_age_days=0 correctly and add regression test (#39)
Treat failed_min_age_days=0 as an explicit value (not as None) in prune_db_task_results. Add a regression test for the zero-day failed retention case to prevent future regressions.
1 parent a522cf5 commit 8314379

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

django_tasks_db/management/commands/prune_db_task_results.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def handle(
104104
min_age = timezone.now() - timedelta(days=min_age_days)
105105
failed_min_age = (
106106
(timezone.now() - timedelta(days=failed_min_age_days))
107-
if failed_min_age_days
107+
if failed_min_age_days is not None
108108
else None
109109
)
110110

tests/tests.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,6 +1411,31 @@ def test_failed_min_age(self) -> None:
14111411
with self.assertRaises(TaskResultDoesNotExist):
14121412
failed_result.refresh()
14131413

1414+
def test_failed_min_age_zero(self) -> None:
1415+
successful_result = test_tasks.noop_task.enqueue()
1416+
DBTaskResult.objects.ready().update(
1417+
status=TaskResultStatus.SUCCESSFUL,
1418+
finished_at=timezone.now() - timedelta(days=1),
1419+
)
1420+
1421+
failed_result = test_tasks.noop_task.enqueue()
1422+
DBTaskResult.objects.ready().update(
1423+
status=TaskResultStatus.FAILED,
1424+
finished_at=timezone.now() - timedelta(days=1),
1425+
)
1426+
1427+
self.assertEqual(DBTaskResult.objects.finished().count(), 2)
1428+
1429+
with self.assertNumQueries(3):
1430+
self.prune_task_results(min_age_days=14, failed_min_age_days=0)
1431+
1432+
self.assertEqual(DBTaskResult.objects.finished().count(), 1)
1433+
1434+
successful_result.refresh()
1435+
1436+
with self.assertRaises(TaskResultDoesNotExist):
1437+
failed_result.refresh()
1438+
14141439
def test_dry_run(self) -> None:
14151440
test_tasks.noop_task.enqueue()
14161441

0 commit comments

Comments
 (0)