Mercurial > hg
view tests/test-lfs-pointer.py @ 36146:29dd37a418aa
bdiff: write a native version of splitnewlines
./hg perfunidiff mercurial/manifest.py 0 --count 500 --profile before:
! wall 0.309280 comb 0.350000 user 0.290000 sys 0.060000 (best of 32)
./hg perfunidiff mercurial/manifest.py 0 --count 500 --profile after:
! wall 0.241572 comb 0.260000 user 0.240000 sys 0.020000 (best of 39)
so it's about 20% faster. I hate Python. I wish we could usefully
write this in Rust, but it doesn't look like that's realistic without
using the cpython crate, which I'd still like to avoid.
Differential Revision: https://phab.mercurial-scm.org/D1973
author | Augie Fackler <augie@google.com> |
---|---|
date | Thu, 25 Jan 2018 21:16:28 -0500 |
parents | 66c5a8cf2868 |
children | 7cd1e1adc471 |
line wrap: on
line source
from __future__ import absolute_import, print_function import os import sys # make it runnable using python directly without run-tests.py sys.path[0:0] = [os.path.join(os.path.dirname(__file__), '..')] from hgext.lfs import pointer def tryparse(text): r = {} try: r = pointer.deserialize(text) print('ok') except Exception as ex: print(ex) if r: text2 = r.serialize() if text2 != text: print('reconstructed text differs') return r t = ('version https://git-lfs.github.com/spec/v1\n' 'oid sha256:4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1' '258daaa5e2ca24d17e2393\n' 'size 12345\n' 'x-foo extra-information\n') tryparse('') tryparse(t) tryparse(t.replace('git-lfs', 'unknown')) tryparse(t.replace('v1\n', 'v1\n\n')) tryparse(t.replace('sha256', 'ahs256')) tryparse(t.replace('sha256:', '')) tryparse(t.replace('12345', '0x12345')) tryparse(t.replace('extra-information', 'extra\0information')) tryparse(t.replace('extra-information', 'extra\ninformation')) tryparse(t.replace('x-foo', 'x_foo')) tryparse(t.replace('oid', 'blobid')) tryparse(t.replace('size', 'size-bytes').replace('oid', 'object-id'))