From a17aa4830feeb20d7f1b4bf7df4d5be92371e12b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Tue, 30 Mar 2010 14:27:53 +0200 Subject: [PATCH] [entropy.tools] add is_valid_package_tag function --- libraries/entropy/tools.py | 17 +++++++++++++++++ libraries/tests/tools.py | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/libraries/entropy/tools.py b/libraries/entropy/tools.py index 55c45fd25..2259eddf1 100644 --- a/libraries/entropy/tools.py +++ b/libraries/entropy/tools.py @@ -2116,6 +2116,23 @@ def compare_versions(ver1, ver2): r2 = 0 return r1 - r2 +tag_regexp = re.compile("^([A-Za-z0-9+_.-]+)?$") +def is_valid_package_tag(dep): + """ + docstring_title + + @param dep: + @type dep: + @return: + @rtype: + """ + match = tag_regexp.match(dep) + if not match: + return False + if not match.groups(): + return False + return True + def entropy_compare_package_tags(tag_a, tag_b): """ Compare two Entropy package tags using builtin cmp(). diff --git a/libraries/tests/tools.py b/libraries/tests/tools.py index c04f4be1f..dd5af38ad 100644 --- a/libraries/tests/tools.py +++ b/libraries/tests/tools.py @@ -113,6 +113,14 @@ class ToolsTest(unittest.TestCase): self.assert_(not et.is_valid_ascii(non_valid)) + def test_valid_package_tag(self): + valid = "ciao" + invalids = ["òpl", "hello,hello", "#hello"] + self.assert_(et.is_valid_package_tag(valid)) + for invalid in invalids: + self.assert_(not et.is_valid_package_tag(invalid)) + + def test_is_valid_unicode(self): valid = "ciao" valid2 = const_convert_to_unicode("òèàò", 'utf-8')