[PATCH 021 of 179 tests-refactor] run-tests: make rematch a static method of TTest

Gregory Szorc gregory.szorc at gmail.com
Fri May 2 13:37:38 CDT 2014


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1397949182 25200
#      Sat Apr 19 16:13:02 2014 -0700
# Branch stable
# Node ID c36d1d52594ae225ed244da1668103fd4e139466
# Parent  2ccbf07cec1272ca459f84810323c28e53044745
run-tests: make rematch a static method of TTest

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -688,26 +688,16 @@ needescape = re.compile(r'[\x00-\x08\x0b
 escapesub = re.compile(r'[\x00-\x08\x0b-\x1f\\\x7f-\xff]').sub
 escapemap = dict((chr(i), r'\x%02x' % i) for i in range(256))
 escapemap.update({'\\': '\\\\', '\r': r'\r'})
 def escapef(m):
     return escapemap[m.group(0)]
 def stringescape(s):
     return escapesub(escapef, s)
 
-def rematch(el, l):
-    try:
-        # use \Z to ensure that the regex matches to the end of the string
-        if os.name == 'nt':
-            return re.match(el + r'\r?\n\Z', l)
-        return re.match(el + r'\n\Z', l)
-    except re.error:
-        # el is an invalid regex
-        return False
-
 def globmatch(el, l):
     # The only supported special characters are * and ? plus / which also
     # matches \ on windows. Escaping of these characters is supported.
     if el + '\n' == l:
         if os.altsep:
             # matching on "/" is not needed for this line
             return '-glob'
         return True
@@ -722,17 +712,17 @@ def globmatch(el, l):
         elif c == '*':
             res += '.*'
         elif c == '?':
             res += '.'
         elif c == '/' and os.altsep:
             res += '[/\\\\]'
         else:
             res += re.escape(c)
-    return rematch(res, l)
+    return TTest.rematch(res, l)
 
 class TTest(Test):
     """A "t test" is a test backed by a .t file."""
 
     def _run(self, testtmp, replacements, env):
         f = open(self._path)
         lines = f.readlines()
         f.close()
@@ -937,26 +927,37 @@ class TTest(Test):
             postout += after.pop(pos)
 
         if warnonly == 2:
             exitcode = False # Set exitcode to warned.
 
         return exitcode, postout
 
     @staticmethod
+    def rematch(el, l):
+        try:
+            # use \Z to ensure that the regex matches to the end of the string
+            if os.name == 'nt':
+                return re.match(el + r'\r?\n\Z', l)
+            return re.match(el + r'\n\Z', l)
+        except re.error:
+            # el is an invalid regex
+            return False
+
+    @staticmethod
     def linematch(el, l):
         if el == l: # perfect match (fast)
             return True
         if el:
             if el.endswith(" (esc)\n"):
                 el = el[:-7].decode('string-escape') + '\n'
             if el == l or os.name == 'nt' and el[:-1] + '\r\n' == l:
                 return True
             if el.endswith(" (re)\n"):
-                return rematch(el[:-6], l)
+                return TTest.rematch(el[:-6], l)
             if el.endswith(" (glob)\n"):
                 return globmatch(el[:-8], l)
             if os.altsep and l.replace('\\', '/') == el:
                 return '+glob'
         return False
 
 wifexited = getattr(os, "WIFEXITED", lambda x: False)
 def run(cmd, wd, options, replacements, env):


More information about the Mercurial-devel mailing list