[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