mirror of
https://github.com/facebook/zstd
synced 2026-08-22 22:32:07 -04:00
[version-test] Work around bugs in v0.7.3 dict builder
Before calling a dictionary good, make sure that it can compress an input. If v0.7.3 rejects v0.7.3's dictionary, fall back to the v1.0 dictionary. This is not the job of the verison test to test it, because we cannot fix this code.
This commit is contained in:
parent
8957fef554
commit
321490cd5b
1 changed files with 13 additions and 1 deletions
|
|
@ -85,6 +85,18 @@ def get_git_tags():
|
|||
return tags
|
||||
|
||||
|
||||
def dict_ok(tag, dict_name, sample):
|
||||
if not os.path.isfile(dict_name):
|
||||
return False
|
||||
try:
|
||||
cmd = ['./zstd.' + tag, '-D', dict_name]
|
||||
with open(sample, "rb") as i:
|
||||
subprocess.check_call(cmd, stdin=i, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
def create_dict(tag, dict_source_path, fallback_tag=None):
|
||||
dict_name = 'dict.' + tag
|
||||
if not os.path.isfile(dict_name):
|
||||
|
|
@ -96,7 +108,7 @@ def create_dict(tag, dict_source_path, fallback_tag=None):
|
|||
result = execute('./dictBuilder.' + tag + ' ' + ' '.join(files) + ' -o ' + dict_name, print_output=False, param_shell=True)
|
||||
else:
|
||||
result = execute('./zstd.' + tag + ' -f --train ' + ' '.join(files) + ' -o ' + dict_name, print_output=False, param_shell=True)
|
||||
if result == 0 and os.path.isfile(dict_name):
|
||||
if result == 0 and dict_ok(tag, dict_name, files[0]):
|
||||
print(dict_name + ' created')
|
||||
elif fallback_tag is not None:
|
||||
fallback_dict_name = 'dict.' + fallback_tag
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue