Mercurial > hg
diff tests/test-chg.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 | 889d2a2e9326 |
children | 7e5be4a7cda7 |
line wrap: on
line diff
--- a/tests/test-chg.t Mon Apr 24 10:30:08 2023 -0400 +++ b/tests/test-chg.t Thu Apr 20 09:23:58 2023 -0400 @@ -553,3 +553,20 @@ $ filteredchg log -r . --no-profile $ filteredchg log -r . Sample count: * (glob) + +chg setting CHGHG itself +------------------------ + +If CHGHG is not set, chg will set it before spawning the command server. + $ hg --kill-chg-daemon + $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ + > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ + > | egrep 'CHGHG|start' + chg: debug: * start cmdserver at * (glob) + CHGHG=/*/install/bin/hg (glob) + +Running the same command a second time shouldn't spawn a new command server. + $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ + > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ + > | egrep 'CHGHG|start' + CHGHG=/*/install/bin/hg (glob)