[PATCH STABLE] log: fix log revset instability
Durham Goode
durham at fb.com
Tue Dec 9 00:06:07 UTC 2014
# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1418082114 28800
# Mon Dec 08 15:41:54 2014 -0800
# Node ID d5dbb3d633dd9299e4344e44a155e420c8b43aa7
# Parent 098a8c4c2627e08b60cc8a877d47c1507ddb6f0d
log: fix log revset instability
The log/graphlog revset was not producing stable results since it was
iterating over a dict. Now we sort before iterating to guarantee a fixed order.
This fixes some potential flakiness in the tests.
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1795,7 +1795,7 @@ def _makelogrevset(repo, pats, opts, rev
filematcher = lambda rev: match
expr = []
- for op, val in opts.iteritems():
+ for op, val in sorted(opts.iteritems()):
if not val:
continue
if op not in opt2revset:
diff --git a/tests/test-glog.t b/tests/test-glog.t
--- a/tests/test-glog.t
+++ b/tests/test-glog.t
@@ -1660,15 +1660,15 @@ Test --follow on a directory
(group
(and
(func
+ ('symbol', 'ancestors')
+ ('symbol', '.'))
+ (func
('symbol', '_matchfiles')
(list
(list
('string', 'r:')
('string', 'd:relpath'))
- ('string', 'p:dir')))
- (func
- ('symbol', 'ancestors')
- ('symbol', '.'))))
+ ('string', 'p:dir')))))
$ hg up -q tip
Test --follow on file not in parent revision
@@ -1685,15 +1685,15 @@ Test --follow and patterns
(group
(and
(func
+ ('symbol', 'ancestors')
+ ('symbol', '.'))
+ (func
('symbol', '_matchfiles')
(list
(list
('string', 'r:')
('string', 'd:relpath'))
- ('string', 'p:glob:*')))
- (func
- ('symbol', 'ancestors')
- ('symbol', '.'))))
+ ('string', 'p:glob:*')))))
Test --follow on a single rename
@@ -1862,15 +1862,15 @@ Test --removed
(group
(and
(func
+ ('symbol', 'ancestors')
+ ('symbol', '.'))
+ (func
('symbol', '_matchfiles')
(list
(list
('string', 'r:')
('string', 'd:relpath'))
- ('string', 'p:a')))
- (func
- ('symbol', 'ancestors')
- ('symbol', '.'))))
+ ('string', 'p:a')))))
Test --patch and --stat with --follow and --follow-first
More information about the Mercurial-devel
mailing list