def test_tar_bz2_in_cache_not_extracted(): """ Test that if a .tar.bz2 exists in the package cache (not extracted), and the complementary .conda package is requested, the .tar.bz2 package in the cache is used by default. """ with make_temp_package_cache() as pkgs_dir: copy(join(CHANNEL_DIR, subdir, zlib_tar_bz2_fn), join(pkgs_dir, zlib_tar_bz2_fn)) pfe = ProgressiveFetchExtract((zlib_tar_bz2_prec, )) pfe.prepare() assert len(pfe.cache_actions) == 1 assert len(pfe.extract_actions) == 1 pfe.execute() pkgs_dir_files = listdir(pkgs_dir) assert zlib_base_fn in pkgs_dir_files assert zlib_tar_bz2_fn in pkgs_dir_files # Now ensure download/extract for the complementary .conda package uses the # extracted .tar.bz2 pfe = ProgressiveFetchExtract((zlib_conda_prec, )) pfe.prepare() assert len(pfe.cache_actions) == 0 assert len(pfe.extract_actions) == 0
def test_instantiating_package_cache_when_both_tar_bz2_and_conda_exist_read_only( ): """ If both .tar.bz2 and .conda packages exist in a read-only package cache, but neither is unpacked, the .conda package should be preferred and pcrec loaded from that package. """ with make_temp_package_cache() as pkgs_dir: # instantiate to create magic file PackageCacheData(pkgs_dir) # copy .tar.bz2 to package cache cache_action = CacheUrlAction( "%s/%s/%s" % (CONDA_PKG_REPO, subdir, zlib_tar_bz2_fn), pkgs_dir, zlib_tar_bz2_fn, ) cache_action.verify() cache_action.execute() cache_action.cleanup() # copy .conda to package cache cache_action = CacheUrlAction( "%s/%s/%s" % (CONDA_PKG_REPO, subdir, zlib_conda_fn), pkgs_dir, zlib_conda_fn, ) cache_action.verify() cache_action.execute() cache_action.cleanup() make_read_only(join(pkgs_dir, PACKAGE_CACHE_MAGIC_FILE)) PackageCacheData._cache_.clear() pcd = PackageCacheData(pkgs_dir) pcrecs = tuple(pcd.iter_records()) assert len(pcrecs) == 1 pcrec = pcrecs[0] # no repodata_record.json file should be created assert not isfile( join(pkgs_dir, zlib_base_fn, "info", "repodata_record.json")) assert pcrec.fn == zlib_conda_fn assert pcrec.md5 == "edad165fc3d25636d4f0a61c42873fbc" assert pcrec.size == 112305 pkgs_dir_files = listdir(pkgs_dir) assert zlib_base_fn not in pkgs_dir_files assert zlib_tar_bz2_fn in pkgs_dir_files assert zlib_conda_fn in pkgs_dir_files
def test_instantiating_package_cache_when_both_tar_bz2_and_conda_exist_read_only(): """ If both .tar.bz2 and .conda packages exist in a read-only package cache, but neither is unpacked, the .conda package should be preferred and pcrec loaded from that package. """ with make_temp_package_cache() as pkgs_dir: # instantiate to create magic file PackageCacheData(pkgs_dir) # copy .tar.bz2 to package cache cache_action = CacheUrlAction( "%s/%s/%s" % (CONDA_PKG_REPO, subdir, zlib_tar_bz2_fn), pkgs_dir, zlib_tar_bz2_fn, ) cache_action.verify() cache_action.execute() cache_action.cleanup() # copy .conda to package cache cache_action = CacheUrlAction( "%s/%s/%s" % (CONDA_PKG_REPO, subdir, zlib_conda_fn), pkgs_dir, zlib_conda_fn, ) cache_action.verify() cache_action.execute() cache_action.cleanup() make_read_only(join(pkgs_dir, PACKAGE_CACHE_MAGIC_FILE)) PackageCacheData._cache_.clear() pcd = PackageCacheData(pkgs_dir) pcrecs = tuple(pcd.iter_records()) assert len(pcrecs) == 1 pcrec = pcrecs[0] # no repodata_record.json file should be created assert not isfile(join(pkgs_dir, zlib_base_fn, "info", "repodata_record.json")) assert pcrec.fn == zlib_conda_fn assert pcrec.md5 == "edad165fc3d25636d4f0a61c42873fbc" assert pcrec.size == 112305 pkgs_dir_files = listdir(pkgs_dir) assert zlib_base_fn not in pkgs_dir_files assert zlib_tar_bz2_fn in pkgs_dir_files assert zlib_conda_fn in pkgs_dir_files
def test_instantiating_package_cache_when_both_tar_bz2_and_conda_exist(): """ If both .tar.bz2 and .conda packages exist in a writable package cache, but neither is unpacked, the .conda package should be preferred and unpacked in place. """ with make_temp_package_cache() as pkgs_dir: # copy .tar.bz2 to package cache cache_action = CacheUrlAction( "%s/%s/%s" % (CONDA_PKG_REPO, subdir, zlib_tar_bz2_fn), pkgs_dir, zlib_tar_bz2_fn, ) cache_action.verify() cache_action.execute() cache_action.cleanup() # copy .conda to package cache cache_action = CacheUrlAction( "%s/%s/%s" % (CONDA_PKG_REPO, subdir, zlib_conda_fn), pkgs_dir, zlib_conda_fn, ) cache_action.verify() cache_action.execute() cache_action.cleanup() PackageCacheData._cache_.clear() pcd = PackageCacheData(pkgs_dir) pcrecs = tuple(pcd.iter_records()) assert len(pcrecs) == 1 pcrec = pcrecs[0] # ensure the package was actually extracted by presence of repodata_record.json with open(join(pkgs_dir, zlib_base_fn, "info", "repodata_record.json")) as fh: repodata_record = json.load(fh) assert pcrec.fn == zlib_conda_fn == repodata_record["fn"] assert pcrec.md5 == repodata_record["md5"] pkgs_dir_files = listdir(pkgs_dir) assert zlib_base_fn in pkgs_dir_files assert zlib_tar_bz2_fn in pkgs_dir_files assert zlib_conda_fn in pkgs_dir_files
def test_tar_bz2_in_cache_not_extracted(): """ Test that if a .tar.bz2 exists in the package cache (not extracted), and the complementary .conda package is requested, the .tar.bz2 package in the cache is used by default. """ with make_temp_package_cache() as pkgs_dir: copy(join(CHANNEL_DIR, subdir, zlib_tar_bz2_fn), join(pkgs_dir, zlib_tar_bz2_fn)) pfe = ProgressiveFetchExtract((zlib_tar_bz2_prec,)) pfe.prepare() assert len(pfe.cache_actions) == 1 assert len(pfe.extract_actions) == 1 pfe.execute() pkgs_dir_files = listdir(pkgs_dir) assert zlib_base_fn in pkgs_dir_files assert zlib_tar_bz2_fn in pkgs_dir_files # Now ensure download/extract for the complementary .conda package uses the # extracted .tar.bz2 pfe = ProgressiveFetchExtract((zlib_conda_prec,)) pfe.prepare() assert len(pfe.cache_actions) == 0 assert len(pfe.extract_actions) == 0