From 469e16c992dd8952871254a64355335a72afe35c Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Mon, 10 Jul 2017 14:55:24 -0400 Subject: [PATCH] handle versions with leading zeros, fixes #39 (#42) --- README.rst | 5 +++++ hashin.py | 4 ++-- setup.py | 2 +- tests/test_cli.py | 14 ++++++++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 965e63c..984d968 100644 --- a/README.rst +++ b/README.rst @@ -185,6 +185,11 @@ put it directly into ``pip``. Version History =============== +0.11.0 + * Cope with leading zeros in version numbers when figuring out what + the latest version is. + See https://github.com/peterbe/hashin/issues/39 + 0.10.0 * Latest version is now figured out by looking at all version numbers in the list of releases from the JSON payload. The pre releases are diff --git a/hashin.py b/hashin.py index c6c778e..6d05a41 100755 --- a/hashin.py +++ b/hashin.py @@ -186,10 +186,10 @@ def get_latest_version(data): for version in data['releases']: v = parse(version) if not v.is_prerelease: - all_versions.append(v) + all_versions.append((v, version)) all_versions.sort(reverse=True) # return the highest non-pre-release version - return str(all_versions[0]) + return str(all_versions[0][1]) def expand_python_version(version): diff --git a/setup.py b/setup.py index c90df58..d8ed11b 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ setup( name='hashin', - version='0.10.0', + version='0.11.0', description='Edits your requirements.txt by hashing them in', long_description=open(path.join(_here, 'README.rst')).read(), author='Peter Bengtsson', diff --git a/tests/test_cli.py b/tests/test_cli.py index 831697d..a9e2757 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -91,6 +91,20 @@ def test_get_latest_version_non_pre_release(self, murlopen): }) self.assertEqual(version, '0.999') + @mock.patch('hashin.urlopen') + def test_get_latest_version_non_pre_release_leading_zeros(self, murlopen): + version = hashin.get_latest_version({ + 'info': { + 'version': '0.3', + }, + 'releases': { + '0.04.13': {}, + '0.04.21': {}, + '0.04.09': {}, + } + }) + self.assertEqual(version, '0.04.21') + @mock.patch('hashin.urlopen') def test_get_hashes_error(self, murlopen):