Image21-INT4 / tests /test_integrity.py
ixim's picture
Release verified Image21-INT4 conversion
9116984 verified
Raw History Blame Contribute Delete
1.69 kB
import copy
import hashlib
import tempfile
import unittest
from pathlib import Path
from scripts.integrity import validate_pair, verify_files
class IntegrityTests(unittest.TestCase):
def test_corrupted_weight_is_rejected_even_if_size_matches(self):
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / 'weight.safetensors'
path.write_bytes(b'bad')
rows = [{'path': path.name, 'size': 3, 'sha256': hashlib.sha256(b'yes').hexdigest()}]
with self.assertRaisesRegex(ValueError, 'SHA256'):
verify_files(Path(directory), rows)
path.write_bytes(b'yes')
self.assertEqual(len(verify_files(Path(directory), rows)), 1)
def test_missing_file_cannot_be_counted_as_verified(self):
with tempfile.TemporaryDirectory() as directory:
with self.assertRaises(FileNotFoundError):
verify_files(Path(directory), [{'path': 'missing', 'size': 3, 'sha256': 'x'}])
def test_pair_rejects_a_changed_edit_seed_or_setting(self):
row = {'case_id': 'edit', 'seed': 1000042, 'prompt': 'red sweater',
'width': 1024, 'height': 1024, 'steps': 40,
'cfg': 1.0, 'offload': 'model', 'input_sha256': 'abc',
'kv_cache': True, 'source_seed': 42}
validate_pair(row, copy.deepcopy(row))
for key, value in [('input_sha256', 'def'), ('steps', 20), ('seed', 42), ('source_seed', 7)]:
changed = dict(row, **{key: value})
with self.subTest(key=key), self.assertRaises(ValueError):
validate_pair(row, changed)
if __name__ == '__main__':
unittest.main()