aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_tkinter/test_geometry_managers.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2024-06-22 09:53:24 +0300
committerGitHub <noreply@github.com>2024-06-22 09:53:24 +0300
commit6ad26de6e8ab61b035e7ecfff9791c2b349c3ad0 (patch)
treef4259444ec145581e9834a6acacdf8027fb5ba6f /Lib/test/test_tkinter/test_geometry_managers.py
parent8f17d69b7bc906e8407095317842cc0fd52cd84a (diff)
downloadcpython-6ad26de6e8ab61b035e7ecfff9791c2b349c3ad0.tar.gz
cpython-6ad26de6e8ab61b035e7ecfff9791c2b349c3ad0.zip
gh-104855: Update Tkinter tests for Tcl/Tk 8.7 and 9.0 (GH-120824)
The tests are now passed with the current version of Tcl/Tk under development (8.7b1+ and 9.0b3+). The following changes were also made to make the tests more flexible: * Helper methods like checkParam() now interpret the expected error message as a regular expression instead of a literal. * Add support of new arguments in checkEnumParam(): - allow_empty=True skips testing with empty string; - fullname= specifies the name for error message if it differs from the option name; - sort=True sorts values for error message. * Add support of the allow_empty argument in checkReliefParam(): allow_empty=True adds an empty string to the list of accepted values. * Attributes _clip_highlightthickness, _clip_pad and _clip_borderwidth specify how negative values of options -highlightthickness, -padx, -pady and -borderwidth are handled. * Use global variables for some common error messages. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Diffstat (limited to 'Lib/test/test_tkinter/test_geometry_managers.py')
-rw-r--r--Lib/test/test_tkinter/test_geometry_managers.py47
1 files changed, 29 insertions, 18 deletions
diff --git a/Lib/test/test_tkinter/test_geometry_managers.py b/Lib/test/test_tkinter/test_geometry_managers.py
index f8f1c895c56..d71a634a767 100644
--- a/Lib/test/test_tkinter/test_geometry_managers.py
+++ b/Lib/test/test_tkinter/test_geometry_managers.py
@@ -10,6 +10,11 @@ from test.test_tkinter.widget_tests import AbstractWidgetTest
requires('gui')
+EXPECTED_FLOAT_ERRMSG = 'expected floating-point number but got "{}"'
+EXPECTED_FLOAT_OR_EMPTY_ERRMSG = 'expected floating-point number (or "" )?but got "{}"'
+EXPECTED_SCREEN_DISTANCE_ERRMSG = '(bad|expected) screen distance (but got )?"{}"'
+EXPECTED_SCREEN_DISTANCE_OR_EMPTY_ERRMSG = '(bad|expected) screen distance (or "" but got )?"{}"'
+
class PackTest(AbstractWidgetTest, unittest.TestCase):
test_keys = None
@@ -317,7 +322,8 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(f2.place_info()['x'], '-10')
self.root.update()
self.assertEqual(f2.winfo_x(), 190)
- with self.assertRaisesRegex(TclError, 'bad screen distance "spam"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('spam')):
f2.place_configure(in_=f, x='spam')
def test_place_configure_y(self):
@@ -334,7 +340,8 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(f2.place_info()['y'], '-10')
self.root.update()
self.assertEqual(f2.winfo_y(), 110)
- with self.assertRaisesRegex(TclError, 'bad screen distance "spam"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('spam')):
f2.place_configure(in_=f, y='spam')
def test_place_configure_relx(self):
@@ -351,8 +358,7 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(f2.place_info()['relx'], '1')
self.root.update()
self.assertEqual(f2.winfo_x(), 200)
- with self.assertRaisesRegex(TclError, 'expected floating-point number '
- 'but got "spam"'):
+ with self.assertRaisesRegex(TclError, EXPECTED_FLOAT_ERRMSG.format('spam')):
f2.place_configure(in_=f, relx='spam')
def test_place_configure_rely(self):
@@ -369,8 +375,7 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(f2.place_info()['rely'], '1')
self.root.update()
self.assertEqual(f2.winfo_y(), 120)
- with self.assertRaisesRegex(TclError, 'expected floating-point number '
- 'but got "spam"'):
+ with self.assertRaisesRegex(TclError, EXPECTED_FLOAT_ERRMSG.format('spam')):
f2.place_configure(in_=f, rely='spam')
def test_place_configure_anchor(self):
@@ -391,7 +396,8 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
f2.place_configure(width='')
self.root.update()
self.assertEqual(f2.winfo_width(), 30)
- with self.assertRaisesRegex(TclError, 'bad screen distance "abcd"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_OR_EMPTY_ERRMSG.format('abcd')):
f2.place_configure(width='abcd')
def test_place_configure_height(self):
@@ -402,7 +408,8 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
f2.place_configure(height='')
self.root.update()
self.assertEqual(f2.winfo_height(), 60)
- with self.assertRaisesRegex(TclError, 'bad screen distance "abcd"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_OR_EMPTY_ERRMSG.format('abcd')):
f2.place_configure(height='abcd')
def test_place_configure_relwidth(self):
@@ -413,8 +420,7 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
f2.place_configure(relwidth='')
self.root.update()
self.assertEqual(f2.winfo_width(), 30)
- with self.assertRaisesRegex(TclError, 'expected floating-point number '
- 'but got "abcd"'):
+ with self.assertRaisesRegex(TclError, EXPECTED_FLOAT_OR_EMPTY_ERRMSG.format('abcd')):
f2.place_configure(relwidth='abcd')
def test_place_configure_relheight(self):
@@ -425,8 +431,7 @@ class PlaceTest(AbstractWidgetTest, unittest.TestCase):
f2.place_configure(relheight='')
self.root.update()
self.assertEqual(f2.winfo_height(), 60)
- with self.assertRaisesRegex(TclError, 'expected floating-point number '
- 'but got "abcd"'):
+ with self.assertRaisesRegex(TclError, EXPECTED_FLOAT_OR_EMPTY_ERRMSG.format('abcd')):
f2.place_configure(relheight='abcd')
def test_place_configure_bordermode(self):
@@ -629,7 +634,8 @@ class GridTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(self.root.grid_columnconfigure(0, 'weight'), 4)
def test_grid_columnconfigure_minsize(self):
- with self.assertRaisesRegex(TclError, 'bad screen distance "foo"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('foo')):
self.root.grid_columnconfigure(0, minsize='foo')
self.root.grid_columnconfigure(0, minsize=10)
self.assertEqual(self.root.grid_columnconfigure(0, 'minsize'), 10)
@@ -646,7 +652,8 @@ class GridTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(self.root.grid_columnconfigure(0)['weight'], 3)
def test_grid_columnconfigure_pad(self):
- with self.assertRaisesRegex(TclError, 'bad screen distance "foo"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('foo')):
self.root.grid_columnconfigure(0, pad='foo')
with self.assertRaisesRegex(TclError, 'invalid arg "-pad": '
'should be non-negative'):
@@ -683,7 +690,8 @@ class GridTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(self.root.grid_rowconfigure(0, 'weight'), 4)
def test_grid_rowconfigure_minsize(self):
- with self.assertRaisesRegex(TclError, 'bad screen distance "foo"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('foo')):
self.root.grid_rowconfigure(0, minsize='foo')
self.root.grid_rowconfigure(0, minsize=10)
self.assertEqual(self.root.grid_rowconfigure(0, 'minsize'), 10)
@@ -700,7 +708,8 @@ class GridTest(AbstractWidgetTest, unittest.TestCase):
self.assertEqual(self.root.grid_rowconfigure(0)['weight'], 3)
def test_grid_rowconfigure_pad(self):
- with self.assertRaisesRegex(TclError, 'bad screen distance "foo"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('foo')):
self.root.grid_rowconfigure(0, pad='foo')
with self.assertRaisesRegex(TclError, 'invalid arg "-pad": '
'should be non-negative'):
@@ -818,9 +827,11 @@ class GridTest(AbstractWidgetTest, unittest.TestCase):
self.root.grid_location(0)
with self.assertRaises(TypeError):
self.root.grid_location(0, 0, 0)
- with self.assertRaisesRegex(TclError, 'bad screen distance "x"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('x')):
self.root.grid_location('x', 'y')
- with self.assertRaisesRegex(TclError, 'bad screen distance "y"'):
+ with self.assertRaisesRegex(TclError,
+ EXPECTED_SCREEN_DISTANCE_ERRMSG.format('y')):
self.root.grid_location('1c', 'y')
t = self.root
# de-maximize