◐ Shell
clean mode source ↗

[3.6] [3.7] bpo-34279: Synchronize regrtest with master (GH-10800) by miss-islington · Pull Request #10802 · python/cpython

Expand Up @@ -66,10 +66,10 @@ def test_wait(self): ns = libregrtest._parse_args(['--wait']) self.assertTrue(ns.wait)
def test_slaveargs(self): ns = libregrtest._parse_args(['--slaveargs', '[[], {}]']) self.assertEqual(ns.slaveargs, '[[], {}]') self.checkError(['--slaveargs'], 'expected one argument') def test_worker_args(self): ns = libregrtest._parse_args(['--worker-args', '[[], {}]']) self.assertEqual(ns.worker_args, '[[], {}]') self.checkError(['--worker-args'], 'expected one argument')
def test_start(self): for opt in '-S', '--start': Expand Down Expand Up @@ -351,11 +351,20 @@ def setUp(self): self.tmptestdir = tempfile.mkdtemp() self.addCleanup(support.rmtree, self.tmptestdir)
def create_test(self, name=None, code=''): def create_test(self, name=None, code=None): if not name: name = 'noop%s' % BaseTestCase.TEST_UNIQUE_ID BaseTestCase.TEST_UNIQUE_ID += 1
if code is None: code = textwrap.dedent(""" import unittest
class Tests(unittest.TestCase): def test_empty_test(self): pass """)
# test_regrtest cannot be run twice in parallel because # of setUp() and create_test() name = self.TESTNAME_PREFIX + name Expand Down Expand Up @@ -390,7 +399,7 @@ def parse_executed_tests(self, output):
def check_executed_tests(self, output, tests, skipped=(), failed=(), env_changed=(), omitted=(), rerun=(), rerun=(), no_test_ran=(), randomize=False, interrupted=False, fail_env_changed=False): if isinstance(tests, str): Expand All @@ -405,6 +414,8 @@ def check_executed_tests(self, output, tests, skipped=(), failed=(), omitted = [omitted] if isinstance(rerun, str): rerun = [rerun] if isinstance(no_test_ran, str): no_test_ran = [no_test_ran]
executed = self.parse_executed_tests(output) if randomize: Expand Down Expand Up @@ -447,8 +458,12 @@ def list_regex(line_format, tests): regex = "Re-running test %r in verbose mode" % name self.check_line(output, regex)
if no_test_ran: regex = list_regex('%s test%s run no tests', no_test_ran) self.check_line(output, regex)
good = (len(tests) - len(skipped) - len(failed) - len(omitted) - len(env_changed)) - len(omitted) - len(env_changed) - len(no_test_ran)) if good: regex = r'%s test%s OK\.$' % (good, plural(good)) if not skipped and not failed and good > 1: Expand All @@ -465,12 +480,16 @@ def list_regex(line_format, tests): result.append('ENV CHANGED') if interrupted: result.append('INTERRUPTED') if not result: if not any((good, result, failed, interrupted, skipped, env_changed, fail_env_changed)): result.append("NO TEST RUN") elif not result: result.append('SUCCESS') result = ', '.join(result) if rerun: self.check_line(output, 'Tests result: %s' % result) result = 'FAILURE then %s' % result
self.check_line(output, 'Tests result: %s' % result)
def parse_random_seed(self, output): Expand Down Expand Up @@ -649,7 +668,14 @@ def test_resources(self): # test -u command line option tests = {} for resource in ('audio', 'network'): code = 'from test import support\nsupport.requires(%r)' % resource code = textwrap.dedent(""" from test import support; support.requires(%r) import unittest class PassingTest(unittest.TestCase): def test_pass(self): pass """ % resource)
tests[resource] = self.create_test(resource, code) test_names = sorted(tests.values())
Expand Down Expand Up @@ -983,6 +1009,56 @@ def test_bug(self): output = self.run_tests("-w", testname, exitcode=2) self.check_executed_tests(output, [testname], failed=testname, rerun=testname) def test_no_tests_ran(self): code = textwrap.dedent(""" import unittest
class Tests(unittest.TestCase): def test_bug(self): pass """) testname = self.create_test(code=code)
output = self.run_tests(testname, "-m", "nosuchtest", exitcode=0) self.check_executed_tests(output, [testname], no_test_ran=testname)
def test_no_tests_ran_multiple_tests_nonexistent(self): code = textwrap.dedent(""" import unittest
class Tests(unittest.TestCase): def test_bug(self): pass """) testname = self.create_test(code=code) testname2 = self.create_test(code=code)
output = self.run_tests(testname, testname2, "-m", "nosuchtest", exitcode=0) self.check_executed_tests(output, [testname, testname2], no_test_ran=[testname, testname2])
def test_no_test_ran_some_test_exist_some_not(self): code = textwrap.dedent(""" import unittest
class Tests(unittest.TestCase): def test_bug(self): pass """) testname = self.create_test(code=code) other_code = textwrap.dedent(""" import unittest
class Tests(unittest.TestCase): def test_other_bug(self): pass """) testname2 = self.create_test(code=other_code)
output = self.run_tests(testname, testname2, "-m", "nosuchtest", "-m", "test_other_bug", exitcode=0) self.check_executed_tests(output, [testname, testname2], no_test_ran=[testname])

class TestUtils(unittest.TestCase): Expand Down