Mercurial > hg-stable
view tests/test-remotefilelog-cacheprocess.t @ 47765:184d83ef2e59 stable
tests: demonstrate bug in `hg fix` with incorrectly dirty working copy
If the parent commit needs formatting but the working copy already has
the correct formatting, then the working copy will be reported as
modified even though it's clean (because the size in the dirstate is
incorrect). Because the bug only occurs when the size changes, I
modified the formatter used in the test case to remove repeated
spaces.
Differential Revision: https://phab.mercurial-scm.org/D11208
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 22 Jul 2021 17:12:56 -0700 |
parents | 1d075b857c90 |
children | 56f98406831b |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" $ hg init repo $ cd repo $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > EOF $ echo x > x $ echo y > y $ echo z > z $ hg commit -qAm xy $ cd .. $ cat > cacheprocess-logger.py <<EOF > import os > import shutil > import sys > if sys.version_info[0] > 2: > xrange = range > f = open('$TESTTMP/cachelog.log', 'w') > srccache = os.path.join('$TESTTMP', 'oldhgcache') > def log(message): > f.write(message) > f.flush() > destcache = sys.argv[-1] > try: > while True: > cmd = sys.stdin.readline().strip() > log('got command %r\n' % cmd) > if cmd == 'exit': > sys.exit(0) > elif cmd == 'get': > count = int(sys.stdin.readline()) > log('client wants %r blobs\n' % count) > wants = [] > for _ in xrange(count): > key = sys.stdin.readline()[:-1] > wants.append(key) > if '\0' in key: > _, key = key.split('\0') > srcpath = os.path.join(srccache, key) > if os.path.exists(srcpath): > dest = os.path.join(destcache, key) > destdir = os.path.dirname(dest) > if not os.path.exists(destdir): > os.makedirs(destdir) > shutil.copyfile(srcpath, dest) > else: > # report a cache miss > sys.stdout.write(key + '\n') > sys.stdout.write('0\n') > for key in sorted(wants): > log('requested %r\n' % key) > sys.stdout.flush() > elif cmd == 'set': > raise Exception('todo writing') > else: > raise Exception('unknown command! %r' % cmd) > except Exception as e: > log('Exception! %s\n' % e) > raise > EOF $ cat >> $HGRCPATH <<EOF > [remotefilelog] > cacheprocess = "$PYTHON" $TESTTMP/cacheprocess-logger.py > EOF Test cache keys and cache misses. $ hgcloneshallow ssh://user@dummy/repo clone -q 3 files fetched over 1 fetches - (3 misses, 0.00% hit ratio) over *s (glob) $ cat cachelog.log got command 'get' client wants 3 blobs requested 'master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0' requested 'master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a' requested 'master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca' got command 'set' Exception! todo writing Test cache hits. $ mv hgcache oldhgcache $ rm cachelog.log $ hgcloneshallow ssh://user@dummy/repo clone-cachehit -q 3 files fetched over 1 fetches - (0 misses, 100.00% hit ratio) over *s (glob) $ cat cachelog.log | grep -v exit got command 'get' client wants 3 blobs requested 'master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0' requested 'master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a' requested 'master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca' $ cat >> $HGRCPATH <<EOF > [remotefilelog] > cacheprocess.includepath = yes > EOF Test cache keys and cache misses with includepath. $ rm -r hgcache oldhgcache $ rm cachelog.log $ hgcloneshallow ssh://user@dummy/repo clone-withpath -q 3 files fetched over 1 fetches - (3 misses, 0.00% hit ratio) over *s (glob) $ cat cachelog.log got command 'get' client wants 3 blobs requested 'x\x00master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0' requested 'y\x00master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca' requested 'z\x00master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a' got command 'set' Exception! todo writing Test cache hits with includepath. $ mv hgcache oldhgcache $ rm cachelog.log $ hgcloneshallow ssh://user@dummy/repo clone-withpath-cachehit -q 3 files fetched over 1 fetches - (0 misses, 100.00% hit ratio) over *s (glob) $ cat cachelog.log | grep -v exit got command 'get' client wants 3 blobs requested 'x\x00master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0' requested 'y\x00master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca' requested 'z\x00master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a'