Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 36fe20ce6a3223450d54e69f56dcbdd86c72c510
Author: Richard Marko <rmarko(a)fedoraproject.org>
Date: Tue Dec 10 16:02:50 2013 +0100
[frontend] smarter package name parsing
Signed-off-by: Richard Marko <rmarko(a)fedoraproject.org>
---------------------------------------------------------------
copr.spec | 2 ++
coprs_frontend/coprs/helpers.py | 12 ++++++++----
.../coprs/views/coprs_ns/coprs_general.py | 4 ++--
coprs_frontend/tests/test_helpers.py | 6 ++++--
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/copr.spec b/copr.spec
index a08c781..b470078 100644
--- a/copr.spec
+++ b/copr.spec
@@ -93,6 +93,7 @@ Requires: python-whoosh >= 2.5.3
Requires: pytest
Requires: python-flexmock
Requires: python-decorator
+Requires: yum
%if 0%{?rhel} < 7 && 0%{?rhel} > 0
BuildRequires: python-argparse
%endif
@@ -105,6 +106,7 @@ BuildRequires: python-flask-whooshee
BuildRequires: python-pylibravatar
BuildRequires: python-flask-wtf
BuildRequires: pytest
+BuildRequires: yum
BuildRequires: python-flexmock
BuildRequires: python-decorator
diff --git a/coprs_frontend/coprs/helpers.py b/coprs_frontend/coprs/helpers.py
index 7cde668..f4efac0 100644
--- a/coprs_frontend/coprs/helpers.py
+++ b/coprs_frontend/coprs/helpers.py
@@ -6,6 +6,8 @@ import flask
from coprs import constants
+from rpmUtils.miscutils import splitFilename
+
def generate_api_token(size=30):
""" Generate a random string used as token to access the API
remotely.
@@ -101,13 +103,15 @@ class Paginator(object):
return flask.url_for(request.endpoint, **args)
-def guess_package_name(pkg):
+def parse_package_name(pkg):
"""
- Guess package name from possibly incomplete nvra string.
-
- Return part of `pkg` up until numeric part is found (e.g. version string)
+ Parse package name from possibly incomplete nvra string.
"""
+ if pkg.count('.') >= 3 and pkg.count('-') >= 2:
+ return splitFilename(pkg)[0]
+
+ # doesn't seem like valid pkg string, try to guess package name
result = ''
pkg = pkg.replace('.rpm', '').replace('.src', '')
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 6d0a8bf..8d96c32 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -21,7 +21,7 @@ from coprs.views.coprs_ns import coprs_ns
from coprs.logic import builds_logic
from coprs.logic import coprs_logic
-from coprs.helpers import guess_package_name
+from coprs.helpers import parse_package_name
@coprs_ns.route('/', defaults = {'page': 1})
@@ -389,7 +389,7 @@ def copr_build_monitor(username, coprname):
for pkg_url in build.pkgs.split():
pkg = os.path.basename(pkg_url)
- pkg_name = guess_package_name(pkg)
+ pkg_name = parse_package_name(pkg)
if pkg_name in out:
continue
diff --git a/coprs_frontend/tests/test_helpers.py b/coprs_frontend/tests/test_helpers.py
index 74f029c..a278d05 100644
--- a/coprs_frontend/tests/test_helpers.py
+++ b/coprs_frontend/tests/test_helpers.py
@@ -1,4 +1,4 @@
-from coprs.helpers import guess_package_name
+from coprs.helpers import parse_package_name
from tests.coprs_test_case import CoprsTestCase
@@ -17,7 +17,9 @@ class TestHelpers(CoprsTestCase):
'copr-frontend-1.14-1.git.65.9ba5393.fc20.noarch':
'copr-frontend',
'noversion.fc20.src.rpm': 'noversion',
'nothing': 'nothing',
+ 'ruby193': 'ruby193',
+ 'xorg-x11-fonts-ISO8859-1-75dpi-7.1-2.1.el5.noarch.rpm':
'xorg-x11-fonts-ISO8859-1-75dpi',
}
for pkg, expected in EXP.iteritems():
- assert guess_package_name(pkg) == expected
+ assert parse_package_name(pkg) == expected