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'))