summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-05-14 04:18:30 (GMT)
committerGitHub <noreply@github.com>2023-05-14 04:18:30 (GMT)
commit03f0d75f1de21288c0c9c9c35219657c48856062 (patch)
tree286ed77e879f15b963ada87faddd3edc71e8b74f
parentb87ccc38fe3ab4eca6e026b76f868db4d53c963f (diff)
downloadcpython-03f0d75f1de21288c0c9c9c35219657c48856062.zip
cpython-03f0d75f1de21288c0c9c9c35219657c48856062.tar.gz
cpython-03f0d75f1de21288c0c9c9c35219657c48856062.tar.bz2
[3.11] GH-71383: IDLE - Document testing subsets of modules (GH-104463) (#104464)
GH-71383: IDLE - Document testing subsets of modules (GH-104463) (cherry picked from commit 080a5961527473af182b025bb29e0c52d43fd49e) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
-rw-r--r--Lib/idlelib/idle_test/README.txt19
-rw-r--r--Lib/idlelib/idle_test/__init__.py24
-rw-r--r--Lib/test/test_idle.py6
3 files changed, 29 insertions, 20 deletions
diff --git a/Lib/idlelib/idle_test/README.txt b/Lib/idlelib/idle_test/README.txt
index 566bfd1..cacd06d 100644
--- a/Lib/idlelib/idle_test/README.txt
+++ b/Lib/idlelib/idle_test/README.txt
@@ -146,14 +146,17 @@ python -m unittest -v idlelib.idle_test
python -m test -v -ugui test_idle
python -m test.test_idle
-The idle tests are 'discovered' by
-idlelib.idle_test.__init__.load_tests, which is also imported into
-test.test_idle. Normally, neither file should be changed when working on
-individual test modules. The third command runs unittest indirectly
-through regrtest. The same happens when the entire test suite is run
-with 'python -m test'. So that command must work for buildbots to stay
-green. Idle tests must not disturb the environment in a way that makes
-other tests fail (issue 18081).
+IDLE tests are 'discovered' by idlelib.idle_test.__init__.load_tests
+when this is imported into test.test_idle. Normally, neither file
+should be changed when working on individual test modules. The third
+command runs unittest indirectly through regrtest. The same happens when
+the entire test suite is run with 'python -m test'. So that command must
+work for buildbots to stay green. IDLE tests must not disturb the
+environment in a way that makes other tests fail (GH-62281).
+
+To test subsets of modules, see idlelib.idle_test.__init__. This
+can be used to find refleaks or possible sources of "Theme changed"
+tcl messages (GH-71383).
To run an individual Testcase or test method, extend the dotted name
given to unittest on the command line or use the test -m option. The
diff --git a/Lib/idlelib/idle_test/__init__.py b/Lib/idlelib/idle_test/__init__.py
index ad067b4..79b5d10 100644
--- a/Lib/idlelib/idle_test/__init__.py
+++ b/Lib/idlelib/idle_test/__init__.py
@@ -1,17 +1,27 @@
-'''idlelib.idle_test is a private implementation of test.test_idle,
-which tests the IDLE application as part of the stdlib test suite.
-Run IDLE tests alone with "python -m test.test_idle".
-Starting with Python 3.6, IDLE requires tcl/tk 8.5 or later.
+"""idlelib.idle_test implements test.test_idle, which tests the IDLE
+application as part of the stdlib test suite.
+Run IDLE tests alone with "python -m test.test_idle (-v)".
This package and its contained modules are subject to change and
any direct use is at your own risk.
-'''
+"""
from os.path import dirname
+# test_idle imports load_tests for test discovery (default all).
+# To run subsets of idlelib module tests, insert '[<chars>]' after '_'.
+# Example: insert '[ac]' for modules beginning with 'a' or 'c'.
+# Additional .discover/.addTest pairs with separate inserts work.
+# Example: pairs with 'c' and 'g' test c* files and grep.
+
def load_tests(loader, standard_tests, pattern):
this_dir = dirname(__file__)
top_dir = dirname(dirname(this_dir))
- package_tests = loader.discover(start_dir=this_dir, pattern='test*.py',
+ module_tests = loader.discover(start_dir=this_dir,
+ pattern='test_*.py', # Insert here.
top_level_dir=top_dir)
- standard_tests.addTests(package_tests)
+ standard_tests.addTests(module_tests)
+## module_tests = loader.discover(start_dir=this_dir,
+## pattern='test_*.py', # Insert here.
+## top_level_dir=top_dir)
+## standard_tests.addTests(module_tests)
return standard_tests
diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py
index b94b18a..7cf3a93 100644
--- a/Lib/test/test_idle.py
+++ b/Lib/test/test_idle.py
@@ -5,12 +5,8 @@ from test.support import check_sanitizer
if check_sanitizer(address=True, memory=True):
raise unittest.SkipTest("Tests involvin libX11 can SEGFAULT on ASAN/MSAN builds")
-# Skip test_idle if _tkinter wasn't built, if tkinter is missing,
-# if tcl/tk is not the 8.5+ needed for ttk widgets,
-# or if idlelib is missing (not installed).
+# Skip test_idle if _tkinter, tkinter, or idlelib are missing.
tk = import_module('tkinter') # Also imports _tkinter.
-if tk.TkVersion < 8.5:
- raise unittest.SkipTest("IDLE requires tk 8.5 or later.")
idlelib = import_module('idlelib')
# Before importing and executing more of idlelib,