12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- """
- Test format classes.
- (Some of their code is unreachable through api.py)
- """
- import os
- from pathlib import Path
- import pytest
- from conda_package_handling.conda_fmt import CondaFormat_v2
- from conda_package_handling.tarball import CondaTarBZ2
- from .test_api import data_dir, test_package_name
- TEST_CONDA = Path(data_dir, test_package_name + ".conda")
- TEST_TARBZ = Path(data_dir, test_package_name + ".tar.bz2")
- def test_extract_create(tmpdir):
- for format, infile, outfile in (
- (CondaFormat_v2, TEST_CONDA, "newmock.conda"),
- (CondaTarBZ2, TEST_TARBZ, "newmock.tar.bz2"),
- ):
- both_path = Path(tmpdir, f"mkdirs-{outfile.split('.', 1)[-1]}")
- # these old APIs don't guarantee Path-like's
- format.extract(infile, str(both_path))
- assert sorted(os.listdir(both_path)) == sorted(["lib", "info"])
- if format == CondaFormat_v2:
- info_path = Path(tmpdir, "info-only")
- format.extract_info(TEST_CONDA, str(info_path)) # type: ignore
- assert os.listdir(info_path) == ["info"]
- filelist = [str(p.relative_to(both_path)) for p in both_path.rglob("*")]
- format.create(
- both_path,
- filelist,
- tmpdir / outfile,
- # compression_tuple is for libarchive compatibility. Instead, pass
- # compressor=(compressor factory function)
- compression_tuple=(".tar.zst", "zstd", "zstd:compression-level=1"),
- )
- assert (tmpdir / outfile).exists()
- with pytest.raises(ValueError):
- CondaFormat_v2.create(
- "", [], "", compressor=True, compression_tuple=("1", "2", "3") # type: ignore
- )
|