mirror of
https://github.com/facebook/sapling.git
synced 2024-10-06 14:58:03 +03:00
92f6f35e7a
Summary: This diff marks **ALL** mercurial tests requiring Python 2 feature. After you fixes some tests, simply remove the `py2` feature requirement and that tests will be continuously run after your diff is landed. To bypass this feature requirement, run the tests command with `HGTEST_FORCE_PY2=1`. For example: ``` HGTEST_FORCE_PY2=1 buck test //eden/scm/tests:hg_run_tests ``` or ``` HGTEST_FORCE_PY2=1 python run-tests.py ``` ---- Basically this diff are created with the following commands: ``` $ sed -i 's/import feature\(.*\)$/import feature\1\n\nfeature.require(["py2"])/' test-*-t.py $ sed -i '1s/^/#require py2\n/' test-*.t $ ls | grep -P "^test.*(?<\!-t)\.py$" > list && vim -p $(cat list) # manually adding feature requires for these Python tests. ``` (Note: this ignores all push blocking failures!) ignore-conflict-markers Reviewed By: singhsrb Differential Revision: D19655148 fbshipit-source-id: 985e3ccb4010cc559049f1d89f8909bc2d9b5e20
99 lines
3.0 KiB
Perl
99 lines
3.0 KiB
Perl
#require py2
|
|
#require no-windows
|
|
|
|
Test:
|
|
1. Process X is handling a pushrebase request.
|
|
2. While running prepushrebase hooks, the local repo and the database were updated.
|
|
3. Process X enters the critical section and thinks the local repo is
|
|
up-to-date while some internal states might be not.
|
|
|
|
$ shorttraceback
|
|
$ . "$TESTDIR/hgsql/library.sh"
|
|
$ enable treemanifest remotefilelog remotenames pushrebase
|
|
$ setconfig hgsql.initialsync=false treemanifest.treeonly=1 treemanifest.sendtrees=1 remotefilelog.reponame=x remotefilelog.cachepath=$TESTTMP/cache ui.ssh="python $TESTDIR/dummyssh" pushrebase.verbose=1 experimental.bundle2lazylocking=True
|
|
|
|
$ newrepo state1
|
|
$ echo remotefilelog >> .hg/requires
|
|
$ hg debugdrawdag << 'EOS'
|
|
> A
|
|
> EOS
|
|
|
|
$ newrepo state2
|
|
$ echo remotefilelog >> .hg/requires
|
|
$ hg debugdrawdag << 'EOS'
|
|
> B
|
|
> |
|
|
> A
|
|
> EOS
|
|
|
|
$ newrepo state3
|
|
$ echo remotefilelog >> .hg/requires
|
|
$ hg debugdrawdag << 'EOS'
|
|
> B C
|
|
> |/
|
|
> A
|
|
> EOS
|
|
|
|
$ cd $TESTTMP
|
|
$ initserver serverrepo master
|
|
|
|
Update the server repo and the database to state1.
|
|
|
|
$ cd $TESTTMP/serverrepo
|
|
$ setconfig treemanifest.server=1
|
|
$ hg pull -r tip $TESTTMP/state1 -q
|
|
$ hg bookmark -r tip master
|
|
|
|
Prepare the prepushrebase hook to update the server repo and the database.
|
|
|
|
$ cat > $TESTTMP/update-to-state2.sh <<EOF
|
|
> # Bypass pushrebase logic that enforces a bundle repo
|
|
> unset HG_HOOK_BUNDLEPATH
|
|
> # Update the server repo and the database to state2
|
|
> hg pull --cwd $TESTTMP/serverrepo -R $TESTTMP/serverrepo -r tip $TESTTMP/state2
|
|
> EOF
|
|
|
|
Another prepushrebase hook just to warm up in-memory repo states (changelog and
|
|
manifest).
|
|
|
|
$ cat > $TESTTMP/prepushrebase.py <<EOF
|
|
> def warmup(ui, repo, *args, **kwds):
|
|
> # Just have some side-effect loading the changelog and manifest
|
|
> data = repo['tip']['A'].data()
|
|
> ui.write_err('prepushrebase hook called. A = %r\n' % data)
|
|
> EOF
|
|
|
|
Setup prepushrebase hooks.
|
|
|
|
$ cat >> .hg/hgrc << EOF
|
|
> [hgsql]
|
|
> verbose=1
|
|
> [hooks]
|
|
> prepushrebase.step1=python:$TESTTMP/prepushrebase.py:warmup
|
|
> prepushrebase.step2=bash $TESTTMP/update-to-state2.sh
|
|
> EOF
|
|
|
|
Do the push!
|
|
|
|
$ cd $TESTTMP/state3
|
|
$ hg push -r C --to master ssh://user@dummy/serverrepo
|
|
pushing rev dc0947a82db8 to destination ssh://user@dummy/serverrepo bookmark master
|
|
searching for changes
|
|
remote: prepushrebase hook called. A = 'A'
|
|
remote: [hgsql] got lock after * seconds (read 1 rows) (glob)
|
|
remote: pulling from $TESTTMP/state2
|
|
remote: searching for changes
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 1 changesets with 1 changes to 1 files
|
|
remote: [hgsql] held lock for * seconds (read 8 rows; write 7 rows) (glob)
|
|
remote: checking conflicts with 426bada5c675
|
|
remote: pushing 1 changeset:
|
|
remote: dc0947a82db8 C
|
|
remote: [hgsql] got lock after * seconds (read 1 rows) (glob)
|
|
remote: rebasing stack from 426bada5c675 onto 426bada5c675
|
|
remote: [hgsql] held lock for * seconds (read 8 rows; write 8 rows) (glob)
|
|
updating bookmark master
|
|
|