Skip to content

Commit 9a165e9

Browse files
test: Add tests for populate with keep_completed=True
Regression tests for #1379 - verify that populate(reserve_jobs=True) works correctly when keep_completed=True and add_job_metadata=True. Tests: - test_populate_reserve_jobs_with_keep_completed: Basic populate works - test_populate_reserve_jobs_keep_completed_repend: Deleted results are re-pended Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent ef54342 commit 9a165e9

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

tests/integration/test_jobs.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,45 @@ def test_long_error_stack(clean_jobs, subject, experiment):
158158
experiment.jobs.error(key, "error message", long_error_stack)
159159
error_stack = experiment.jobs.errors.fetch1("error_stack")
160160
assert error_stack == long_error_stack, "error stacks do not agree"
161+
162+
163+
def test_populate_reserve_jobs_with_keep_completed(clean_jobs, subject, experiment):
164+
"""Test populate(reserve_jobs=True) with keep_completed=True.
165+
166+
Regression test for https://github.com/datajoint/datajoint-python/issues/1379
167+
"""
168+
with dj.config.override(jobs={"keep_completed": True, "add_job_metadata": True}):
169+
# Should not raise DataJointError about semantic matching
170+
experiment.populate(reserve_jobs=True)
171+
172+
# Verify jobs completed successfully
173+
assert len(experiment) > 0, "No data was populated"
174+
assert len(experiment.jobs.errors) == 0, "Unexpected errors during populate"
175+
176+
# With keep_completed=True, completed jobs should be retained
177+
assert len(experiment.jobs.completed) > 0, "Completed jobs not retained"
178+
179+
180+
def test_populate_reserve_jobs_keep_completed_repend(clean_jobs, subject, experiment):
181+
"""Test that completed jobs are re-pended when results are deleted.
182+
183+
Regression test for https://github.com/datajoint/datajoint-python/issues/1379
184+
"""
185+
with dj.config.override(jobs={"keep_completed": True, "add_job_metadata": True}):
186+
# First populate
187+
experiment.populate(reserve_jobs=True)
188+
initial_count = len(experiment)
189+
completed_count = len(experiment.jobs.completed)
190+
191+
assert initial_count > 0, "No data was populated"
192+
assert completed_count > 0, "No completed jobs"
193+
194+
# Delete some results
195+
first_key = experiment.keys(limit=1)[0]
196+
(experiment & first_key).delete()
197+
198+
# Refresh should re-pend the deleted job
199+
experiment.jobs.refresh()
200+
201+
# The job for the deleted entry should be pending again
202+
assert len(experiment.jobs.pending) >= 1, "Deleted job not re-pended"

0 commit comments

Comments
 (0)