From: Zac Medico Date: Fri, 8 Jun 2012 02:51:48 +0000 (-0700) Subject: InheritEclass: avoid false positive in func regex X-Git-Tag: v2.2.0_alpha111~74 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=dcdfed5f9487f4232affc156518e05e00c10da5f;p=portage.git InheritEclass: avoid false positive in func regex --- diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py index 65f024ce4..2864d675d 100644 --- a/pym/repoman/checks.py +++ b/pym/repoman/checks.py @@ -469,7 +469,10 @@ class InheritEclass(LineCheck): self._ignore_missing = ignore_missing inherit_re = eclass self._inherit_re = re.compile(r'^(\s*|.*[|&]\s*)\binherit\s(.*\s)?%s(\s|$)' % inherit_re) - self._func_re = re.compile(r'\b(' + '|'.join(funcs) + r')\b') + # Match when the function is preceded only by leading whitespace or a shell + # operator such as (, {, |, ||, or &&. This prevents false postives in + # things like elog messages, as reported in bug #413285. + self._func_re = re.compile(r'(^|[|&{(])\s*\b(' + '|'.join(funcs) + r')\b') def new(self, pkg): self.repoman_check_name = 'inherit.missing' @@ -493,7 +496,7 @@ class InheritEclass(LineCheck): if s: self._func_call = True return '%s.eclass is not inherited, but "%s" found at line: %s' % \ - (self._eclass, s.group(0), '%d') + (self._eclass, s.group(2), '%d') elif not self._func_call: self._func_call = self._func_re.search(line)