Skip to content
19 changes: 19 additions & 0 deletions Lib/test/test_turtle.py
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,25 @@ def test_teleport(self):
tpen.teleport(-100, -100, fill_gap=fill_gap_value)
self.assertTrue(tpen.isdown())

def test_pensize_with_positive_numbers(self):
tpen = turtle.TPen()

tpen.pensize(42)
self.assertEqual(42, tpen.pensize())

def test_pensize_with_nonpositive_numbers(self):
tpen = turtle.TPen()

tpen.pensize(0)
self.assertEqual(0, tpen.pensize())

width = -1
msg = f"width argument must be a positive number, but got {width}."
with self.assertRaisesRegex(turtle.TurtleGraphicsError, re.escape(msg)):
tpen.pensize(width)

self.assertEqual(0, tpen.pensize())


class TestTurtleScreen(unittest.TestCase):
def test_save_raises_if_wrong_extension(self) -> None:
Expand Down
6 changes: 5 additions & 1 deletion Lib/turtle.py
Original file line number Diff line number Diff line change
Expand Up @@ -2141,7 +2141,11 @@ def pensize(self, width=None):
"""
if width is None:
return self._pensize
self.pen(pensize=width)
elif width < 0:
msg = f"width argument must be a positive number, but got {width}."
raise TurtleGraphicsError(msg)
else:
self.pen(pensize=width)


def penup(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TPen.pensize raises TurtleGraphicsError if called with a negative number
Loading