Allow deleting unused library files with profile guards

This commit is contained in:
Mikei386
2026-09-30 10:21:07 +02:00
parent 459150975b
commit ef80b2a0ca
5 changed files with 64 additions and 3 deletions
+27
View File
@@ -70,6 +70,33 @@ class ManagementTests(unittest.TestCase):
self.profiles.delete(dict(id=row['id'],revision=row['revision']))
self.assertEqual(Profiles(self.root/'profiles.json',self.catalog).rows,[])
self.assertTrue((self.root/'models'/self.model_id/'model.gguf').exists())
def test_library_delete_requires_profile_removal(self):
row=self.profiles.save(self.request())
with self.assertRaisesRegex(ValueError,'image-test'):
self.catalog.delete(self.model_id,self.profiles)
self.assertTrue((self.root/'models'/self.model_id/'model.gguf').exists())
self.profiles.delete(dict(id=row['id'],revision=row['revision']))
with self.assertRaisesRegex(ValueError,'geladen'):
self.catalog.delete(self.model_id,self.profiles,active_model_id=self.model_id)
result=self.catalog.delete(self.model_id,self.profiles)
self.assertEqual(result['deleted'],self.model_id)
self.assertFalse((self.root/'models'/self.model_id).exists())
self.assertEqual(self.catalog.status()['entries'],[])
def test_library_delete_checks_component_references(self):
row=self.profiles.save(self.request())
component_id='b'*64
target=self.root/'models'/component_id;target.mkdir()
(target/'model.safetensors').write_bytes(b'component')
(target/'entry.json').write_text(json.dumps(dict(repo='test/components',file='vae.safetensors',kind='image',size=9,revision='c'*40)))
self.profiles.rows[0]['components']={'vae':component_id}
with self.assertRaisesRegex(ValueError,'image-test'):
self.catalog.delete(component_id,self.profiles)
self.profiles.rows[0]['components']={}
self.profiles.rows[0]['parameters']['vision_projector']=component_id
with self.assertRaisesRegex(ValueError,'image-test'):
self.catalog.delete(component_id,self.profiles)
self.profiles.rows[0]['parameters']['vision_projector']=None
self.assertEqual(self.catalog.delete(component_id,self.profiles)['deleted'],component_id)
def test_clear_history_keeps_models_and_survives_restart(self):
old=self.catalog.status()['downloads'][0];self.catalog.dismiss(old['id'])
restart=Catalog(self.root/'models');self.assertEqual(restart.status()['downloads'],[]);self.assertEqual(len(restart.status()['entries']),1)