def assert_dist_cache(zip_safe): # type: (bool) -> None with nested(yield_pex_builder(zip_safe=zip_safe), temporary_dir(), temporary_filename()) as ( pb, pex_root, pex_file, ): pb.info.pex_root = pex_root pb.build(pex_file) with open_zip(pex_file) as zf: dists = PEXEnvironment._write_zipped_internal_cache( zf=zf, pex_info=pb.info) assert len(dists) == 1 original_location = normalize(dists[0].location) assert original_location.startswith( normalize(pb.info.install_cache)) # Call a second time to validate idempotence of caching. dists = PEXEnvironment._write_zipped_internal_cache(zf=None, pex_info=pb.info) assert len(dists) == 1 assert normalize(dists[0].location) == original_location
def test_write_zipped_internal_cache(): # zip_safe pex will not be written to install cache unless always_write_cache with nested(yield_pex_builder(zip_safe=True), temporary_dir(), temporary_filename()) as (pb, pex_root, pex_file): pb.info.pex_root = pex_root pb.build(pex_file) existing, new, zip_safe = PEXEnvironment._write_zipped_internal_cache( pex_file, pb.info) assert len(zip_safe) == 1 assert normalize(zip_safe[0].location).startswith( normalize(os.path.join(pex_file, pb.info.internal_cache))), ( 'loc: %s, cache: %s' % (normalize(zip_safe[0].location), normalize(os.path.join(pex_file, pb.info.internal_cache)))) pb.info.always_write_cache = True existing, new, zip_safe = PEXEnvironment._write_zipped_internal_cache( pex_file, pb.info) assert len(new) == 1 assert normalize(new[0].location).startswith( normalize(pb.info.install_cache)) # Check that we can read from the cache existing, new, zip_safe = PEXEnvironment._write_zipped_internal_cache( pex_file, pb.info) assert len(existing) == 1 assert normalize(existing[0].location).startswith( normalize(pb.info.install_cache)) # non-zip_safe pex will be written to install cache with nested(yield_pex_builder(zip_safe=False), temporary_dir(), temporary_filename()) as (pb, pex_root, pex_file): pb.info.pex_root = pex_root pb.build(pex_file) existing, new, zip_safe = PEXEnvironment._write_zipped_internal_cache( pex_file, pb.info) assert len(new) == 1 assert normalize(new[0].location).startswith( normalize(pb.info.install_cache)) original_location = normalize(new[0].location) # do the second time to validate idempotence of caching existing, new, zip_safe = PEXEnvironment._write_zipped_internal_cache( pex_file, pb.info) assert len(existing) == 1 assert normalize(existing[0].location) == original_location