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")
Ejemplo n.º 2
0
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"'
Ejemplo n.º 6
0
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'
Ejemplo n.º 7
0
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"
Ejemplo n.º 9
0
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")
Ejemplo n.º 10
0
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"
Ejemplo n.º 11
0
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")
Ejemplo n.º 12
0
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"'
Ejemplo n.º 13
0
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")
Ejemplo n.º 14
0
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')"
Ejemplo n.º 15
0
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"
Ejemplo n.º 17
0
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"
Ejemplo n.º 18
0
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()
Ejemplo n.º 19
0
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"'
Ejemplo n.º 20
0
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')
Ejemplo n.º 21
0
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()