bpo-45229: Remove test_main in many tests (GH-28405)

Instead of explicitly enumerate test classes for run_unittest()
use the unittest ability to discover tests. This also makes these
tests discoverable and runnable with unittest.

load_tests() can be used for dynamic generating tests and adding
doctests. setUpModule(), tearDownModule() and addModuleCleanup()
can be used for running code before and after all module tests.
This commit is contained in:
Serhiy Storchaka 2021-09-19 15:27:33 +03:00 committed by GitHub
parent 664448d81f
commit 40348acc18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 208 additions and 484 deletions

View File

@ -8,7 +8,7 @@
# regression test, the filterwarnings() call has been added to
# regrtest.py.
from test.test_support import run_unittest, check_syntax_error
from test.test_support import check_syntax_error
import unittest
import sys
# testing import *
@ -967,8 +967,5 @@ hello world
self.assertEqual((6 < 4 if 0 else 2), 2)
def test_main():
run_unittest(TokenTests, GrammarTests)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -8,7 +8,7 @@
# regression test, the filterwarnings() call has been added to
# regrtest.py.
from test.support import run_unittest, check_syntax_error
from test.support import check_syntax_error
import unittest
import sys
# testing import *
@ -952,8 +952,5 @@ class GrammarTests(unittest.TestCase):
self.assertEqual((6 < 4 if 0 else 2), 2)
def test_main():
run_unittest(TokenTests, GrammarTests)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -695,9 +695,8 @@ def check_sizeof(test, o, size):
# Decorator for running a function in a different locale, correctly resetting
# it afterwards.
@contextlib.contextmanager
def run_with_locale(catstr, *locales):
def decorator(func):
def inner(*args, **kwds):
try:
import locale
category = getattr(locale, catstr)
@ -716,16 +715,11 @@ def run_with_locale(catstr, *locales):
except:
pass
# now run the function, resetting the locale on exceptions
try:
return func(*args, **kwds)
yield
finally:
if locale and orig_locale:
locale.setlocale(category, orig_locale)
inner.__name__ = func.__name__
inner.__doc__ = func.__doc__
return inner
return decorator
#=======================================================================
# Decorator for running a function in a specific timezone, correctly

View File

@ -12,7 +12,6 @@ import argparse
from io import StringIO
from test import support
from test.support import os_helper
from unittest import mock
class StdIOBuffer(StringIO):
@ -5416,13 +5415,11 @@ class TestExitOnError(TestCase):
self.parser.parse_args('--integers a'.split())
def test_main():
support.run_unittest(__name__)
def tearDownModule():
# Remove global references to avoid looking like we have refleaks.
RFile.seen = {}
WFile.seen = set()
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -57,7 +57,6 @@ import importlib
import linecache
from contextlib import contextmanager
from itertools import islice, repeat
import test.support
from test.support import import_helper
from test.support import os_helper
@ -1193,13 +1192,6 @@ class IssuesTestCase(BaseTestCase):
with TracerRun(self) as tracer:
tracer.runcall(tfunc_import)
def test_main():
test.support.run_unittest(
StateTestCase,
RunTestCase,
BreakpointTestCase,
IssuesTestCase,
)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -92,10 +92,7 @@ class StrTest(unittest.TestCase):
x = None
def test_main():
support.run_unittest(BytesTest, StrTest)
if __name__ == '__main__':
if len(sys.argv) > 1:
support.set_memlimit(sys.argv[1])
test_main()
unittest.main()

View File

@ -1247,11 +1247,8 @@ class ListTest(unittest.TestCase):
self.assertEqual(l[:10], [1] * 10)
self.assertEqual(l[-10:], [5] * 10)
def test_main():
support.run_unittest(StrTest, BytesTest, BytearrayTest,
TupleTest, ListTest)
if __name__ == '__main__':
if len(sys.argv) > 1:
support.set_memlimit(sys.argv[1])
test_main()
unittest.main()

View File

