D466: run-tests: make per-line condition support testcase names
quark (Jun Wu)
phabricator at mercurial-scm.org
Mon Aug 21 23:19:45 UTC 2017
quark created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
https://phab.mercurial-scm.org/rHG7340465bd78819921cc7a07dfed17dc9ca573b7f 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. https://phab.mercurial-scm.org/rHG4eec2f04a672a9d53d305e885f762093b805e486 added per-line
condition support for hghave. This patch extends that to also support test
case names.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D466
AFFECTED FILES
tests/run-tests.py
tests/test-run-tests.t
CHANGE DETAILS
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -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)
diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -1425,7 +1425,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
@@ -1459,7 +1459,7 @@
if m:
conditions = [c for c in m.group(2).split(' ')]
- if self._hghave(conditions)[0]:
+ if self._iftest(conditions):
# Don't append as optional line
continue
else:
@@ -1540,7 +1540,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"):
To: quark, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list