diff options
Diffstat (limited to 'tests/integration')
-rw-r--r-- | tests/integration/pip_element.py (renamed from tests/integration/pip.py) | 0 | ||||
-rw-r--r-- | tests/integration/pip_source.py | 99 | ||||
-rw-r--r-- | tests/integration/project/files/pip-source/app1.py | 11 | ||||
-rw-r--r-- | tests/integration/project/files/pip-source/myreqs.txt | 1 | ||||
-rw-r--r-- | tests/integration/project/files/pypi-repo/app2/App2-0.1.tar.gz | bin | 0 -> 769 bytes | |||
-rw-r--r-- | tests/integration/project/files/pypi-repo/app2/index.html | 8 | ||||
-rw-r--r-- | tests/integration/project/files/pypi-repo/hellolib/HelloLib-0.1.tar.gz | bin | 0 -> 734 bytes | |||
-rw-r--r-- | tests/integration/project/files/pypi-repo/hellolib/index.html | 8 |
8 files changed, 127 insertions, 0 deletions
diff --git a/tests/integration/pip.py b/tests/integration/pip_element.py index 6c6de8bf8..6c6de8bf8 100644 --- a/tests/integration/pip.py +++ b/tests/integration/pip_element.py diff --git a/tests/integration/pip_source.py b/tests/integration/pip_source.py new file mode 100644 index 000000000..fc5b56a7c --- /dev/null +++ b/tests/integration/pip_source.py @@ -0,0 +1,99 @@ +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_import(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', + '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, ['/.bst_pip_downloads', + '/.bst_pip_downloads/HelloLib-0.1.tar.gz', + '/.bst_pip_downloads/App2-0.1.tar.gz']) + + +@pytest.mark.datafiles(DATA_DIR) +def test_pip_source_build(cli, tmpdir, datafiles): + project = os.path.join(datafiles.dirname, datafiles.basename) + element_path = os.path.join(project, 'elements') + element_name = 'pip/hello.bst' + + element = { + 'kind': 'manual', + 'depends': ['base.bst'], + 'sources': [ + { + 'kind': 'local', + 'path': 'files/pip-source' + }, + { + 'kind': 'pip', + 'url': 'file://{}'.format(os.path.realpath(os.path.join(project, 'files', 'pypi-repo'))), + 'requirements-files': ['myreqs.txt'], + 'packages': ['app2'] + } + ], + 'config': { + 'install-commands': [ + 'pip3 install --no-index --prefix %{install-root}/usr .bst_pip_downloads/*.tar.gz', + 'chmod +x app1.py', + 'install app1.py %{install-root}/usr/bin/' + ] + } + } + 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=['shell', element_name, '/usr/bin/app1.py']) + assert result.exit_code == 0 + assert result.output == """Hello App1! +""" diff --git a/tests/integration/project/files/pip-source/app1.py b/tests/integration/project/files/pip-source/app1.py new file mode 100644 index 000000000..ab1005ba4 --- /dev/null +++ b/tests/integration/project/files/pip-source/app1.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +from hellolib import hello + + +def main(): + hello('App1') + + +if __name__ == '__main__': + main() diff --git a/tests/integration/project/files/pip-source/myreqs.txt b/tests/integration/project/files/pip-source/myreqs.txt new file mode 100644 index 000000000..c805aae53 --- /dev/null +++ b/tests/integration/project/files/pip-source/myreqs.txt @@ -0,0 +1 @@ +hellolib diff --git a/tests/integration/project/files/pypi-repo/app2/App2-0.1.tar.gz b/tests/integration/project/files/pypi-repo/app2/App2-0.1.tar.gz Binary files differnew file mode 100644 index 000000000..86cb43cfe --- /dev/null +++ b/tests/integration/project/files/pypi-repo/app2/App2-0.1.tar.gz diff --git a/tests/integration/project/files/pypi-repo/app2/index.html b/tests/integration/project/files/pypi-repo/app2/index.html new file mode 100644 index 000000000..5bc72e47c --- /dev/null +++ b/tests/integration/project/files/pypi-repo/app2/index.html @@ -0,0 +1,8 @@ +<html> + <head> + <title>Links for app1</title> + </head> + <body> + <a href='App2-0.1.tar.gz'>App2-0.1.tar.gz</a><br /> + </body> +</html> diff --git a/tests/integration/project/files/pypi-repo/hellolib/HelloLib-0.1.tar.gz b/tests/integration/project/files/pypi-repo/hellolib/HelloLib-0.1.tar.gz Binary files differnew file mode 100644 index 000000000..3b0884c66 --- /dev/null +++ b/tests/integration/project/files/pypi-repo/hellolib/HelloLib-0.1.tar.gz diff --git a/tests/integration/project/files/pypi-repo/hellolib/index.html b/tests/integration/project/files/pypi-repo/hellolib/index.html new file mode 100644 index 000000000..eb9935c7f --- /dev/null +++ b/tests/integration/project/files/pypi-repo/hellolib/index.html @@ -0,0 +1,8 @@ +<html> + <head> + <title>Links for app1</title> + </head> + <body> + <a href='HelloLib-0.1.tar.gz'>HelloLib-0.1.tar.gz</a><br /> + </body> +</html> |