nodemap: add a test about racy commit during stream clone
That test show that the resulting client nodemap is different from the server
one. This happens because the server one transferred a corrupted node map. The
data file match the pre-commit content while the docket has post commit content.
As the result the nodemap was detected invalid and recomputed.
When running without the rust implementation, the code is also generating a new
datafile unconditionally, This mean the older file is no longer there are
transfer time, resulting in a crash.
We will fix this issue later, but we start with writing tests highlighting the
issue.
Differential Revision: https://phab.mercurial-scm.org/D10479
# extension to emulate interrupting filemerge._filemerge
from __future__ import absolute_import
from mercurial import (
error,
extensions,
filemerge,
)
def failfilemerge(
filemergefn, premerge, repo, wctx, mynode, orig, fcd, fco, fca, labels=None
):
raise error.Abort(b"^C")
return filemergefn(premerge, repo, mynode, orig, fcd, fco, fca, labels)
def extsetup(ui):
extensions.wrapfunction(filemerge, '_filemerge', failfilemerge)