# HG changeset patch # User Durham Goode # Date 1418082114 28800 # Node ID 424d669118d323ca1aeb309f2a8a4631f69d1fe3 # Parent 9601229ed361d7844a9db6656eee0953c734c490 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 -r 9601229ed361 -r 424d669118d3 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Fri Dec 05 14:27:32 2014 -0800 +++ b/mercurial/cmdutil.py Mon Dec 08 15:41:54 2014 -0800 @@ -1795,7 +1795,7 @@ 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 -r 9601229ed361 -r 424d669118d3 tests/test-glog.t --- a/tests/test-glog.t Fri Dec 05 14:27:32 2014 -0800 +++ b/tests/test-glog.t Mon Dec 08 15:41:54 2014 -0800 @@ -1660,15 +1660,15 @@ (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 @@ (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 @@ (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