Mercurial > hg
changeset 33934:6cc8f848b4c3
run-tests: make per-line condition support testcase names
7340465bd added multiple test cases support. The latter has a problem -
output lines cannot be made conditional with `#if`:
```
# COUNTEREXAMPLE: DOES NOT WORK
#testcases A B
$ command-foo
common ouput
#if A
A's ouput
#else
B's ouput
#endif
common ouput
```
That's not trivial to fix (even if it works in test, `run-tests.py -i` may
be suboptimal because diff algorithm does not know how to skip the `#if`
lines, even if it does, it may have trouble figuring out whether a changed
line belongs to inside a `#if` block or outside).
Matching output lines conditionally is useful. 4eec2f04a added per-line
condition support for hghave. This patch extends that to also support test
case names.
Differential Revision: https://phab.mercurial-scm.org/D466
author | Jun Wu <quark@fb.com> |
---|---|
date | Sun, 20 Aug 2017 09:46:27 -0700 |
parents | 39d253d088a9 |
children | 8e472f3b7c63 |
files | tests/run-tests.py tests/test-run-tests.t |
diffstat | 2 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Fri Aug 25 13:49:17 2017 -0700 +++ b/tests/run-tests.py Sun Aug 20 09:46:27 2017 -0700 @@ -1440,7 +1440,7 @@ conditions = [ c for c in m.group(2).split(b' ')] - if not self._hghave(conditions)[0]: + if not self._iftest(conditions): optional.append(i) i += 1 @@ -1474,7 +1474,7 @@ if m: conditions = [c for c in m.group(2).split(b' ')] - if self._hghave(conditions)[0]: + if self._iftest(conditions): # Don't append as optional line continue else: @@ -1555,7 +1555,7 @@ conditions = [c for c in m.group(2).split(b' ')] el = m.group(1) + b"\n" - if not self._hghave(conditions)[0]: + if not self._iftest(conditions): retry = "retry" # Not required by listed features if el.endswith(b" (esc)\n"):
--- a/tests/test-run-tests.t Fri Aug 25 13:49:17 2017 -0700 +++ b/tests/test-run-tests.t Sun Aug 20 09:46:27 2017 -0700 @@ -823,6 +823,20 @@ 2 #endif + $ cat >> test-cases.t <<'EOF' + > #if a + > $ NAME=A + > #else + > $ NAME=B + > #endif + > $ echo $NAME + > A (a !) + > B (b !) + > EOF + $ rt test-cases.t + .. + # Ran 2 tests, 0 skipped, 0 failed. + $ rm test-cases.t (reinstall)