mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
a5ae36fcb1
See the previous patch for why. The added test seems not making much sense because ASCII strings should never contain "\xed" and be valid UTF-8. (with mercurial repo) $ export HGRCPATH=/dev/null HGPLAIN= $ hg log --time --config experimental.stabilization=all -Tjson > /dev/null (original) time: real 6.830 secs (user 6.740+0.000 sys 0.080+0.000) time: real 6.690 secs (user 6.650+0.000 sys 0.040+0.000) time: real 6.700 secs (user 6.640+0.000 sys 0.060+0.000) (fast jsonescape) time: real 5.630 secs (user 5.550+0.000 sys 0.070+0.000) time: real 5.700 secs (user 5.650+0.000 sys 0.050+0.000) time: real 5.690 secs (user 5.640+0.000 sys 0.050+0.000) (this patch) time: real 5.190 secs (user 5.120+0.000 sys 0.070+0.000) time: real 5.230 secs (user 5.170+0.000 sys 0.050+0.000) time: real 5.220 secs (user 5.150+0.000 sys 0.070+0.000)
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from __future__ import absolute_import
|
|
|
|
import unittest
|
|
|
|
from mercurial import (
|
|
encoding,
|
|
)
|
|
|
|
class IsasciistrTest(unittest.TestCase):
|
|
asciistrs = [
|
|
b'a',
|
|
b'ab',
|
|
b'abc',
|
|
b'abcd',
|
|
b'abcde',
|
|
b'abcdefghi',
|
|
b'abcd\0fghi',
|
|
]
|
|
|
|
def testascii(self):
|
|
for s in self.asciistrs:
|
|
self.assertTrue(encoding.isasciistr(s))
|
|
|
|
def testnonasciichar(self):
|
|
for s in self.asciistrs:
|
|
for i in range(len(s)):
|
|
t = bytearray(s)
|
|
t[i] |= 0x80
|
|
self.assertFalse(encoding.isasciistr(bytes(t)))
|
|
|
|
class LocalEncodingTest(unittest.TestCase):
|
|
def testasciifastpath(self):
|
|
s = b'\0' * 100
|
|
self.assertTrue(s is encoding.tolocal(s))
|
|
self.assertTrue(s is encoding.fromlocal(s))
|
|
|
|
class Utf8bEncodingTest(unittest.TestCase):
|
|
def testasciifastpath(self):
|
|
s = b'\0' * 100
|
|
self.assertTrue(s is encoding.toutf8b(s))
|
|
self.assertTrue(s is encoding.fromutf8b(s))
|
|
|
|
if __name__ == '__main__':
|
|
import silenttestrunner
|
|
silenttestrunner.main(__name__)
|