summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/integration/pip_source.py61
1 files changed, 59 insertions, 2 deletions
diff --git a/tests/integration/pip_source.py b/tests/integration/pip_source.py
index ed71636b2..3ba3a50b4 100644
--- a/tests/integration/pip_source.py
+++ b/tests/integration/pip_source.py
@@ -19,7 +19,7 @@ DATA_DIR = os.path.join(
@pytest.mark.datafiles(DATA_DIR)
-def test_pip_source_import(cli, datafiles, setup_pypi_repo):
+def test_pip_source_import_packages(cli, datafiles, setup_pypi_repo):
project = str(datafiles)
checkout = os.path.join(cli.directory, 'checkout')
element_path = os.path.join(project, 'elements')
@@ -49,7 +49,6 @@ def test_pip_source_import(cli, datafiles, setup_pypi_repo):
{
'kind': 'pip',
'url': 'file://{}'.format(os.path.realpath(pypi_repo)),
- 'requirements-files': ['myreqs.txt'],
'packages': [myreqs_packages]
}
]
@@ -78,6 +77,64 @@ def test_pip_source_import(cli, datafiles, setup_pypi_repo):
@pytest.mark.datafiles(DATA_DIR)
+def test_pip_source_import_requirements_files(cli, datafiles, setup_pypi_repo):
+ project = str(datafiles)
+ checkout = os.path.join(cli.directory, 'checkout')
+ element_path = os.path.join(project, 'elements')
+ element_name = 'pip/hello.bst'
+
+ # check that exotically named packages are imported correctly
+ myreqs_packages = 'hellolib'
+ dependencies = ['app2', 'app.3', 'app-4', 'app_5', 'app.no.6', 'app-no-7', 'app_no_8']
+ mock_packages = {
+ myreqs_packages: {
+ package: {} for package in dependencies
+ }
+ }
+
+ # create mock pypi repository
+ pypi_repo = os.path.join(project, 'files', 'pypi-repo')
+ os.makedirs(pypi_repo, exist_ok=True)
+ setup_pypi_repo(mock_packages, pypi_repo)
+
+ element = {
+ 'kind': 'import',
+ 'sources': [
+ {
+ 'kind': 'local',
+ 'path': 'files/pip-source'
+ },
+ {
+ 'kind': 'pip',
+ 'url': 'file://{}'.format(os.path.realpath(pypi_repo)),
+ 'requirements-files': ['myreqs.txt'],
+ }
+ ]
+ }
+ 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=['source', '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=['artifact', 'checkout', element_name, '--directory', 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',
+ '/.bst_pip_downloads/app.3-0.1.tar.gz',
+ '/.bst_pip_downloads/app-4-0.1.tar.gz',
+ '/.bst_pip_downloads/app_5-0.1.tar.gz',
+ '/.bst_pip_downloads/app.no.6-0.1.tar.gz',
+ '/.bst_pip_downloads/app-no-7-0.1.tar.gz',
+ '/.bst_pip_downloads/app_no_8-0.1.tar.gz'])
+
+
+@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.skipif(not HAVE_SANDBOX, reason='Only available with a functioning sandbox')
def test_pip_source_build(cli, datafiles, setup_pypi_repo):
project = str(datafiles)