Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
"""Regression tests for the exact-output optimization gate (no models needed)."""
|
|
|
|
import json
|
|
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
|
|
from compare_optimization import compare
|
|
|
|
|
|
class ComparisonTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.temp = tempfile.TemporaryDirectory()
|
|
self.addCleanup(self.temp.cleanup)
|
|
root = Path(self.temp.name)
|
|
self.before, self.after = root / "before.json", root / "after.json"
|
|
self.audio = [root / "before.wav", root / "after.wav"]
|
|
for path in self.audio:
|
|
path.write_bytes(b"test audio payload")
|
|
self.payload = {
|
|
"family": "mira_tts", "backend": "cpu", "model": "model.gguf",
|
|
"mode": "offline", "results": [{
|
|
"name": "repeat", "iteration": 1, "mode": "offline",
|
|
"audio_hash": "same", "samples": 48000, "sample_rate": 48000,
|
|
"channels": 1, "audio_seconds": 1.0, "event_count": 0,
|
|
"wall_ms": 1000, "audio_out": str(self.audio[0]),
|
|
}],
|
|
}
|
|
self.before.write_text(json.dumps(self.payload), encoding="utf-8")
|
|
self.payload["results"][0]["audio_out"] = str(self.audio[1])
|
|
self.payload["results"][0]["wall_ms"] = 900
|
|
self.save_after()
|
|
|
|
def save_after(self):
|
|
self.after.write_text(json.dumps(self.payload), encoding="utf-8")
|
|
|
|
def test_identical_output(self):
|
|
self.assertIn("10.0%", compare(self.before, self.after)[0])
|
|
|
|
def test_changed_wav_even_with_same_reported_hash(self):
|
|
self.audio[1].write_bytes(b"changed audio")
|
|
with self.assertRaisesRegex(ValueError, "WAV bytes differ"):
|
|
compare(self.before, self.after)
|
|
|
|
def test_different_metadata(self):
|
|
self.payload["results"][0]["event_count"] = 2
|
|
self.save_after()
|
|
with self.assertRaisesRegex(ValueError, "event_count changed"):
|
|
compare(self.before, self.after)
|
|
|
|
def test_wrong_backend(self):
|
|
self.payload["backend"] = "vulkan"
|
|
self.save_after()
|
|
with self.assertRaisesRegex(ValueError, "different backend"):
|
|
compare(self.before, self.after)
|
|
|
|
def test_empty_results(self):
|
|
self.payload["results"] = []
|
|
self.save_after()
|
|
with self.assertRaisesRegex(ValueError, "empty results"):
|
|
compare(self.before, self.after)
|
|
|
|
def test_duplicate_results(self):
|
|
self.payload["results"].append(self.payload["results"][0])
|
|
self.save_after()
|
|
with self.assertRaisesRegex(ValueError, "duplicate request"):
|
|
compare(self.before, self.after)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|