Mercurial > hg
changeset 22267:90cf454edd70
cvsps: add two more tiebreakers in cscmp
test-convert-cvs.t has been a little flaky for a while now. Add an
extra tiebreaker in cscmp so that all the cases in the test will sort
reliably.
Without this patch, test-convert-cvs.t failed after 346 runs. With
this patch, I stopped trying to get it to fail after 615 runs. While
not conclusive, that makes me pretty optimistic that this is a working
fix.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Thu, 21 Aug 2014 10:07:30 -0400 |
parents | 711de9dcb1d3 |
children | ca2e9cf77033 |
files | hgext/convert/cvsps.py |
diffstat | 1 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/cvsps.py Sat Aug 16 17:59:26 2014 +0900 +++ b/hgext/convert/cvsps.py Thu Aug 21 10:07:30 2014 -0400 @@ -631,7 +631,19 @@ odd.add((l, r)) d = -1 break + # By this point, the changesets are sufficiently compared that + # we don't really care about ordering. However, this leaves + # some race conditions in the tests, so we compare on the + # number of files modified and the number of branchpoints in + # each changeset to ensure test output remains stable. + # recommended replacement for cmp from + # https://docs.python.org/3.0/whatsnew/3.0.html + c = lambda x, y: (x > y) - (x < y) + if not d: + d = c(len(l.entries), len(r.entries)) + if not d: + d = c(len(l.branchpoints), len(r.branchpoints)) return d changesets.sort(cscmp)