summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-05-25 02:56:41 +0000
committerZac Medico <zmedico@gentoo.org>2008-05-25 02:56:41 +0000
commitbafdfbde7c25bbff8206c87a669ab847d9995c29 (patch)
tree34d8f5e4e4bf0c012c01035fc54c36298eff2606 /pym
parent06b6ca8c388977140fda468d5d1763a2a4b68cba (diff)
downloadportage-bafdfbde7c25bbff8206c87a669ab847d9995c29.tar.gz
portage-bafdfbde7c25bbff8206c87a669ab847d9995c29.tar.bz2
portage-bafdfbde7c25bbff8206c87a669ab847d9995c29.zip
Fix isvalidatom() so tests pass, and add a USE deps case to the tests.
svn path=/main/trunk/; revision=10399
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/dep.py12
-rw-r--r--pym/portage/tests/dep/test_isvalidatom.py8
2 files changed, 12 insertions, 8 deletions
diff --git a/pym/portage/dep.py b/pym/portage/dep.py
index 6881b1734..75d4f4c47 100644
--- a/pym/portage/dep.py
+++ b/pym/portage/dep.py
@@ -557,6 +557,7 @@ def dep_getusedeps( depend ):
open_bracket = depend.find( '[', open_bracket+1 )
return tuple(use_list)
+_valid_category = re.compile("^\w[\w-]*")
_invalid_atom_chars_regexp = re.compile("[()|@]")
def isvalidatom(atom, allow_blockers=False):
@@ -585,10 +586,13 @@ def isvalidatom(atom, allow_blockers=False):
return 0
if allow_blockers and atom.startswith("!"):
atom = atom[1:]
- try:
- mycpv_cps = catpkgsplit(dep_getcpv(atom))
- except InvalidData:
- return 0
+ cpv = dep_getcpv(atom)
+ if cpv:
+ if _valid_category.match(catsplit(cpv)[0]) is None:
+ return 0
+ mycpv_cps = catpkgsplit(cpv)
+ else:
+ mycpv_cps = None
operator = get_operator(atom)
if operator:
if operator[0] in "<>" and remove_slot(atom).endswith("*"):
diff --git a/pym/portage/tests/dep/test_isvalidatom.py b/pym/portage/tests/dep/test_isvalidatom.py
index 512d9b465..2b99b3dcb 100644
--- a/pym/portage/tests/dep/test_isvalidatom.py
+++ b/pym/portage/tests/dep/test_isvalidatom.py
@@ -13,8 +13,7 @@ class IsValidAtom(TestCase):
"""
def testIsValidAtom(self):
-
- self.todo = True
+
tests = [ ( "sys-apps/portage", True ),
( "=sys-apps/portage-2.1", True ),
( "=sys-apps/portage-2.1*", True ),
@@ -26,9 +25,10 @@ class IsValidAtom(TestCase):
( "sys-apps/portage:foo", True ),
( "sys-apps/portage-2.1:foo", False ),
( "sys-apps/portage-2.1:", False ),
+ ( "=sys-apps/portage-2.2*:foo[bar][-baz][doc?][-build?]", True ),
( ">~cate-gory/foo-1.0", False ),
- ( ">~category/foo-1.0", True ),
- ( "<~category/foo-1.0", True ),
+ ( ">~category/foo-1.0", False ),
+ ( "<~category/foo-1.0", False ),
( "###cat/foo-1.0", False ),
( "~sys-apps/portage", False ),
( "portage", False ) ]