1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
import os
import pytest
from click.testing import CliRunner
import fiona
from fiona.model import Feature
from fiona.fio.main import main_group
def create_sample_data(filename, driver, **extra_meta):
meta = {"driver": driver, "schema": {"geometry": "Point", "properties": {}}}
meta.update(extra_meta)
with fiona.open(filename, "w", **meta) as dst:
dst.write(
Feature.from_dict(
**{
"geometry": {
"type": "Point",
"coordinates": (0, 0),
},
"properties": {},
}
)
)
assert os.path.exists(filename)
drivers = ["ESRI Shapefile", "GeoJSON"]
@pytest.mark.parametrize("driver", drivers)
def test_remove(tmpdir, driver):
extension = {"ESRI Shapefile": "shp", "GeoJSON": "json"}[driver]
filename = f"delete_me.{extension}"
filename = str(tmpdir.join(filename))
create_sample_data(filename, driver)
result = CliRunner().invoke(main_group, ["rm", filename, "--yes"])
assert result.exit_code == 0
assert not os.path.exists(filename)
has_gpkg = "GPKG" in fiona.supported_drivers.keys()
@pytest.mark.skipif(not has_gpkg, reason="Requires GPKG driver")
def test_remove_layer(tmpdir):
filename = str(tmpdir.join("a_filename.gpkg"))
create_sample_data(filename, "GPKG", layer="layer1")
create_sample_data(filename, "GPKG", layer="layer2")
assert fiona.listlayers(filename) == ["layer1", "layer2"]
result = CliRunner().invoke(
main_group, ["rm", filename, "--layer", "layer2", "--yes"]
)
assert result.exit_code == 0
assert os.path.exists(filename)
assert fiona.listlayers(filename) == ["layer1"]
|