mirror of
https://github.com/python/cpython.git
synced 2025-08-19 00:00:48 +00:00
[3.9] bpo-45229: Remove test_main in many tests (GH-28405) (GH-28456)
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..
(cherry picked from commit 40348acc18
)
This commit is contained in:
parent
41e2a31c13
commit
5822ab672a
61 changed files with 210 additions and 471 deletions
|
@ -8,7 +8,7 @@
|
||||||
# regression test, the filterwarnings() call has been added to
|
# regression test, the filterwarnings() call has been added to
|
||||||
# regrtest.py.
|
# regrtest.py.
|
||||||
|
|
||||||
from test.test_support import run_unittest, check_syntax_error
|
from test.test_support import check_syntax_error
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
# testing import *
|
# testing import *
|
||||||
|
@ -967,8 +967,5 @@ hello world
|
||||||
self.assertEqual((6 < 4 if 0 else 2), 2)
|
self.assertEqual((6 < 4 if 0 else 2), 2)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(TokenTests, GrammarTests)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
# regression test, the filterwarnings() call has been added to
|
# regression test, the filterwarnings() call has been added to
|
||||||
# regrtest.py.
|
# regrtest.py.
|
||||||
|
|
||||||
from test.support import run_unittest, check_syntax_error
|
from test.support import check_syntax_error
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
# testing import *
|
# testing import *
|
||||||
|
@ -952,8 +952,5 @@ class GrammarTests(unittest.TestCase):
|
||||||
self.assertEqual((6 < 4 if 0 else 2), 2)
|
self.assertEqual((6 < 4 if 0 else 2), 2)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(TokenTests, GrammarTests)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1525,9 +1525,8 @@ def check_sizeof(test, o, size):
|
||||||
# Decorator for running a function in a different locale, correctly resetting
|
# Decorator for running a function in a different locale, correctly resetting
|
||||||
# it afterwards.
|
# it afterwards.
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
def run_with_locale(catstr, *locales):
|
def run_with_locale(catstr, *locales):
|
||||||
def decorator(func):
|
|
||||||
def inner(*args, **kwds):
|
|
||||||
try:
|
try:
|
||||||
import locale
|
import locale
|
||||||
category = getattr(locale, catstr)
|
category = getattr(locale, catstr)
|
||||||
|
@ -1546,16 +1545,11 @@ def run_with_locale(catstr, *locales):
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# now run the function, resetting the locale on exceptions
|
|
||||||
try:
|
try:
|
||||||
return func(*args, **kwds)
|
yield
|
||||||
finally:
|
finally:
|
||||||
if locale and orig_locale:
|
if locale and orig_locale:
|
||||||
locale.setlocale(category, 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
|
# Decorator for running a function in a specific timezone, correctly
|
||||||
|
|
|
@ -5394,13 +5394,11 @@ class TestExitOnError(TestCase):
|
||||||
self.parser.parse_args('--integers a'.split())
|
self.parser.parse_args('--integers a'.split())
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
support.run_unittest(__name__)
|
|
||||||
# Remove global references to avoid looking like we have refleaks.
|
# Remove global references to avoid looking like we have refleaks.
|
||||||
RFile.seen = {}
|
RFile.seen = {}
|
||||||
WFile.seen = set()
|
WFile.seen = set()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1149,13 +1149,6 @@ class IssuesTestCase(BaseTestCase):
|
||||||
with TracerRun(self) as tracer:
|
with TracerRun(self) as tracer:
|
||||||
tracer.runcall(tfunc_import)
|
tracer.runcall(tfunc_import)
|
||||||
|
|
||||||
def test_main():
|
|
||||||
test.support.run_unittest(
|
|
||||||
StateTestCase,
|
|
||||||
RunTestCase,
|
|
||||||
BreakpointTestCase,
|
|
||||||
IssuesTestCase,
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -92,10 +92,7 @@ class StrTest(unittest.TestCase):
|
||||||
x = None
|
x = None
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(BytesTest, StrTest)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
support.set_memlimit(sys.argv[1])
|
support.set_memlimit(sys.argv[1])
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1247,11 +1247,8 @@ class ListTest(unittest.TestCase):
|
||||||
self.assertEqual(l[:10], [1] * 10)
|
self.assertEqual(l[:10], [1] * 10)
|
||||||
self.assertEqual(l[-10:], [5] * 10)
|
self.assertEqual(l[-10:], [5] * 10)
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(StrTest, BytesTest, BytearrayTest,
|
|
||||||
TupleTest, ListTest)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
support.set_memlimit(sys.argv[1])
|
support.set_memlimit(sys.argv[1])
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -362,8 +362,6 @@ class BoolTest(unittest.TestCase):
|
||||||
self.assertIs(type(False.real), int)
|
self.assertIs(type(False.real), int)
|
||||||
self.assertIs(type(False.imag), int)
|
self.assertIs(type(False.imag), int)
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(BoolTest)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1002,15 +1002,9 @@ class OpenTest(BaseTest):
|
||||||
self.assertEqual(f.readlines(), [text])
|
self.assertEqual(f.readlines(), [text])
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
support.run_unittest(
|
|
||||||
BZ2FileTest,
|
|
||||||
BZ2CompressorTest,
|
|
||||||
BZ2DecompressorTest,
|
|
||||||
CompressDecompressTest,
|
|
||||||
OpenTest,
|
|
||||||
)
|
|
||||||
support.reap_children()
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -427,12 +427,9 @@ class LocaleCoercionTests(_LocaleHandlingTestCase):
|
||||||
self.assertEqual(cmd.stdout.rstrip(), loc)
|
self.assertEqual(cmd.stdout.rstrip(), loc)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
support.run_unittest(
|
|
||||||
LocaleConfigurationTests,
|
|
||||||
LocaleCoercionTests
|
|
||||||
)
|
|
||||||
support.reap_children()
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -841,9 +841,9 @@ class IgnoreEnvironmentTest(unittest.TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
support.run_unittest(CmdLineTest, IgnoreEnvironmentTest)
|
|
||||||
support.reap_children()
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -737,9 +737,9 @@ class CmdLineTest(unittest.TestCase):
|
||||||
self.assertNotEqual(proc.returncode, 0)
|
self.assertNotEqual(proc.returncode, 0)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
support.run_unittest(CmdLineTest)
|
|
||||||
support.reap_children()
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -751,8 +751,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')
|
||||||
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__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1500,16 +1500,10 @@ class FutureTests(BaseTestCase):
|
||||||
self.assertEqual(f.exception(), e)
|
self.assertEqual(f.exception(), e)
|
||||||
|
|
||||||
|
|
||||||
_threads_key = None
|
|
||||||
|
|
||||||
def setUpModule():
|
def setUpModule():
|
||||||
global _threads_key
|
unittest.addModuleCleanup(multiprocessing.util._cleanup_tests)
|
||||||
_threads_key = support.threading_setup()
|
thread_info = support.threading_setup()
|
||||||
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
|
|
||||||
def tearDownModule():
|
|
||||||
support.threading_cleanup(*_threads_key)
|
|
||||||
multiprocessing.util._cleanup_tests()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -4945,8 +4945,11 @@ class DictProxyTests(unittest.TestCase):
|
||||||
self.assertIn('{!r}: {!r}'.format(k, v), r)
|
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.
|
# 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):
|
def test_pytype_long_ready(self):
|
||||||
# Testing SF bug 551412 ...
|
# Testing SF bug 551412 ...
|
||||||
|
|
||||||
|
@ -5684,12 +5687,5 @@ class MroTest(unittest.TestCase):
|
||||||
pass
|
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__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import os
|
||||||
import random
|
import random
|
||||||
import select
|
import select
|
||||||
import unittest
|
import unittest
|
||||||
from test.support import run_unittest, cpython_only
|
from test.support import cpython_only
|
||||||
|
|
||||||
if not hasattr(select, 'devpoll') :
|
if not hasattr(select, 'devpoll') :
|
||||||
raise unittest.SkipTest('test works only on Solaris OS family')
|
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)
|
self.assertRaises(OverflowError, pollster.modify, 1, USHRT_MAX + 1)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(DevPollTests)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import difflib
|
import difflib
|
||||||
from test.support import run_unittest, findfile
|
from test.support import findfile
|
||||||
import unittest
|
import unittest
|
||||||
import doctest
|
import doctest
|
||||||
import sys
|
import sys
|
||||||
|
@ -547,12 +547,14 @@ class TestFindLongest(unittest.TestCase):
|
||||||
self.assertFalse(self.longer_match_exists(a, b, match.size))
|
self.assertFalse(self.longer_match_exists(a, b, match.size))
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
difflib.HtmlDiff._default_prefix = 0
|
difflib.HtmlDiff._default_prefix = 0
|
||||||
Doctests = doctest.DocTestSuite(difflib)
|
|
||||||
run_unittest(
|
|
||||||
TestWithAscii, TestAutojunk, TestSFpatches, TestSFbugs,
|
def load_tests(loader, tests, pattern):
|
||||||
TestOutputFormat, TestBytes, TestJunkAPIs, TestFindLongest, Doctests)
|
tests.addTest(doctest.DocTestSuite(difflib))
|
||||||
|
return tests
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -9,16 +9,14 @@ import distutils.tests
|
||||||
import test.support
|
import test.support
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
# used by regrtest
|
|
||||||
test.support.run_unittest(distutils.tests.test_suite())
|
|
||||||
test.support.reap_children()
|
|
||||||
|
|
||||||
|
|
||||||
def load_tests(*_):
|
def load_tests(*_):
|
||||||
# used by unittest
|
# used by unittest
|
||||||
return distutils.tests.test_suite()
|
return distutils.tests.test_suite()
|
||||||
|
|
||||||
|
|
||||||
|
def tearDownModule():
|
||||||
|
test.support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import sys
|
||||||
import types
|
import types
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from test.support import findfile, run_unittest
|
from test.support import findfile
|
||||||
|
|
||||||
|
|
||||||
def abspath(filename):
|
def abspath(filename):
|
||||||
|
@ -97,7 +97,7 @@ class SystemTapBackend(TraceBackend):
|
||||||
COMMAND = ["stap", "-g"]
|
COMMAND = ["stap", "-g"]
|
||||||
|
|
||||||
|
|
||||||
class TraceTests(unittest.TestCase):
|
class TraceTests:
|
||||||
# unittest.TestCase options
|
# unittest.TestCase options
|
||||||
maxDiff = None
|
maxDiff = None
|
||||||
|
|
||||||
|
@ -149,30 +149,25 @@ class TraceTests(unittest.TestCase):
|
||||||
self.run_case("line")
|
self.run_case("line")
|
||||||
|
|
||||||
|
|
||||||
class DTraceNormalTests(TraceTests):
|
class DTraceNormalTests(TraceTests, unittest.TestCase):
|
||||||
backend = DTraceBackend()
|
backend = DTraceBackend()
|
||||||
optimize_python = 0
|
optimize_python = 0
|
||||||
|
|
||||||
|
|
||||||
class DTraceOptimizedTests(TraceTests):
|
class DTraceOptimizedTests(TraceTests, unittest.TestCase):
|
||||||
backend = DTraceBackend()
|
backend = DTraceBackend()
|
||||||
optimize_python = 2
|
optimize_python = 2
|
||||||
|
|
||||||
|
|
||||||
class SystemTapNormalTests(TraceTests):
|
class SystemTapNormalTests(TraceTests, unittest.TestCase):
|
||||||
backend = SystemTapBackend()
|
backend = SystemTapBackend()
|
||||||
optimize_python = 0
|
optimize_python = 0
|
||||||
|
|
||||||
|
|
||||||
class SystemTapOptimizedTests(TraceTests):
|
class SystemTapOptimizedTests(TraceTests, unittest.TestCase):
|
||||||
backend = SystemTapBackend()
|
backend = SystemTapBackend()
|
||||||
optimize_python = 2
|
optimize_python = 2
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(DTraceNormalTests, DTraceOptimizedTests, SystemTapNormalTests,
|
|
||||||
SystemTapOptimizedTests)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
test_main()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import struct
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
from test.support import (verbose, TESTFN, unlink, run_unittest, import_module,
|
from test.support import (verbose, TESTFN, unlink, import_module,
|
||||||
cpython_only)
|
cpython_only)
|
||||||
|
|
||||||
# Skip test if no fcntl module.
|
# Skip test if no fcntl module.
|
||||||
|
@ -188,8 +188,6 @@ class TestFcntl(unittest.TestCase):
|
||||||
res = fcntl.fcntl(self.f.fileno(), fcntl.F_GETPATH, bytes(len(expected)))
|
res = fcntl.fcntl(self.f.fileno(), fcntl.F_GETPATH, bytes(len(expected)))
|
||||||
self.assertEqual(expected, res)
|
self.assertEqual(expected, res)
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(TestFcntl)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -210,8 +210,5 @@ class DirCompareTestCase(unittest.TestCase):
|
||||||
self.assertEqual(report_lines, expected_report_lines)
|
self.assertEqual(report_lines, expected_report_lines)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(FileCompareTestCase, DirCompareTestCase)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -9,7 +9,7 @@ from array import array
|
||||||
from weakref import proxy
|
from weakref import proxy
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from test.support import (TESTFN, TESTFN_UNICODE, check_warnings, run_unittest,
|
from test.support import (TESTFN, TESTFN_UNICODE, check_warnings,
|
||||||
make_bad_fd, cpython_only, swap_attr, gc_collect)
|
make_bad_fd, cpython_only, swap_attr, gc_collect)
|
||||||
from collections import UserList
|
from collections import UserList
|
||||||
|
|
||||||
|
@ -605,15 +605,12 @@ class PyOtherFileTests(OtherFileTests, unittest.TestCase):
|
||||||
self.assertNotEqual(w.warnings, [])
|
self.assertNotEqual(w.warnings, [])
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
# Historically, these tests have been sloppy about removing TESTFN.
|
# Historically, these tests have been sloppy about removing TESTFN.
|
||||||
# So get rid of it no matter what.
|
# So get rid of it no matter what.
|
||||||
try:
|
if os.path.exists(TESTFN):
|
||||||
run_unittest(CAutoFileTests, PyAutoFileTests,
|
os.unlink(TESTFN)
|
||||||
COtherFileTests, PyOtherFileTests)
|
|
||||||
finally:
|
|
||||||
if os.path.exists(TESTFN):
|
|
||||||
os.unlink(TESTFN)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -12,6 +12,7 @@ import errno
|
||||||
import os
|
import os
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
import unittest
|
||||||
try:
|
try:
|
||||||
import ssl
|
import ssl
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -1136,18 +1137,10 @@ class MiscTestCase(TestCase):
|
||||||
support.check__all__(self, ftplib, blacklist=blacklist)
|
support.check__all__(self, ftplib, blacklist=blacklist)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
tests = [TestFTPClass, TestTimeouts,
|
|
||||||
TestIPv6Environment,
|
|
||||||
TestTLS_FTPClassMixin, TestTLS_FTPClass,
|
|
||||||
MiscTestCase]
|
|
||||||
|
|
||||||
thread_info = support.threading_setup()
|
thread_info = support.threading_setup()
|
||||||
try:
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
support.run_unittest(*tests)
|
|
||||||
finally:
|
|
||||||
support.threading_cleanup(*thread_info)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import unittest
|
import unittest
|
||||||
import unittest.mock
|
import unittest.mock
|
||||||
from test.support import (verbose, refcount_test, run_unittest,
|
from test.support import (verbose, refcount_test,
|
||||||
cpython_only, start_threads,
|
cpython_only, start_threads,
|
||||||
temp_dir, TESTFN, unlink,
|
temp_dir, TESTFN, unlink,
|
||||||
import_module)
|
import_module)
|
||||||
|
@ -1388,30 +1388,27 @@ class PythonFinalizationTests(unittest.TestCase):
|
||||||
assert_python_ok("-c", code)
|
assert_python_ok("-c", code)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
|
global enabled, debug
|
||||||
enabled = gc.isenabled()
|
enabled = gc.isenabled()
|
||||||
gc.disable()
|
gc.disable()
|
||||||
assert not gc.isenabled()
|
assert not gc.isenabled()
|
||||||
debug = gc.get_debug()
|
debug = gc.get_debug()
|
||||||
gc.set_debug(debug & ~gc.DEBUG_LEAK) # this test is supposed to leak
|
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__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Verify that warnings are issued for global statements following use."""
|
"""Verify that warnings are issued for global statements following use."""
|
||||||
|
|
||||||
from test.support import run_unittest, check_syntax_error, check_warnings
|
from test.support import check_syntax_error, check_warnings
|
||||||
import unittest
|
import unittest
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
|
@ -52,10 +52,12 @@ x = 2
|
||||||
compile(prog_text_4, "<test string>", "exec")
|
compile(prog_text_4, "<test string>", "exec")
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
with warnings.catch_warnings():
|
cm = warnings.catch_warnings()
|
||||||
warnings.filterwarnings("error", module="<test string>")
|
cm.__enter__()
|
||||||
run_unittest(GlobalTests)
|
unittest.addModuleCleanup(cm.__exit__, None, None, None)
|
||||||
|
warnings.filterwarnings("error", module="<test string>")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -831,9 +831,5 @@ class TestCommandLine(unittest.TestCase):
|
||||||
self.assertEqual(out, b'')
|
self.assertEqual(out, b'')
|
||||||
|
|
||||||
|
|
||||||
def test_main(verbose=None):
|
|
||||||
support.run_unittest(TestGzip, TestOpen, TestCommandLine)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main(verbose=True)
|
unittest.main()
|
||||||
|
|
|
@ -1300,21 +1300,9 @@ class ScriptTestCase(unittest.TestCase):
|
||||||
self.assertEqual(mock_server.address_family, socket.AF_INET)
|
self.assertEqual(mock_server.address_family, socket.AF_INET)
|
||||||
|
|
||||||
|
|
||||||
def test_main(verbose=None):
|
def setUpModule():
|
||||||
cwd = os.getcwd()
|
unittest.addModuleCleanup(os.chdir, os.getcwd())
|
||||||
try:
|
|
||||||
support.run_unittest(
|
|
||||||
RequestHandlerLoggingTestCase,
|
|
||||||
BaseHTTPRequestHandlerTestCase,
|
|
||||||
BaseHTTPServerTestCase,
|
|
||||||
SimpleHTTPServerTestCase,
|
|
||||||
CGIHTTPServerTestCase,
|
|
||||||
SimpleHTTPRequestHandlerTestCase,
|
|
||||||
MiscTestCase,
|
|
||||||
ScriptTestCase
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
os.chdir(cwd)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -4,6 +4,7 @@ init = test_util.import_importlib('importlib')
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
|
import unittest
|
||||||
import weakref
|
import weakref
|
||||||
|
|
||||||
from test import support
|
from test import support
|
||||||
|
@ -138,15 +139,10 @@ class LifetimeTests:
|
||||||
) = test_util.test_both(LifetimeTests, init=init)
|
) = test_util.test_both(LifetimeTests, init=init)
|
||||||
|
|
||||||
|
|
||||||
@support.reap_threads
|
def setUpModule():
|
||||||
def test_main():
|
thread_info = support.threading_setup()
|
||||||
support.run_unittest(Frozen_ModuleLockAsRLockTests,
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
Source_ModuleLockAsRLockTests,
|
|
||||||
Frozen_DeadlockAvoidanceTests,
|
|
||||||
Source_DeadlockAvoidanceTests,
|
|
||||||
Frozen_LifetimeTests,
|
|
||||||
Source_LifetimeTests)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittets.main()
|
||||||
|
|
|
@ -14,8 +14,9 @@ import shutil
|
||||||
import threading
|
import threading
|
||||||
import unittest
|
import unittest
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
from test import support
|
||||||
from test.support import (
|
from test.support import (
|
||||||
verbose, run_unittest, TESTFN, reap_threads,
|
verbose, TESTFN,
|
||||||
forget, unlink, rmtree, start_threads, script_helper)
|
forget, unlink, rmtree, start_threads, script_helper)
|
||||||
|
|
||||||
def task(N, done, done_tasks, errors):
|
def task(N, done, done_tasks, errors):
|
||||||
|
@ -257,19 +258,16 @@ class ThreadedImportTests(unittest.TestCase):
|
||||||
script_helper.assert_python_ok(fn)
|
script_helper.assert_python_ok(fn)
|
||||||
|
|
||||||
|
|
||||||
@reap_threads
|
def setUpModule():
|
||||||
def test_main():
|
thread_info = support.threading_setup()
|
||||||
old_switchinterval = None
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
try:
|
try:
|
||||||
old_switchinterval = sys.getswitchinterval()
|
old_switchinterval = sys.getswitchinterval()
|
||||||
|
unittest.addModuleCleanup(sys.setswitchinterval, old_switchinterval)
|
||||||
sys.setswitchinterval(1e-5)
|
sys.setswitchinterval(1e-5)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
try:
|
|
||||||
run_unittest(ThreadedImportTests)
|
|
||||||
finally:
|
|
||||||
if old_switchinterval is not None:
|
|
||||||
sys.setswitchinterval(old_switchinterval)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittets.main()
|
||||||
|
|
|
@ -24,7 +24,7 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
ThreadPoolExecutor = None
|
ThreadPoolExecutor = None
|
||||||
|
|
||||||
from test.support import run_unittest, TESTFN, DirsOnSysPath, cpython_only
|
from test.support import TESTFN, DirsOnSysPath, cpython_only
|
||||||
from test.support import MISSING_C_DOCSTRINGS, ALWAYS_EQ
|
from test.support import MISSING_C_DOCSTRINGS, ALWAYS_EQ
|
||||||
from test.support.script_helper import assert_python_ok, assert_python_failure
|
from test.support.script_helper import assert_python_ok, assert_python_failure
|
||||||
from test import inspect_fodder as mod
|
from test import inspect_fodder as mod
|
||||||
|
@ -4081,18 +4081,5 @@ def foo():
|
||||||
self.assertInspectEqual(path, module)
|
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
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
from test.support import run_unittest, TESTFN, unlink, cpython_only
|
from test.support import TESTFN, unlink, cpython_only
|
||||||
from test.support import check_free_after_iterating, ALWAYS_EQ, NEVER_EQ
|
from test.support import check_free_after_iterating, ALWAYS_EQ, NEVER_EQ
|
||||||
import pickle
|
import pickle
|
||||||
import collections.abc
|
import collections.abc
|
||||||
|
@ -1036,9 +1036,5 @@ class TestCase(unittest.TestCase):
|
||||||
self.assertRaises(ZeroDivisionError, iter, BadIterableClass())
|
self.assertRaises(ZeroDivisionError, iter, BadIterableClass())
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(TestCase)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -5365,25 +5365,11 @@ class MiscTestCase(unittest.TestCase):
|
||||||
# Set the locale to the platform-dependent default. I have no idea
|
# 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
|
# why the test does this, but in any case we save the current locale
|
||||||
# first and restore it at the end.
|
# first and restore it at the end.
|
||||||
@support.run_with_locale('LC_ALL', '')
|
def setUpModule():
|
||||||
def test_main():
|
cm = support.run_with_locale('LC_ALL', '')
|
||||||
tests = [
|
cm.__enter__()
|
||||||
BuiltinLevelsTest, BasicFilterTest, CustomLevelsAndFiltersTest,
|
unittest.addModuleCleanup(cm.__exit__, None, None, None)
|
||||||
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)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -10,7 +10,7 @@ from test import support
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from test.support import (
|
from test.support import (
|
||||||
_4G, TESTFN, import_module, bigmemtest, run_unittest, unlink
|
_4G, TESTFN, import_module, bigmemtest, unlink
|
||||||
)
|
)
|
||||||
|
|
||||||
lzma = import_module("lzma")
|
lzma = import_module("lzma")
|
||||||
|
@ -1936,14 +1936,5 @@ ISSUE_21872_DAT = (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(
|
|
||||||
CompressorDecompressorTestCase,
|
|
||||||
CompressDecompressFunctionTestCase,
|
|
||||||
FileTestCase,
|
|
||||||
OpenTestCase,
|
|
||||||
MiscellaneousTestCase,
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -2299,15 +2299,9 @@ class MiscTestCase(unittest.TestCase):
|
||||||
support.check__all__(self, mailbox, blacklist=blacklist)
|
support.check__all__(self, mailbox, blacklist=blacklist)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
tests = (TestMailboxSuperclass, TestMaildir, TestMbox, TestMMDF, TestMH,
|
|
||||||
TestBabyl, TestMessage, TestMaildirMessage, TestMboxMessage,
|
|
||||||
TestMHMessage, TestBabylMessage, TestMMDFMessage,
|
|
||||||
TestMessageConversion, TestProxyFile, TestPartialFile,
|
|
||||||
MaildirTestCase, TestFakeMailBox, MiscTestCase)
|
|
||||||
support.run_unittest(*tests)
|
|
||||||
support.reap_children()
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -380,8 +380,6 @@ class TestHZStateful(TestStateful):
|
||||||
reset = b'~}'
|
reset = b'~}'
|
||||||
expected_reset = expected + reset
|
expected_reset = expected + reset
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(__name__)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1655,8 +1655,5 @@ class MiscTestCase(unittest.TestCase):
|
||||||
support.check__all__(self, optparse, blacklist=blacklist)
|
support.check__all__(self, optparse, blacklist=blacklist)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(__name__)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -187,7 +187,7 @@ class OSSAudioDevTests(unittest.TestCase):
|
||||||
mixer.close()
|
mixer.close()
|
||||||
self.assertRaises(ValueError, mixer.fileno)
|
self.assertRaises(ValueError, mixer.fileno)
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
try:
|
try:
|
||||||
dsp = ossaudiodev.open('w')
|
dsp = ossaudiodev.open('w')
|
||||||
except (ossaudiodev.error, OSError) as msg:
|
except (ossaudiodev.error, OSError) as msg:
|
||||||
|
@ -196,7 +196,6 @@ def test_main():
|
||||||
raise unittest.SkipTest(msg)
|
raise unittest.SkipTest(msg)
|
||||||
raise
|
raise
|
||||||
dsp.close()
|
dsp.close()
|
||||||
support.run_unittest(__name__)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -3,7 +3,7 @@ import os
|
||||||
import string
|
import string
|
||||||
import unittest
|
import unittest
|
||||||
import shutil
|
import shutil
|
||||||
from test.support import TESTFN, run_unittest, unlink, reap_children
|
from test.support import TESTFN, unlink, reap_children
|
||||||
|
|
||||||
if os.name != 'posix':
|
if os.name != 'posix':
|
||||||
raise unittest.SkipTest('pipes module only works on posix')
|
raise unittest.SkipTest('pipes module only works on posix')
|
||||||
|
@ -194,9 +194,10 @@ class SimplePipeTests(unittest.TestCase):
|
||||||
self.assertNotEqual(id(t.steps), id(u.steps))
|
self.assertNotEqual(id(t.steps), id(u.steps))
|
||||||
self.assertEqual(t.debugging, u.debugging)
|
self.assertEqual(t.debugging, u.debugging)
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(SimplePipeTests)
|
def tearDownModule():
|
||||||
reap_children()
|
reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from test.support import run_unittest, unload, check_warnings, CleanImport
|
from test.support import unload, check_warnings, CleanImport
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
import importlib
|
import importlib
|
||||||
|
@ -623,9 +623,7 @@ class ImportlibMigrationTests(unittest.TestCase):
|
||||||
self.assertEqual(len(w.warnings), 0)
|
self.assertEqual(len(w.warnings), 0)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
run_unittest(PkgutilTests, PkgutilPEP302Tests, ExtendPathTests,
|
|
||||||
NestedNamespacePackageTest, ImportlibMigrationTests)
|
|
||||||
# this is necessary if test is run repeated (like when finding leaks)
|
# this is necessary if test is run repeated (like when finding leaks)
|
||||||
import zipimport
|
import zipimport
|
||||||
import importlib
|
import importlib
|
||||||
|
@ -634,4 +632,4 @@ def test_main():
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -7,7 +7,7 @@ import select
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
from test.support import TESTFN, run_unittest, reap_threads, cpython_only
|
from test.support import TESTFN, reap_threads, cpython_only
|
||||||
|
|
||||||
try:
|
try:
|
||||||
select.poll
|
select.poll
|
||||||
|
@ -226,8 +226,5 @@ class PollTests(unittest.TestCase):
|
||||||
os.close(w)
|
os.close(w)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(PollTests)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -11,6 +11,7 @@ import os
|
||||||
import errno
|
import errno
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
import unittest
|
||||||
from unittest import TestCase, skipUnless
|
from unittest import TestCase, skipUnless
|
||||||
from test import support as test_support
|
from test import support as test_support
|
||||||
from test.support import hashlib_helper
|
from test.support import hashlib_helper
|
||||||
|
@ -533,15 +534,10 @@ class TestTimeouts(TestCase):
|
||||||
poplib.POP3(HOST, self.port, timeout=0)
|
poplib.POP3(HOST, self.port, timeout=0)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
tests = [TestPOP3Class, TestTimeouts,
|
|
||||||
TestPOP3_SSLClass, TestPOP3_TLSClass]
|
|
||||||
thread_info = test_support.threading_setup()
|
thread_info = test_support.threading_setup()
|
||||||
try:
|
unittest.addModuleCleanup(test_support.threading_cleanup, *thread_info)
|
||||||
test_support.run_unittest(*tests)
|
|
||||||
finally:
|
|
||||||
test_support.threading_cleanup(*thread_info)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -2132,17 +2132,9 @@ class TestPosixWeaklinking(unittest.TestCase):
|
||||||
os.utime("path", dir_fd=0)
|
os.utime("path", dir_fd=0)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
try:
|
support.reap_children()
|
||||||
support.run_unittest(
|
|
||||||
PosixTester,
|
|
||||||
PosixGroupsTester,
|
|
||||||
TestPosixSpawn,
|
|
||||||
TestPosixSpawnP,
|
|
||||||
TestPosixWeaklinking
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
support.reap_children()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -6,7 +6,7 @@ import unittest
|
||||||
import os
|
import os
|
||||||
from difflib import unified_diff
|
from difflib import unified_diff
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
from test.support import TESTFN, run_unittest, unlink, temp_dir, change_cwd
|
from test.support import TESTFN, unlink, temp_dir, change_cwd
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
import profile
|
import profile
|
||||||
|
@ -155,12 +155,10 @@ def silent():
|
||||||
finally:
|
finally:
|
||||||
sys.stdout = stdout
|
sys.stdout = stdout
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(ProfileTest)
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if '-r' not in sys.argv:
|
if '-r' not in sys.argv:
|
||||||
test_main()
|
unittest.main()
|
||||||
else:
|
else:
|
||||||
regenerate_expected_output(__file__, ProfileTest)
|
regenerate_expected_output(__file__, ProfileTest)
|
||||||
|
|
||||||
|
|
|
@ -1569,20 +1569,11 @@ class TestInternalUtilities(unittest.TestCase):
|
||||||
self.assertIsNone(self._get_revised_path(trailing_argv0dir))
|
self.assertIsNone(self._get_revised_path(trailing_argv0dir))
|
||||||
|
|
||||||
|
|
||||||
@reap_threads
|
def setUpModule():
|
||||||
def test_main():
|
thread_info = test.support.threading_setup()
|
||||||
try:
|
unittest.addModuleCleanup(test.support.threading_cleanup, *thread_info)
|
||||||
test.support.run_unittest(PydocDocTest,
|
unittest.addModuleCleanup(reap_children)
|
||||||
PydocImportTest,
|
|
||||||
TestDescriptions,
|
|
||||||
PydocServerTest,
|
|
||||||
PydocUrlHandlerTest,
|
|
||||||
TestHelper,
|
|
||||||
PydocWithMetaClasses,
|
|
||||||
TestInternalUtilities,
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
reap_children()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -172,8 +172,5 @@ class ResourceTest(unittest.TestCase):
|
||||||
limits)
|
limits)
|
||||||
|
|
||||||
|
|
||||||
def test_main(verbose=None):
|
|
||||||
support.run_unittest(ResourceTest)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -22,7 +22,7 @@ import shutil
|
||||||
from urllib.error import URLError
|
from urllib.error import URLError
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from test import support
|
from test import support
|
||||||
from test.support import findfile, run_unittest, FakePath, TESTFN
|
from test.support import findfile, FakePath, TESTFN
|
||||||
|
|
||||||
TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")
|
TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")
|
||||||
TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")
|
TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")
|
||||||
|
@ -1353,19 +1353,5 @@ class XmlReaderTest(XmlTestBase):
|
||||||
self.assertEqual(attrs.getQNameByName((ns_uri, "attr")), "ns:attr")
|
self.assertEqual(attrs.getQNameByName((ns_uri, "attr")), "ns:attr")
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(MakeParserTest,
|
|
||||||
ParseTest,
|
|
||||||
SaxutilsTest,
|
|
||||||
PrepareInputSourceTest,
|
|
||||||
StringXmlgenTest,
|
|
||||||
BytesXmlgenTest,
|
|
||||||
WriterXmlgenTest,
|
|
||||||
StreamWriterXmlgenTest,
|
|
||||||
StreamReaderWriterXmlgenTest,
|
|
||||||
ExpatReaderTest,
|
|
||||||
ErrorReportingTest,
|
|
||||||
XmlReaderTest)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -48,7 +48,7 @@ def find_ready_matching(ready, flag):
|
||||||
return match
|
return match
|
||||||
|
|
||||||
|
|
||||||
class BaseSelectorTestCase(unittest.TestCase):
|
class BaseSelectorTestCase:
|
||||||
|
|
||||||
def make_socketpair(self):
|
def make_socketpair(self):
|
||||||
rd, wr = socketpair()
|
rd, wr = socketpair()
|
||||||
|
@ -492,26 +492,28 @@ class ScalableSelectorMixIn:
|
||||||
self.assertEqual(NUM_FDS // 2, len(fds))
|
self.assertEqual(NUM_FDS // 2, len(fds))
|
||||||
|
|
||||||
|
|
||||||
class DefaultSelectorTestCase(BaseSelectorTestCase):
|
class DefaultSelectorTestCase(BaseSelectorTestCase, unittest.TestCase):
|
||||||
|
|
||||||
SELECTOR = selectors.DefaultSelector
|
SELECTOR = selectors.DefaultSelector
|
||||||
|
|
||||||
|
|
||||||
class SelectSelectorTestCase(BaseSelectorTestCase):
|
class SelectSelectorTestCase(BaseSelectorTestCase, unittest.TestCase):
|
||||||
|
|
||||||
SELECTOR = selectors.SelectSelector
|
SELECTOR = selectors.SelectSelector
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(selectors, 'PollSelector'),
|
@unittest.skipUnless(hasattr(selectors, 'PollSelector'),
|
||||||
"Test needs selectors.PollSelector")
|
"Test needs selectors.PollSelector")
|
||||||
class PollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
|
class PollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
|
||||||
|
unittest.TestCase):
|
||||||
|
|
||||||
SELECTOR = getattr(selectors, 'PollSelector', None)
|
SELECTOR = getattr(selectors, 'PollSelector', None)
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(selectors, 'EpollSelector'),
|
@unittest.skipUnless(hasattr(selectors, 'EpollSelector'),
|
||||||
"Test needs selectors.EpollSelector")
|
"Test needs selectors.EpollSelector")
|
||||||
class EpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
|
class EpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
|
||||||
|
unittest.TestCase):
|
||||||
|
|
||||||
SELECTOR = getattr(selectors, 'EpollSelector', None)
|
SELECTOR = getattr(selectors, 'EpollSelector', None)
|
||||||
|
|
||||||
|
@ -528,7 +530,8 @@ class EpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(selectors, 'KqueueSelector'),
|
@unittest.skipUnless(hasattr(selectors, 'KqueueSelector'),
|
||||||
"Test needs selectors.KqueueSelector)")
|
"Test needs selectors.KqueueSelector)")
|
||||||
class KqueueSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
|
class KqueueSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
|
||||||
|
unittest.TestCase):
|
||||||
|
|
||||||
SELECTOR = getattr(selectors, 'KqueueSelector', None)
|
SELECTOR = getattr(selectors, 'KqueueSelector', None)
|
||||||
|
|
||||||
|
@ -560,19 +563,15 @@ class KqueueSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(selectors, 'DevpollSelector'),
|
@unittest.skipUnless(hasattr(selectors, 'DevpollSelector'),
|
||||||
"Test needs selectors.DevpollSelector")
|
"Test needs selectors.DevpollSelector")
|
||||||
class DevpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn):
|
class DevpollSelectorTestCase(BaseSelectorTestCase, ScalableSelectorMixIn,
|
||||||
|
unittest.TestCase):
|
||||||
|
|
||||||
SELECTOR = getattr(selectors, 'DevpollSelector', None)
|
SELECTOR = getattr(selectors, 'DevpollSelector', None)
|
||||||
|
|
||||||
|
|
||||||
|
def tearDownModule():
|
||||||
def test_main():
|
|
||||||
tests = [DefaultSelectorTestCase, SelectSelectorTestCase,
|
|
||||||
PollSelectorTestCase, EpollSelectorTestCase,
|
|
||||||
KqueueSelectorTestCase, DevpollSelectorTestCase]
|
|
||||||
support.run_unittest(*tests)
|
|
||||||
support.reap_children()
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -2281,6 +2281,7 @@ class SimpleBackgroundTests(unittest.TestCase):
|
||||||
self.ssl_io_loop(sock, incoming, outgoing, sslobj.unwrap)
|
self.ssl_io_loop(sock, incoming, outgoing, sslobj.unwrap)
|
||||||
|
|
||||||
|
|
||||||
|
@support.requires_resource('network')
|
||||||
class NetworkedTests(unittest.TestCase):
|
class NetworkedTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_timeout_connect_ex(self):
|
def test_timeout_connect_ex(self):
|
||||||
|
@ -4812,7 +4813,7 @@ class TestSSLDebug(unittest.TestCase):
|
||||||
s.connect((HOST, server.port))
|
s.connect((HOST, server.port))
|
||||||
|
|
||||||
|
|
||||||
def test_main(verbose=False):
|
def setUpModule():
|
||||||
if support.verbose:
|
if support.verbose:
|
||||||
plats = {
|
plats = {
|
||||||
'Mac': platform.mac_ver,
|
'Mac': platform.mac_ver,
|
||||||
|
@ -4843,20 +4844,9 @@ def test_main(verbose=False):
|
||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
raise support.TestFailed("Can't read certificate file %r" % filename)
|
raise support.TestFailed("Can't read certificate file %r" % filename)
|
||||||
|
|
||||||
tests = [
|
|
||||||
ContextTests, BasicSocketTests, SSLErrorTests, MemoryBIOTests,
|
|
||||||
SSLObjectTests, SimpleBackgroundTests, ThreadedTests,
|
|
||||||
TestPostHandshakeAuth, TestSSLDebug
|
|
||||||
]
|
|
||||||
|
|
||||||
if support.is_resource_enabled('network'):
|
|
||||||
tests.append(NetworkedTests)
|
|
||||||
|
|
||||||
thread_info = support.threading_setup()
|
thread_info = support.threading_setup()
|
||||||
try:
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
support.run_unittest(*tests)
|
|
||||||
finally:
|
|
||||||
support.threading_cleanup(*thread_info)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -716,9 +716,5 @@ def _warn_about_deprecation():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
tests = [TestSupport]
|
|
||||||
support.run_unittest(*tests)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -799,8 +799,5 @@ def setUpModule():
|
||||||
print('patchlevel =', tcl.call('info', 'patchlevel'))
|
print('patchlevel =', tcl.call('info', 'patchlevel'))
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(TclTest, TkinterTest, BigmemTclTest)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -230,7 +230,7 @@ class ThreadSignals(unittest.TestCase):
|
||||||
signal.signal(signal.SIGUSR1, old_handler)
|
signal.signal(signal.SIGUSR1, old_handler)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
global signal_blackboard
|
global signal_blackboard
|
||||||
|
|
||||||
signal_blackboard = { signal.SIGUSR1 : {'tripped': 0, 'tripped_by': 0 },
|
signal_blackboard = { signal.SIGUSR1 : {'tripped': 0, 'tripped_by': 0 },
|
||||||
|
@ -238,10 +238,8 @@ def test_main():
|
||||||
signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } }
|
signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } }
|
||||||
|
|
||||||
oldsigs = registerSignals(handle_signals, handle_signals, handle_signals)
|
oldsigs = registerSignals(handle_signals, handle_signals, handle_signals)
|
||||||
try:
|
unittest.addModuleCleanup(registerSignals, *oldsigs)
|
||||||
support.run_unittest(ThreadSignals)
|
|
||||||
finally:
|
|
||||||
registerSignals(*oldsigs)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -290,13 +290,9 @@ class UDPTimeoutTestCase(TimeoutTestCase):
|
||||||
self._sock_operation(1, 1.5, 'recvfrom', 1024)
|
self._sock_operation(1, 1.5, 'recvfrom', 1024)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def setUpModule():
|
||||||
support.requires('network')
|
support.requires('network')
|
||||||
support.run_unittest(
|
|
||||||
CreationTestCase,
|
|
||||||
TCPTimeoutTestCase,
|
|
||||||
UDPTimeoutTestCase,
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1081,15 +1081,5 @@ class TestCAPI(unittest.TestCase):
|
||||||
self.untrack()
|
self.untrack()
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(
|
|
||||||
TestTraceback,
|
|
||||||
TestTracemallocEnabled,
|
|
||||||
TestSnapshot,
|
|
||||||
TestFilters,
|
|
||||||
TestCommandLine,
|
|
||||||
TestCAPI,
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -5,7 +5,7 @@ import os, glob, time, shutil
|
||||||
import unicodedata
|
import unicodedata
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
from test.support import (run_unittest, rmtree, change_cwd,
|
from test.support import (rmtree, change_cwd,
|
||||||
TESTFN_ENCODING, TESTFN_UNICODE, TESTFN_UNENCODABLE, create_empty_file)
|
TESTFN_ENCODING, TESTFN_UNICODE, TESTFN_UNENCODABLE, create_empty_file)
|
||||||
|
|
||||||
if not os.path.supports_unicode_filenames:
|
if not os.path.supports_unicode_filenames:
|
||||||
|
@ -133,8 +133,6 @@ class TestUnicodeFiles(unittest.TestCase):
|
||||||
self._do_directory(TESTFN_UNENCODABLE+ext,
|
self._do_directory(TESTFN_UNENCODABLE+ext,
|
||||||
TESTFN_UNENCODABLE+ext)
|
TESTFN_UNENCODABLE+ext)
|
||||||
|
|
||||||
def test_main():
|
|
||||||
run_unittest(__name__)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -181,15 +181,5 @@ class UnicodeNFKDFileTests(UnicodeFileTests):
|
||||||
normal_form = 'NFKD'
|
normal_form = 'NFKD'
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(
|
|
||||||
UnicodeFileTests,
|
|
||||||
UnicodeNFCFileTests,
|
|
||||||
UnicodeNFDFileTests,
|
|
||||||
UnicodeNFKCFileTests,
|
|
||||||
UnicodeNFKDFileTests,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -3,14 +3,14 @@ import unittest.test
|
||||||
from test import support
|
from test import support
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
|
||||||
# used by regrtest
|
|
||||||
support.run_unittest(unittest.test.suite())
|
|
||||||
support.reap_children()
|
|
||||||
|
|
||||||
def load_tests(*_):
|
def load_tests(*_):
|
||||||
# used by unittest
|
# used by unittest
|
||||||
return unittest.test.suite()
|
return unittest.test.suite()
|
||||||
|
|
||||||
|
|
||||||
|
def tearDownModule():
|
||||||
|
support.reap_children()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -660,17 +660,10 @@ class TestUrlopen(unittest.TestCase):
|
||||||
self.assertEqual(index + 1, len(lines))
|
self.assertEqual(index + 1, len(lines))
|
||||||
|
|
||||||
|
|
||||||
threads_key = None
|
|
||||||
|
|
||||||
def setUpModule():
|
def setUpModule():
|
||||||
# Store the threading_setup in a key and ensure that it is cleaned up
|
thread_info = support.threading_setup()
|
||||||
# in the tearDown
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
global threads_key
|
|
||||||
threads_key = support.threading_setup()
|
|
||||||
|
|
||||||
def tearDownModule():
|
|
||||||
if threads_key:
|
|
||||||
support.threading_cleanup(*threads_key)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -489,12 +489,9 @@ class Win64WinregTests(BaseWinregTests):
|
||||||
with self.assertRaises(FileNotFoundError) as ctx:
|
with self.assertRaises(FileNotFoundError) as ctx:
|
||||||
QueryValue(HKEY_CLASSES_ROOT, 'some_value_that_does_not_exist')
|
QueryValue(HKEY_CLASSES_ROOT, 'some_value_that_does_not_exist')
|
||||||
|
|
||||||
def test_main():
|
|
||||||
support.run_unittest(LocalWinregTests, RemoteWinregTests,
|
|
||||||
Win64WinregTests)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if not REMOTE_NAME:
|
if not REMOTE_NAME:
|
||||||
print("Remote registry calls can be tested using",
|
print("Remote registry calls can be tested using",
|
||||||
"'test_winreg.py --remote \\\\machine_name'")
|
"'test_winreg.py --remote \\\\machine_name'")
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -1502,16 +1502,10 @@ class UseBuiltinTypesTestCase(unittest.TestCase):
|
||||||
self.assertTrue(server.use_builtin_types)
|
self.assertTrue(server.use_builtin_types)
|
||||||
|
|
||||||
|
|
||||||
@support.reap_threads
|
def setUpModule():
|
||||||
def test_main():
|
thread_info = support.threading_setup()
|
||||||
support.run_unittest(XMLRPCTestCase, HelperTestCase, DateTimeTestCase,
|
unittest.addModuleCleanup(support.threading_cleanup, *thread_info)
|
||||||
BinaryTestCase, FaultTestCase, UseBuiltinTypesTestCase,
|
|
||||||
SimpleServerTestCase, SimpleServerEncodingTestCase,
|
|
||||||
KeepaliveServerTestCase1, KeepaliveServerTestCase2,
|
|
||||||
GzipServerTestCase, GzipUtilTestCase, HeadersServerTestCase,
|
|
||||||
MultiPathServerTestCase, ServerProxyTestCase, FailingServerTestCase,
|
|
||||||
CGIHandlerTestCase, SimpleXMLRPCDispatcherTestCase)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -5,6 +5,9 @@ from test import support
|
||||||
import xmlrpc.client as xmlrpclib
|
import xmlrpc.client as xmlrpclib
|
||||||
|
|
||||||
|
|
||||||
|
support.requires("network")
|
||||||
|
|
||||||
|
|
||||||
@unittest.skip('XXX: buildbot.python.org/all/xmlrpc/ is gone')
|
@unittest.skip('XXX: buildbot.python.org/all/xmlrpc/ is gone')
|
||||||
class PythonBuildersTest(unittest.TestCase):
|
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)
|
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__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
|
@ -766,15 +766,9 @@ class BadFileZipImportTestCase(unittest.TestCase):
|
||||||
zipimport._zip_directory_cache.clear()
|
zipimport._zip_directory_cache.clear()
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def tearDownModule():
|
||||||
try:
|
support.unlink(TESTMOD)
|
||||||
support.run_unittest(
|
|
||||||
UncompressedZipImportTestCase,
|
|
||||||
CompressedZipImportTestCase,
|
|
||||||
BadFileZipImportTestCase,
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
support.unlink(TESTMOD)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
unittest.main()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue