| 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 |