def test_resource_control_bad_property(): resource = Resource("data/table.csv", control={"bad": True}) with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "control-error" assert error.note.count("bad")
def test_resource_hashing_error_bad_hashing(): resource = Resource("data/table.csv", hashing="bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "hashing-error" assert error.note == "unsupported hash type bad"
def test_resource_scheme_error_file_not_found_bad_compression(): resource = Resource("bad.csv", compression="bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "scheme-error" assert error.note.count("[Errno 2]") and error.note.count("bad.csv")
def test_resource_scheme_error_file_not_found_remote(): resource = Resource("https://example.com/bad.csv") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "scheme-error" assert error.note[18:] == "Not Found for url: https://example.com/bad.csv"
def test_resource_scheme_error_bad_scheme_and_format(): resource = Resource("bad://bad.bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "scheme-error" assert error.note == 'cannot create loader "bad". Try installing "frictionless-bad"'
def test_resource_compression_error_bad(): resource = Resource("data/table.csv", compression="bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "compression-error" assert error.note == 'compression "bad" is not supported'
def test_resource_open_source_error_data(): resource = Resource(b"[1,2]", format="json") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "source-error" assert error.note == "unsupported inline data"
def test_resource_encoding_error_bad_encoding(): resource = Resource("data/table.csv", encoding="bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "encoding-error" assert error.note == "unknown encoding: bad"
def test_resource_not_existent_local_file_with_no_format_issue_287(): resource = Resource("bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "scheme-error" assert error.note.count("[Errno 2]") and error.note.count("bad")
def test_resource_not_existent_remote_file_with_no_format_issue_287(): resource = Resource("http://example.com/bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "scheme-error" assert error.note == "404 Client Error: Not Found for url: http://example.com/bad"
def test_gsheets_parser_bad_url(): resource = Resource("https://docs.google.com/spreadsheets/d/bad") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "scheme-error" assert error.note.count("404 Client Error: Not Found for url")
def test_resource_format_error_non_matching_format(): resource = Resource("data/table.csv", format="xlsx") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "format-error" assert error.note == 'invalid excel file "data/table.csv"'
def test_sql_parser_table_is_required_error(database_url): resource = Resource(database_url) with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "dialect-error" assert error.note.count("'table' is a required property")
def test_resource_compression_error_invalid_gz(): source = b"id,filename\n\1,dump" resource = Resource(source, format="csv", compression="gz") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "compression-error" assert error.note == "Not a gzipped file (b'id')"
def test_ods_parser_sheet_by_index_not_existent(): dialect = OdsDialect(sheet=3) resource = Resource("data/table.ods", dialect=dialect) with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "format-error" assert error.note == 'OpenOffice document "data/table.ods" does not have a sheet "3"'
def test_resource_encoding_error_non_matching_encoding(): resource = Resource("data/table.csv", encoding="ascii") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "encoding-error" if IS_UNIX: assert error.note[:51] == "'ascii' codec can't decode byte 0xe4 in position 20"
def test_resource_compression_error_invalid_zip(): source = b"id,filename\n1,archive" resource = Resource(source, format="csv", compression="zip") with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "compression-error" assert error.note == "File is not a zip file"
def test_resource_reset_on_close_issue_190(): layout = Layout(header=False, limit_rows=1) source = [["1", "english"], ["2", "中国人"]] resource = Resource(source, layout=layout) resource.open() assert resource.read_rows() == [{"field1": 1, "field2": "english"}] resource.open() assert resource.read_rows() == [{"field1": 1, "field2": "english"}] resource.close()
def test_xlsx_parser_format_errors_sheet_by_name_not_existent(): source = "data/sheet2.xlsx" dialect = ExcelDialect(sheet="bad") resource = Resource(source, dialect=dialect) with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "format-error" assert error.note == 'Excel document "data/sheet2.xlsx" does not have a sheet "bad"'
def test_resource_layout_offset_rows_error_zero_issue_521(): source = "data/long.csv" layout = Layout(offset_rows=0) resource = Resource(source, layout=layout) with pytest.raises(FrictionlessException) as excinfo: resource.open() error = excinfo.value.error assert error.code == "layout-error" assert error.note.count('minimum of 1" at "offsetRows')
def test_resource_compression_local_csv_zip_multiple_open(): resource = Resource("data/table.csv.zip") # Open first time resource.open() assert resource.header == ["id", "name"] assert resource.read_rows() == [ {"id": 1, "name": "english"}, {"id": 2, "name": "中国人"}, ] resource.close() # Open second time resource.open() assert resource.header == ["id", "name"] assert resource.read_rows() == [ {"id": 1, "name": "english"}, {"id": 2, "name": "中国人"}, ] resource.close()