20 lines
1.0 KiB
Python
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'))
|