diff options
Diffstat (limited to 'tests/integration/pip_element.py')
-rw-r--r-- | tests/integration/pip_element.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/integration/pip_element.py b/tests/integration/pip_element.py new file mode 100644 index 000000000..6c6de8bf8 --- /dev/null +++ b/tests/integration/pip_element.py @@ -0,0 +1,66 @@ +import os +import sys +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_build(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': 'pip', + 'variables': { + 'pip': 'pip3' + }, + 'depends': [{ + 'filename': 'base.bst' + }], + 'sources': [{ + 'kind': 'tar', + 'url': 'file://{}/files/hello.tar.xz'.format(project), + 'ref': 'ad96570b552498807abec33c06210bf68378d854ced6753b77916c5ed517610d' + + }] + } + 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=['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, ['/usr', '/usr/lib', '/usr/bin', + '/usr/bin/hello', '/usr/lib/python3.6']) + + +# Test running an executable built with pip +@pytest.mark.datafiles(DATA_DIR) +def test_pip_run(cli, tmpdir, datafiles): + # Create and build our test element + test_pip_build(cli, tmpdir, datafiles) + + project = os.path.join(datafiles.dirname, datafiles.basename) + element_name = 'pip/hello.bst' + + result = cli.run(project=project, args=['shell', element_name, '/usr/bin/hello']) + assert result.exit_code == 0 + assert result.output == 'Hello, world!\n' |