From 4b1503849c33cb9b6c0c0cb8b3322204d396249e Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Fri, 19 Jun 2015 12:15:20 +1200 Subject: [PATCH] Strip markers from test requirements. Setuptools doesn't [yet] support markeres in tests_require parameters to setup(). While we need to get that fixed, we also need to support syncing marker constrained requirements from global-requirements. Since version constraints are needed to successfully port to Python3 this won't be a long term viable solution: but few of our test-only dependencies require version constraints, so we can do this in the interim. The ones that do - such as python-mysql - we're either moving away from, or centralising them into optional dependencies on other packages where the tests_require limitation shouldn't apply. Change-Id: I31adaf35c8d7b72fe3f8c9242cc356fe34d537e8 --- pbr/hooks/backwards.py | 3 ++- pbr/packaging.py | 10 ++++++++-- pbr/tests/testpackage/test-requirements.txt | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 pbr/tests/testpackage/test-requirements.txt diff --git a/pbr/hooks/backwards.py b/pbr/hooks/backwards.py index adbacbf6..01f07ab8 100644 --- a/pbr/hooks/backwards.py +++ b/pbr/hooks/backwards.py @@ -29,4 +29,5 @@ class BackwardsCompatConfig(base.BaseConfig): packaging.append_text_list( self.config, 'tests_require', packaging.parse_requirements( - packaging.TEST_REQUIREMENTS_FILES)) + packaging.TEST_REQUIREMENTS_FILES, + strip_markers=True)) diff --git a/pbr/packaging.py b/pbr/packaging.py index 3bc625dd..ebdfb093 100644 --- a/pbr/packaging.py +++ b/pbr/packaging.py @@ -81,7 +81,7 @@ def get_reqs_from_files(requirements_files): return [] -def parse_requirements(requirements_files=None): +def parse_requirements(requirements_files=None, strip_markers=False): if requirements_files is None: requirements_files = get_requirements_files() @@ -104,7 +104,8 @@ def parse_requirements(requirements_files=None): # -r other-requirements.txt if line.startswith('-r'): req_file = line.partition(' ')[2] - requirements += parse_requirements([req_file]) + requirements += parse_requirements( + [req_file], strip_markers=strip_markers) continue try: @@ -130,6 +131,11 @@ def parse_requirements(requirements_files=None): reason = 'Index Location' if line is not None: + if strip_markers: + semi_pos = line.find(';') + if semi_pos < 0: + semi_pos = None + line = line[:semi_pos] requirements.append(line) else: log.info( diff --git a/pbr/tests/testpackage/test-requirements.txt b/pbr/tests/testpackage/test-requirements.txt new file mode 100644 index 00000000..f283aff5 --- /dev/null +++ b/pbr/tests/testpackage/test-requirements.txt @@ -0,0 +1 @@ +ordereddict;python_version=='2.6'