fix: harden utility export recovery
This commit is contained in:
+31
-1
@@ -73,6 +73,7 @@ class FakeExportRunner:
|
||||
"mp4": ".mp4",
|
||||
"matroska": ".mkv",
|
||||
"webm": ".webm",
|
||||
"mov": ".mov",
|
||||
}[self.container]
|
||||
for index in range(1, self.playlist_items + 1):
|
||||
(template.parent / f"{index:03d} - Tést Item {index} [id{index}]{extension}").write_bytes(
|
||||
@@ -112,7 +113,7 @@ class FakeExportRunner:
|
||||
],
|
||||
"format": {
|
||||
"format_name": "mov,mp4,m4a,3gp,3g2,mj2"
|
||||
if converted or self.container == "mp4"
|
||||
if converted or self.container in {"mp4", "mov"}
|
||||
else self.container
|
||||
},
|
||||
}
|
||||
@@ -240,6 +241,35 @@ class UtilityExportTests(unittest.TestCase):
|
||||
self.assertEqual(arguments[arguments.index("-c:a") + 1], "copy")
|
||||
self.assertNotIn("libx264", arguments)
|
||||
|
||||
def test_quicktime_alias_is_remuxed_instead_of_renamed_to_mp4(self):
|
||||
runner = FakeExportRunner(container="mov")
|
||||
result = self.manager(runner).enqueue_export(
|
||||
"https://www.youtube.com/watch?v=mov", "mp4", None, None
|
||||
)
|
||||
|
||||
self.assertEqual(self.store.get_export_job(result.job_id).status, "completed")
|
||||
arguments = runner.ffmpeg_calls[0]
|
||||
self.assertEqual(arguments[arguments.index("-c:v") + 1], "copy")
|
||||
self.assertEqual(arguments[arguments.index("-c:a") + 1], "copy")
|
||||
self.assertNotIn("libx264", arguments)
|
||||
|
||||
def test_export_reconciliation_is_submitted_to_dedicated_executor(self):
|
||||
export_executor = QueuedExecutor()
|
||||
manager = DownloadManager(
|
||||
self.config,
|
||||
self.store,
|
||||
runner=FakeExportRunner(),
|
||||
executor=ImmediateExecutor(),
|
||||
export_executor=export_executor,
|
||||
)
|
||||
|
||||
self.assertTrue(manager.schedule_export_reconciliation())
|
||||
self.assertEqual(len(export_executor.calls), 1)
|
||||
_, function, arguments, keyword_arguments = export_executor.calls[0]
|
||||
self.assertEqual(function, manager.reconcile_export_artifacts)
|
||||
self.assertEqual(arguments, ())
|
||||
self.assertEqual(keyword_arguments, {})
|
||||
|
||||
def test_lower_resolution_mp4_is_preserved_without_scaling(self):
|
||||
runner = FakeExportRunner(height=720)
|
||||
result = self.manager(runner).enqueue_export(
|
||||
|
||||
Reference in New Issue
Block a user