library packages
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
from pathlib import Path
|
||||
|
||||
from pyogrio import vsi_listtree, vsi_unlink
|
||||
from pyogrio.raw import read, write
|
||||
from pyogrio.util import vsimem_rmtree_toplevel
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
def test_vsimem_rmtree_toplevel(naturalearth_lowres):
|
||||
# Prepare test data in /vsimem/
|
||||
meta, _, geometry, field_data = read(naturalearth_lowres)
|
||||
meta["spatial_index"] = False
|
||||
meta["geometry_type"] = "MultiPolygon"
|
||||
test_dir_path = Path(f"/vsimem/test/{naturalearth_lowres.stem}.gpkg")
|
||||
test_dir2_path = Path(f"/vsimem/test2/test2/{naturalearth_lowres.stem}.gpkg")
|
||||
|
||||
write(test_dir_path, geometry, field_data, **meta)
|
||||
write(test_dir2_path, geometry, field_data, **meta)
|
||||
|
||||
# Check if everything was created properly with listtree
|
||||
files = vsi_listtree("/vsimem/")
|
||||
assert test_dir_path.as_posix() in files
|
||||
assert test_dir2_path.as_posix() in files
|
||||
|
||||
# Test deleting parent dir of file in single directory
|
||||
vsimem_rmtree_toplevel(test_dir_path)
|
||||
files = vsi_listtree("/vsimem/")
|
||||
assert test_dir_path.parent.as_posix() not in files
|
||||
assert test_dir2_path.as_posix() in files
|
||||
|
||||
# Test deleting top-level dir of file in a subdirectory
|
||||
vsimem_rmtree_toplevel(test_dir2_path)
|
||||
assert test_dir2_path.as_posix() not in vsi_listtree("/vsimem/")
|
||||
|
||||
|
||||
def test_vsimem_rmtree_toplevel_error(naturalearth_lowres):
|
||||
# Prepare test data in /vsimem
|
||||
meta, _, geometry, field_data = read(naturalearth_lowres)
|
||||
meta["spatial_index"] = False
|
||||
meta["geometry_type"] = "MultiPolygon"
|
||||
test_file_path = Path(f"/vsimem/pyogrio_test_{naturalearth_lowres.stem}.gpkg")
|
||||
|
||||
write(test_file_path, geometry, field_data, **meta)
|
||||
assert test_file_path.as_posix() in vsi_listtree("/vsimem/")
|
||||
|
||||
# Deleting parent dir of non-existent file should raise an error.
|
||||
with pytest.raises(FileNotFoundError, match="Path does not exist"):
|
||||
vsimem_rmtree_toplevel("/vsimem/test/non-existent.gpkg")
|
||||
|
||||
# File should still be there
|
||||
assert test_file_path.as_posix() in vsi_listtree("/vsimem/")
|
||||
|
||||
# Cleanup.
|
||||
vsi_unlink(test_file_path)
|
||||
assert test_file_path not in vsi_listtree("/vsimem/")
|
||||
Reference in New Issue
Block a user