sapling/eden/scm/tests/helpers-testrepo.sh
Jun Wu b71ac97dd5 tests: do not use hg files to list every file in a repo
Summary:
The `helpers-testrepo.sh` runs something like

  hg files --cwd /path/to/fbsource/fbcode/eden/scm/tests/

to check if `hg` works or not. Previously it fails fast because of the
lz4revlog requirement. The next diff will enable lz4revlog that makes
`hg files` work.

That `hg files` command (if does not fail) is quite expensive because it has no
patterns and lists every file.

It can also be undesirable if the in-repo hg does some kind of auto migration
that makes the repo unusable by the system hg. Therefore just unconditionally
use the system hg.

Reviewed By: DurhamG

Differential Revision: D22419967

fbshipit-source-id: 2d5c75696efecce1ec38a2e4fa23aff101219545
2020-07-14 14:33:43 -07:00

52 lines
1.7 KiB
Bash

# In most cases, the mercurial repository can be read by the bundled hg, but
# that isn't always true because third-party extensions may change the store
# format, for example. In which case, the system hg installation is used.
#
# We want to use the hg version being tested when interacting with the test
# repository, and the system hg when interacting with the mercurial source code
# repository.
#
# The mercurial source repository was typically orignally cloned with the
# system mercurial installation, and may require extensions or settings from
# the system installation.
# Revert the environment so that running "hg" runs the system hg
# rather than the test hg installation.
syshgenv () {
. "$HGTEST_RESTOREENV"
HGPLAIN=1
export HGPLAIN
}
# The test-repo is a live hg repository which may have evolution markers
# created, e.g. when a ~/.hgrc enabled evolution.
#
# Tests may be run using a custom HGRCPATH, which do not enable evolution
# markers by default.
#
# If test-repo includes evolution markers, and we do not enable evolution
# markers, hg will occasionally complain when it notices them, which disrupts
# tests resulting in sporadic failures.
#
# Since we aren't performing any write operations on the test-repo, there's
# no harm in telling hg that we support evolution markers, which is what the
# following lines for the hgrc file do:
cat >> "$HGRCPATH" << EOF
[experimental]
evolution = createmarkers
EOF
# Unconditionally use the system hg to avoid auto migration logic from
# the in-repo hg.
testrepohgenv () {
syshgenv
}
testrepohg () {
(
testrepohgenv
# Silent potential stderr like "remove: served by Mononoke".
exec hg "$@" 2>/dev/null
)
}