Bug #253002 - Add a new variable.invalidchar check for metadata variables that
authorZac Medico <zmedico@gentoo.org>
Mon, 29 Dec 2008 19:39:46 +0000 (19:39 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 29 Dec 2008 19:39:46 +0000 (19:39 -0000)
contain characters that are not part of the ASCII character set.

svn path=/main/trunk/; revision=12365

bin/repoman
man/repoman.1

index 441c76285c1647074b37916f790cc730c324ec91..b2ae0a81bd6e723c660350add072744844f225cd 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 dde0d15d2a83776200ede82348c153185ac919a8..0380adfd6964dc69b60e9f72f587ba1563908337 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