import pytest from quality_control.errors import ParseError from quality_control.parsing import FileType, parse_file @pytest.mark.parametrize( "filepath,filetype", (("tests/test_data/average_crlf.tsv", FileType.STANDARD_ERROR), ("tests/test_data/average_error_at_end_200MB.tsv", FileType.STANDARD_ERROR), ("tests/test_data/average.tsv", FileType.STANDARD_ERROR), ("tests/test_data/standarderror_1_error_at_end.tsv", FileType.AVERAGE), ("tests/test_data/standarderror.tsv", FileType.AVERAGE), ("tests/test_data/duplicated_headers_no_data_errors.tsv", FileType.STANDARD_ERROR),)) def test_parse_file_fails_with_wrong_filetype_declaration(filepath, filetype, strains): with pytest.raises(ParseError): for line in parse_file(filepath, filetype, strains): pass @pytest.mark.parametrize( "filepath,filetype", (("tests/test_data/average_crlf.tsv", FileType.AVERAGE), ("tests/test_data/average.tsv", FileType.AVERAGE), ("tests/test_data/standarderror.tsv", FileType.STANDARD_ERROR))) def test_parse_file_passes_with_valid_files(filepath, filetype, strains): for line in parse_file(filepath, filetype, strains): assert bool(line) @pytest.mark.parametrize( "filepath,filetype", (("tests/test_data/average_large.tsv", FileType.AVERAGE), ("tests/test_data/average.tsv", FileType.AVERAGE), ("tests/test_data/standarderror.tsv", FileType.STANDARD_ERROR))) def test_parse_file_works_with_large_files(filepath, filetype, strains): for line in parse_file(filepath, filetype, strains): assert bool(line) @pytest.mark.parametrize( "filepath,filetype", (("tests/test_data/average_error_at_end_200MB.tsv", FileType.AVERAGE), ("tests/test_data/standarderror_1_error_at_end.tsv", FileType.STANDARD_ERROR), ("tests/test_data/duplicated_headers_no_data_errors.tsv", FileType.AVERAGE))) def test_parse_file_raises_exception_on_error_in_file(filepath, filetype, strains): with pytest.raises(ParseError): for line in parse_file(filepath, filetype, strains): pass