From 2f11af0bddbf22ac5afec63f50fc754b725c2f6f Mon Sep 17 00:00:00 2001 From: Felix Oesterle Date: Wed, 14 May 2025 15:44:16 +0200 Subject: [PATCH] fix(shpConversion): improve error messages for shape file validation --- avaframe/in2Trans/shpConversion.py | 10 ++++++---- avaframe/tests/test_shpConversion.py | 12 ++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/avaframe/in2Trans/shpConversion.py b/avaframe/in2Trans/shpConversion.py index f86d2ad33..d23ea43d9 100644 --- a/avaframe/in2Trans/shpConversion.py +++ b/avaframe/in2Trans/shpConversion.py @@ -302,11 +302,13 @@ def readLine(fname, defname, dem): Lx = (coordx[i] - header["xllcenter"]) / header["cellsize"] Ly = (coordy[i] - header["yllcenter"]) / header["cellsize"] if (Ly < 0) or (Ly > header["nrows"] - 1) or (Lx < 0) or (Lx > header["ncols"] - 1): - log.error(fname) - raise ValueError("This shape file exceeds dem extent. This is not allowed") + message = "This shape file exceeds dem extent: %s " % fname + log.error(message) + raise ValueError(message) elif np.isnan(rasterDEM[int(np.floor(Ly)), int(np.floor(Lx))]): - log.error(fname) - raise ValueError("This shape file is at least partially outside of DEM, this is not allowed!") + message = "This shape file is at least partially outside of dem extent: %s " % fname + log.error(message) + raise ValueError(message) return Line diff --git a/avaframe/tests/test_shpConversion.py b/avaframe/tests/test_shpConversion.py index 6ae338958..991f8312c 100644 --- a/avaframe/tests/test_shpConversion.py +++ b/avaframe/tests/test_shpConversion.py @@ -203,13 +203,21 @@ def test_readLine(capfd): # do we react properly when the input line exceeds the dem? with pytest.raises(ValueError) as e: assert shpConv.readLine(shpFileName, "", dem) - assert str(e.value) == "This shape file is at least partially outside of DEM, this is not allowed!" + + outSideError = False + if "This shape file is at least partially outside of dem" in str(e.value): + outSideError = True + assert outSideError # do we react properly when the input line exceeds the dem? shpFileName = dirname / "data" / "testShpConv" / "testLineOut.shp" with pytest.raises(ValueError) as e: assert shpConv.readLine(shpFileName, "", dem) - assert str(e.value) == "This shape file exceeds dem extent. This is not allowed" + + outSideError = False + if "This shape file exceeds dem" in str(e.value): + outSideError = True + assert outSideError shpFileName = dirname / "data" / "testShpConv" / "testLineGood.shp" Line = shpConv.readLine(shpFileName, "", dem)