"""Test the parsing of the files""" 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): """Check that parsing fails if the wrong file type is declared""" with pytest.raises(ParseError): for line in parse_file(filepath, filetype, strains): # pylint: disable=[unused-variable] pass @pytest.mark.parametrize( "filepath,filetype", (("tests/test_data/no_data_errors.tsv", FileType.AVERAGE),)) def test_parse_file_passes_with_valid_files(filepath, filetype, strains): """Check that parsing succeeds with valid files""" for line in parse_file(filepath, filetype, strains): assert bool(line) @pytest.mark.slow @pytest.mark.parametrize( "filepath,filetype", (("tests/test_data/average_large_no_errors.tsv", FileType.AVERAGE), # ("tests/test_data/average_no_errors.tsv", FileType.AVERAGE), # ("tests/test_data/standarderror_no_errors.tsv", FileType.STANDARD_ERROR), )) def test_parse_file_works_with_large_files(filepath, filetype, strains): """Check that parsing succeeds even with large files.""" for line in parse_file(filepath, filetype, strains): assert bool(line) @pytest.mark.slow @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): "Check that parsing fails if any error is found in a file" with pytest.raises(ParseError): for line in parse_file(filepath, filetype, strains): # pylint: disable=[unused-variable] pass