Bug #253002 - Add a new variable.invalidchar check for metadata variables that
authorZac Medico <zmedico@gentoo.org>
Mon, 12 Jan 2009 08:08:28 +0000 (08:08 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 12 Jan 2009 08:08:28 +0000 (08:08 -0000)
contain characters that are not part of the ASCII character set. (trunk r12365)

svn path=/main/branches/2.1.6/; revision=12436

bin/repoman
man/repoman.1

index 8eff9c077049d5a6537a2926660e33810eb4dc42..19f26ec6810563c43c504b6146edd1d666dba72e 100755 (executable)
@@ -298,6 +298,7 @@ qahelp={
        "ebuild.syntax":"Error generating cache entry for ebuild; typically caused by ebuild syntax error or digest verification failure",
        "ebuild.output":"A simple sourcing of the ebuild produces output; this breaks ebuild policy.",
        "ebuild.nesteddie":"Placing 'die' inside ( ) prints an error, but doesn't stop the ebuild.",
+       "variable.invalidchar":"A variable contains an invalid character that is not part of the ASCII character set",
        "variable.readonly":"Assigning a readonly variable",
        "LIVEVCS.stable":"This ebuild is a live checkout from a VCS but has stable keywords.",
        "IUSE.invalid":"This ebuild has a variable in IUSE that is not in the use.desc or use.local.desc file",
@@ -358,6 +359,8 @@ qawarnings = set((
 "LIVEVCS.stable"
 ))
 
+non_ascii_re = re.compile(r'[^\x00-\x7f]')
+
 missingvars=["KEYWORDS","LICENSE","DESCRIPTION","HOMEPAGE","SLOT"]
 allvars = set(x for x in portage.auxdbkeys if not x.startswith("UNUSED_"))
 allvars.discard("CDEPEND")
@@ -1100,6 +1103,17 @@ for x in scanlist:
                inherited = pkg.inherited
                live_ebuild = live_eclasses.intersection(inherited)
 
+               for k, v in myaux.iteritems():
+                       if not isinstance(v, basestring):
+                               continue
+                       m = non_ascii_re.search(v)
+                       if m is not None:
+                               stats["variable.invalidchar"] += 1
+                               fails["variable.invalidchar"].append(
+                                       ("%s: %s variable contains non-ASCII " + \
+                                       "character at position %s") % \
+                                       (relative_path, k, m.start() + 1))
+
                if not src_uri_error:
                        # Check that URIs don't reference a server from thirdpartymirrors.
                        for uri in portage.flatten(portage.dep.use_reduce(
index d6f196e018da09eb2857acdd8c778706247d5d93..64d014f7d45605279bb6ce0cd9394fa596da457b 100644 (file)
@@ -270,6 +270,10 @@ tracked in bugs.gentoo.org
 .B usage.obsolete
 The ebuild makes use of an obsolete construct
 .TP
+.B variable.invalidchar
+A variable contains an invalid character that is not part of the ASCII
+character set.
+.TP
 .B variable.readonly
 Assigning a readonly variable
 .TP