# HG changeset patch # User Gregory Szorc # Date 1520034918 18000 # Node ID 1fa02265fae2e3ca1287dbbc89e72a0eb8736650 # Parent 6e585bca962e6e2c853a18abb7d33b9b753553b7 tests: add more tests around hook output and getbundle The previous tests around hook output only tested Python hooks. Let's add some shell hooks in for additional test coverage. Differential Revision: https://phab.mercurial-scm.org/D2550 diff -r 6e585bca962e -r 1fa02265fae2 tests/test-ssh-proto-unbundle.t --- a/tests/test-ssh-proto-unbundle.t Tue Feb 27 16:24:02 2018 -0800 +++ b/tests/test-ssh-proto-unbundle.t Fri Mar 02 18:55:18 2018 -0500 @@ -1248,6 +1248,561 @@ e> rollback completed\n e> abort: pretxnchangegroup.fail hook failed\n +Shell hook writing to stdout has output captured + + $ cat > $TESTTMP/hook.sh << EOF + > echo 'stdout 1' + > echo 'stdout 2' + > exit 1 + > EOF + + $ cat > .hg/hgrc << EOF + > [hooks] + > pretxnchangegroup.fail = sh $TESTTMP/hook.sh + > EOF + + $ debugwireproto << EOF + > command unbundle + > # This is "force" in hex. + > heads 666f726365 + > PUSHFILE ../initial.v1.hg + > readavailable + > EOF + testing ssh1 + creating ssh peer from handshake results + i> write(104) -> None: + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 4: + o> 384\n + o> readline() -> 384: + o> capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN\n + o> readline() -> 2: + o> 1\n + o> readline() -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 212: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> stdout 1\n + e> stdout 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.fail hook exited with status 1\n + + testing ssh2 + creating ssh peer from handshake results + i> write(171) -> None: + i> upgrade * proto=exp-ssh-v2-0001\n (glob) + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 62: + o> upgraded * exp-ssh-v2-0001\n (glob) + o> readline() -> 4: + o> 383\n + o> read(383) -> 383: capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN + o> read(1) -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 212: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> stdout 1\n + e> stdout 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.fail hook exited with status 1\n + +Shell hook writing to stderr has output captured + + $ cat > $TESTTMP/hook.sh << EOF + > echo 'stderr 1' 1>&2 + > echo 'stderr 2' 1>&2 + > exit 1 + > EOF + + $ debugwireproto << EOF + > command unbundle + > # This is "force" in hex. + > heads 666f726365 + > PUSHFILE ../initial.v1.hg + > readavailable + > EOF + testing ssh1 + creating ssh peer from handshake results + i> write(104) -> None: + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 4: + o> 384\n + o> readline() -> 384: + o> capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN\n + o> readline() -> 2: + o> 1\n + o> readline() -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 212: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> stderr 1\n + e> stderr 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.fail hook exited with status 1\n + + testing ssh2 + creating ssh peer from handshake results + i> write(171) -> None: + i> upgrade * proto=exp-ssh-v2-0001\n (glob) + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 62: + o> upgraded * exp-ssh-v2-0001\n (glob) + o> readline() -> 4: + o> 383\n + o> read(383) -> 383: capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN + o> read(1) -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 212: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> stderr 1\n + e> stderr 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.fail hook exited with status 1\n + +Shell hook writing to stdout and stderr has output captured + + $ cat > $TESTTMP/hook.sh << EOF + > echo 'stdout 1' + > echo 'stderr 1' 1>&2 + > echo 'stdout 2' + > echo 'stderr 2' 1>&2 + > exit 1 + > EOF + + $ debugwireproto << EOF + > command unbundle + > # This is "force" in hex. + > heads 666f726365 + > PUSHFILE ../initial.v1.hg + > readavailable + > EOF + testing ssh1 + creating ssh peer from handshake results + i> write(104) -> None: + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 4: + o> 384\n + o> readline() -> 384: + o> capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN\n + o> readline() -> 2: + o> 1\n + o> readline() -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 230: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> stdout 1\n + e> stderr 1\n + e> stdout 2\n + e> stderr 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.fail hook exited with status 1\n + + testing ssh2 + creating ssh peer from handshake results + i> write(171) -> None: + i> upgrade * proto=exp-ssh-v2-0001\n (glob) + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 62: + o> upgraded * exp-ssh-v2-0001\n (glob) + o> readline() -> 4: + o> 383\n + o> read(383) -> 383: capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN + o> read(1) -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 230: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> stdout 1\n + e> stderr 1\n + e> stdout 2\n + e> stderr 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.fail hook exited with status 1\n + +Shell and Python hooks writing to stdout and stderr have output captured + + $ cat > $TESTTMP/hook.sh << EOF + > echo 'shell stdout 1' + > echo 'shell stderr 1' 1>&2 + > echo 'shell stdout 2' + > echo 'shell stderr 2' 1>&2 + > exit 0 + > EOF + + $ cat > .hg/hgrc << EOF + > [hooks] + > pretxnchangegroup.a = sh $TESTTMP/hook.sh + > pretxnchangegroup.b = python:$TESTTMP/failhook:hookprintstderrandstdout + > EOF + + $ debugwireproto << EOF + > command unbundle + > # This is "force" in hex. + > heads 666f726365 + > PUSHFILE ../initial.v1.hg + > readavailable + > EOF + testing ssh1 + creating ssh peer from handshake results + i> write(104) -> None: + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 4: + o> 384\n + o> readline() -> 384: + o> capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN\n + o> readline() -> 2: + o> 1\n + o> readline() -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 273: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> shell stdout 1\n + e> shell stderr 1\n + e> shell stdout 2\n + e> shell stderr 2\n + e> stderr 1\n + e> stderr 2\n + e> stdout 1\n + e> stdout 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.b hook failed\n + + testing ssh2 + creating ssh peer from handshake results + i> write(171) -> None: + i> upgrade * proto=exp-ssh-v2-0001\n (glob) + i> hello\n + i> between\n + i> pairs 81\n + i> 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 + i> flush() -> None + o> readline() -> 62: + o> upgraded * exp-ssh-v2-0001\n (glob) + o> readline() -> 4: + o> 383\n + o> read(383) -> 383: capabilities: lookup branchmap pushkey known getbundle unbundlehash batch changegroupsubset streamreqs=generaldelta,revlogv1 $USUAL_BUNDLE2_CAPS_SERVER$ unbundle=HG10GZ,HG10BZ,HG10UN + o> read(1) -> 1: + o> \n + sending unbundle command + i> write(9) -> None: + i> unbundle\n + i> write(9) -> None: + i> heads 10\n + i> write(10) -> None: 666f726365 + i> flush() -> None + o> readline() -> 2: + o> 0\n + i> write(4) -> None: + i> 426\n + i> write(426) -> None: + i> HG10UN\x00\x00\x00\x9eh\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>cba485ca3678256e044428f70f58291196f6e9de\n + i> test\n + i> 0 0\n + i> foo\n + i> \n + i> initial\x00\x00\x00\x00\x00\x00\x00\x8d\xcb\xa4\x85\xca6x%n\x04D(\xf7\x0fX)\x11\x96\xf6\xe9\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00362fef284ce2ca02aecc8de6d5e8a1c3af0556fe\n + i> \x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00b6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h\x98b\x13\xbdD\x85\xeaQS55\xe3\xfc\x9ex\x00zq\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x020\n + i> \x00\x00\x00\x00\x00\x00\x00\x00 + i> write(2) -> None: + i> 0\n + i> flush() -> None + o> readline() -> 2: + o> 0\n + o> read(0) -> 0: + o> readline() -> 2: + o> 1\n + o> read(1) -> 1: 0 + result: 0 + remote output: + e> read(-1) -> 273: + e> adding changesets\n + e> adding manifests\n + e> adding file changes\n + e> added 1 changesets with 1 changes to 1 files\n + e> shell stdout 1\n + e> shell stderr 1\n + e> shell stdout 2\n + e> shell stderr 2\n + e> stderr 1\n + e> stderr 2\n + e> stdout 1\n + e> stdout 2\n + e> transaction abort!\n + e> rollback completed\n + e> abort: pretxnchangegroup.b hook failed\n + $ cd .. Pushing a bundle1 with no output