##// END OF EJS Templates
copies: handle a case when both merging csets are not descendant of merge base...
copies: handle a case when both merging csets are not descendant of merge base This patch fix the behaviour of fullcopytracing algorithm in the case when both the merging csets are not the descendant of merge base. Although it seems to be the rare case when both the csets are not descendant of merge base. But it can be seen in most of cases of content-divergence in evolve extension, where merge base is the common predecessor. Previous patch added a test where this algorithm can fail to continue because of an assumption that only one of the two csets can be dirty. This patch fix that error. For refrence I suggest you to look into the previous discussion held on a patch sent by Pulkit: https://phab.mercurial-scm.org/D3896 Differential Revision: https://phab.mercurial-scm.org/D5963

File last commit:

r40157:73fef626 default
r42098:7694b685 default
Show More
test_train_dictionary.py
88 lines | 2.8 KiB | text/x-python | PythonLexer
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import struct
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 import sys
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import unittest
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 import zstandard as zstd
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
Gregory Szorc
zstd: vendor python-zstandard 0.7.0...
r30895 from . common import (
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 generate_samples,
Gregory Szorc
zstd: vendor python-zstandard 0.7.0...
r30895 make_cffi,
)
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
if sys.version_info[0] >= 3:
int_type = int
else:
int_type = long
Gregory Szorc
zstd: vendor python-zstandard 0.7.0...
r30895 @make_cffi
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435 class TestTrainDictionary(unittest.TestCase):
def test_no_args(self):
with self.assertRaises(TypeError):
zstd.train_dictionary()
def test_bad_args(self):
with self.assertRaises(TypeError):
zstd.train_dictionary(8192, u'foo')
with self.assertRaises(ValueError):
zstd.train_dictionary(8192, [u'foo'])
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 def test_no_params(self):
d = zstd.train_dictionary(8192, generate_samples())
self.assertIsInstance(d.dict_id(), int_type)
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 # The dictionary ID may be different across platforms.
expected = b'\x37\xa4\x30\xec' + struct.pack('<I', d.dict_id())
Gregory Szorc
zstd: vendor python-zstandard 0.5.0...
r30435
data = d.as_bytes()
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 self.assertEqual(data[0:8], expected)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
def test_basic(self):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 d = zstd.train_dictionary(8192, generate_samples(), k=64, d=16)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 self.assertIsInstance(d.dict_id(), int_type)
data = d.as_bytes()
self.assertEqual(data[0:4], b'\x37\xa4\x30\xec')
self.assertEqual(d.k, 64)
self.assertEqual(d.d, 16)
def test_set_dict_id(self):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 d = zstd.train_dictionary(8192, generate_samples(), k=64, d=16,
dict_id=42)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796 self.assertEqual(d.dict_id(), 42)
def test_optimize(self):
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 d = zstd.train_dictionary(8192, generate_samples(), threads=-1, steps=1,
d=16)
Gregory Szorc
zstandard: vendor python-zstandard 0.10.1...
r40157 # This varies by platform.
self.assertIn(d.k, (50, 2000))
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 self.assertEqual(d.d, 16)
@make_cffi
class TestCompressionDict(unittest.TestCase):
def test_bad_mode(self):
with self.assertRaisesRegexp(ValueError, 'invalid dictionary load mode'):
zstd.ZstdCompressionDict(b'foo', dict_type=42)
def test_bad_precompute_compress(self):
d = zstd.train_dictionary(8192, generate_samples(), k=64, d=16)
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 with self.assertRaisesRegexp(ValueError, 'must specify one of level or '):
d.precompute_compress()
with self.assertRaisesRegexp(ValueError, 'must only specify one of level or '):
d.precompute_compress(level=3,
compression_params=zstd.CompressionParameters())
Gregory Szorc
zstd: vendor python-zstandard 0.8.0...
r31796
Gregory Szorc
zstandard: vendor python-zstandard 0.9.0...
r37513 def test_precompute_compress_rawcontent(self):
d = zstd.ZstdCompressionDict(b'dictcontent' * 64,
dict_type=zstd.DICT_TYPE_RAWCONTENT)
d.precompute_compress(level=1)
d = zstd.ZstdCompressionDict(b'dictcontent' * 64,
dict_type=zstd.DICT_TYPE_FULLDICT)
with self.assertRaisesRegexp(zstd.ZstdError, 'unable to precompute dictionary'):
d.precompute_compress(level=1)