Mercurial > hg
changeset 33109:247bae545061
smartset: fix generatorset.last() to not return the first element (issue5609)
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 27 Jun 2017 23:50:22 +0900 |
parents | 208de1534ebd |
children | 6fdc1518983e |
files | mercurial/smartset.py tests/test-revset.t |
diffstat | 2 files changed, 16 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/smartset.py Mon Jun 26 21:11:02 2017 -0700 +++ b/mercurial/smartset.py Tue Jun 27 23:50:22 2017 +0900 @@ -766,6 +766,11 @@ be iterated more than once. When asked for membership it generates values until either it finds the requested one or has gone through all the elements in the generator + + >>> xs = generatorset([0, 1, 4], iterasc=True) + >>> assert xs.last() == xs.last() + >>> xs.last() # cached + 4 """ def __init__(self, gen, iterasc=None): """ @@ -937,7 +942,7 @@ # we need to consume all and try again for x in self._consumegen(): pass - return self.first() + return self.last() return next(it(), None) def __repr__(self):
--- a/tests/test-revset.t Mon Jun 26 21:11:02 2017 -0700 +++ b/tests/test-revset.t Tue Jun 27 23:50:22 2017 +0900 @@ -1337,6 +1337,16 @@ 0 1 +Test scmutil.revsingle() should return the last revision + + $ hg debugrevspec -s 'last(0::)' + * set: + <baseset slice=0:1 + <generatorset->> + 9 + $ hg identify -r '0::' --num + 9 + Test matching $ log 'matching(6)'