manifest: set appropriate cache entry when clearing _dirlogcache()
manifestrevlog applies to any manifest, not just the root manifest.
Resetting the cache and populating its root entry with self is not
correct when the instance does not refer to the root manifest.
This has no test fallout. So I'm guessing we only ever call
clearcaches() on the root manifest. Or we have no test coverage that
are impacted by a bad cache on a non-root manifestrevlog.
Differential Revision: https://phab.mercurial-scm.org/D4275
from __future__ import absolute_import
import os
from mercurial import (
dispatch,
ui as uimod,
)
def testdispatch(cmd):
"""Simple wrapper around dispatch.dispatch()
Prints command and result value, but does not handle quoting.
"""
ui = uimod.ui.load()
ui.status(b"running: %s\n" % cmd)
req = dispatch.request(cmd.split(), ui)
result = dispatch.dispatch(req)
ui.status(b"result: %r\n" % result)
# create file 'foo', add and commit
f = open(b'foo', 'wb')
f.write(b'foo\n')
f.close()
testdispatch(b"--debug add foo")
testdispatch(b"--debug commit -m commit1 -d 2000-01-01 foo")
# append to file 'foo' and commit
f = open(b'foo', 'ab')
f.write(b'bar\n')
f.close()
# remove blackbox.log directory (proxy for readonly log file)
os.rmdir(b".hg/blackbox.log")
# replace it with the real blackbox.log file
os.rename(b".hg/blackbox.log-", b".hg/blackbox.log")
testdispatch(b"--debug commit -m commit2 -d 2000-01-02 foo")
# check 88803a69b24 (fancyopts modified command table)
testdispatch(b"--debug log -r 0")
testdispatch(b"--debug log -r tip")