mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
106 lines
3.7 KiB
Python
106 lines
3.7 KiB
Python
import collections
|
|
import tempfile
|
|
|
|
import pytest
|
|
|
|
from galaxy.tool_util.verify import (
|
|
files_contains,
|
|
files_delta,
|
|
files_diff,
|
|
files_re_match,
|
|
files_re_match_multiline,
|
|
)
|
|
|
|
|
|
F1 = b"A\nB\nC"
|
|
F2 = b"A\nB\nD\nE" * 61
|
|
F3 = b"A\nB\n\xfc"
|
|
F4 = b"A\r\nB\nC"
|
|
MULTILINE_MATCH = b".*"
|
|
TestFile = collections.namedtuple('TestFile', 'value path')
|
|
|
|
|
|
def test_file_list():
|
|
files = []
|
|
for b, ext in [(F1, '.txt'), (F2, '.txt'), (F3, '.pdf'), (F4, '.txt'), (MULTILINE_MATCH, '.txt')]:
|
|
with tempfile.NamedTemporaryFile(mode='wb', suffix=ext, delete=False) as out:
|
|
out.write(b)
|
|
files.append(TestFile(b, out.name))
|
|
return files
|
|
|
|
|
|
def generate_tests(multiline=False):
|
|
f1, f2, f3, f4, multiline_match = test_file_list()
|
|
if multiline:
|
|
tests = [(multiline_match, f1, {'lines_diff': 0, 'sort': True}, None)]
|
|
else:
|
|
tests = [(f1, f1, {'lines_diff': 0, 'sort': True}, None)]
|
|
tests.extend([
|
|
(f1, f2, {'lines_diff': 0, 'sort': True}, AssertionError),
|
|
(f1, f3, None, AssertionError),
|
|
(f1, f4, None, None),
|
|
])
|
|
return tests
|
|
|
|
|
|
def generate_tests_sim_size():
|
|
f1, f2, f3, f4, multiline_match = test_file_list()
|
|
# tests for equal files
|
|
tests = [(f1, f1, None, None), # pass default values
|
|
(f1, f1, {'delta': 0}, None), # pass for values that should always pass
|
|
(f1, f1, {'delta_frac': 0.0}, None)]
|
|
# tests for two different file (diff is 422 lines, 0.011709602)
|
|
tests += [(f1, f2, None, None), # pass default values
|
|
(f1, f2, {'delta': 422}, None), # test around the actual difference of two different
|
|
(f1, f2, {'delta_frac': 84.4}, None),
|
|
(f1, f2, {'delta': 421}, AssertionError),
|
|
(f1, f2, {'delta_frac': 84.3}, AssertionError),
|
|
(f1, f2, {'delta': 422, 'delta_frac': 84.3}, AssertionError), # test with combination where at least one leads to an assertion
|
|
(f1, f2, {'delta': 421, 'delta_frac': 84.4}, AssertionError)]
|
|
return tests
|
|
|
|
|
|
@pytest.mark.parametrize('file1,file2,attributes,expect', generate_tests())
|
|
def test_files_contains(file1, file2, attributes, expect):
|
|
if expect is not None:
|
|
with pytest.raises(expect):
|
|
files_contains(file1.path, file2.path, attributes)
|
|
else:
|
|
files_contains(file2.path, file2.path, attributes)
|
|
|
|
|
|
@pytest.mark.parametrize('file1,file2,attributes,expect', generate_tests_sim_size())
|
|
def test_files_delta(file1, file2, attributes, expect):
|
|
if expect is not None:
|
|
with pytest.raises(expect):
|
|
files_delta(file1.path, file2.path, attributes)
|
|
else:
|
|
files_delta(file1.path, file2.path, attributes)
|
|
|
|
|
|
@pytest.mark.parametrize('file1,file2,attributes,expect', generate_tests())
|
|
def test_files_diff(file1, file2, attributes, expect):
|
|
if expect is not None:
|
|
with pytest.raises(expect):
|
|
files_diff(file1.path, file2.path, attributes)
|
|
else:
|
|
files_diff(file1.path, file2.path, attributes)
|
|
|
|
|
|
@pytest.mark.parametrize('file1,file2,attributes,expect', generate_tests())
|
|
def test_files_re_match(file1, file2, attributes, expect):
|
|
if expect is not None:
|
|
with pytest.raises(expect):
|
|
files_re_match(file1.path, file2.path, attributes)
|
|
else:
|
|
files_re_match(file1.path, file2.path, attributes)
|
|
|
|
|
|
@pytest.mark.parametrize('file1,file2,attributes,expect', generate_tests(multiline=True))
|
|
def test_files_re_match_multiline(file1, file2, attributes, expect):
|
|
if expect is not None:
|
|
with pytest.raises(expect):
|
|
files_re_match_multiline(file1.path, file2.path, attributes)
|
|
else:
|
|
files_re_match_multiline(file1.path, file2.path, attributes)
|