Mercurial > hg
view tests/test-revlog-mmapindex.t @ 50353:c2a1f8668606 stable
chg: set CHGHG before connecting to command server
cf4d2f31 (!523) changed chg to set `CHGHG` itself when spawning a new command
server, in order to ensure that the path to the `hg` executable would be checked
during server validation. (This is useful when chg is built with `HGPATHREL`).
However, that change broke chg because it failed to set `CHGHG` before trying
to connect to an existing command server. This means that if `CHGHG` is not
present in the environment, chg will always spawn a new command server, entirely
negating the point of chg.
This breakage wasn't initially caught because of the difficulty of writing
automated tests with the `HGPATHREL` feature enabled, which meant the change
was only tested manually to make sure that it fixed the problem with `HGPATHREL`
that prompted the change.
In practice, this functionality is only really useful when chg is built with
`HGPATHREL`, so I considered wrapping it in an `#ifdef` to preserve the old
behavior by default. However, this makes it hard to write tests since one would
have to explicitly set `HGPATHREL=1` when running `run-tests.py` (which is why
the original change lacked tests). It would be great if there were a way of
testing features that are gated behind conditional compilation.
author | Arun Kulshreshtha <akulshreshtha@janestreet.com> |
---|---|
date | Thu, 20 Apr 2023 09:23:58 -0400 |
parents | 42d2b31cee0b |
children | dcaa2df1f688 |
line wrap: on
line source
create verbosemmap.py $ cat << EOF > verbosemmap.py > # extension to make util.mmapread verbose > > > from mercurial import ( > extensions, > pycompat, > util, > ) > > def extsetup(ui): > def mmapread(orig, fp): > ui.write(b"mmapping %s\n" % pycompat.bytestr(fp.name)) > ui.flush() > return orig(fp) > > extensions.wrapfunction(util, 'mmapread', mmapread) > EOF setting up base repo $ hg init a $ cd a $ touch a $ hg add a $ hg commit -qm base $ for i in `$TESTDIR/seq.py 1 100` ; do > echo $i > a > hg commit -qm $i > done set up verbosemmap extension $ cat << EOF >> $HGRCPATH > [extensions] > verbosemmap=$TESTTMP/verbosemmap.py > EOF mmap index which is now more than 4k long $ hg log -l 5 -T '{rev}\n' --config experimental.mmapindexthreshold=4k mmapping $TESTTMP/a/.hg/store/00changelog.i 100 99 98 97 96 do not mmap index which is still less than 32k $ hg log -l 5 -T '{rev}\n' --config experimental.mmapindexthreshold=32k 100 99 98 97 96 $ cd ..