diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-03-31 01:56:19 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-03-31 01:56:19 +0000 |
commit | 02aeac0b1463926cec439b6eb0cd1d9b7dab1d8c (patch) | |
tree | 21d1fffd5c27b9a9bd7a4e14f151fa226f27e210 | |
parent | 35b34b77bf9e8fc72bb2c50331c7ca16f7a9f78b (diff) | |
parent | 960385efd5bc2d9f2e93156524a4b207a1ab7332 (diff) | |
download | pbr-02aeac0b1463926cec439b6eb0cd1d9b7dab1d8c.tar.gz |
Merge "Add support for nested requirements files"
-rw-r--r-- | pbr/packaging.py | 7 | ||||
-rw-r--r-- | pbr/tests/test_packaging.py | 15 |
2 files changed, 22 insertions, 0 deletions
diff --git a/pbr/packaging.py b/pbr/packaging.py index 4d1332e..c4a5977 100644 --- a/pbr/packaging.py +++ b/pbr/packaging.py @@ -125,6 +125,13 @@ def parse_requirements(requirements_files=None): if (not line.strip()) or line.startswith('#'): continue + # Handle nested requirements files such as: + # -r other-requirements.txt + if line.startswith('-r'): + req_file = line.partition(' ')[2] + requirements += parse_requirements([req_file]) + continue + try: project_name = pkg_resources.Requirement.parse(line).project_name except ValueError: diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py index d01c4fb..abcc68d 100644 --- a/pbr/tests/test_packaging.py +++ b/pbr/tests/test_packaging.py @@ -39,6 +39,7 @@ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS import os +import tempfile import fixtures import mock @@ -145,3 +146,17 @@ class TestPresenceOfGit(base.BaseTestCase): '_run_shell_command') as _command: _command.side_effect = OSError self.assertEqual(False, packaging._git_is_installed()) + + +class TestNestedRequirements(base.BaseTestCase): + + def test_nested_requirement(self): + tempdir = tempfile.mkdtemp() + requirements = os.path.join(tempdir, 'requirements.txt') + nested = os.path.join(tempdir, 'nested.txt') + with open(requirements, 'w') as f: + f.write('-r ' + nested) + with open(nested, 'w') as f: + f.write('pbr') + result = packaging.parse_requirements([requirements]) + self.assertEqual(result, ['pbr']) |