Files
Athena-Deck/test_separator_sources.py
T

20 lines
1.0 KiB
Python

import hashlib,json,tempfile,unittest
from pathlib import Path
from unittest.mock import patch
from separator_runtime import SOURCES,MODELS,verify_package,package_files
class Tests(unittest.TestCase):
def test_demucs_ensemble_complete_and_sources_https(self):
self.assertEqual(set(SOURCES),set(MODELS))
self.assertEqual(len(package_files('htdemucs_ft.yaml')),5)
self.assertEqual(len(package_files('htdemucs_6s.yaml')),2)
for recipe in SOURCES.values():
for f in recipe['files']:
self.assertEqual(len(f['sha256']),64)
self.assertTrue(all(u.startswith('https://') for u in f['urls']))
def test_wrong_or_missing_weight_rejected(self):
with tempfile.TemporaryDirectory() as d:
recipe={'x':{'files':[{'file':'weight','sha256':hashlib.sha256(b'valid').hexdigest()}]}}
with patch.dict(SOURCES,recipe):
self.assertFalse(verify_package(d,'x'));Path(d,'weight').write_bytes(b'wrong');self.assertFalse(verify_package(d,'x'))
Path(d,'weight').write_bytes(b'valid');self.assertTrue(verify_package(d,'x'))