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