From b2c6410a391448fb933e3c288df79020e9e14af9 Mon Sep 17 00:00:00 2001 From: Ralf Schmitt Date: Fri, 28 Dec 2012 01:53:10 +0100 Subject: [PATCH] handle package names case insensitive in filter_latest_pkgs we probably also need to normalize _ vs - someday --- pypiserver/manage.py | 10 ++++++---- tests/test_manage.py | 9 +++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pypiserver/manage.py b/pypiserver/manage.py index 1c24ecb..7d17816 100644 --- a/pypiserver/manage.py +++ b/pypiserver/manage.py @@ -61,10 +61,12 @@ def filter_latest_pkgs(pkgs): pkgname2latest = {} for x in pkgs: - if x.pkgname not in pkgname2latest: - pkgname2latest[x.pkgname] = x - elif x.parsed_version > pkgname2latest[x.pkgname].parsed_version: - pkgname2latest[x.pkgname] = x + pkgname = x.pkgname.lower() + + if pkgname not in pkgname2latest: + pkgname2latest[pkgname] = x + elif x.parsed_version > pkgname2latest[pkgname].parsed_version: + pkgname2latest[pkgname] = x return pkgname2latest.values() diff --git a/tests/test_manage.py b/tests/test_manage.py index f0ea461..65418e2 100755 --- a/tests/test_manage.py +++ b/tests/test_manage.py @@ -56,3 +56,12 @@ def test_filter_latest_pkgs(): pkgs = [pkgfile_from_path(x) for x in paths] assert frozenset(filter_latest_pkgs(pkgs)) == frozenset(pkgs[1:]) + + +def test_filter_latest_pkgs_case_insensitive(): + paths = ["/home/ralf/greenlet-0.2.zip", + "/home/ralf/foo/baz-1.0.zip" + "/home/ralf/bar/Greenlet-0.3.zip"] + pkgs = [pkgfile_from_path(x) for x in paths] + + assert frozenset(filter_latest_pkgs(pkgs)) == frozenset(pkgs[1:])