debugcommands: avoid stack trace from debugindexstats in pure mode
This has been broken since I added it in d71e0ba34d9b (debugcommands:
add a debugindexstats command, 2018-08-08). This patch also fixes the
test.
Differential Revision: https://phab.mercurial-scm.org/D5152
--- a/mercurial/debugcommands.py Thu Oct 18 11:24:20 2018 -0400
+++ b/mercurial/debugcommands.py Thu Oct 18 10:11:08 2018 -0700
@@ -1168,7 +1168,10 @@
def debugindexstats(ui, repo):
"""show stats related to the changelog index"""
repo.changelog.shortest(nullid, 1)
- for k, v in sorted(repo.changelog.index.stats().items()):
+ index = repo.changelog.index
+ if not util.safehasattr(index, 'stats'):
+ raise error.Abort(_('debugindexstats only works with native code'))
+ for k, v in sorted(index.stats().items()):
ui.write('%s: %s\n' % (k, v))
@command('debuginstall', [] + cmdutil.formatteropts, '', norepo=True)
--- a/tests/test-debugcommands.t Thu Oct 18 11:24:20 2018 -0400
+++ b/tests/test-debugcommands.t Thu Oct 18 10:11:08 2018 -0700
@@ -176,7 +176,12 @@
debugdelta chain basic output
-#if reporevlogstore
+#if reporevlogstore pure
+ $ hg debugindexstats
+ abort: debugindexstats only works with native code
+ [255]
+#endif
+#if reporevlogstore no-pure
$ hg debugindexstats
node trie capacity: 4
node trie count: 2
@@ -186,7 +191,9 @@
node trie misses: 1
node trie splits: 1
revs in memory: 3
+#endif
+#if reporevlogstore no-pure
$ hg debugdeltachain -m
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio
0 1 1 -1 base 44 43 44 1.02326 44 0 0.00000