[PATCH 6 of 9] revset.bisect: add new 'untested' set to the bisect keyword

Yann E. MORIN yann.morin.1998 at anciens.enib.fr
Sun Sep 18 18:31:17 CDT 2011


 mercurial/hbisect.py |   4 +++
 mercurial/revset.py  |   1 +
 tests/test-bisect2.t |  54 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 59 insertions(+), 0 deletions(-)


# HG changeset patch
# User "Yann E. MORIN" <yann.morin.1998 at anciens.enib.fr>
# Date 1316262800 -7200
# Node ID 0c84cac333c65fc9872160a197b25c088fa8e241
# Parent  2c1e879d5a719c2ea9f6287c389172567c159784
revset.bisect: add new 'untested' set to the bisect keyword

The 'untested' set is made of changesets that are in the bisection range
but for which the status is still unknown, and that can later be used to
further decide on the bisection outcome.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at anciens.enib.fr>

diff --git a/mercurial/hbisect.py b/mercurial/hbisect.py
--- a/mercurial/hbisect.py
+++ b/mercurial/hbisect.py
@@ -161,6 +161,7 @@
     - ``good``, ``bad``, ``skip``: as the names imply
     - ``range``              : all csets taking part in the bisection
     - ``pruned``             : good|bad|skip, excluding out-of-range csets
+    - ``untested``           : csets whose fate is yet unknown
     """
     state = load_state(repo)
     if status in ('good', 'bad', 'skip'):
@@ -194,6 +195,9 @@
         elif status == 'pruned':
             # We do not want skipped csets that are out-of-range
             return [c for c in range if c in (goods | bads | skips)]
+        elif status == 'untested':
+            # Return the csets in range that are not pruned
+            return [c for c in range if not c in (goods | bads | skips)]
 
         else:
             raise error.ParseError(_('invalid bisect state'))
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -242,6 +242,7 @@
 
     - ``range``      : all csets taking part in the bisection
     - ``pruned``     : good|bad|skip, excluding out-of-range csets
+    - ``untested``   : csets whose fate is yet unknown
     """
     status = getstring(x, _("bisect requires a string")).lower()
     return [r for r in subset if r in hbisect.get(repo, status)]
diff --git a/tests/test-bisect2.t b/tests/test-bisect2.t
--- a/tests/test-bisect2.t
+++ b/tests/test-bisect2.t
@@ -252,6 +252,21 @@
   $ hg bisect -b 17   # -> update to rev 6
   Testing changeset 6:a214d5d3811a (15 changesets remaining, ~3 tests)
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ hg log -q -r 'bisect(untested)'
+  1:4ca5088da217
+  2:051e12f87bf1
+  3:0950834f0a9c
+  4:5c668c22234f
+  5:385a529b6670
+  6:a214d5d3811a
+  8:dab8161ac8fc
+  9:3c77083deb4a
+  10:429fcd26f52d
+  11:82ca6f06eccd
+  12:9f259202bbe7
+  13:b0a32c86eb31
+  15:857b178a7cf3
+  16:609d82a7ebae
   $ hg bisect -g      # -> update to rev 13
   Testing changeset 13:b0a32c86eb31 (9 changesets remaining, ~3 tests)
   3 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -296,6 +311,16 @@
   10:429fcd26f52d
   13:b0a32c86eb31
   17:228c06deef46
+  $ hg log -q -r 'bisect(untested)'
+  1:4ca5088da217
+  2:051e12f87bf1
+  3:0950834f0a9c
+  4:5c668c22234f
+  5:385a529b6670
+  11:82ca6f06eccd
+  12:9f259202bbe7
+  15:857b178a7cf3
+  16:609d82a7ebae
 
 complex bisect test 2  # first good rev is 13
 
@@ -310,6 +335,17 @@
   $ hg bisect -b      # -> update to rev 12
   Testing changeset 12:9f259202bbe7 (5 changesets remaining, ~2 tests)
   3 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg log -q -r 'bisect(untested)'
+  2:051e12f87bf1
+  3:0950834f0a9c
+  4:5c668c22234f
+  5:385a529b6670
+  8:dab8161ac8fc
+  9:3c77083deb4a
+  11:82ca6f06eccd
+  12:9f259202bbe7
+  13:b0a32c86eb31
+  15:857b178a7cf3
   $ hg bisect -b      # -> update to rev 13
   Testing changeset 13:b0a32c86eb31 (3 changesets remaining, ~1 tests)
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -520,9 +556,15 @@
   13:b0a32c86eb31
   15:857b178a7cf3
   17:228c06deef46
+  $ hg log -q -r 'bisect(untested)'
+  12:9f259202bbe7
+  16:609d82a7ebae
   $ hg bisect --extend
   Extending search to changeset 8:dab8161ac8fc
   2 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ hg log -q -r 'bisect(untested)'
+  12:9f259202bbe7
+  16:609d82a7ebae
   $ hg bisect -g # dab8161ac8fc
   Testing changeset 9:3c77083deb4a (3 changesets remaining, ~1 tests)
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -550,6 +592,10 @@
   13:b0a32c86eb31
   15:857b178a7cf3
   17:228c06deef46
+  $ hg log -q -r 'bisect(untested)'
+  10:429fcd26f52d
+  12:9f259202bbe7
+  16:609d82a7ebae
 
 user adds irrelevant but consistent information (here: -g 2) to bisect state
 
@@ -558,9 +604,15 @@
   $ hg bisect -g 8
   Testing changeset 11:82ca6f06eccd (3 changesets remaining, ~1 tests)
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg log -q -r 'bisect(untested)'
+  11:82ca6f06eccd
+  12:9f259202bbe7
   $ hg bisect -g 2
   Testing changeset 11:82ca6f06eccd (3 changesets remaining, ~1 tests)
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg log -q -r 'bisect(untested)'
+  11:82ca6f06eccd
+  12:9f259202bbe7
   $ hg bisect -b
   The first bad revision is:
   changeset:   11:82ca6f06eccd
@@ -578,3 +630,5 @@
   8:dab8161ac8fc
   11:82ca6f06eccd
   13:b0a32c86eb31
+  $ hg log -q -r 'bisect(untested)'
+  12:9f259202bbe7


More information about the Mercurial-devel mailing list