diff -r 9d5ddf55415b -r 9c4cbbb0fc51 tests/test-lfs-serve.t --- a/tests/test-lfs-serve.t Tue Oct 09 21:53:21 2018 -0400 +++ b/tests/test-lfs-serve.t Thu Oct 04 00:17:26 2018 -0400 @@ -35,6 +35,26 @@ $ hg init server $ SERVER_REQUIRES="$TESTTMP/server/.hg/requires" + $ cat > $TESTTMP/debugprocessors.py < from mercurial import ( + > cmdutil, + > commands, + > pycompat, + > registrar, + > ) + > cmdtable = {} + > command = registrar.command(cmdtable) + > @command(b'debugprocessors', [], b'FILE') + > def debugprocessors(ui, repo, file_=None, **opts): + > opts = pycompat.byteskwargs(opts) + > opts[b'changelog'] = False + > opts[b'manifest'] = False + > opts[b'dir'] = False + > rl = cmdutil.openrevlog(repo, b'debugprocessors', file_, opts) + > for flag, proc in rl._flagprocessors.iteritems(): + > ui.status(b"registered processor '%#x'\n" % (flag)) + > EOF + Skip the experimental.changegroup3=True config. Failure to agree on this comes first, and causes a "ValueError: no common changegroup version" or "abort: HTTP Error 500: Internal Server Error", if the extension is only loaded on one @@ -42,6 +62,8 @@ for flag '0x2000'!" if the extension is only loaded on one side (possibly also masked by the Internal Server Error message). $ cat >> $HGRCPATH < [extensions] + > debugprocessors = $TESTTMP/debugprocessors.py > [experimental] > lfs.disableusercache = True > [lfs] @@ -51,6 +73,8 @@ > push_ssl=False > EOF + $ cp $HGRCPATH $HGRCPATH.orig + #if lfsremote-on $ hg --config extensions.lfs= -R server \ > serve -p $HGPORT -d --pid-file=hg.pid --errorlog=$TESTTMP/errors.log @@ -307,6 +331,103 @@ $ hg identify http://localhost:$HGPORT c729025cc5e3 + $ mv $HGRCPATH $HGRCPATH.tmp + $ cp $HGRCPATH.orig $HGRCPATH + + >>> from __future__ import absolute_import + >>> from hgclient import check, readchannel, runcommand + >>> @check + ... def checkflags(server): + ... readchannel(server) + ... print('') + ... print('# LFS required- both lfs and non-lfs revlogs have 0x2000 flag') + ... runcommand(server, ['debugprocessors', 'lfs.bin', '-R', + ... '../server']) + ... runcommand(server, ['debugprocessors', 'nonlfs2.txt', '-R', + ... '../server']) + ... runcommand(server, ['config', 'extensions', '--cwd', + ... '../server']) + ... + ... print("\n# LFS not enabled- revlogs don't have 0x2000 flag") + ... runcommand(server, ['debugprocessors', 'nonlfs3.txt']) + ... runcommand(server, ['config', 'extensions']) + + # LFS required- both lfs and non-lfs revlogs have 0x2000 flag + *** runcommand debugprocessors lfs.bin -R ../server + registered processor '0x8000' + registered processor '0x2000' + *** runcommand debugprocessors nonlfs2.txt -R ../server + registered processor '0x8000' + registered processor '0x2000' + *** runcommand config extensions --cwd ../server + extensions.debugprocessors=$TESTTMP/debugprocessors.py + extensions.lfs= + + # LFS not enabled- revlogs don't have 0x2000 flag + *** runcommand debugprocessors nonlfs3.txt + registered processor '0x8000' + *** runcommand config extensions + extensions.debugprocessors=$TESTTMP/debugprocessors.py + + $ rm $HGRCPATH + $ mv $HGRCPATH.tmp $HGRCPATH + + $ hg clone $TESTTMP/client $TESTTMP/nonlfs -qr 0 --config extensions.lfs= + $ cat >> $TESTTMP/nonlfs/.hg/hgrc < [extensions] + > lfs = ! + > EOF + + >>> from __future__ import absolute_import, print_function + >>> from hgclient import check, readchannel, runcommand + >>> @check + ... def checkflags2(server): + ... readchannel(server) + ... print('') + ... print('# LFS enabled- both lfs and non-lfs revlogs have 0x2000 flag') + ... runcommand(server, ['debugprocessors', 'lfs.bin', '-R', + ... '../server']) + ... runcommand(server, ['debugprocessors', 'nonlfs2.txt', '-R', + ... '../server']) + ... runcommand(server, ['config', 'extensions', '--cwd', + ... '../server']) + ... + ... print('\n# LFS enabled without requirement- revlogs have 0x2000 flag') + ... runcommand(server, ['debugprocessors', 'nonlfs3.txt']) + ... runcommand(server, ['config', 'extensions']) + ... + ... print("\n# LFS disabled locally- revlogs don't have 0x2000 flag") + ... runcommand(server, ['debugprocessors', 'nonlfs.txt', '-R', + ... '../nonlfs']) + ... runcommand(server, ['config', 'extensions', '--cwd', + ... '../nonlfs']) + + # LFS enabled- both lfs and non-lfs revlogs have 0x2000 flag + *** runcommand debugprocessors lfs.bin -R ../server + registered processor '0x8000' + registered processor '0x2000' + *** runcommand debugprocessors nonlfs2.txt -R ../server + registered processor '0x8000' + registered processor '0x2000' + *** runcommand config extensions --cwd ../server + extensions.debugprocessors=$TESTTMP/debugprocessors.py + extensions.lfs= + + # LFS enabled without requirement- revlogs have 0x2000 flag + *** runcommand debugprocessors nonlfs3.txt + registered processor '0x8000' + registered processor '0x2000' + *** runcommand config extensions + extensions.debugprocessors=$TESTTMP/debugprocessors.py + extensions.lfs= + + # LFS disabled locally- revlogs don't have 0x2000 flag + *** runcommand debugprocessors nonlfs.txt -R ../nonlfs + registered processor '0x8000' + *** runcommand config extensions --cwd ../nonlfs + extensions.debugprocessors=$TESTTMP/debugprocessors.py + extensions.lfs=! + -------------------------------------------------------------------------------- Case #6: client with lfs content and the extension enabled; server with lfs content, and the extension enabled.