184 lines
5.0 KiB
Python
184 lines
5.0 KiB
Python
|
import pytest
|
||
|
import checkpackagelib.test_util as util
|
||
|
import checkpackagelib.lib_hash as m
|
||
|
|
||
|
|
||
|
HashNumberOfFields = [
|
||
|
('empty file',
|
||
|
'any',
|
||
|
'',
|
||
|
[]),
|
||
|
('empty line',
|
||
|
'any',
|
||
|
'\n',
|
||
|
[]),
|
||
|
('ignore whitespace',
|
||
|
'any',
|
||
|
'\t\n',
|
||
|
[]),
|
||
|
('ignore comments',
|
||
|
'any',
|
||
|
'# text\n',
|
||
|
[]),
|
||
|
('1 field',
|
||
|
'any',
|
||
|
'field1\n',
|
||
|
[['any:1: expected three fields (url#adding-packages-hash)',
|
||
|
'field1\n']]),
|
||
|
('2 fields',
|
||
|
'any',
|
||
|
'field1 field2\n',
|
||
|
[['any:1: expected three fields (url#adding-packages-hash)',
|
||
|
'field1 field2\n']]),
|
||
|
('4 fields',
|
||
|
'any',
|
||
|
'field1 field2 field3 field4\n',
|
||
|
[['any:1: expected three fields (url#adding-packages-hash)',
|
||
|
'field1 field2 field3 field4\n']]),
|
||
|
('with 1 space',
|
||
|
'any',
|
||
|
'field1 field2 field3\n',
|
||
|
[]),
|
||
|
('many spaces',
|
||
|
'any',
|
||
|
' field1 field2 field3\n',
|
||
|
[]),
|
||
|
('tabs',
|
||
|
'any',
|
||
|
'field1\tfield2\tfield3\n',
|
||
|
[]),
|
||
|
('mix of tabs and spaces',
|
||
|
'any',
|
||
|
'\tfield1\t field2\t field3 \n',
|
||
|
[]),
|
||
|
]
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize('testname,filename,string,expected', HashNumberOfFields)
|
||
|
def test_HashNumberOfFields(testname, filename, string, expected):
|
||
|
warnings = util.check_file(m.HashNumberOfFields, filename, string)
|
||
|
assert warnings == expected
|
||
|
|
||
|
|
||
|
HashType = [
|
||
|
('ignore empty files',
|
||
|
'any',
|
||
|
'',
|
||
|
[]),
|
||
|
('ignore 1 field',
|
||
|
'any',
|
||
|
'text\n',
|
||
|
[]),
|
||
|
('wrong type',
|
||
|
'any',
|
||
|
'text text\n',
|
||
|
[['any:1: unexpected type of hash (url#adding-packages-hash)',
|
||
|
'text text\n']]),
|
||
|
('md5 (good)',
|
||
|
'any',
|
||
|
'md5 12345678901234567890123456789012\n',
|
||
|
[]),
|
||
|
('md5 (short)',
|
||
|
'any',
|
||
|
'md5 123456\n',
|
||
|
[['any:1: hash size does not match type (url#adding-packages-hash)',
|
||
|
'md5 123456\n',
|
||
|
'expected 32 hex digits']]),
|
||
|
('ignore space before',
|
||
|
'any',
|
||
|
' md5 12345678901234567890123456789012\n',
|
||
|
[]),
|
||
|
('2 spaces',
|
||
|
'any',
|
||
|
'md5 12345678901234567890123456789012\n',
|
||
|
[]),
|
||
|
('ignore tabs',
|
||
|
'any',
|
||
|
'md5\t12345678901234567890123456789012\n',
|
||
|
[]),
|
||
|
('common typo',
|
||
|
'any',
|
||
|
'md5sum 12345678901234567890123456789012\n',
|
||
|
[['any:1: unexpected type of hash (url#adding-packages-hash)',
|
||
|
'md5sum 12345678901234567890123456789012\n']]),
|
||
|
('md5 (too long)',
|
||
|
'any',
|
||
|
'md5 123456789012345678901234567890123\n',
|
||
|
[['any:1: hash size does not match type (url#adding-packages-hash)',
|
||
|
'md5 123456789012345678901234567890123\n',
|
||
|
'expected 32 hex digits']]),
|
||
|
('sha1 (good)',
|
||
|
'any',
|
||
|
'sha1 1234567890123456789012345678901234567890\n',
|
||
|
[]),
|
||
|
('sha256',
|
||
|
'any',
|
||
|
'sha256 1234567890123456789012345678901234567890123456789012345678901234\n',
|
||
|
[]),
|
||
|
('sha384',
|
||
|
'any',
|
||
|
'sha384 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\n',
|
||
|
[]),
|
||
|
('sha512',
|
||
|
'any',
|
||
|
'sha512 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678'
|
||
|
'9012345678\n',
|
||
|
[]),
|
||
|
]
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize('testname,filename,string,expected', HashType)
|
||
|
def test_HashType(testname, filename, string, expected):
|
||
|
warnings = util.check_file(m.HashType, filename, string)
|
||
|
assert warnings == expected
|
||
|
|
||
|
|
||
|
HashSpaces = [
|
||
|
('ignore empty files',
|
||
|
'any',
|
||
|
'',
|
||
|
[]),
|
||
|
('ignore 1 field',
|
||
|
'any',
|
||
|
'text\n',
|
||
|
[]),
|
||
|
('ignore comments',
|
||
|
'any',
|
||
|
'# type 1234567890123456789012345678901234567890 file\n',
|
||
|
[]),
|
||
|
('ignore trailing space',
|
||
|
'any',
|
||
|
'type 1234567890123456789012345678901234567890 file\t \n',
|
||
|
[]),
|
||
|
('2 spaces',
|
||
|
'any',
|
||
|
'type 1234567890123456789012345678901234567890 file\n',
|
||
|
[]),
|
||
|
('1 space',
|
||
|
'any',
|
||
|
'type 1234567890123456789012345678901234567890 file\n',
|
||
|
[['any:1: separation does not match expectation (url#adding-packages-hash)',
|
||
|
'type 1234567890123456789012345678901234567890 file\n']]),
|
||
|
('3 spaces',
|
||
|
'any',
|
||
|
'type 1234567890123456789012345678901234567890 file\n',
|
||
|
[['any:1: separation does not match expectation (url#adding-packages-hash)',
|
||
|
'type 1234567890123456789012345678901234567890 file\n']]),
|
||
|
('tabs',
|
||
|
'any',
|
||
|
'type\t1234567890123456789012345678901234567890\tfile\n',
|
||
|
[['any:1: separation does not match expectation (url#adding-packages-hash)',
|
||
|
'type\t1234567890123456789012345678901234567890\tfile\n']]),
|
||
|
('mixed tabs and spaces',
|
||
|
'any',
|
||
|
'type\t 1234567890123456789012345678901234567890 \tfile\n',
|
||
|
[['any:1: separation does not match expectation (url#adding-packages-hash)',
|
||
|
'type\t 1234567890123456789012345678901234567890 \tfile\n']]),
|
||
|
]
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize('testname,filename,string,expected', HashSpaces)
|
||
|
def test_HashSpaces(testname, filename, string, expected):
|
||
|
warnings = util.check_file(m.HashSpaces, filename, string)
|
||
|
assert warnings == expected
|