Mercurial > hg
changeset 28517:95163ababeb8 stable
tests: add test of stream clone of repo that is changing
This reveals an error introduced by 9fea6b38a8da.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Sun, 13 Mar 2016 02:28:46 +0100 |
parents | 48e1a641765d |
children | aa440c3d7c5d |
files | tests/test-clone-uncompressed.t |
diffstat | 1 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-clone-uncompressed.t Thu Feb 04 15:38:04 2016 -0800 +++ b/tests/test-clone-uncompressed.t Sun Mar 13 02:28:46 2016 +0100 @@ -50,3 +50,48 @@ preparing listkeys for "phases" sending listkeys command received listkey for "phases": 58 bytes + + +Stream clone while repo is changing: + + $ mkdir changing + $ cd changing + +extension for delaying the server process so we reliably can modify the repo +while cloning + + $ cat > delayer.py <<EOF + > import time + > from mercurial import extensions, scmutil + > def __call__(orig, self, path, *args, **kwargs): + > if path == 'data/f1.i': + > time.sleep(2) + > return orig(self, path, *args, **kwargs) + > extensions.wrapfunction(scmutil.vfs, '__call__', __call__) + > EOF + +prepare repo with small and big file to cover both code paths in emitrevlogdata + + $ hg init repo + $ touch repo/f1 + $ $TESTDIR/seq.py 50000 > repo/f2 + $ hg -R repo ci -Aqm "0" + $ hg -R repo serve -p $HGPORT1 -d --pid-file=hg.pid --config extensions.delayer=delayer.py + $ cat hg.pid >> $DAEMON_PIDS + +clone while modifying the repo between stating file with write lock and +actually serving file content + + $ hg clone -q --uncompressed -U http://localhost:$HGPORT1 clone & + $ sleep 1 + $ echo >> repo/f1 + $ echo >> repo/f2 + $ hg -R repo ci -m "1" + $ wait + abort: unexpected response from remote server: + '*\n' (glob) + $ hg -R clone id + abort: repository clone not found! + [255] + +the current clone error is a regression from 9fea6b38a8da.