When in strict mode, make paren_reduce() detect missing whitespace around
authorZac Medico <zmedico@gentoo.org>
Fri, 28 Mar 2008 12:08:27 +0000 (12:08 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 28 Mar 2008 12:08:27 +0000 (12:08 -0000)
parenthesis tokens and raise an InvalidDependString exception. Strict mode
is not enabled when handling installed packages, so this will only affect
repoman and packages that haven't been installed yet. Thanks to zlin for
reporting. (trunk r9471)

svn path=/main/branches/2.1.2/; revision=9556

pym/portage_dep.py

index 5bb9c05623f9bd651a2c51fd1841e98244c55f26..afcbfe6fab891544636099aa3b4458865cf2395a 100644 (file)
@@ -46,6 +46,8 @@ def strip_empty(myarr):
        """
        return [x for x in myarr if x]
 
+_paren_whitespace_re = re.compile(r'\S(\(|\))|(\(|\))\S')
+
 def paren_reduce(mystr,tokenize=1):
        """
        Take a string and convert all paren enclosed entities into sublists, optionally
@@ -64,6 +66,12 @@ def paren_reduce(mystr,tokenize=1):
        @rtype: Array
        @return: The reduced string in an array
        """
+       global _dep_check_strict, _paren_whitespace_re
+       if _dep_check_strict:
+               m = _paren_whitespace_re.search(mystr)
+               if m is not None:
+                       raise portage_exception.InvalidDependString(
+                               "missing space by parenthesis: '%s'" % m.group(0))
        mylist = []
        while mystr:
                left_paren = mystr.find("(")