# HG changeset patch # User Mads Kiilerich # Date 1457832526 -3600 # Node ID 95163ababeb86d6ca889e5e57a0c4eadb77b53d8 # Parent 48e1a641765d541a4bdc3f36b69cb3f5974040af tests: add test of stream clone of repo that is changing This reveals an error introduced by 9fea6b38a8da. diff -r 48e1a641765d -r 95163ababeb8 tests/test-clone-uncompressed.t --- 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 < 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.