tests: move handling of None "el" out of linematch()
authorMartin von Zweigbergk <martinvonz@google.com>
Tue, 03 Jul 2018 15:30:22 -0700
changeset 38552 5a20b6090a6e
parent 38551 174484b2528d
child 38553 3fb46734508d
tests: move handling of None "el" out of linematch() It just seems odd for linematch() to know what None means. Differential Revision: https://phab.mercurial-scm.org/D3879
tests/run-tests.py
--- a/tests/run-tests.py	Mon Jul 02 00:05:54 2018 -0700
+++ b/tests/run-tests.py	Tue Jul 03 15:30:22 2018 -0700
@@ -1482,8 +1482,9 @@
 
                 optional = []
                 for i, el in enumerate(els):
-
-                    r = self.linematch(el, lout)
+                    r = False
+                    if el:
+                        r = self.linematch(el, lout)
                     if isinstance(r, str):
                         if r == '-glob':
                             lout = ''.join(el.rsplit(' (glob)', 1))
@@ -1606,41 +1607,40 @@
         return TTest.rematch(res, l)
 
     def linematch(self, el, l):
-        retry = False
         if el == l: # perfect match (fast)
             return True
-        if el:
-            if el.endswith(b" (?)\n"):
-                retry = "retry"
-                el = el[:-5] + b"\n"
+        retry = False
+        if el.endswith(b" (?)\n"):
+            retry = "retry"
+            el = el[:-5] + b"\n"
+        else:
+            m = optline.match(el)
+            if m:
+                conditions = [c for c in m.group(2).split(b' ')]
+
+                el = m.group(1) + b"\n"
+                if not self._iftest(conditions):
+                    retry = "retry"    # Not required by listed features
+
+        if el.endswith(b" (esc)\n"):
+            if PYTHON3:
+                el = el[:-7].decode('unicode_escape') + '\n'
+                el = el.encode('utf-8')
             else:
-                m = optline.match(el)
-                if m:
-                    conditions = [c for c in m.group(2).split(b' ')]
-
-                    el = m.group(1) + b"\n"
-                    if not self._iftest(conditions):
-                        retry = "retry"    # Not required by listed features
-
-            if el.endswith(b" (esc)\n"):
-                if PYTHON3:
-                    el = el[:-7].decode('unicode_escape') + '\n'
-                    el = el.encode('utf-8')
-                else:
-                    el = el[:-7].decode('string-escape') + '\n'
-            if el == l or os.name == 'nt' and el[:-1] + b'\r\n' == l:
+                el = el[:-7].decode('string-escape') + '\n'
+        if el == l or os.name == 'nt' and el[:-1] + b'\r\n' == l:
+            return True
+        if el.endswith(b" (re)\n"):
+            return TTest.rematch(el[:-6], l) or retry
+        if el.endswith(b" (glob)\n"):
+            # ignore '(glob)' added to l by 'replacements'
+            if l.endswith(b" (glob)\n"):
+                l = l[:-8] + b"\n"
+            return TTest.globmatch(el[:-8], l) or retry
+        if os.altsep:
+            _l = l.replace(b'\\', b'/')
+            if el == _l or os.name == 'nt' and el[:-1] + b'\r\n' == _l:
                 return True
-            if el.endswith(b" (re)\n"):
-                return TTest.rematch(el[:-6], l) or retry
-            if el.endswith(b" (glob)\n"):
-                # ignore '(glob)' added to l by 'replacements'
-                if l.endswith(b" (glob)\n"):
-                    l = l[:-8] + b"\n"
-                return TTest.globmatch(el[:-8], l) or retry
-            if os.altsep:
-                _l = l.replace(b'\\', b'/')
-                if el == _l or os.name == 'nt' and el[:-1] + b'\r\n' == _l:
-                    return True
         return retry
 
     @staticmethod