Mercurial > hg
annotate tests/test-transaction-rollback-on-sigpipe.t @ 47301:97f04eaafa65
tests: add req on bash for test-transaction-rollback-on-sigpipe (issue6429)
I think we could work around this by rewriting the helper scripts in
Python, but I don't want to deal with that now and this should prevent
failures due to a lack of bash.
Differential Revision: https://phab.mercurial-scm.org/D10732
author | Augie Fackler <augie@google.com> |
---|---|
date | Tue, 18 May 2021 13:24:41 -0400 |
parents | 77e73827a02d |
children | aa07bcc4f505 |
rev | line source |
---|---|
47301
97f04eaafa65
tests: add req on bash for test-transaction-rollback-on-sigpipe (issue6429)
Augie Fackler <augie@google.com>
parents:
47008
diff
changeset
|
1 #require bash |
45736
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
2 Test that, when an hg push is interrupted and the remote side recieves SIGPIPE, |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
3 the remote hg is able to successfully roll back the transaction. |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
4 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
5 $ hg init -q remote |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
6 $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" -q ssh://user@dummy/`pwd`/remote local |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
7 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
8 $ check_for_abandoned_transaction() { |
45754
b713e4cae2d7
test: avoid bashisms in test-transaction-rollback-on-sigpipe.t
Mitchell Plamann <mplamann@janestreet.com>
parents:
45737
diff
changeset
|
9 > [ -f $TESTTMP/remote/.hg/store/journal ] && echo "Abandoned transaction!" |
45736
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
10 > } |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
11 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
12 $ pidfile=`pwd`/pidfile |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
13 $ >$pidfile |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
14 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
15 $ script() { |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
16 > cat >"$1" |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
17 > chmod +x "$1" |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
18 > } |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
19 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
20 On the remote end, run hg, piping stdout and stderr through processes that we |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
21 know the PIDs of. We will later kill these to simulate an ssh client |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
22 disconnecting. |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
23 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
24 $ killable_pipe=`pwd`/killable_pipe.sh |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
25 $ script $killable_pipe <<EOF |
47008
77e73827a02d
tests: don't hard-code /bin/bash
Joerg Sonnenberger <joerg@bec.de>
parents:
45754
diff
changeset
|
26 > #!/usr/bin/env bash |
45736
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
27 > echo \$\$ >> $pidfile |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
28 > exec cat |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
29 > EOF |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
30 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
31 $ remotecmd=`pwd`/remotecmd.sh |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
32 $ script $remotecmd <<EOF |
47008
77e73827a02d
tests: don't hard-code /bin/bash
Joerg Sonnenberger <joerg@bec.de>
parents:
45754
diff
changeset
|
33 > #!/usr/bin/env bash |
45736
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
34 > hg "\$@" 1> >($killable_pipe) 2> >($killable_pipe >&2) |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
35 > EOF |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
36 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
37 In the pretxnchangegroup hook, kill the PIDs recorded above to simulate ssh |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
38 disconnecting. Then exit nonzero, to force a transaction rollback. |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
39 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
40 $ hook_script=`pwd`/pretxnchangegroup.sh |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
41 $ script $hook_script <<EOF |
47008
77e73827a02d
tests: don't hard-code /bin/bash
Joerg Sonnenberger <joerg@bec.de>
parents:
45754
diff
changeset
|
42 > #!/usr/bin/env bash |
45736
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
43 > for pid in \$(cat $pidfile) ; do |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
44 > kill \$pid |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
45 > while kill -0 \$pid 2>/dev/null ; do |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
46 > sleep 0.1 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
47 > done |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
48 > done |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
49 > exit 1 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
50 > EOF |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
51 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
52 $ cat >remote/.hg/hgrc <<EOF |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
53 > [hooks] |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
54 > pretxnchangegroup.break-things=$hook_script |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
55 > EOF |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
56 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
57 $ cd local |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
58 $ echo foo > foo ; hg commit -qAm "commit" |
45754
b713e4cae2d7
test: avoid bashisms in test-transaction-rollback-on-sigpipe.t
Mitchell Plamann <mplamann@janestreet.com>
parents:
45737
diff
changeset
|
59 $ hg push -q -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --remotecmd $remotecmd 2>&1 | grep -v $killable_pipe |
45736
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
60 abort: stream ended unexpectedly (got 0 bytes, expected 4) |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
61 |
2c6b054e22d0
test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression
Mitchell Plamann <mplamann@janestreet.com>
parents:
diff
changeset
|
62 $ check_for_abandoned_transaction |
45737
b3e8d8e4a40d
hook: ignore EPIPE when flushing stdout/stderr
Mitchell Plamann <mplamann@janestreet.com>
parents:
45736
diff
changeset
|
63 [1] |