Skip to content

Commit

Permalink
rosdep resovle retuns pkg<=0.0 not 'pkg<=0.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
k-okada committed May 10, 2020
1 parent fc816c5 commit 6d09a34
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
12 changes: 8 additions & 4 deletions src/rosdep2/platforms/pip.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,12 @@ def pip_detect(pkgs, exec_fn=None):
if fallback_to_pip_show:
for pkg in [p for p in pkgs if p not in ret_list]:
# does not see retcode but stdout for old pip to check if installed
pkg_name = pkg
if any(x in pkg for x in ['>', '<', '=']):
import re
pkg_name = re.split('[^a-zA-Z0-9]', pkg)[0]
proc = subprocess.Popen(
pip_cmd + ['show', pkg],
pip_cmd + ['show', pkg_name],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)
Expand Down Expand Up @@ -171,7 +175,7 @@ def resolve(self, rosdep, rosdep_args):
pip_specify_version = True
if pip_specify_version:
for i, package in list(enumerate(packages)):
packages[i] = "'" + package + "'"
packages[i] = package

return packages

Expand All @@ -191,9 +195,9 @@ def get_install_command(self, resolved, interactive=True, reinstall=False, quiet
packages = self.get_packages_to_install(resolved, reinstall=reinstall)
if not packages:
return []
cmd = pip_cmd + ['install', '-U']
cmd = pip_cmd + ['install']
if quiet:
cmd.append('-q')
if reinstall:
cmd.append('-I')
return [self.elevate_priv(cmd + [p]) for p in packages]
return [self.elevate_priv(cmd + [p] if any(x in p for x in ['>', '<', '=']) else cmd + ['-U'] + [p]) for p in packages]
20 changes: 10 additions & 10 deletions test/test_rosdep_pip.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,20 +87,20 @@ def test_PackageManagerInstaller_resolve():
assert ['baz', 'bar'] == installer.resolve(Dependency('baz'), ['baz', 'bar'])

# version_eq
assert ["'baz==1.0'"] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ["'baz==1.0'", "'bar==1.0'"] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(packages=['baz', 'bar']))
assert ['baz==1.0'] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ['baz==1.0', 'bar==1.0'] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(packages=['baz', 'bar']))
# version_gte
assert ["'baz>=1.0'"] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ["'baz>=1.0'", "'bar>=1.0'"] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(packages=['baz', 'bar']))
assert ['baz>=1.0'] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ['baz>=1.0', 'bar>=1.0'] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(packages=['baz', 'bar']))
# version_lte
assert ["'baz<=1.0'"] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ["'baz<=1.0'", "'bar<=1.0'"] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(packages=['baz', 'bar']))
assert ['baz<=1.0'] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ['baz<=1.0', 'bar<=1.0'] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(packages=['baz', 'bar']))
# version_gt
assert ["'baz>1.0'"] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ["'baz>1.0'", "'bar>1.0'"] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(packages=['baz', 'bar']))
assert ['baz>1.0'] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ['baz>1.0', 'bar>1.0'] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(packages=['baz', 'bar']))
# version_lt
assert ["'baz<1.0'"] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ["'baz<1.0'", "'bar<1.0'"] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(packages=['baz', 'bar']))
assert ['baz<1.0'] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
assert ['baz<1.0', 'bar<1.0'] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(packages=['baz', 'bar']))
# test invalid data
try:
installer.resolve({}, 0)
Expand Down

0 comments on commit 6d09a34

Please sign in to comment.