1
0
mirror of https://github.com/django/django.git synced 2025-08-21 01:09:13 +00:00

Added message to TypeError exceptions in GEOS WKTReader and WKBReader.

This commit is contained in:
David Smith 2024-11-07 20:37:16 +00:00 committed by nessita
parent ef42718a2b
commit 49cb481f3d
2 changed files with 22 additions and 8 deletions

View File

@ -156,7 +156,7 @@ class _WKTReader(IOBase):
def read(self, wkt):
if not isinstance(wkt, (bytes, str)):
raise TypeError
raise TypeError(f"'wkt' must be bytes or str (got {wkt!r} instead).")
return wkt_reader_read(self.ptr, force_bytes(wkt))
@ -176,7 +176,9 @@ class _WKBReader(IOBase):
wkb_s = wkb.encode()
return wkb_reader_read_hex(self.ptr, wkb_s, len(wkb_s))
else:
raise TypeError
raise TypeError(
f"'wkb' must be bytes, str or memoryview (got {wkb!r} instead)."
)
def default_trim_value():

View File

@ -29,15 +29,23 @@ class GEOSIOTest(SimpleTestCase):
self.assertEqual(ref, geom)
# Should only accept string objects.
with self.assertRaises(TypeError):
wkt_r.read(1)
with self.assertRaises(TypeError):
wkt_r.read(memoryview(b"foo"))
bad_input = (1, 5.23, None, False, memoryview(b"foo"))
msg = "'wkt' must be bytes or str (got {} instead)."
for bad_wkt in bad_input:
with (
self.subTest(bad_wkt=bad_wkt),
self.assertRaisesMessage(TypeError, msg.format(bad_wkt)),
):
wkt_r.read(bad_wkt)
def test02_wktwriter(self):
# Creating a WKTWriter instance, testing its ptr property.
wkt_w = WKTWriter()
with self.assertRaises(TypeError):
msg = (
"Incompatible pointer type: "
"<class 'django.contrib.gis.geos.prototypes.io.LP_WKTReader_st'>."
)
with self.assertRaisesMessage(TypeError, msg):
wkt_w.ptr = WKTReader.ptr_type()
ref = GEOSGeometry("POINT (5 23)")
@ -72,8 +80,12 @@ class GEOSIOTest(SimpleTestCase):
self.assertEqual(ref, geom)
bad_input = (1, 5.23, None, False)
msg = "'wkb' must be bytes, str or memoryview (got {} instead)."
for bad_wkb in bad_input:
with self.assertRaises(TypeError):
with (
self.subTest(bad_wkb=bad_wkb),
self.assertRaisesMessage(TypeError, msg.format(bad_wkb)),
):
wkb_r.read(bad_wkb)
def test04_wkbwriter(self):