Mercurial > hg
changeset 15155:f4a8d754cd0a
templates: add 'bisect' keyword to return a cset's bisect status
This new 'bisect' template expands to a cset's bisection status (good,
bad and so on...). There is also a new 'shortbisect' filter that yields
a single char representing the cset's bisection status.
It uses the two recently-added hbisect.label() and .shortlabel() functions.
Example output using the repository in test-bisect2.t, and some made-up
state of the 'end at merge' test (with graphlog, it's so explicit):
$ hg glog --template '{rev}:{node|short} {bisect}\n' \
-r 'bisect(range)|bisect(ignored)'
o 17:228c06deef46: bad
|
o 16:609d82a7ebae: bad (implicit)
|
o 15:857b178a7cf3: bad
|\
| o 13:b0a32c86eb31: good
| |
| o 12:9f259202bbe7: good (implicit)
| |
| o 11:82ca6f06eccd: good
| |
@ | 10:429fcd26f52d: untested
|\ \
| o | 9:3c77083deb4a: skipped
| |/
| o 8:dab8161ac8fc: good
| |
o | 6:a214d5d3811a: ignored
|\ \
| o | 5:385a529b6670: ignored
| | |
o | | 4:5c668c22234f: ignored
| | |
o | | 3:0950834f0a9c: ignored
|/ /
o / 2:051e12f87bf1: ignored
|/
And now the same with the short label:
$ hg log --template '{bisect|shortbisect} {rev}:{node|short}\n'
18:d42e18c7bc9b
B 17:228c06deef46
B 16:609d82a7ebae
B 15:857b178a7cf3
14:faa450606157
G 13:b0a32c86eb31
G 12:9f259202bbe7
G 11:82ca6f06eccd
U 10:429fcd26f52d
S 9:3c77083deb4a
G 8:dab8161ac8fc
7:50c76098bbf2
I 6:a214d5d3811a
I 5:385a529b6670
I 4:5c668c22234f
I 3:0950834f0a9c
I 2:051e12f87bf1
1:4ca5088da217
0:33b1f9bc8bc5
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
---|---|
date | Thu, 22 Sep 2011 01:36:01 +0200 |
parents | aa2e908c521e |
children | 143c78b4fc8c |
files | mercurial/templatefilters.py mercurial/templatekw.py tests/test-bisect3.t |
diffstat | 3 files changed, 133 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templatefilters.py Thu Sep 22 23:28:49 2011 +0200 +++ b/mercurial/templatefilters.py Thu Sep 22 01:36:01 2011 +0200 @@ -7,6 +7,7 @@ import cgi, re, os, time, urllib import encoding, node, util +import hbisect def addbreaks(text): """:addbreaks: Any text. Add an XHTML "<br />" tag before the end of @@ -268,6 +269,14 @@ """ return text[:12] +def shortbisect(text): + """:shortbisect: Any text. Treats `text` as a bisection status, and + returns a single-character representing the status (G: good, B: bad, + S: skipped, U: untested, I: ignored). Returns single space if `text` + is not a valid bisection status. + """ + return hbisect.shortlabel(text) or ' ' + def shortdate(text): """:shortdate: Date. Returns a date like "2006-09-18".""" return util.shortdate(text) @@ -347,6 +356,7 @@ "rfc3339date": rfc3339date, "rfc822date": rfc822date, "short": short, + "shortbisect": shortbisect, "shortdate": shortdate, "stringescape": stringescape, "stringify": stringify,
--- a/mercurial/templatekw.py Thu Sep 22 23:28:49 2011 +0200 +++ b/mercurial/templatekw.py Thu Sep 22 01:36:01 2011 +0200 @@ -7,6 +7,7 @@ from node import hex import patch, util, error +import hbisect def showlist(name, values, plural=None, **args): '''expand set of values. @@ -145,6 +146,10 @@ """:author: String. The unmodified author of the changeset.""" return ctx.user() +def showbisect(repo, ctx, templ, **args): + """:bisect: String. The changeset bisection status.""" + return hbisect.label(repo, ctx.node()) + def showbranch(**args): """:branch: String. The name of the branch on which the changeset was committed. @@ -288,6 +293,7 @@ # revcache - a cache dictionary for the current revision keywords = { 'author': showauthor, + 'bisect': showbisect, 'branch': showbranch, 'branches': showbranches, 'bookmarks': showbookmarks,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-bisect3.t Thu Sep 22 01:36:01 2011 +0200 @@ -0,0 +1,117 @@ +# Here we create a simple DAG which has just enough of the required +# topology to test all the bisection status labels: +# +# 13--14 +# / +# 0--1--2--3---------9--10--11--12 +# \ / +# 4--5--6--7--8 + + + $ hg init + + $ echo '0' >a + $ hg add a + $ hg ci -u test -d '0 0' -m '0' + $ echo '1' >a + $ hg ci -u test -d '0 1' -m '1' + +branch 2-3 + + $ echo '2' >b + $ hg add b + $ hg ci -u test -d '0 2' -m '2' + $ echo '3' >b + $ hg ci -u test -d '0 3' -m '3' + +branch 4-8 + + $ hg up -r 1 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo '4' >c + $ hg add c + $ hg ci -u test -d '0 4' -m '4' + created new head + $ echo '5' >c + $ hg ci -u test -d '0 5' -m '5' + $ echo '6' >c + $ hg ci -u test -d '0 6' -m '6' + $ echo '7' >c + $ hg ci -u test -d '0 7' -m '7' + $ echo '8' >c + $ hg ci -u test -d '0 8' -m '8' + +merge + + $ hg merge -r 3 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg ci -u test -d '0 9' -m '9=8+3' + + $ echo '10' >a + $ hg ci -u test -d '0 10' -m '10' + $ echo '11' >a + $ hg ci -u test -d '0 11' -m '11' + $ echo '12' >a + $ hg ci -u test -d '0 12' -m '12' + +unrelated branch + + $ hg up -r 3 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo '13' >d + $ hg add d + $ hg ci -u test -d '0 13' -m '13' + created new head + $ echo '14' >d + $ hg ci -u test -d '0 14' -m '14' + +mark changesets + + $ hg bisect --reset + $ hg bisect --good 4 + $ hg bisect --good 6 + $ hg bisect --bad 12 + Testing changeset 9:8bcbdb072033 (6 changesets remaining, ~2 tests) + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg bisect --bad 10 + Testing changeset 8:3cd112f87d77 (4 changesets remaining, ~2 tests) + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg bisect --skip 7 + Testing changeset 8:3cd112f87d77 (4 changesets remaining, ~2 tests) + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + +test template + + $ hg log --template '{rev}:{node|short} {bisect}\n' + 14:cecd84203acc + 13:86f7c8cdb6df + 12:a76089b5f47c bad + 11:5c3eb122d29c bad (implicit) + 10:b097cef2be03 bad + 9:8bcbdb072033 untested + 8:3cd112f87d77 untested + 7:577e237a73bd skipped + 6:e597fa2707c5 good + 5:b9cea37a76bc good (implicit) + 4:da6b357259d7 good + 3:e7f031aee8ca ignored + 2:b1ad1b6bcc5c ignored + 1:37f42ae8b45e good (implicit) + 0:b4e73ffab476 good (implicit) + $ hg log --template '{bisect|shortbisect} {rev}:{node|short}\n' + 14:cecd84203acc + 13:86f7c8cdb6df + B 12:a76089b5f47c + B 11:5c3eb122d29c + B 10:b097cef2be03 + U 9:8bcbdb072033 + U 8:3cd112f87d77 + S 7:577e237a73bd + G 6:e597fa2707c5 + G 5:b9cea37a76bc + G 4:da6b357259d7 + I 3:e7f031aee8ca + I 2:b1ad1b6bcc5c + G 1:37f42ae8b45e + G 0:b4e73ffab476