import os import pytest from buildstream import _yaml from tests.testutils import cli_integration as cli from tests.testutils.integration import assert_contains pytestmark = pytest.mark.integration DATA_DIR = os.path.join( os.path.dirname(os.path.realpath(__file__)), "project" ) @pytest.mark.datafiles(DATA_DIR) def test_pip_source(cli, tmpdir, datafiles): project = os.path.join(datafiles.dirname, datafiles.basename) checkout = os.path.join(cli.directory, 'checkout') element_path = os.path.join(project, 'elements') element_name = 'pip/hello.bst' element = { 'kind': 'import', 'sources': [ { 'kind': 'local', 'path': 'files/pip-source' }, { 'kind': 'pip', 'python-exe': 'python3', 'index-url': 'file://{}'.format(os.path.realpath(os.path.join(project, 'files', 'pypi-repo'))), 'requirements-files': ['myreqs.txt'], 'packages': ['app2'] } ] } os.makedirs(os.path.dirname(os.path.join(element_path, element_name)), exist_ok=True) _yaml.dump(element, os.path.join(element_path, element_name)) result = cli.run(project=project, args=['track', element_name]) assert result.exit_code == 0 result = cli.run(project=project, args=['build', element_name]) assert result.exit_code == 0 result = cli.run(project=project, args=['checkout', element_name, checkout]) assert result.exit_code == 0 assert_contains(checkout, ['/bin', '/bin/app1', '/bin/app2'])