Resume failed episode batch retries
This commit is contained in:
+48
@@ -613,6 +613,30 @@ class QueueApiTests(unittest.TestCase):
|
||||
self.assertEqual(retried["status"], "pending")
|
||||
self.assertEqual(retried["result_index"], 4)
|
||||
|
||||
def test_covered_episodes_includes_completed_and_remaining_retry_parts(self):
|
||||
created = self.queue.add(
|
||||
{
|
||||
"show_id": "show-42",
|
||||
"query": "Retry Coverage",
|
||||
"title": "Retry Coverage",
|
||||
"anime_name": "Retry Coverage",
|
||||
"mode": "sub",
|
||||
"quality": "best",
|
||||
"episodes": "1-3",
|
||||
"download_dir": "/tmp/example",
|
||||
"season": "1",
|
||||
}
|
||||
)
|
||||
with self.queue.lock:
|
||||
job = self.queue._find(created["id"])
|
||||
job["completed_episodes"] = ["1"]
|
||||
job["retry_episodes"] = "2-3"
|
||||
self.queue._save_job_locked(job)
|
||||
|
||||
covered = self.queue.covered_episodes("show-42", "sub", ["1", "2", "3", "4"])
|
||||
|
||||
self.assertEqual(covered, {"1", "2", "3"})
|
||||
|
||||
def test_add_reuses_matching_failed_job_instead_of_creating_duplicate(self):
|
||||
payload = {
|
||||
"show_id": "show-42",
|
||||
@@ -1099,6 +1123,16 @@ class DownloadQueueWorkerFailureTests(unittest.TestCase):
|
||||
self.assertFalse(staged_episode.exists())
|
||||
self.assertFalse(staging_dir.exists())
|
||||
self.assertIn(f"Saved: {final_episode}", stored["log"])
|
||||
self.assertEqual(stored["completed_episodes"], ["1"])
|
||||
self.assertEqual(stored["retry_episodes"], "2")
|
||||
|
||||
retried = queue.retry(job["id"])
|
||||
command = APP.app_support.command_for_job(retried)
|
||||
|
||||
self.assertEqual(retried["status"], "pending")
|
||||
self.assertEqual(retried["episodes"], "1-2")
|
||||
self.assertEqual(retried["retry_episodes"], "2")
|
||||
self.assertEqual(command[command.index("--episodes") + 1], "2")
|
||||
|
||||
def test_successful_detached_download_logs_sync_skipped(self):
|
||||
queue = APP.DownloadQueue(
|
||||
@@ -2158,6 +2192,20 @@ class WatchlistCompletionTests(unittest.TestCase):
|
||||
|
||||
self.assertNotIn("-S", command)
|
||||
|
||||
def test_command_for_job_uses_retry_episode_spec_when_present(self):
|
||||
command = APP.app_support.command_for_job(
|
||||
{
|
||||
"query": "Queue Show",
|
||||
"quality": "best",
|
||||
"episodes": "1-12",
|
||||
"retry_episodes": "3-12",
|
||||
"mode": "dub",
|
||||
},
|
||||
download_path="/tmp/kaizoku-staging",
|
||||
)
|
||||
|
||||
self.assertEqual(command[command.index("--episodes") + 1], "3-12")
|
||||
|
||||
def test_download_watchlist_item_queues_full_episode_range_for_selected_mode(self):
|
||||
item = {
|
||||
"show_id": "show-42",
|
||||
|
||||
Reference in New Issue
Block a user