Mercurial > public > mercurial-scm > hg-stable
diff tests/run-tests.py @ 33721:eeed23508383
run-tests: drop required (feature !) style lines when the output is missing
Essentially, these were acting as a verbose (?) flag, since they weren't being
dropped when required. Foozy has a nice description [1]. Basically, a couple
more places needed to check the features before treating it as optional.
I don't like how test-run-tests.py had to be hacked, but _hghave() can't be made
a static method. The test change was a change while developing `debugssl`,
prior to tightening up the cases where the message is printed, that this fix
would have caught.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/101941.html
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 18 Jul 2017 00:12:44 -0400 |
parents | cc96449f00c9 |
children | 1fa6023240f4 |
line wrap: on
line diff
--- a/tests/run-tests.py Mon Jul 24 10:34:32 2017 +0200 +++ b/tests/run-tests.py Tue Jul 18 00:12:44 2017 -0400 @@ -1359,7 +1359,7 @@ while i < len(els): el = els[i] - r = TTest.linematch(el, lout) + r = self.linematch(el, lout) if isinstance(r, str): if r == '+glob': lout = el[:-1] + ' (glob)\n' @@ -1385,9 +1385,7 @@ if m: conditions = [c for c in m.group(2).split(' ')] - if self._hghave(conditions)[0]: - lout = el - else: + if not self._hghave(conditions)[0]: optional.append(i) i += 1 @@ -1416,9 +1414,16 @@ while expected.get(pos, None): el = expected[pos].pop(0) if el: - if (not optline.match(el) - and not el.endswith(b" (?)\n")): - break + if not el.endswith(b" (?)\n"): + m = optline.match(el) + if m: + conditions = [c for c in m.group(2).split(' ')] + + if self._hghave(conditions)[0]: + # Don't append as optional line + continue + else: + break postout.append(b' ' + el) if lcmd: @@ -1481,8 +1486,7 @@ res += re.escape(c) return TTest.rematch(res, l) - @staticmethod - def linematch(el, l): + def linematch(self, el, l): retry = False if el == l: # perfect match (fast) return True @@ -1493,8 +1497,11 @@ else: m = optline.match(el) if m: + conditions = [c for c in m.group(2).split(' ')] + el = m.group(1) + b"\n" - retry = "retry" + if not self._hghave(conditions)[0]: + retry = "retry" # Not required by listed features if el.endswith(b" (esc)\n"): if PYTHON3: