31 lines
1.7 KiB
Python
31 lines
1.7 KiB
Python
"""Synthetic bridge contract; no real API token or GPU job."""
|
|
import io,json,tempfile,unittest,wave
|
|
from pathlib import Path
|
|
from types import SimpleNamespace
|
|
from unittest.mock import patch
|
|
import server
|
|
import deck_bridge as bridge
|
|
|
|
class BridgeTest(unittest.TestCase):
|
|
def test_forward_and_audio_library(self):
|
|
with tempfile.TemporaryDirectory() as temp:
|
|
root=Path(temp);connection=root/'connection.json';connection.write_text(json.dumps({'model':'Synthetic Music','token':'synthetic'}))
|
|
raw=io.BytesIO()
|
|
with wave.open(raw,'wb') as wav:wav.setnchannels(2);wav.setsampwidth(2);wav.setframerate(48000);wav.writeframes(b'\0'*192000)
|
|
job=SimpleNamespace(id='synthetic',cancel_flag=SimpleNamespace(is_set=lambda:False),push=lambda **k:None)
|
|
spec={'style':'synthetic piano','lyrics':'synthetic test','seed':123,'id':'synthetic','cot':'off'}
|
|
with patch.object(bridge,'CONNECTION',connection),patch.object(server,'OUTPUTS',root),patch.object(bridge,'request',return_value=raw.getvalue()) as request:
|
|
result=server.render_gguf(job,spec)
|
|
payload=request.call_args.args[1]
|
|
self.assertEqual(payload['model'],'Synthetic Music');self.assertEqual(payload['steps'],6)
|
|
self.assertEqual(payload['max_tokens'],9000);self.assertNotIn('abc',payload)
|
|
saved=result.save_artifacts(root/'take');self.assertEqual(saved['audio_seconds'],1)
|
|
self.assertTrue((root/'take/audio.flac').is_file())
|
|
def test_unsupported_score_does_not_start_deck(self):
|
|
with patch.object(bridge,'request') as request:
|
|
with self.assertRaisesRegex(RuntimeError,'Score'):
|
|
server.render_gguf(None,{'abc':'synthetic'})
|
|
request.assert_not_called()
|
|
|
|
if __name__=='__main__':unittest.main()
|