[Python-checkins] [3.6] bpo-31559: Remove test order dependence in idle_test.test_browser. (GH-3708) (#3709)
Terry Jan Reedy
webhook-mailer at python.org
Sat Sep 23 15:24:21 EDT 2017
https://github.com/python/cpython/commit/429b3b1188cfac654677e8aeed494bb6067c475f
commit: 429b3b1188cfac654677e8aeed494bb6067c475f
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Terry Jan Reedy <tjreedy at udel.edu>
date: 2017-09-23T15:24:18-04:00
summary:
[3.6] bpo-31559: Remove test order dependence in idle_test.test_browser. (GH-3708) (#3709)
Order dependence caused leak-test buildbots to fail when running test_idle repeatedly.
(cherry picked from commit 99167f85b7373c8082b30a74211f009627bdedfa)
files:
A Misc/NEWS.d/next/IDLE/2017-09-23-12-52-24.bpo-31559.ydckYX.rst
M Lib/idlelib/idle_test/test_browser.py
diff --git a/Lib/idlelib/idle_test/test_browser.py b/Lib/idlelib/idle_test/test_browser.py
index 875b0b9cb85..8bc26c3451a 100644
--- a/Lib/idlelib/idle_test/test_browser.py
+++ b/Lib/idlelib/idle_test/test_browser.py
@@ -65,7 +65,7 @@ def test_close(self):
del cb.top.destroy, cb.node.destroy
-# Same nested tree creation as in test_pyclbr.py except for super on C0.
+# Nested tree same as in test_pyclbr.py except for supers on C0. C1.
mb = pyclbr
module, fname = 'test', 'test.py'
f0 = mb.Function(module, 'f0', fname, 1)
@@ -79,26 +79,43 @@ def test_close(self):
F3 = mb._nest_function(C2, 'F3', 14)
mock_pyclbr_tree = {'f0': f0, 'C0': C0}
-# transform_children(mock_pyclbr_tree, 'test') mutates C0.name.
+# Adjust C0.name, C1.name so tests do not depend on order.
+browser.transform_children(mock_pyclbr_tree, 'test') # C0(base)
+browser.transform_children(C0.children) # C1()
+
+# The class below checks that the calls above are correct
+# and that duplicate calls have no effect.
+
class TransformChildrenTest(unittest.TestCase):
- def test_transform_children(self):
+ def test_transform_module_children(self):
eq = self.assertEqual
+ transform = browser.transform_children
# Parameter matches tree module.
- tcl = list(browser.transform_children(mock_pyclbr_tree, 'test'))
- eq(tcl[0], f0)
- eq(tcl[1], C0)
+ tcl = list(transform(mock_pyclbr_tree, 'test'))
+ eq(tcl, [f0, C0])
+ eq(tcl[0].name, 'f0')
eq(tcl[1].name, 'C0(base)')
- # Check that second call does not add second '(base)' suffix.
- tcl = list(browser.transform_children(mock_pyclbr_tree, 'test'))
+ # Check that second call does not change suffix.
+ tcl = list(transform(mock_pyclbr_tree, 'test'))
eq(tcl[1].name, 'C0(base)')
# Nothing to traverse if parameter name isn't same as tree module.
- tn = browser.transform_children(mock_pyclbr_tree, 'different name')
- self.assertEqual(list(tn), [])
- # No name parameter.
- tn = browser.transform_children({'f1': f1, 'c1': c1})
- self.assertEqual(list(tn), [f1, c1])
+ tcl = list(transform(mock_pyclbr_tree, 'different name'))
+ eq(tcl, [])
+
+ def test_transform_node_children(self):
+ eq = self.assertEqual
+ transform = browser.transform_children
+ # Class with two children, one name altered.
+ tcl = list(transform(C0.children))
+ eq(tcl, [F1, C1])
+ eq(tcl[0].name, 'F1')
+ eq(tcl[1].name, 'C1()')
+ tcl = list(transform(C0.children))
+ eq(tcl[1].name, 'C1()')
+ # Function with two children.
+ eq(list(transform(f0.children)), [f1, c1])
class ModuleBrowserTreeItemTest(unittest.TestCase):
@@ -138,7 +155,7 @@ def test_getsublist(self):
self.assertIsInstance(sub0, browser.ChildBrowserTreeItem)
self.assertIsInstance(sub1, browser.ChildBrowserTreeItem)
self.assertEqual(sub0.name, 'f0')
- self.assertEqual(sub1.name, 'C0')
+ self.assertEqual(sub1.name, 'C0(base)')
def test_ondoubleclick(self):
@@ -172,13 +189,13 @@ def tearDownClass(cls):
def test_init(self):
eq = self.assertEqual
- eq(self.cbt_C1.name, 'C1')
+ eq(self.cbt_C1.name, 'C1()')
self.assertFalse(self.cbt_C1.isfunction)
eq(self.cbt_f1.name, 'f1')
self.assertTrue(self.cbt_f1.isfunction)
def test_gettext(self):
- self.assertEqual(self.cbt_C1.GetText(), 'class C1')
+ self.assertEqual(self.cbt_C1.GetText(), 'class C1()')
self.assertEqual(self.cbt_f1.GetText(), 'def f1(...)')
def test_geticonname(self):
@@ -221,7 +238,7 @@ def test_nested(self):
# The tree items are processed in breadth first order.
# Verify that processing each sublist hits every node and
# in the right order.
- expected_names = ['f0', 'C0', # This is run before transform test.
+ expected_names = ['f0', 'C0(base)',
'f1', 'c1', 'F1', 'C1()',
'f2', 'C2',
'F3']
diff --git a/Misc/NEWS.d/next/IDLE/2017-09-23-12-52-24.bpo-31559.ydckYX.rst b/Misc/NEWS.d/next/IDLE/2017-09-23-12-52-24.bpo-31559.ydckYX.rst
new file mode 100644
index 00000000000..424da7a3f17
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2017-09-23-12-52-24.bpo-31559.ydckYX.rst
@@ -0,0 +1 @@
+Remove test order dependence in idle_test.test_browser.
More information about the Python-checkins
mailing list