sapling/tests/test-pushpull.t
Durham Goode 235a2d4a1a hooks: disable all pretxnclose hooks during sync
Summary:
pretxnclose hooks were incorrectly running during the sql sync. Since the
commits have already been committed (on another machine), there's no need to run
the hooks, so let's disable them.

Test Plan: Added a test

Reviewers: pyd, lcharignon, akushner, rmcelroy

Differential Revision: https://phabricator.fb.com/D2173886
2015-06-19 12:45:16 -07:00

182 lines
4.2 KiB
Perl

$ . "$TESTDIR/library.sh"
# Populate the db with an initial commit
$ initclient client
$ cd client
$ echo x > x
$ hg commit -qAm x
$ cd ..
$ initserver master masterrepo
$ cd master
$ printf '[phases]\npublish=True\n' >> .hg/hgrc
$ hg log
$ hg pull -q ../client
$ cd ..
# Verify local pushes work
$ cd client
$ echo y > y
$ hg commit -qAm y
$ hg phase -p -r 'all()'
$ hg push ../master --traceback
pushing to ../master
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
# Verify local pulls work
$ hg strip -q -r tip
$ hg pull ../master
pulling from ../master
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
$ hg log --template '{rev} {desc}\n'
1 y
0 x
# Verify local bookmark pull
$ cd ../master
$ hg book foo -r 0
$ hg book
foo 0:b292c1e3311f
$ cd ../client
$ hg pull -q ../master
$ hg book
foo 0:b292c1e3311f
# Verify local bookmark push
$ hg book -r tip foo
moving bookmark 'foo' forward from b292c1e3311f
$ hg push ../master
pushing to ../master
searching for changes
no changes found
updating bookmark foo
[1]
$ hg book -R ../master
foo 1:d34c38483be9
# Verify explicit bookmark pulls work
$ hg up tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo z > z
$ hg commit -qAm z
$ hg book foo
moving bookmark 'foo' forward from d34c38483be9
$ cd ../master
$ hg pull -B foo ../client
pulling from ../client
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
updating bookmark foo
(run 'hg update' to get a working copy)
$ hg log -l 1 --template '{rev} {bookmarks}\n'
2 foo
# Push from hgsql to other repo
$ hg up -q tip
$ echo zz > z
$ hg commit -m z2
$ hg push ../client
pushing to ../client
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
# Verify that multiple heads and bookmarks work
$ cd ../client
$ hg up 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
(leaving bookmark foo)
$ echo a > a
$ hg commit -qAm a
$ hg book bar
$ hg push -f ../master -B bar
pushing to ../master
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
exporting bookmark bar
$ hg log -R ../master -T '{rev} {bookmarks}\n' -G
o 4 bar
|
| @ 3
| |
| o 2 foo
| |
| o 1
|/
o 0
# Verify syncing with hg-ssh --readonly works
$ cd ../
$ cat > ssh.sh << EOF
> userhost="\$1"
> SSH_ORIGINAL_COMMAND="\$2"
> export SSH_ORIGINAL_COMMAND
> PYTHONPATH="$PYTHONPATH"
> export PYTHONPATH
> python "$(which hg-ssh)" --read-only "$TESTTMP/master"
> EOF
$ hg -R master --config extensions.hgsql=! strip -r tip
saved backup bundle to $TESTTMP/master/.hg/strip-backup/2fbb8bb2b903-cf7ff44e-backup.hg (glob)
$ hg -R client pull --ssh "sh ssh.sh" "ssh://user@dummy/$TESTTMP/master"
pulling from ssh://user@dummy/$TESTTMP/master
searching for changes
no changes found
# Verify syncing with pretxnclose hooks works
$ initserver master2 masterrepo
$ cd master
$ touch testpretxnclose
$ hg commit -Aqm "test pretxnclose"
$ cd ../master2
$ cat >> .hg/hgrc <<EOF
> [hooks]
> pretxnclose.abort=exit 1
> EOF
$ hg log -r tip -T '{rev}\n'
5
$ hg strip -q -r tip --config extensions.hgsql=! --config hooks.pretxnclose.abort=
# Verify hooks still run, even after sync disabled them temporarily
$ cd ../client
$ hg pull -q ../master
$ hg up -q tip
$ echo x >> testpretxnclose
$ hg commit -qm "test pretxnclose 2"
$ hg push ../master2
pushing to ../master2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
transaction abort!
rollback completed
abort: pretxnclose.abort hook exited with status 1
[255]