##// END OF EJS Templates
context: stop catching RepoLookupError from namespace.singlenode()...
context: stop catching RepoLookupError from namespace.singlenode() As pointed out by Yuya, the RepoLookupError was there for catching errors from repo.branchtip(). However, since 885c0290f7d5 (localrepo: add ignoremissing parameter to branchtip, 2014-10-16), that should no longer happen. I think it should now be an error if a namespace raises a RepoLookupError, so we propagate the exception up and and make it easy to fix, rather than trying to interpret the changeid as nodeid prefix and raise a general "unknown revision '...'" error. I also don't think we should catch FilteredLookupError and LookupError from the changelog.rev() call, for the same reason as above: If a namespace returns a node that doesn't exist, we should provide a more helpful exception than "unknown revision '...'". Differential Revision: https://phab.mercurial-scm.org/D3145

File last commit:

r37182:6c7a6b04 default
r37409:3198d5a2 default
Show More
flagprocessorext.py
142 lines | 4.2 KiB | text/x-python | PythonLexer
/ tests / flagprocessorext.py
Remi Chaintron
revlog: flag processor...
r30745 # coding=UTF-8
from __future__ import absolute_import
import base64
import zlib
from mercurial import (
changegroup,
Jun Wu
test-flagprocessor: use changegroup3 in bundle2...
r31832 exchange,
Remi Chaintron
revlog: flag processor...
r30745 extensions,
filelog,
revlog,
util,
)
# Test only: These flags are defined here only in the context of testing the
# behavior of the flag processor. The canonical way to add flags is to get in
# touch with the community and make them known in revlog.
REVIDX_NOOP = (1 << 3)
REVIDX_BASE64 = (1 << 2)
REVIDX_GZIP = (1 << 1)
REVIDX_FAIL = 1
def validatehash(self, text):
return True
def bypass(self, text):
return False
def noopdonothing(self, text):
return (text, True)
def b64encode(self, text):
return (base64.b64encode(text), False)
def b64decode(self, text):
return (base64.b64decode(text), True)
def gzipcompress(self, text):
return (zlib.compress(text), False)
def gzipdecompress(self, text):
return (zlib.decompress(text), True)
def supportedoutgoingversions(orig, repo):
versions = orig(repo)
Gregory Szorc
py3: use b'' for changegroup version literals...
r36131 versions.discard(b'01')
versions.discard(b'02')
versions.add(b'03')
Remi Chaintron
revlog: flag processor...
r30745 return versions
def allsupportedversions(orig, ui):
versions = orig(ui)
Gregory Szorc
py3: use b'' for changegroup version literals...
r36131 versions.add(b'03')
Remi Chaintron
revlog: flag processor...
r30745 return versions
def noopaddrevision(orig, self, text, transaction, link, p1, p2,
cachedelta=None, node=None,
flags=revlog.REVIDX_DEFAULT_FLAGS):
Pulkit Goyal
tests: add b'' to string literals where bytes are required...
r35588 if b'[NOOP]' in text:
Remi Chaintron
revlog: flag processor...
r30745 flags |= REVIDX_NOOP
return orig(self, text, transaction, link, p1, p2, cachedelta=cachedelta,
node=node, flags=flags)
def b64addrevision(orig, self, text, transaction, link, p1, p2,
cachedelta=None, node=None,
flags=revlog.REVIDX_DEFAULT_FLAGS):
Pulkit Goyal
tests: add b'' to string literals where bytes are required...
r35588 if b'[BASE64]' in text:
Remi Chaintron
revlog: flag processor...
r30745 flags |= REVIDX_BASE64
return orig(self, text, transaction, link, p1, p2, cachedelta=cachedelta,
node=node, flags=flags)
def gzipaddrevision(orig, self, text, transaction, link, p1, p2,
cachedelta=None, node=None,
flags=revlog.REVIDX_DEFAULT_FLAGS):
Pulkit Goyal
tests: add b'' to string literals where bytes are required...
r35588 if b'[GZIP]' in text:
Remi Chaintron
revlog: flag processor...
r30745 flags |= REVIDX_GZIP
return orig(self, text, transaction, link, p1, p2, cachedelta=cachedelta,
node=node, flags=flags)
def failaddrevision(orig, self, text, transaction, link, p1, p2,
cachedelta=None, node=None,
flags=revlog.REVIDX_DEFAULT_FLAGS):
# This addrevision wrapper is meant to add a flag we will not have
# transforms registered for, ensuring we handle this error case.
Pulkit Goyal
tests: add b'' to string literals where bytes are required...
r35588 if b'[FAIL]' in text:
Remi Chaintron
revlog: flag processor...
r30745 flags |= REVIDX_FAIL
return orig(self, text, transaction, link, p1, p2, cachedelta=cachedelta,
node=node, flags=flags)
def extsetup(ui):
# Enable changegroup3 for flags to be sent over the wire
wrapfunction = extensions.wrapfunction
wrapfunction(changegroup,
'supportedoutgoingversions',
supportedoutgoingversions)
wrapfunction(changegroup,
'allsupportedversions',
allsupportedversions)
# Teach revlog about our test flags
flags = [REVIDX_NOOP, REVIDX_BASE64, REVIDX_GZIP, REVIDX_FAIL]
revlog.REVIDX_KNOWN_FLAGS |= util.bitsfrom(flags)
revlog.REVIDX_FLAGS_ORDER.extend(flags)
Jun Wu
test-flagprocessor: use changegroup3 in bundle2...
r31832 # Teach exchange to use changegroup 3
Boris Feld
bundlespec: move computing the bundle contentops in parsebundlespec...
r37182 for k in exchange._bundlespeccontentopts.keys():
exchange._bundlespeccontentopts[k]["cg.version"] = "03"
Jun Wu
test-flagprocessor: use changegroup3 in bundle2...
r31832
Remi Chaintron
revlog: flag processor...
r30745 # Add wrappers for addrevision, responsible to set flags depending on the
# revision data contents.
wrapfunction(filelog.filelog, 'addrevision', noopaddrevision)
wrapfunction(filelog.filelog, 'addrevision', b64addrevision)
wrapfunction(filelog.filelog, 'addrevision', gzipaddrevision)
wrapfunction(filelog.filelog, 'addrevision', failaddrevision)
# Register flag processors for each extension
revlog.addflagprocessor(
REVIDX_NOOP,
(
noopdonothing,
noopdonothing,
validatehash,
)
)
revlog.addflagprocessor(
REVIDX_BASE64,
(
b64decode,
b64encode,
bypass,
),
)
revlog.addflagprocessor(
REVIDX_GZIP,
(
gzipdecompress,
gzipcompress,
bypass
)
)