@@ -814,6 +814,39 @@ def test_shapes_are_depscan_capture_shapes(self):
814814 self .assertLessEqual (set (vlt .SHAPES ), capture_names )
815815
816816
817+ class VltInstalledBytesTests (unittest .TestCase ):
818+ def test_holds_checks_root_and_nested_files_with_optional_package_prefix (self ):
819+ contents = {
820+ 'index.js' : {'before' : b'original entrypoint' , 'after' : b'patched entrypoint' },
821+ 'test/proto.js' : {'before' : b'original test' , 'after' : b'patched test' },
822+ }
823+ for prefix in ('' , 'package/' ):
824+ for side in ('before' , 'after' ):
825+ with self .subTest (prefix = prefix , side = side ), tempfile .TemporaryDirectory () as temp :
826+ root = Path (temp )
827+ package = root / 'node_modules' / 'minimist'
828+ record = {'files' : {
829+ prefix + name : {s + 'Hash' : vlt .git_hash (data ) for s , data in sides .items ()}
830+ for name , sides in contents .items ()
831+ }}
832+ cell = vlt .Cell ({'out' : root , 'record' : record }, '1.2.0' , 'vendored' , 'direct' )
833+ expected = {}
834+ for name , sides in contents .items ():
835+ path = package / name
836+ path .parent .mkdir (parents = True , exist_ok = True )
837+ path .write_bytes (sides [side ])
838+ expected [str (path .relative_to (root ))] = vlt .git_hash (sides [side ])
839+ self .assertEqual (cell .holds (root , '{}' , side ), (True , expected ))
840+ other_side = 'after' if side == 'before' else 'before'
841+ self .assertFalse (cell .holds (root , '{}' , other_side )[0 ])
842+
843+ nested = package / 'test' / 'proto.js'
844+ nested .write_bytes (b'corrupted' )
845+ self .assertFalse (cell .holds (root , '{}' , side )[0 ])
846+ nested .unlink ()
847+ self .assertFalse (cell .holds (root , '{}' , side )[0 ])
848+
849+
817850class VltConfigTests (unittest .TestCase ):
818851 """write_vlt_json follows the DESIGN §8.3 per-era registry table."""
819852
0 commit comments