Mercurial > hg
view tests/test-push-checkheads-pruned-B5.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 | 5996640fc6fe |
children |
line wrap: on
line source
==================================== Testing head checking code: Case B-5 ==================================== Mercurial checks for the introduction of new heads on push. Evolution comes into play to detect if existing branches on the server are being replaced by some of the new one we push. This case is part of a series of tests checking this behavior. Category B: simple case involving pruned changesets TestCase 5: multi-changeset branch, mix of pruned and superseded .. old-state: .. .. * 3 changeset branch .. .. new-state: .. .. * old head is pruned .. * old mid is superseded .. * old root is pruned .. .. expected-result: .. .. * push allowed .. .. graph-summary: .. .. B ⊗ .. | .. A ø⇠◔ A' .. | | .. B ⊗ | .. |/ .. ● $ . $TESTDIR/testlib/push-checkheads-util.sh Test setup ---------- $ mkdir B5 $ cd B5 $ setuprepos creating basic server and client repo updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd server $ mkcommit B0 $ mkcommit C0 $ cd ../client $ hg pull pulling from $TESTTMP/B5/server searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 2 files new changesets d73caddc5533:821fb21d0dd2 (2 drafts) (run 'hg update' to get a working copy) $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ mkcommit B1 created new head $ hg debugobsolete --record-parents `getid "desc(A0)"` 1 new obsolescence markers obsoleted 1 changesets 2 new orphan changesets $ hg debugobsolete `getid "desc(B0)"` `getid "desc(B1)"` 1 new obsolescence markers obsoleted 1 changesets $ hg debugobsolete --record-parents `getid "desc(C0)"` 1 new obsolescence markers obsoleted 1 changesets $ hg log -G --hidden @ 25c56d33e4c4 (draft): B1 | | x 821fb21d0dd2 (draft): C0 | | | x d73caddc5533 (draft): B0 | | | x 8aaa48160adc (draft): A0 |/ o 1e4be0697311 (public): root Actual testing -------------- $ hg push pushing to $TESTTMP/B5/server searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) 3 new obsolescence markers obsoleted 3 changesets $ cd ../..