Etappe 10: Worker rippt wirklich — MakeMKV 1.18.4 + ioctl-Disc-Erkennung
Vorher: Dockerfile unbaubar (makepkg ist ein Arch-Paket, existiert in Debian nicht) und KEIN einziges Ripping-Tool im Image — jeder Rip endete sofort. Disc-Erkennung via `file -L` konnte auf Block-Devices strukturell nie etwas erkennen; ihr Test mockte sich die Ausgabe passend. - makemkv-oss/bin 1.18.4 multi-stage (bookworm-gepinnt), EULA via tmp/eula_accepted, Beta-Key aus MAKEMKV_APP_KEY (entrypoint.sh) - makemkvcon-Aufruf + PRGV-Parsing laut makemkv.com/developers/usage.txt (AGENTS Regel D), HandBrake raus aus dem Ripp-Pfad (KONZEPT: lossless=Muss) - detection.py: CDROM_DISC_STATUS + BLKGETSIZE64 (cd/dvd/bluray), pure classify() mit ehrlichen Tests - tasks.py: rip_disc als einziger Celery-Task, schreibt Status/Fortschritt nach Postgres (db.py), Ausgabe auf /app/media (Volume) statt totem /output Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""Tests für detection.py — die pure Zuordnung classify().
|
||||
|
||||
Der Vorgänger (`file -L` auf ein Block-Device) konnte strukturell nie etwas
|
||||
erkennen; sein Test mockte sich die file-Ausgabe passend zurecht. Hier wird
|
||||
nur echte, deterministische Logik getestet — die ioctl-Aufrufe selbst sind
|
||||
dünne Kernel-Durchreichen und werden im E2E-Test mit echter Disc bewiesen.
|
||||
"""
|
||||
|
||||
from detection import (
|
||||
BLURAY_MIN_BYTES,
|
||||
CDS_AUDIO,
|
||||
CDS_DATA_1,
|
||||
CDS_MIXED,
|
||||
classify,
|
||||
)
|
||||
|
||||
|
||||
def test_audio_cd():
|
||||
assert classify(CDS_AUDIO, 700 * 1024**2) == "cd"
|
||||
|
||||
|
||||
def test_mixed_mode_zaehlt_als_cd():
|
||||
assert classify(CDS_MIXED, 700 * 1024**2) == "cd"
|
||||
|
||||
|
||||
def test_dvd_unter_schwelle():
|
||||
# DVD9 = ~8,5 GB — liegt unter der 10-GB-Blu-ray-Schwelle
|
||||
assert classify(CDS_DATA_1, 8 * 1024**3) == "dvd"
|
||||
|
||||
|
||||
def test_bluray_ab_schwelle():
|
||||
# BD-SL = 25 GB
|
||||
assert classify(CDS_DATA_1, 25 * 1024**3) == "bluray"
|
||||
assert classify(CDS_DATA_1, BLURAY_MIN_BYTES) == "bluray"
|
||||
|
||||
|
||||
def test_unbekannter_status():
|
||||
assert classify(999, 5 * 1024**3) == "unknown"
|
||||
assert classify(0, 0) == "unknown"
|
||||
Reference in New Issue
Block a user