summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-03-31 01:56:19 +0000
committerGerrit Code Review <review@openstack.org>2014-03-31 01:56:19 +0000
commit02aeac0b1463926cec439b6eb0cd1d9b7dab1d8c (patch)
tree21d1fffd5c27b9a9bd7a4e14f151fa226f27e210
parent35b34b77bf9e8fc72bb2c50331c7ca16f7a9f78b (diff)
parent960385efd5bc2d9f2e93156524a4b207a1ab7332 (diff)
downloadpbr-02aeac0b1463926cec439b6eb0cd1d9b7dab1d8c.tar.gz
Merge "Add support for nested requirements files"
-rw-r--r--pbr/packaging.py7
-rw-r--r--pbr/tests/test_packaging.py15
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'])