##// END OF EJS Templates
localrepo: handle ValueError during repository opening...
localrepo: handle ValueError during repository opening Python 3.8 can raise ValueError on attempt of an I/O operation against an illegal path. This was causing test-remotefilelog-gc.t to fail on Python 3.8. This commit teaches repository opening to handle ValueError and re-raise an Abort on failure. An arguably better solution would be to implement this logic in the vfs layer. But that seems like a bag of worms and I don't want to go down that rabbit hole. Until users report uncaught ValueError exceptions in the wild, I think it is fine to patch this at the only occurrence our test harness is finding it. Differential Revision: https://phab.mercurial-scm.org/D7944

File last commit:

r43346:2372284d default
r45469:9e5b4dbe default
Show More
test-lfs-pointer.py
44 lines | 1.2 KiB | text/x-python | PythonLexer
/ tests / test-lfs-pointer.py
Matt Harbison
lfs: import the Facebook git-lfs client extension...
r35097 from __future__ import absolute_import, print_function
Augie Fackler
tests: port test-lfs-pointer.py to Python 3...
r37947 # Import something from Mercurial, so the module loader gets initialized.
from mercurial import pycompat
Augie Fackler
formatting: blacken the codebase...
r43346
Augie Fackler
tests: port test-lfs-pointer.py to Python 3...
r37947 del pycompat # unused for now
Matt Harbison
lfs: import the Facebook git-lfs client extension...
r35097 from hgext.lfs import pointer
Augie Fackler
formatting: blacken the codebase...
r43346
Matt Harbison
lfs: import the Facebook git-lfs client extension...
r35097 def tryparse(text):
r = {}
try:
r = pointer.deserialize(text)
print('ok')
except Exception as ex:
Augie Fackler
tests: port test-lfs-pointer.py to Python 3...
r37947 print((b'%s' % ex).decode('ascii'))
Matt Harbison
lfs: import the Facebook git-lfs client extension...
r35097 if r:
text2 = r.serialize()
if text2 != text:
print('reconstructed text differs')
return r
Augie Fackler
formatting: blacken the codebase...
r43346
t = (
b'version https://git-lfs.github.com/spec/v1\n'
b'oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1'
b'258daaa5e2ca24d17e2393\n'
b'size 12345\n'
b'x-foo extra-information\n'
)
Matt Harbison
lfs: import the Facebook git-lfs client extension...
r35097
Augie Fackler
tests: port test-lfs-pointer.py to Python 3...
r37947 tryparse(b'')
Matt Harbison
lfs: import the Facebook git-lfs client extension...
r35097 tryparse(t)
Augie Fackler
tests: port test-lfs-pointer.py to Python 3...
r37947 tryparse(t.replace(b'git-lfs', b'unknown'))
tryparse(t.replace(b'v1\n', b'v1\n\n'))
tryparse(t.replace(b'sha256', b'ahs256'))
tryparse(t.replace(b'sha256:', b''))
tryparse(t.replace(b'12345', b'0x12345'))
tryparse(t.replace(b'extra-information', b'extra\0information'))
tryparse(t.replace(b'extra-information', b'extra\ninformation'))
tryparse(t.replace(b'x-foo', b'x_foo'))
tryparse(t.replace(b'oid', b'blobid'))
tryparse(t.replace(b'size', b'size-bytes').replace(b'oid', b'object-id'))