def test_resource_source_non_tabular_error_bad_path(): resource = Resource(path="data/bad.txt") with pytest.raises(exceptions.FrictionlessException) as excinfo: resource.read_bytes() error = excinfo.value.error assert error.code == "scheme-error" assert error.note.count("data/bad.txt")
def test_resource_source_data(): data = [["id", "name"], ["1", "english"], ["2", "中国人"]] resource = Resource({"data": data}) assert resource.path is None assert resource.data == data assert resource.source == data assert resource.basepath == "" assert resource.inline is True assert resource.tabular is True assert resource.multipart is False assert resource.read_bytes() == b"" assert resource.read_data() == data[1:] assert resource.read_rows() == [ { "id": 1, "name": "english" }, { "id": 2, "name": "中国人" }, ] assert resource.read_header() == ["id", "name"] assert resource.read_sample() == data[1:] assert resource.read_stats() == { "hash": "", "bytes": 0, "fields": 2, "rows": 2, }
def test_resource_source_path(): path = "data/table.csv" resource = Resource({"path": path}) assert resource.path == path assert resource.data is None assert resource.source == path assert resource.basepath == "" assert resource.inline is False assert resource.tabular is True assert resource.multipart is False assert (resource.read_bytes() == b"id,name\n1,english\n2,\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\n") assert resource.read_data() == [["1", "english"], ["2", "中国人"]] assert resource.read_rows() == [ { "id": 1, "name": "english" }, { "id": 2, "name": "中国人" }, ] assert resource.read_header() == ["id", "name"] assert resource.read_sample() == [["1", "english"], ["2", "中国人"]] assert resource.read_stats() == { "hash": "6c2c61dd9b0e9c6876139a449ed87933", "bytes": 30, "fields": 2, "rows": 2, }
def test_resource_source_non_tabular(): path = "data/text.txt" resource = Resource(path=path) assert resource.path == path assert resource.data is None assert resource.source == path assert resource.basepath == "" assert resource.inline is False assert resource.tabular is False assert resource.multipart is False assert resource.read_bytes() == b"text\n" assert resource.read_stats() == { "hash": "e1cbb0c3879af8347246f12c559a86b5", "bytes": 5, "rows": 0, }
def test_resource_source_non_tabular_remote(): path = BASE_URL % "data/foo.txt" resource = Resource(path=path) assert resource.path == path assert resource.data is None assert resource.source == path assert resource.basepath == "" assert resource.inline is False assert resource.tabular is False assert resource.multipart is False assert resource.read_bytes() == b"foo\n" assert resource.read_stats() == { "hash": "d3b07384d113edec49eaa6238ad5ff00", "bytes": 4, "rows": 0, }
def test_filelike_loader_write(): source = Resource("data/table.csv") target = Resource(scheme="filelike", format="csv") source.write(target) assert (target.read_bytes( ) == b"id,name\r\n1,english\r\n2,\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\r\n")
def test_resource_read_bytes(): resource = Resource(path="data/text.txt") bytes = resource.read_bytes() if IS_UNIX: assert bytes == b"text\n"