Commit 5b392bba authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

bpo-30822: Exclude tzdata from regrtest --all (#2775)

When running the test suite using --use=all / -u all, exclude tzdata
since it makes test_datetime too slow (15-20 min on some buildbots)
which then times out on some buildbots.

-u tzdata must now be enabled explicitly, -u tzdata or -u all,tzdata,
to run all test_datetime tests.

Fix also regrtest command line parser to allow passing -u
extralargefile to run test_zipfile64.

Travis CI: remove -tzdata. Replace -u all,-tzdata,-cpu with -u all,-cpu since tzdata is now excluded from -u all.
parent 5bffcf38
...@@ -62,7 +62,7 @@ matrix: ...@@ -62,7 +62,7 @@ matrix:
./venv/bin/python -m pip install -U coverage ./venv/bin/python -m pip install -U coverage
script: script:
# Skip tests that re-run the entire test suite. # Skip tests that re-run the entire test suite.
- ./venv/bin/python -m coverage run --pylib -m test -uall,-cpu,-tzdata -x test_multiprocessing_fork -x test_multiprocessing_forkserver -x test_multiprocessing_spawn - ./venv/bin/python -m coverage run --pylib -m test -uall,-cpu -x test_multiprocessing_fork -x test_multiprocessing_forkserver -x test_multiprocessing_spawn
after_script: # Probably should be after_success once test suite updated to run under coverage.py. after_script: # Probably should be after_success once test suite updated to run under coverage.py.
# Make the `coverage` command available to Codecov w/ a version of Python that can parse all source files. # Make the `coverage` command available to Codecov w/ a version of Python that can parse all source files.
- source ./venv/bin/activate - source ./venv/bin/activate
...@@ -95,7 +95,7 @@ script: ...@@ -95,7 +95,7 @@ script:
# Only run on Linux as the check only needs to be run once. # Only run on Linux as the check only needs to be run once.
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./python Tools/scripts/patchcheck.py --travis $TRAVIS_PULL_REQUEST; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./python Tools/scripts/patchcheck.py --travis $TRAVIS_PULL_REQUEST; fi
# `-r -w` implicitly provided through `make buildbottest`. # `-r -w` implicitly provided through `make buildbottest`.
- make buildbottest TESTOPTS="-j4 -uall,-cpu,-tzdata" - make buildbottest TESTOPTS="-j4 -uall,-cpu"
notifications: notifications:
email: false email: false
......
# We import importlib *ASAP* in order to test #15386 # We import importlib *ASAP* in order to test #15386
import importlib import importlib
from test.libregrtest.cmdline import _parse_args, RESOURCE_NAMES from test.libregrtest.cmdline import _parse_args, RESOURCE_NAMES, ALL_RESOURCES
from test.libregrtest.main import main from test.libregrtest.main import main
...@@ -127,8 +127,17 @@ Pattern examples: ...@@ -127,8 +127,17 @@ Pattern examples:
""" """
RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', ALL_RESOURCES = ('audio', 'curses', 'largefile', 'network',
'decimal', 'cpu', 'subprocess', 'urlfetch', 'gui', 'tzdata') 'decimal', 'cpu', 'subprocess', 'urlfetch', 'gui')
# Other resources excluded from --use=all:
#
# - extralagefile (ex: test_zipfile64): really too slow to be enabled
# "by default"
# - tzdata: while needed to validate fully test_datetime, it makes
# test_datetime too slow (15-20 min on some buildbots) and so is disabled by
# default (see bpo-30822).
RESOURCE_NAMES = ALL_RESOURCES + ('extralargefile', 'tzdata')
class _ArgParser(argparse.ArgumentParser): class _ArgParser(argparse.ArgumentParser):
...@@ -344,7 +353,7 @@ def _parse_args(args, **kwargs): ...@@ -344,7 +353,7 @@ def _parse_args(args, **kwargs):
for a in ns.use: for a in ns.use:
for r in a: for r in a:
if r == 'all': if r == 'all':
ns.use_resources[:] = RESOURCE_NAMES ns.use_resources[:] = ALL_RESOURCES
continue continue
if r == 'none': if r == 'none':
del ns.use_resources[:] del ns.use_resources[:]
......
...@@ -191,15 +191,26 @@ class ParseArgsTestCase(unittest.TestCase): ...@@ -191,15 +191,26 @@ class ParseArgsTestCase(unittest.TestCase):
with self.subTest(opt=opt): with self.subTest(opt=opt):
ns = libregrtest._parse_args([opt, 'gui,network']) ns = libregrtest._parse_args([opt, 'gui,network'])
self.assertEqual(ns.use_resources, ['gui', 'network']) self.assertEqual(ns.use_resources, ['gui', 'network'])
ns = libregrtest._parse_args([opt, 'gui,none,network']) ns = libregrtest._parse_args([opt, 'gui,none,network'])
self.assertEqual(ns.use_resources, ['network']) self.assertEqual(ns.use_resources, ['network'])
expected = list(libregrtest.RESOURCE_NAMES)
expected = list(libregrtest.ALL_RESOURCES)
expected.remove('gui') expected.remove('gui')
ns = libregrtest._parse_args([opt, 'all,-gui']) ns = libregrtest._parse_args([opt, 'all,-gui'])
self.assertEqual(ns.use_resources, expected) self.assertEqual(ns.use_resources, expected)
self.checkError([opt], 'expected one argument') self.checkError([opt], 'expected one argument')
self.checkError([opt, 'foo'], 'invalid resource') self.checkError([opt, 'foo'], 'invalid resource')
# all + a resource not part of "all"
ns = libregrtest._parse_args([opt, 'all,tzdata'])
self.assertEqual(ns.use_resources,
list(libregrtest.ALL_RESOURCES) + ['tzdata'])
# test another resource which is not part of "all"
ns = libregrtest._parse_args([opt, 'extralargefile'])
self.assertEqual(ns.use_resources, ['extralargefile'])
def test_memlimit(self): def test_memlimit(self):
for opt in '-M', '--memlimit': for opt in '-M', '--memlimit':
with self.subTest(opt=opt): with self.subTest(opt=opt):
......
regrtest: Exclude tzdata from regrtest --all. When running the test suite
using --use=all / -u all, exclude tzdata since it makes test_datetime too
slow (15-20 min on some buildbots) which then times out on some buildbots.
Fix also regrtest command line parser to allow passing -u extralargefile to
run test_zipfile64.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment