tests: stabilize `test-clonebundles-autogen.t` on Windows
The problem was that the commands are spun up with `shell=True`, which uses
`cmd.exe`, which doesn't understand `$foo` style variables. The HGCB variable
expansion has to be delayed, because it's figured out right before launching
the command. We could probably add a conditional for Windows, and rewrite the
config to use `%foo%` style variables, but it's more maintainable to just wrap
the command in a bash shell invocation.
The forward style slashes in the path are needed to avoid accruing double
backslashes (when switching between shells- the url template seems fine). Also
need to strong quote the command so that the double quotes don't get stripped
off of `$HGCB_BUNDLE_PATH`, which results in:
sh: 1: Syntax error: Unterminated quoted string
abort: command returned status 2: sh -c "cp $HGCB_BUNDLE_PATH $TESTTMP/final-upload/"
Corrupt an hg repo with a pull started during an aborted commit
Create two repos, so that one of them can pull from the other one.
$ hg init source
$ cd source
$ touch foo
$ hg add foo
$ hg ci -m 'add foo'
$ hg clone . ../corrupted
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo >> foo
$ hg ci -m 'change foo'
Add a hook to wait 5 seconds and then abort the commit
$ cd ../corrupted
$ echo "[hooks]" >> .hg/hgrc
$ echo 'pretxncommit = sh -c "sleep 5; exit 1"' >> .hg/hgrc
start a commit...
$ touch bar
$ hg add bar
$ hg ci -m 'add bar' &
... and start a pull while the commit is still running
$ sleep 1
$ hg pull ../source 2>/dev/null
pulling from ../source
transaction abort!
rollback completed
abort: pretxncommit hook exited with status 1
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
new changesets 52998019f625
(run 'hg update' to get a working copy)
see what happened
$ wait
$ hg verify -q
$ cd ..