##// END OF EJS Templates
ancestor.deepest: ignore ninteresting while building result (issue3984)...
Siddharth Agarwal -
r19504:2fa30361 stable
parent child Browse files
Show More
@@ -1388,8 +1388,7 b' static PyObject *find_deepest(indexObjec'
1388 if (dict == NULL)
1388 if (dict == NULL)
1389 goto bail;
1389 goto bail;
1390
1390
1391 j = ninteresting;
1391 for (i = 0; i < revcount; i++) {
1392 for (i = 0; i < revcount && j > 0; i++) {
1393 PyObject *key;
1392 PyObject *key;
1394
1393
1395 if ((final & (1 << i)) == 0)
1394 if ((final & (1 << i)) == 0)
@@ -1403,7 +1402,6 b' static PyObject *find_deepest(indexObjec'
1403 Py_DECREF(Py_None);
1402 Py_DECREF(Py_None);
1404 goto bail;
1403 goto bail;
1405 }
1404 }
1406 j -= 1;
1407 }
1405 }
1408
1406
1409 keys = PyDict_Keys(dict);
1407 keys = PyDict_Keys(dict);
@@ -1,4 +1,4 b''
1 from mercurial import ancestor
1 from mercurial import ancestor, commands, hg, ui, util
2
2
3 # graph is a dict of child->parent adjacency lists for this graph:
3 # graph is a dict of child->parent adjacency lists for this graph:
4 # o 13
4 # o 13
@@ -101,6 +101,36 b' def test_lazyancestors():'
101 s = genlazyancestors([11, 13], stoprev=6, inclusive=True)
101 s = genlazyancestors([11, 13], stoprev=6, inclusive=True)
102 printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0])
102 printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0])
103
103
104
105 # The C gca algorithm requires a real repo. These are textual descriptions of
106 # dags that have been known to be problematic.
107 dagtests = [
108 '+2*2*2/*3/2',
109 '+3*3/*2*2/*4*4/*4/2*4/2*2',
110 ]
111 def test_gca():
112 u = ui.ui()
113 for i, dag in enumerate(dagtests):
114 repo = hg.repository(u, 'gca%d' % i, create=1)
115 cl = repo.changelog
116 if not util.safehasattr(cl.index, 'ancestors'):
117 # C version not available
118 return
119
120 commands.debugbuilddag(u, repo, dag)
121 # Compare the results of the Python and C versions. This does not
122 # include choosing a winner when more than one gca exists -- we make
123 # sure both return exactly the same set of gcas.
124 for a in cl:
125 for b in cl:
126 cgcas = sorted(cl.index.ancestors(a, b))
127 pygcas = sorted(ancestor.ancestors(cl.parentrevs, a, b))
128 if cgcas != pygcas:
129 print "test_gca: for dag %s, gcas for %d, %d:" % (dag, a, b)
130 print " C returned: %s" % cgcas
131 print " Python returned: %s" % pygcas
132
104 if __name__ == '__main__':
133 if __name__ == '__main__':
105 test_missingancestors()
134 test_missingancestors()
106 test_lazyancestors()
135 test_lazyancestors()
136 test_gca()
General Comments 0
You need to be logged in to leave comments. Login now