Commit cc4290bf authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #19320: test_tcl no longer fails when wantobjects is false.

parent 848972ca
...@@ -35,6 +35,7 @@ class TclTest(unittest.TestCase): ...@@ -35,6 +35,7 @@ class TclTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.interp = Tcl() self.interp = Tcl()
self.wantobjects = self.interp.tk.wantobjects()
def testEval(self): def testEval(self):
tcl = self.interp tcl = self.interp
...@@ -167,22 +168,31 @@ class TclTest(unittest.TestCase): ...@@ -167,22 +168,31 @@ class TclTest(unittest.TestCase):
def passValue(value): def passValue(value):
return self.interp.call('set', '_', value) return self.interp.call('set', '_', value)
self.assertEqual(passValue(True), True) self.assertEqual(passValue(True), True if self.wantobjects else '1')
self.assertEqual(passValue(False), False) self.assertEqual(passValue(False), False if self.wantobjects else '0')
self.assertEqual(passValue('string'), 'string') self.assertEqual(passValue('string'), 'string')
self.assertEqual(passValue('string\u20ac'), 'string\u20ac') self.assertEqual(passValue('string\u20ac'), 'string\u20ac')
for i in (0, 1, -1, 2**31-1, -2**31): for i in (0, 1, -1, 2**31-1, -2**31):
self.assertEqual(passValue(i), i) self.assertEqual(passValue(i), i if self.wantobjects else str(i))
for f in (0.0, 1.0, -1.0, 1/3, for f in (0.0, 1.0, -1.0, 1/3,
sys.float_info.min, sys.float_info.max, sys.float_info.min, sys.float_info.max,
-sys.float_info.min, -sys.float_info.max): -sys.float_info.min, -sys.float_info.max):
self.assertEqual(passValue(f), f) if self.wantobjects:
for f in float('nan'), float('inf'), -float('inf'):
if f != f: # NaN
self.assertNotEqual(passValue(f), f)
else:
self.assertEqual(passValue(f), f) self.assertEqual(passValue(f), f)
self.assertEqual(passValue((1, '2', (3.4,))), (1, '2', (3.4,))) else:
self.assertEqual(float(passValue(f)), f)
if self.wantobjects:
f = passValue(float('nan'))
self.assertNotEqual(f, f)
self.assertEqual(passValue(float('inf')), float('inf'))
self.assertEqual(passValue(-float('inf')), -float('inf'))
else:
f = float(passValue(float('nan')))
self.assertNotEqual(f, f)
self.assertEqual(float(passValue(float('inf'))), float('inf'))
self.assertEqual(float(passValue(-float('inf'))), -float('inf'))
self.assertEqual(passValue((1, '2', (3.4,))),
(1, '2', (3.4,)) if self.wantobjects else '1 2 3.4')
def test_splitlist(self): def test_splitlist(self):
splitlist = self.interp.tk.splitlist splitlist = self.interp.tk.splitlist
...@@ -207,12 +217,15 @@ class TclTest(unittest.TestCase): ...@@ -207,12 +217,15 @@ class TclTest(unittest.TestCase):
('a 3.4', ('a', '3.4')), ('a 3.4', ('a', '3.4')),
(('a', 3.4), ('a', 3.4)), (('a', 3.4), ('a', 3.4)),
((), ()), ((), ()),
(call('list', 1, '2', (3.4,)), (1, '2', (3.4,))), (call('list', 1, '2', (3.4,)),
(1, '2', (3.4,)) if self.wantobjects else
('1', '2', '3.4')),
] ]
if tcl_version >= (8, 5): if tcl_version >= (8, 5):
testcases += [ testcases += [
(call('dict', 'create', 1, '\u20ac', b'\xe2\x82\xac', (3.4,)), (call('dict', 'create', 1, '\u20ac', b'\xe2\x82\xac', (3.4,)),
(1, '\u20ac', '\u20ac', (3.4,))), (1, '\u20ac', '\u20ac', (3.4,)) if self.wantobjects else
('1', '\u20ac', '\u20ac', '3.4')),
] ]
for arg, res in testcases: for arg, res in testcases:
self.assertEqual(splitlist(arg), res, msg=arg) self.assertEqual(splitlist(arg), res, msg=arg)
...@@ -244,12 +257,15 @@ class TclTest(unittest.TestCase): ...@@ -244,12 +257,15 @@ class TclTest(unittest.TestCase):
(('a', 3.4), ('a', 3.4)), (('a', 3.4), ('a', 3.4)),
(('a', (2, 3.4)), ('a', (2, 3.4))), (('a', (2, 3.4)), ('a', (2, 3.4))),
((), ()), ((), ()),
(call('list', 1, '2', (3.4,)), (1, '2', (3.4,))), (call('list', 1, '2', (3.4,)),
(1, '2', (3.4,)) if self.wantobjects else
('1', '2', '3.4')),
] ]
if tcl_version >= (8, 5): if tcl_version >= (8, 5):
testcases += [ testcases += [
(call('dict', 'create', 12, '\u20ac', b'\xe2\x82\xac', (3.4,)), (call('dict', 'create', 12, '\u20ac', b'\xe2\x82\xac', (3.4,)),
(12, '\u20ac', '\u20ac', (3.4,))), (12, '\u20ac', '\u20ac', (3.4,)) if self.wantobjects else
('12', '\u20ac', '\u20ac', '3.4')),
] ]
for arg, res in testcases: for arg, res in testcases:
self.assertEqual(split(arg), res, msg=arg) self.assertEqual(split(arg), res, msg=arg)
......
...@@ -182,6 +182,8 @@ IDLE ...@@ -182,6 +182,8 @@ IDLE
Tests Tests
----- -----
- Issue #19320: test_tcl no longer fails when wantobjects is false.
- Issue #19683: Removed empty tests from test_minidom. Patch by Ajitesh Gupta. - Issue #19683: Removed empty tests from test_minidom. Patch by Ajitesh Gupta.
- Issue #19919: Fix flacky SSL test. connect_ex() sometimes returns - Issue #19919: Fix flacky SSL test. connect_ex() sometimes returns
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment