fix: normalize ambience loudness for v0.2.5

This commit is contained in:
oz
2026-10-14 12:12:13 +00:00
parent 812540c743
commit 91aff66445
390 changed files with 97709 additions and 257 deletions
+26 -1
View File
@@ -71,7 +71,7 @@ class AmbienceConversion(unittest.TestCase):
self.assertEqual(actual["conversion"]["seekMethod"], "full decode then sample trim")
expected["conversion"]["seekMethod"] = actual["conversion"]["seekMethod"]
self.assertEqual(actual, expected)
self.assertEqual(len(calls), 2)
self.assertEqual(len(calls), 5)
self.assertLess(calls[0].index("-ss"), calls[0].index("-i"))
self.assertNotIn("-ss", calls[1])
self.assertIn("aresample=24000,atrim=start_sample=24000:end_sample=312000,asetpts=N/SR/TB", calls[1])
@@ -286,6 +286,31 @@ class AtomicPublication(unittest.TestCase):
with self.assertRaises(ValueError): self.run_generate()
self.assert_prior()
def test_real_loudness_measurement_failure_preserves_prior_directory(self):
"""최종 실측 FFmpeg만 실패시켜 원자 교환 전 실패 전파를 확인한다."""
import subprocess
from unittest.mock import patch
run = subprocess.run
def fail_measurement(command, **kwargs):
if any("ebur128=" in str(arg) for arg in command):
raise subprocess.CalledProcessError(1, command, stderr=b"injected measurement failure")
return run(command, **kwargs)
with patch.object(audio.subprocess, "run", side_effect=fail_measurement):
with self.assertRaises(subprocess.CalledProcessError): self.run_generate()
self.assert_prior()
def test_actual_target_or_true_peak_violation_preserves_prior_directory(self):
"""manifest가 정상이라고 주장해도 별도 실측 위반은 공개하지 않는다."""
from unittest.mock import patch
for metric, value in (("integratedLUFS", -34.0), ("truePeakDBTP", -5.0), ("integratedLUFS", float("nan"))):
with self.subTest(metric=metric):
stats = {"integratedLUFS": -32.5, "truePeakDBTP": -7.0,
"loudnessRangeLU": 1.0, "thresholdLUFS": -42.5}
stats[metric] = value
with patch.object(audio, "measure_loudness", return_value=stats, create=True):
with self.assertRaises(ValueError): self.run_generate()
self.assert_prior()
def test_exchange_failure_preserves_prior_directory(self):
from unittest.mock import patch
import ctypes