import tempfile import unittest from pathlib import Path from unittest.mock import Mock,patch from profiles import Profiles,LTX_REPO,LTX_FILE,LTX_COMPONENTS,video_recipe from catalog import Catalog,file_role from execution_setup import assess class VideoComponentsTests(unittest.TestCase): def test_recipe_assignment_and_worker_block(self): model=dict(id='main',repo=LTX_REPO,file=LTX_FILE,kind='video',revision='a'*40) entries=[dict(id=role,repo=LTX_REPO,file=info['files'][0],kind='video',revision='a'*40,size=10) for role,info in LTX_COMPONENTS.items()] lookup={x['id']:x for x in [model]+entries} c=Mock();c.entry.side_effect=lambda ident:lookup[ident] if ident in lookup else (_ for _ in ()).throw(ValueError('missing')) c.status.return_value={'entries':entries};c.files.return_value=dict(repo=LTX_REPO,revision='a'*40,files=[dict(name=x['file'],size=10) for x in entries],gated=True,auth_configured=True,license='ltx') with tempfile.TemporaryDirectory() as d: p=Profiles(Path(d)/'profiles.json',c);p.rows=[dict(id='p',revision=1,name='LTX',kind='video',model_id='main',parameters={})] result=p.components('main');self.assertEqual(len(result['requirements']),4);c.files.assert_called_with(LTX_REPO,'a'*40) self.assertTrue(all(len(r['available'])==1 for r in result['requirements'])) p.assign(dict(id='p',revision=1,components={x['id']:x['id'] for x in entries})) self.assertEqual(p.status()['profiles'],[]) entries[0]['revision']='b'*40 with self.assertRaises(ValueError):p._component(model,'text_encoder','text_encoder') with self.assertRaises(ValueError):p.assign(dict(id='p',revision=2,components={'unknown':''})) self.assertEqual(assess(model,{})['state'],'runtime_missing') def test_no_guesses_and_auxiliary_files_not_models(self): self.assertIsNone(video_recipe(dict(kind='video',repo='other/repo',file=LTX_FILE))) self.assertIsNone(video_recipe(dict(kind='video',repo=LTX_REPO,file=LTX_FILE.replace('bf16','nvfp4')))) for info in LTX_COMPONENTS.values():self.assertFalse(file_role(info['files'][0])['profile_eligible']) def test_metadata_uses_pinned_revision(self): with tempfile.TemporaryDirectory() as d,patch('catalog.metadata',return_value={'sha':'a'*40,'siblings':[]}) as get: c=Catalog(d);c.files(LTX_REPO,'a'*40) self.assertIn('/revision/'+'a'*40,get.call_args.args[0]) with self.assertRaises(ValueError):c.files(LTX_REPO,'main')