mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Fix parsing version of virtualenv
salt 3001 fails on Debian unstable: ``` ====================================================================== ERROR: test_thin_dir (unit.utils.test_thin.SSHThinTestCase) [CPU:0.0%|MEM:69.8%] Test the thin dir to make sure salt-call can run ---------------------------------------------------------------------- Traceback (most recent call last): File "/<<PKGBUILDDIR>>/tests/unit/utils/test_thin.py", line 1312, in test_thin_dir with VirtualEnv() as venv: File "/<<PKGBUILDDIR>>/tests/support/helpers.py", line 1659, in __enter__ self._create_virtualenv() File "/<<PKGBUILDDIR>>/tests/support/helpers.py", line 1718, in _create_virtualenv sminion.functions.virtualenv.create( File "/<<PKGBUILDDIR>>/salt/modules/virtualenv_mod.py", line 204, in create virtualenv_version_info = virtualenv_ver(venv_bin, user=user, **kwargs) File "/<<PKGBUILDDIR>>/salt/modules/virtualenv_mod.py", line 60, in virtualenv_ver [int(i) for i in version.split("rc")[0].split(".")] File "/<<PKGBUILDDIR>>/salt/modules/virtualenv_mod.py", line 60, in <listcomp> [int(i) for i in version.split("rc")[0].split(".")] ValueError: invalid literal for int() with base 10: '23+ds' ---------------------------------------------------------------------- ``` The python3-virtualenv package in Debian unstable has version `20.0.23+ds-1`. Therefore strip the trailing `+ds` from the version before splitting it into its integer parts. Also remove duplicate calculation of `virtualenv_version_info`. Fixes #57734 Signed-off-by: Benjamin Drung <benjamin.drung@cloud.ionos.com>
This commit is contained in:
parent
0b3b7835dd
commit
d4a391ab5d
2 changed files with 24 additions and 5 deletions
|
@ -56,9 +56,6 @@ def virtualenv_ver(venv_bin, user=None, **kwargs):
|
|||
version = getattr(virtualenv, "__version__", None)
|
||||
if not version:
|
||||
version = virtualenv.virtualenv_version
|
||||
virtualenv_version_info = tuple(
|
||||
[int(i) for i in version.split("rc")[0].split(".")]
|
||||
)
|
||||
except ImportError:
|
||||
# Unable to import?? Let's parse the version from the console
|
||||
version_cmd = [venv_bin, "--version"]
|
||||
|
@ -71,10 +68,12 @@ def virtualenv_ver(venv_bin, user=None, **kwargs):
|
|||
"Returned data: {1}".format(version_cmd, ret)
|
||||
)
|
||||
# 20.0.0 virtualenv changed the --version output. find version number
|
||||
ver = "".join(
|
||||
version = "".join(
|
||||
[x for x in ret["stdout"].strip().split() if re.search(r"^\d.\d*", x)]
|
||||
)
|
||||
virtualenv_version_info = tuple([int(i) for i in ver.split("rc")[0].split(".")])
|
||||
virtualenv_version_info = tuple(
|
||||
[int(i) for i in re.sub(r"(rc|\+ds).*$", "", version).split(".")]
|
||||
)
|
||||
return virtualenv_version_info
|
||||
|
||||
|
||||
|
|
|
@ -391,3 +391,23 @@ class VirtualenvTestCase(TestCase, LoaderModuleMockMixin):
|
|||
with patch.dict(virtualenv_mod.__salt__, {"cmd.run_all": mock_ver}):
|
||||
ret = virtualenv_mod.virtualenv_ver(venv_bin="pyenv")
|
||||
assert ret == expt
|
||||
|
||||
def test_issue_57734_debian_package(self):
|
||||
virtualenv_mock = MagicMock()
|
||||
virtualenv_mock.__version__ = "20.0.23+ds"
|
||||
with patch.dict("sys.modules", {"virtualenv": virtualenv_mock}):
|
||||
ret = virtualenv_mod.virtualenv_ver(venv_bin="pyenv")
|
||||
self.assertEqual(ret, (20, 0, 23))
|
||||
|
||||
def test_issue_57734_debian_package_importerror(self):
|
||||
with ForceImportErrorOn("virtualenv"):
|
||||
mock_ver = MagicMock(
|
||||
return_value={
|
||||
"retcode": 0,
|
||||
"stdout": "virtualenv 20.0.23+ds from "
|
||||
"/usr/lib/python3/dist-packages/virtualenv/__init__.py",
|
||||
}
|
||||
)
|
||||
with patch.dict(virtualenv_mod.__salt__, {"cmd.run_all": mock_ver}):
|
||||
ret = virtualenv_mod.virtualenv_ver(venv_bin="pyenv")
|
||||
self.assertEqual(ret, (20, 0, 23))
|
||||
|
|
Loading…
Add table
Reference in a new issue