""" Test conda commandline wrappers """ from tljh import conda import os import pytest import subprocess import tempfile @pytest.fixture(scope='module') def prefix(): """ Provide a temporary directory with a conda environment """ miniconda_version = '4.7.10' miniconda_installer_md5 = "1c945f2b3335c7b2b15130b1b2dc5cf4" with tempfile.TemporaryDirectory() as tmpdir: with conda.download_miniconda_installer(miniconda_version, miniconda_installer_md5) as installer_path: conda.install_miniconda(installer_path, tmpdir) conda.ensure_conda_packages(tmpdir, [ 'conda==4.5.8' ]) yield tmpdir def test_ensure_packages(prefix): """ Test installing packages in conda environment """ conda.ensure_conda_packages(prefix, ['numpy']) # Throws an error if this fails subprocess.check_call([ os.path.join(prefix, 'bin', 'python'), '-c', 'import numpy' ]) def test_ensure_pip_packages(prefix): """ Test installing pip packages in conda environment """ conda.ensure_conda_packages(prefix, ['pip']) conda.ensure_pip_packages(prefix, ['numpy']) # Throws an error if this fails subprocess.check_call([ os.path.join(prefix, 'bin', 'python'), '-c', 'import numpy' ]) def test_ensure_pip_requirements(prefix): """ Test installing pip packages with requirements.txt in conda environment """ conda.ensure_conda_packages(prefix, ['pip']) with tempfile.NamedTemporaryFile() as f: # Sample small package to test f.write('there'.encode()) f.flush() conda.ensure_pip_requirements(prefix, f.name) subprocess.check_call([ os.path.join(prefix, 'bin', 'python'), '-c', 'import there' ])