@ -1,7 +1,6 @@
# Test properties of bool promised by PEP 285
import unittest
from test import support
from test.support import os_helper
import os
@ -370,8 +369,6 @@ class BoolTest(unittest.TestCase):
f(x)
self.assertGreaterEqual(x.count, 1)
def test_main():
support.run_unittest(BoolTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -1005,15 +1005,9 @@ class OpenTest(BaseTest):
self.assertEqual(f.readlines(), [text])
def test_main():
support.run_unittest(
BZ2FileTest,
BZ2CompressorTest,
BZ2DecompressorTest,
CompressDecompressTest,
OpenTest,
)
def tearDownModule():
support.reap_children()
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -427,12 +427,9 @@ class LocaleCoercionTests(_LocaleHandlingTestCase):
self.assertEqual(cmd.stdout.rstrip(), loc)
def test_main():
support.run_unittest(
LocaleConfigurationTests,
LocaleCoercionTests
)
def tearDownModule():
support.reap_children()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -864,9 +864,10 @@ class SyntaxErrorTests(unittest.TestCase):
def test_decoding_error_at_the_end_of_the_line(self):
self.check_string(br"'\u1f'")
def test_main():
support.run_unittest(CmdLineTest, IgnoreEnvironmentTest, SyntaxErrorTests)
def tearDownModule():
support.reap_children()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -738,9 +738,9 @@ class CmdLineTest(unittest.TestCase):
self.assertNotEqual(proc.returncode, 0)
def test_main():
support.run_unittest(CmdLineTest)
def tearDownModule():
support.reap_children()
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -789,8 +789,6 @@ class ComplexTest(unittest.TestCase):
self.assertEqual(format(complex(INF, 1), 'F'), 'INF+1.000000j')
self.assertEqual(format(complex(INF, -1), 'F'), 'INF-1.000000j')
def test_main():
support.run_unittest(ComplexTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -1515,16 +1515,10 @@ class FutureTests(BaseTestCase):
self.assertEqual(f.exception(), e)
_threads_key = None
def setUpModule():
global _threads_key
_threads_key = threading_helper.threading_setup()
def tearDownModule():
threading_helper.threading_cleanup(*_threads_key)
multiprocessing.util._cleanup_tests()
unittest.addModuleCleanup(multiprocessing.util._cleanup_tests)
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
if __name__ == "__main__":

View File

@ -4996,8 +4996,11 @@ class DictProxyTests(unittest.TestCase):
self.assertIn('{!r}: {!r}'.format(k, v), r)
class PTypesLongInitTest(unittest.TestCase):
class AAAPTypesLongInitTest(unittest.TestCase):
# This is in its own TestCase so that it can be run before any other tests.
# (Hence the 'AAA' in the test class name: to make it the first
# item in a list sorted by name, like
# unittest.TestLoader.getTestCaseNames() does.)
def test_pytype_long_ready(self):
# Testing SF bug 551412 ...
@ -5735,12 +5738,5 @@ class MroTest(unittest.TestCase):
pass
def test_main():
# Run all local test cases, with PTypesLongInitTest first.
support.run_unittest(PTypesLongInitTest, OperatorsTest,
ClassPropertiesAndMethods, DictProxyTests,
MiscTests, PicklingTests, SharedKeyTests,
MroTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -6,7 +6,7 @@ import os
import random
import select
import unittest
from test.support import run_unittest, cpython_only
from test.support import cpython_only
if not hasattr(select, 'devpoll') :
raise unittest.SkipTest('test works only on Solaris OS family')
@ -138,8 +138,5 @@ class DevPollTests(unittest.TestCase):
self.assertRaises(OverflowError, pollster.modify, 1, USHRT_MAX + 1)
def test_main():
run_unittest(DevPollTests)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -1,5 +1,5 @@
import difflib
from test.support import run_unittest, findfile
from test.support import findfile
import unittest
import doctest
import sys
@ -547,12 +547,14 @@ class TestFindLongest(unittest.TestCase):
self.assertFalse(self.longer_match_exists(a, b, match.size))
def test_main():
def setUpModule():
difflib.HtmlDiff._default_prefix = 0
Doctests = doctest.DocTestSuite(difflib)
run_unittest(
TestWithAscii, TestAutojunk, TestSFpatches, TestSFbugs,
TestOutputFormat, TestBytes, TestJunkAPIs, TestFindLongest, Doctests)
def load_tests(loader, tests, pattern):
tests.addTest(doctest.DocTestSuite(difflib))
return tests
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -15,16 +15,14 @@ with warnings_helper.check_warnings(
import distutils.tests
def test_main():
# used by regrtest
support.run_unittest(distutils.tests.test_suite())
support.reap_children()
def load_tests(*_):
# used by unittest
return distutils.tests.test_suite()
def tearDownModule():
support.reap_children()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -6,7 +6,7 @@ import sys
import types
import unittest
from test.support import findfile, run_unittest
from test.support import findfile
def abspath(filename):
@ -97,7 +97,7 @@ class SystemTapBackend(TraceBackend):
COMMAND = ["stap", "-g"]
class TraceTests(unittest.TestCase):
class TraceTests:
# unittest.TestCase options
maxDiff = None
@ -149,30 +149,25 @@ class TraceTests(unittest.TestCase):
self.run_case("line")
class DTraceNormalTests(TraceTests):
class DTraceNormalTests(TraceTests, unittest.TestCase):
backend = DTraceBackend()
optimize_python = 0
class DTraceOptimizedTests(TraceTests):
class DTraceOptimizedTests(TraceTests, unittest.TestCase):
backend = DTraceBackend()
optimize_python = 2
class SystemTapNormalTests(TraceTests):
class SystemTapNormalTests(TraceTests, unittest.TestCase):
backend = SystemTapBackend()
optimize_python = 0
class SystemTapOptimizedTests(TraceTests):
class SystemTapOptimizedTests(TraceTests, unittest.TestCase):
backend = SystemTapBackend()
optimize_python = 2
def test_main():
run_unittest(DTraceNormalTests, DTraceOptimizedTests, SystemTapNormalTests,
SystemTapOptimizedTests)
if __name__ == '__main__':
test_main()

View File

@ -6,7 +6,7 @@ import struct
import sys
import unittest
from multiprocessing import Process
from test.support import (verbose, run_unittest, cpython_only)
from test.support import verbose, cpython_only
from test.support.import_helper import import_module
from test.support.os_helper import TESTFN, unlink
@ -210,8 +210,5 @@ class TestFcntl(unittest.TestCase):
os.close(test_pipe_w)
def test_main():
run_unittest(TestFcntl)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -246,8 +246,5 @@ class DirCompareTestCase(unittest.TestCase):
self.assertEqual(report_lines, expected_report_lines)
def test_main():
support.run_unittest(FileCompareTestCase, DirCompareTestCase)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -9,7 +9,7 @@ from array import array
from weakref import proxy
from functools import wraps
from test.support import run_unittest, cpython_only, swap_attr, gc_collect
from test.support import cpython_only, swap_attr, gc_collect
from test.support.os_helper import (TESTFN, TESTFN_UNICODE, make_bad_fd)
from test.support.warnings_helper import check_warnings
from collections import UserList
@ -606,15 +606,12 @@ class PyOtherFileTests(OtherFileTests, unittest.TestCase):
self.assertNotEqual(w.warnings, [])
def test_main():
def tearDownModule():
# Historically, these tests have been sloppy about removing TESTFN.
# So get rid of it no matter what.
try:
run_unittest(CAutoFileTests, PyAutoFileTests,
COtherFileTests, PyOtherFileTests)
finally:
if os.path.exists(TESTFN):
os.unlink(TESTFN)
if os.path.exists(TESTFN):
os.unlink(TESTFN)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -10,6 +10,7 @@ import errno
import os
import threading
import time
import unittest
try:
import ssl
except ImportError:
@ -1144,18 +1145,10 @@ class MiscTestCase(TestCase):
support.check__all__(self, ftplib, not_exported=not_exported)
def test_main():
tests = [TestFTPClass, TestTimeouts,
TestIPv6Environment,
TestTLS_FTPClassMixin, TestTLS_FTPClass,
MiscTestCase]
def setUpModule():
thread_info = threading_helper.threading_setup()
try:
support.run_unittest(*tests)
finally:
threading_helper.threading_cleanup(*thread_info)
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -1,6 +1,6 @@
import unittest
import unittest.mock
from test.support import (verbose, refcount_test, run_unittest,
from test.support import (verbose, refcount_test,
cpython_only)
from test.support.import_helper import import_module
from test.support.os_helper import temp_dir, TESTFN, unlink
@ -1389,30 +1389,27 @@ class PythonFinalizationTests(unittest.TestCase):
assert_python_ok("-c", code)
def test_main():
def setUpModule():
global enabled, debug
enabled = gc.isenabled()
gc.disable()
assert not gc.isenabled()
debug = gc.get_debug()
gc.set_debug(debug & ~gc.DEBUG_LEAK) # this test is supposed to leak
gc.collect() # Delete 2nd generation garbage
def tearDownModule():
gc.set_debug(debug)
# test gc.enable() even if GC is disabled by default
if verbose:
print("restoring automatic collection")
# make sure to always test gc.enable()
gc.enable()
assert gc.isenabled()
if not enabled:
gc.disable()
try:
gc.collect() # Delete 2nd generation garbage
run_unittest(
GCTests,
GCCallbackTests,
GCTogglingTests,
PythonFinalizationTests)
finally:
gc.set_debug(debug)
# test gc.enable() even if GC is disabled by default
if verbose:
print("restoring automatic collection")
# make sure to always test gc.enable()
gc.enable()
assert gc.isenabled()
if not enabled:
gc.disable()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -1,6 +1,6 @@
"""Verify that warnings are issued for global statements following use."""
from test.support import run_unittest, check_syntax_error
from test.support import check_syntax_error
from test.support.warnings_helper import check_warnings
import unittest
import warnings
@ -53,10 +53,12 @@ x = 2
compile(prog_text_4, "<test string>", "exec")
def test_main():
with warnings.catch_warnings():
warnings.filterwarnings("error", module="<test string>")
run_unittest(GlobalTests)
def setUpModule():
cm = warnings.catch_warnings()
cm.__enter__()
unittest.addModuleCleanup(cm.__exit__, None, None, None)
warnings.filterwarnings("error", module="<test string>")
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -10,7 +10,6 @@ import struct
import sys
import unittest
from subprocess import PIPE, Popen
from test import support
from test.support import import_helper
from test.support import os_helper
from test.support import _4G, bigmemtest
@ -842,9 +841,5 @@ class TestCommandLine(unittest.TestCase):
self.assertEqual(out, b'')
def test_main(verbose=None):
support.run_unittest(TestGzip, TestOpen, TestCommandLine)
if __name__ == "__main__":
test_main(verbose=True)
unittest.main()

View File

@ -1302,21 +1302,9 @@ class ScriptTestCase(unittest.TestCase):
self.assertEqual(mock_server.address_family, socket.AF_INET)
def test_main(verbose=None):
cwd = os.getcwd()
try:
support.run_unittest(
RequestHandlerLoggingTestCase,
BaseHTTPRequestHandlerTestCase,
BaseHTTPServerTestCase,
SimpleHTTPServerTestCase,
CGIHTTPServerTestCase,
SimpleHTTPRequestHandlerTestCase,
MiscTestCase,
ScriptTestCase
)
finally:
os.chdir(cwd)
def setUpModule():
unittest.addModuleCleanup(os.chdir, os.getcwd())
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -4,6 +4,7 @@ init = test_util.import_importlib('importlib')
import sys
import threading
import unittest
import weakref
from test import support
@ -139,15 +140,10 @@ class LifetimeTests:
) = test_util.test_both(LifetimeTests, init=init)
@threading_helper.reap_threads
def test_main():
support.run_unittest(Frozen_ModuleLockAsRLockTests,
Source_ModuleLockAsRLockTests,
Frozen_DeadlockAvoidanceTests,
Source_DeadlockAvoidanceTests,
Frozen_LifetimeTests,
Source_LifetimeTests)
def setUpModule():
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
if __name__ == '__main__':
test_main()
unittets.main()

View File

@ -14,7 +14,7 @@ import shutil
import threading
import unittest
from unittest import mock
from test.support import (verbose, run_unittest)
from test.support import verbose
from test.support.import_helper import forget
from test.support.os_helper import (TESTFN, unlink, rmtree)
from test.support import script_helper, threading_helper
@ -258,19 +258,16 @@ class ThreadedImportTests(unittest.TestCase):
script_helper.assert_python_ok(fn)
@threading_helper.reap_threads
def test_main():
old_switchinterval = None
def setUpModule():
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
try:
old_switchinterval = sys.getswitchinterval()
unittest.addModuleCleanup(sys.setswitchinterval, old_switchinterval)
sys.setswitchinterval(1e-5)
except AttributeError:
pass
try:
run_unittest(ThreadedImportTests)
finally:
if old_switchinterval is not None:
sys.setswitchinterval(old_switchinterval)
if __name__ == "__main__":
test_main()
unittets.main()

View File

@ -24,7 +24,7 @@ try:
except ImportError:
ThreadPoolExecutor = None
from test.support import run_unittest, cpython_only
from test.support import cpython_only
from test.support import MISSING_C_DOCSTRINGS, ALWAYS_EQ
from test.support.import_helper import DirsOnSysPath
from test.support.os_helper import TESTFN
@ -4343,19 +4343,5 @@ def foo():
self.assertInspectEqual(path, module)
def test_main():
run_unittest(
TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBlockComments,
TestBuggyCases, TestInterpreterStack, TestClassesAndFunctions, TestPredicates,
TestGetcallargsFunctions, TestGetcallargsMethods,
TestGetcallargsUnboundMethods, TestGetattrStatic, TestGetGeneratorState,
TestNoEOL, TestSignatureObject, TestSignatureBind, TestParameterObject,
TestBoundArguments, TestSignaturePrivateHelpers,
TestSignatureDefinitions, TestIsDataDescriptor,
TestGetClosureVars, TestUnwrap, TestMain, TestReload,
TestGetCoroutineState, TestGettingSourceOfToplevelFrames,
TestGetsourceInteractive,
)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -2,7 +2,7 @@
import sys
import unittest
from test.support import run_unittest, cpython_only
from test.support import cpython_only
from test.support.os_helper import TESTFN, unlink
from test.support import check_free_after_iterating, ALWAYS_EQ, NEVER_EQ
import pickle
@ -1037,9 +1037,5 @@ class TestCase(unittest.TestCase):
self.assertRaises(ZeroDivisionError, iter, BadIterableClass())
def test_main():
run_unittest(TestCase)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -5514,25 +5514,11 @@ class MiscTestCase(unittest.TestCase):
# Set the locale to the platform-dependent default. I have no idea
# why the test does this, but in any case we save the current locale
# first and restore it at the end.
@support.run_with_locale('LC_ALL', '')
def test_main():
tests = [
BuiltinLevelsTest, BasicFilterTest, CustomLevelsAndFiltersTest,
HandlerTest, MemoryHandlerTest, ConfigFileTest, SocketHandlerTest,
DatagramHandlerTest, MemoryTest, EncodingTest, WarningsTest,
ConfigDictTest, ManagerTest, FormatterTest, BufferingFormatterTest,
StreamHandlerTest, LogRecordFactoryTest, ChildLoggerTest,
QueueHandlerTest, ShutdownTest, ModuleLevelMiscTest, BasicConfigTest,
LoggerAdapterTest, LoggerTest, SMTPHandlerTest, FileHandlerTest,
RotatingFileHandlerTest, LastResortTest, LogRecordTest,
ExceptionTest, SysLogHandlerTest, IPv6SysLogHandlerTest, HTTPHandlerTest,
NTEventLogHandlerTest, TimedRotatingFileHandlerTest,
UnixSocketHandlerTest, UnixDatagramHandlerTest, UnixSysLogHandlerTest,
MiscTestCase
]
if hasattr(logging.handlers, 'QueueListener'):
tests.append(QueueListenerTest)
support.run_unittest(*tests)
def setUpModule():
cm = support.run_with_locale('LC_ALL', '')
cm.__enter__()
unittest.addModuleCleanup(cm.__exit__, None, None, None)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -9,9 +9,7 @@ import sys
from test import support
import unittest
from test.support import (
_4G, bigmemtest, run_unittest
)
from test.support import _4G, bigmemtest
from test.support.import_helper import import_module
from test.support.os_helper import (
TESTFN, unlink
@ -1941,14 +1939,5 @@ ISSUE_21872_DAT = (
)
def test_main():
run_unittest(
CompressorDecompressorTestCase,
CompressDecompressFunctionTestCase,
FileTestCase,
OpenTestCase,
MiscellaneousTestCase,
)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -2300,15 +2300,9 @@ class MiscTestCase(unittest.TestCase):
not_exported={"linesep", "fcntl"})
def test_main():
tests = (TestMailboxSuperclass, TestMaildir, TestMbox, TestMMDF, TestMH,
TestBabyl, TestMessage, TestMaildirMessage, TestMboxMessage,
TestMHMessage, TestBabylMessage, TestMMDFMessage,
TestMessageConversion, TestProxyFile, TestPartialFile,
MaildirTestCase, TestFakeMailBox, MiscTestCase)
support.run_unittest(*tests)
def tearDownModule():
support.reap_children()
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -403,8 +403,6 @@ class TestHZStateful(TestStateful):
reset = b'~}'
expected_reset = expected + reset
def test_main():
support.run_unittest(__name__)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -1656,8 +1656,5 @@ class MiscTestCase(unittest.TestCase):
support.check__all__(self, optparse, not_exported=not_exported)
def test_main():
support.run_unittest(__name__)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -188,7 +188,7 @@ class OSSAudioDevTests(unittest.TestCase):
mixer.close()
self.assertRaises(ValueError, mixer.fileno)
def test_main():
def setUpModule():
try:
dsp = ossaudiodev.open('w')
except (ossaudiodev.error, OSError) as msg:
@ -197,7 +197,6 @@ def test_main():
raise unittest.SkipTest(msg)
raise
dsp.close()
support.run_unittest(__name__)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -3,7 +3,7 @@ import os
import string
import unittest
import shutil
from test.support import run_unittest, reap_children, unix_shell
from test.support import reap_children, unix_shell
from test.support.os_helper import TESTFN, unlink
@ -199,9 +199,10 @@ class SimplePipeTests(unittest.TestCase):
self.assertNotEqual(id(t.steps), id(u.steps))
self.assertEqual(t.debugging, u.debugging)
def test_main():
run_unittest(SimplePipeTests)
def tearDownModule():
reap_children()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -1,5 +1,4 @@
from pathlib import Path
from test.support import run_unittest
from test.support.import_helper import unload, CleanImport
from test.support.warnings_helper import check_warnings
import unittest
@ -626,9 +625,7 @@ class ImportlibMigrationTests(unittest.TestCase):
self.assertEqual(len(w.warnings), 0)
def test_main():
run_unittest(PkgutilTests, PkgutilPEP302Tests, ExtendPathTests,
NestedNamespacePackageTest, ImportlibMigrationTests)
def tearDownModule():
# this is necessary if test is run repeated (like when finding leaks)
import zipimport
import importlib
@ -637,4 +634,4 @@ def test_main():
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -7,7 +7,7 @@ import select
import threading
import time
import unittest
from test.support import run_unittest, cpython_only
from test.support import cpython_only
from test.support import threading_helper
from test.support.os_helper import TESTFN
@ -229,8 +229,5 @@ class PollTests(unittest.TestCase):
os.close(w)
def test_main():
run_unittest(PollTests)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -9,6 +9,7 @@ import os
import errno
import threading
import unittest
from unittest import TestCase, skipUnless
from test import support as test_support
from test.support import hashlib_helper
@ -538,15 +539,10 @@ class TestTimeouts(TestCase):
poplib.POP3(HOST, self.port, timeout=0)
def test_main():
tests = [TestPOP3Class, TestTimeouts,
TestPOP3_SSLClass, TestPOP3_TLSClass]
def setUpModule():
thread_info = threading_helper.threading_setup()
try:
test_support.run_unittest(*tests)
finally:
threading_helper.threading_cleanup(*thread_info)
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -2171,17 +2171,9 @@ class TestPosixWeaklinking(unittest.TestCase):
os.utime("path", dir_fd=0)
def test_main():
try:
support.run_unittest(
PosixTester,
PosixGroupsTester,
TestPosixSpawn,
TestPosixSpawnP,
TestPosixWeaklinking
)
finally:
support.reap_children()
def tearDownModule():
support.reap_children()
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -6,7 +6,6 @@ import unittest
import os
from difflib import unified_diff
from io import StringIO
from test.support import run_unittest
from test.support.os_helper import TESTFN, unlink, temp_dir, change_cwd
from contextlib import contextmanager
@ -156,12 +155,10 @@ def silent():
finally:
sys.stdout = stdout
def test_main():
run_unittest(ProfileTest)
def main():
if '-r' not in sys.argv:
test_main()
unittest.main()
else:
regenerate_expected_output(__file__, ProfileTest)

View File

@ -1581,20 +1581,11 @@ class TestInternalUtilities(unittest.TestCase):
self.assertIsNone(self._get_revised_path(trailing_argv0dir))
@threading_helper.reap_threads
def test_main():
try:
test.support.run_unittest(PydocDocTest,
PydocImportTest,
TestDescriptions,
PydocServerTest,
PydocUrlHandlerTest,
TestHelper,
PydocWithMetaClasses,
TestInternalUtilities,
)
finally:
reap_children()
def setUpModule():
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
unittest.addModuleCleanup(reap_children)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -174,8 +174,5 @@ class ResourceTest(unittest.TestCase):
limits)
def test_main(verbose=None):
support.run_unittest(ResourceTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -24,7 +24,7 @@ import sys
from urllib.error import URLError
import urllib.request
from test.support import os_helper
from test.support import findfile, run_unittest
from test.support import findfile
from test.support.os_helper import FakePath, TESTFN
@ -1506,22 +1506,5 @@ class CDATAHandlerTest(unittest.TestCase):
self.assertEqual(self.char_index, 2)
def test_main():
run_unittest(MakeParserTest,
ParseTest,
SaxutilsTest,
PrepareInputSourceTest,
StringXmlgenTest,
BytesXmlgenTest,
WriterXmlgenTest,
StreamWriterXmlgenTest,
StreamReaderWriterXmlgenTest,
ExpatReaderTest,
ErrorReportingTest,
XmlReaderTest,
LexicalHandlerTest,
CDATAHandlerTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -49,7 +49,7 @@ def find_ready_matching(ready, flag):
return match
class BaseSelectorTestCase(unittest.TestCase):
class BaseSelectorTestCase:
def make_socketpair(self):
rd, wr = socketpair()
@ -493,26 +493,28 @@ class ScalableSelectorMixIn:
self.assertEqual(NUM_FDS // 2, len(fds))
class DefaultSelectorTestCase(BaseSelectorTestCase):
class DefaultSelectorTestCase(BaseSelectorTestCase, unittest.TestCase):
SELECTOR = selectors.DefaultSelector
class SelectSelectorTestCase(BaseSelectorTestCase):
class SelectSelectorTestCase(BaseSelectorTestCase, unittest.TestCase):
SELECTOR = selectors.SelectSelector
@unittest.skipUnless(hasattr(selectors, 'PollSelector'),
"Test needs selectors.PollSelector")
class PollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
class PollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
unittest.TestCase):
SELECTOR = getattr(selectors, 'PollSelector', None)
@unittest.skipUnless(hasattr(selectors, 'EpollSelector'),
"Test needs selectors.EpollSelector")
class EpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
class EpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
unittest.TestCase):
SELECTOR = getattr(selectors, 'EpollSelector', None)
@ -529,7 +531,8 @@ class EpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
@unittest.skipUnless(hasattr(selectors, 'KqueueSelector'),
"Test needs selectors.KqueueSelector)")
class KqueueSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
class KqueueSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
unittest.TestCase):
SELECTOR = getattr(selectors, 'KqueueSelector', None)
@ -561,19 +564,15 @@ class KqueueSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
@unittest.skipUnless(hasattr(selectors, 'DevpollSelector'),
"Test needs selectors.DevpollSelector")
class DevpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
class DevpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
unittest.TestCase):
SELECTOR = getattr(selectors, 'DevpollSelector', None)
def test_main():
tests = [DefaultSelectorTestCase, SelectSelectorTestCase,
PollSelectorTestCase, EpollSelectorTestCase,
KqueueSelectorTestCase, DevpollSelectorTestCase]
support.run_unittest(*tests)
def tearDownModule():
support.reap_children()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -2344,6 +2344,7 @@ class SimpleBackgroundTests(unittest.TestCase):
self.ssl_io_loop(sock, incoming, outgoing, sslobj.unwrap)
@support.requires_resource('network')
class NetworkedTests(unittest.TestCase):
def test_timeout_connect_ex(self):
@ -5014,7 +5015,7 @@ class TestEnumerations(unittest.TestCase):
enum._test_simple_enum(CheckedVerifyMode, ssl.VerifyMode)
def test_main(verbose=False):
def setUpModule():
if support.verbose:
plats = {
'Mac': platform.mac_ver,
@ -5045,20 +5046,11 @@ def test_main(verbose=False):
if not os.path.exists(filename):
raise support.TestFailed("Can't read certificate file %r" % filename)
tests = [
ContextTests, BasicSocketTests, SSLErrorTests, MemoryBIOTests,
SSLObjectTests, SimpleBackgroundTests, ThreadedTests,
TestPostHandshakeAuth, TestSSLDebug, TestEnumerations,
]
if support.is_resource_enabled('network'):
tests.append(NetworkedTests)
def setUpModule():
thread_info = threading_helper.threading_setup()
try:
support.run_unittest(*tests)
finally:
threading_helper.threading_cleanup(*thread_info)
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -714,9 +714,5 @@ class TestSupport(unittest.TestCase):
# SuppressCrashReport
def test_main():
tests = [TestSupport]
support.run_unittest(*tests)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -751,8 +751,5 @@ def setUpModule():
print('patchlevel =', tcl.call('info', 'patchlevel'))
def test_main():
support.run_unittest(TclTest, TkinterTest, BigmemTclTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -4,7 +4,6 @@ import unittest
import signal
import os
import sys
from test import support
from test.support import threading_helper
import _thread as thread
import time
@ -231,7 +230,7 @@ class ThreadSignals(unittest.TestCase):
signal.signal(signal.SIGUSR1, old_handler)
def test_main():
def setUpModule():
global signal_blackboard
signal_blackboard = { signal.SIGUSR1 : {'tripped': 0, 'tripped_by': 0 },
@ -239,10 +238,8 @@ def test_main():
signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } }
oldsigs = registerSignals(handle_signals, handle_signals, handle_signals)
try:
support.run_unittest(ThreadSignals)
finally:
registerSignals(*oldsigs)
unittest.addModuleCleanup(registerSignals, *oldsigs)
if __name__ == '__main__':
test_main()
unittest.main()

View File

@ -290,13 +290,9 @@ class UDPTimeoutTestCase(TimeoutTestCase):
self._sock_operation(1, 1.5, 'recvfrom', 1024)
def test_main():
def setUpModule():
support.requires('network')
support.run_unittest(
CreationTestCase,
TCPTimeoutTestCase,
UDPTimeoutTestCase,
)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -1082,15 +1082,5 @@ class TestCAPI(unittest.TestCase):
self.untrack()
def test_main():
support.run_unittest(
TestTraceback,
TestTracemallocEnabled,
TestSnapshot,
TestFilters,
TestCommandLine,
TestCAPI,
)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -6,7 +6,6 @@ import sys
import unicodedata
import unittest
from test.support import run_unittest
from test.support.os_helper import (rmtree, change_cwd, TESTFN_UNICODE,
TESTFN_UNENCODABLE, create_empty_file)
@ -136,8 +135,6 @@ class TestUnicodeFiles(unittest.TestCase):
self._do_directory(TESTFN_UNENCODABLE+ext,
TESTFN_UNENCODABLE+ext)
def test_main():
run_unittest(__name__)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -5,7 +5,6 @@ import sys
import unittest
import warnings
from unicodedata import normalize
from test import support
from test.support import os_helper
@ -185,15 +184,5 @@ class UnicodeNFKDFileTests(UnicodeFileTests):
normal_form = 'NFKD'
def test_main():
support.run_unittest(
UnicodeFileTests,
UnicodeNFCFileTests,
UnicodeNFDFileTests,
UnicodeNFKCFileTests,
UnicodeNFKDFileTests,
)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -3,14 +3,14 @@ import unittest.test
from test import support
def test_main():
# used by regrtest
support.run_unittest(unittest.test.suite())
support.reap_children()
def load_tests(*_):
# used by unittest
return unittest.test.suite()
def tearDownModule():
support.reap_children()
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -661,17 +661,10 @@ class TestUrlopen(unittest.TestCase):
self.assertEqual(index + 1, len(lines))
threads_key = None
def setUpModule():
# Store the threading_setup in a key and ensure that it is cleaned up
# in the tearDown
global threads_key
threads_key = threading_helper.threading_setup()
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
def tearDownModule():
if threads_key:
threading_helper.threading_cleanup(*threads_key)
if __name__ == "__main__":
unittest.main()

View File

@ -3,7 +3,6 @@
import os, sys, errno
import unittest
from test import support
from test.support import import_helper
import threading
from platform import machine, win32_edition
@ -490,12 +489,9 @@ class Win64WinregTests(BaseWinregTests):
with self.assertRaises(FileNotFoundError) as ctx:
QueryValue(HKEY_CLASSES_ROOT, 'some_value_that_does_not_exist')
def test_main():
support.run_unittest(LocalWinregTests, RemoteWinregTests,
Win64WinregTests)
if __name__ == "__main__":
if not REMOTE_NAME:
print("Remote registry calls can be tested using",
"'test_winreg.py --remote \\\\machine_name'")
test_main()
unittest.main()

View File

@ -1504,16 +1504,10 @@ class UseBuiltinTypesTestCase(unittest.TestCase):
self.assertTrue(server.use_builtin_types)
@threading_helper.reap_threads
def test_main():
support.run_unittest(XMLRPCTestCase, HelperTestCase, DateTimeTestCase,
BinaryTestCase, FaultTestCase, UseBuiltinTypesTestCase,
SimpleServerTestCase, SimpleServerEncodingTestCase,
KeepaliveServerTestCase1, KeepaliveServerTestCase2,
GzipServerTestCase, GzipUtilTestCase, HeadersServerTestCase,
MultiPathServerTestCase, ServerProxyTestCase, FailingServerTestCase,
CGIHandlerTestCase, SimpleXMLRPCDispatcherTestCase)
def setUpModule():
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -5,6 +5,9 @@ from test import support
import xmlrpc.client as xmlrpclib
support.requires("network")
@unittest.skip('XXX: buildbot.python.org/all/xmlrpc/ is gone')
class PythonBuildersTest(unittest.TestCase):
@ -24,9 +27,5 @@ class PythonBuildersTest(unittest.TestCase):
self.assertTrue([x for x in builders if "3.x" in x], builders)
def test_main():
support.requires("network")
support.run_unittest(PythonBuildersTest)
if __name__ == "__main__":
test_main()
unittest.main()

View File

@ -861,15 +861,9 @@ class BadFileZipImportTestCase(unittest.TestCase):
zipimport._zip_directory_cache.clear()
def test_main():
try:
support.run_unittest(
UncompressedZipImportTestCase,
CompressedZipImportTestCase,
BadFileZipImportTestCase,
)
finally:
os_helper.unlink(TESTMOD)
def tearDownModule():
os_helper.unlink(TESTMOD)
if __name__ == "__main__":
test_main()
unittest.main()