##// END OF EJS Templates
tests: blacklist a handful of test with `rhg` or `chg`...
tests: blacklist a handful of test with `rhg` or `chg` The use of `alias` to enforce `chg` and `rhg` means we are actually using a mix of `rhg`/`chg` and `hg` when calling `hg` in the test. Fixing this breaks various tests. This would be a large detour to fix that. I am disabling them for now with an appropriate comment. We would hopefully get back to them by the 5.8 release. Differential Revision: https://phab.mercurial-scm.org/D11052

File last commit:

r48352:ed81f2be default
r48387:be496e34 default
Show More
test-transaction-rollback-on-sigpipe.t
59 lines | 2.0 KiB | text/troff | Tads3Lexer
/ tests / test-transaction-rollback-on-sigpipe.t
Test that, when an hg push is interrupted and the remote side receives SIGPIPE,
the remote hg is able to successfully roll back the transaction.
$ hg init -q remote
$ hg clone -e "\"$PYTHON\" \"$RUNTESTDIR/dummyssh\"" -q ssh://user@dummy/`pwd`/remote local
$ SIGPIPE_REMOTE_DEBUG_FILE="$TESTTMP/DEBUGFILE"
$ SYNCFILE1="$TESTTMP/SYNCFILE1"
$ SYNCFILE2="$TESTTMP/SYNCFILE2"
$ export SIGPIPE_REMOTE_DEBUG_FILE
$ export SYNCFILE1
$ export SYNCFILE2
$ PYTHONUNBUFFERED=1
$ export PYTHONUNBUFFERED
On the remote end, run hg, piping stdout and stderr through processes that we
know the PIDs of. We will later kill these to simulate an ssh client
disconnecting.
$ remotecmd="$RUNTESTDIR/testlib/sigpipe-remote.py"
In the pretxnchangegroup hook, kill the PIDs recorded above to simulate ssh
disconnecting. Then exit nonzero, to force a transaction rollback.
$ cat >remote/.hg/hgrc <<EOF
> [hooks]
> pretxnchangegroup.00-break-things="$RUNTESTDIR/testlib/wait-on-file" 10 "$SYNCFILE2" "$SYNCFILE1"
> pretxnchangegroup.01-output-things=echo "some remote output to be forward to the closed pipe"
> EOF
$ hg --cwd ./remote tip -T '{node|short}\n'
000000000000
$ cd local
$ echo foo > foo ; hg commit -qAm "commit"
$ hg push -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --remotecmd "$remotecmd"
pushing to ssh://user@dummy/$TESTTMP/remote
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
abort: stream ended unexpectedly (got 0 bytes, expected 4)
[255]
$ cat $SIGPIPE_REMOTE_DEBUG_FILE
SIGPIPE-HELPER: Starting
SIGPIPE-HELPER: Mercurial started
SIGPIPE-HELPER: Redirection in place
SIGPIPE-HELPER: SYNCFILE1 detected
SIGPIPE-HELPER: pipes closed
SIGPIPE-HELPER: creating SYNCFILE2
SIGPIPE-HELPER: Shutting down
SIGPIPE-HELPER: Server process terminated
SIGPIPE-HELPER: Shut down
The remote should be left in a good state
$ hg --cwd ../remote tip -T '{node|short}\n'
000000000000
$ hg --cwd ../remote recover
no interrupted transaction available
[1]