summaryrefslogtreecommitdiffstats
path: root/Lib/test/support
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-06-27 14:04:15 (GMT)
committerGitHub <noreply@github.com>2017-06-27 14:04:15 (GMT)
commit35d2ca2b94a6ff29e763ddb7727166f0592edfa2 (patch)
tree512fa70566c41f8d8f9d78b026d360a676cf32a7 /Lib/test/support
parent39e501a2913eff047f7a644e2b20eb4278f97d50 (diff)
downloadcpython-35d2ca2b94a6ff29e763ddb7727166f0592edfa2.zip
cpython-35d2ca2b94a6ff29e763ddb7727166f0592edfa2.tar.gz
cpython-35d2ca2b94a6ff29e763ddb7727166f0592edfa2.tar.bz2
[3.6] bpo-30523, bpo-30764, bpo-30776: Sync regrtest from master (#2441)
* bpo-30523: regrtest --list-cases --match (#2401) * regrtest --list-cases now supports --match and --match-file options. Example: ./python -m test --list-cases -m FileTests test_os * --list-cases now also sets support.verbose to False to prevent messages to stdout when loading test modules. * Add support._match_test() private function. (cherry picked from commit ace56d583664f855d89d1219ece7c21c2fddcf30) * bpo-30764: regrtest: add --fail-env-changed option (#2402) * bpo-30764: regrtest: change exit code on failure * Exit code 2 if failed tests ("bad") * Exit code 3 if interrupted * bpo-30764: regrtest: add --fail-env-changed option If the option is set, mark a test as failed if it alters the environment, for example if it creates a file without removing it. (cherry picked from commit 63f54c68936d648c70ca411661e4208329edcf26) * bpo-30776: reduce regrtest -R false positives (#2422) * Change the regrtest --huntrleaks checker to decide if a test file leaks or not. Require that each run leaks at least 1 reference. * Warmup runs are now completely ignored: ignored in the checker test and not used anymore to compute the sum. * Add an unit test for a reference leak. Example of reference differences previously considered a failure (leak) and now considered as success (success, no leak): [3, 0, 0] [0, 1, 0] [8, -8, 1] (cherry picked from commit 48b5c422ffb03affb00c184b9a99e5537be92732)
Diffstat (limited to 'Lib/test/support')
-rw-r--r--Lib/test/support/__init__.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index be926ea..677743b 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -1898,6 +1898,23 @@ def _run_suite(suite):
raise TestFailed(err)
+def _match_test(test):
+ global match_tests
+
+ if match_tests is None:
+ return True
+ test_id = test.id()
+
+ for match_test in match_tests:
+ if fnmatch.fnmatchcase(test_id, match_test):
+ return True
+
+ for name in test_id.split("."):
+ if fnmatch.fnmatchcase(name, match_test):
+ return True
+ return False
+
+
def run_unittest(*classes):
"""Run tests from unittest.TestCase-derived classes."""
valid_types = (unittest.TestSuite, unittest.TestCase)
@@ -1912,20 +1929,7 @@ def run_unittest(*classes):
suite.addTest(cls)
else:
suite.addTest(unittest.makeSuite(cls))
- def case_pred(test):
- if match_tests is None:
- return True
- test_id = test.id()
-
- for match_test in match_tests:
- if fnmatch.fnmatchcase(test_id, match_test):
- return True
-
- for name in test_id.split("."):
- if fnmatch.fnmatchcase(name, match_test):
- return True
- return False
- _filter_suite(suite, case_pred)
+ _filter_suite(suite, _match_test)
_run_suite(suite)
#=======================================================================