split unittests into shards for in jenkins
This commit is contained in:
@@ -19,13 +19,15 @@ __test__ = False # do not collect
|
||||
("mode=", "m", "dev or run"),
|
||||
("coverage", "c", "Run test under coverage"),
|
||||
("port=", "p", "Port to run test server on (dev mode only)"),
|
||||
])
|
||||
('skip_clean', 'C', 'skip cleaning repository before running tests'),
|
||||
], share_with=["pavelib.utils.tests.utils.clean_reports_dir"])
|
||||
def test_js(options):
|
||||
"""
|
||||
Run the JavaScript tests
|
||||
"""
|
||||
mode = getattr(options, 'mode', 'run')
|
||||
port = None
|
||||
skip_clean = getattr(options, 'skip_clean', False)
|
||||
|
||||
if mode == 'run':
|
||||
suite = getattr(options, 'suite', 'all')
|
||||
@@ -46,7 +48,7 @@ def test_js(options):
|
||||
)
|
||||
return
|
||||
|
||||
test_suite = JsTestSuite(suite, mode=mode, with_coverage=coverage, port=port)
|
||||
test_suite = JsTestSuite(suite, mode=mode, with_coverage=coverage, port=port, skip_clean=skip_clean)
|
||||
test_suite.run()
|
||||
|
||||
|
||||
|
||||
@@ -29,10 +29,11 @@ __test__ = False # do not collect
|
||||
("fasttest", "a", "Run without collectstatic"),
|
||||
('extra_args=', 'e', 'adds as extra args to the test command'),
|
||||
('cov_args=', 'c', 'adds as args to coverage for the test run'),
|
||||
('skip_clean', 'C', 'skip cleaning repository before running tests'),
|
||||
make_option("--verbose", action="store_const", const=2, dest="verbosity"),
|
||||
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
|
||||
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
|
||||
])
|
||||
], share_with=['pavelib.utils.test.utils.clean_reports_dir'])
|
||||
def test_system(options):
|
||||
"""
|
||||
Run tests on our djangoapps for lms and cms
|
||||
@@ -47,6 +48,7 @@ def test_system(options):
|
||||
'verbosity': getattr(options, 'verbosity', 1),
|
||||
'extra_args': getattr(options, 'extra_args', ''),
|
||||
'cov_args': getattr(options, 'cov_args', ''),
|
||||
'skip_clean': getattr(options, 'skip_clean', False),
|
||||
}
|
||||
|
||||
if test_id:
|
||||
@@ -79,10 +81,11 @@ def test_system(options):
|
||||
("fail_fast", "x", "Run only failed tests"),
|
||||
('extra_args=', 'e', 'adds as extra args to the test command'),
|
||||
('cov_args=', 'c', 'adds as args to coverage for the test run'),
|
||||
('skip_clean', 'C', 'skip cleaning repository before running tests'),
|
||||
make_option("--verbose", action="store_const", const=2, dest="verbosity"),
|
||||
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
|
||||
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
|
||||
])
|
||||
], share_with=['pavelib.utils.test.utils.clean_reports_dir'])
|
||||
def test_lib(options):
|
||||
"""
|
||||
Run tests for common/lib/ and pavelib/ (paver-tests)
|
||||
@@ -96,6 +99,7 @@ def test_lib(options):
|
||||
'verbosity': getattr(options, 'verbosity', 1),
|
||||
'extra_args': getattr(options, 'extra_args', ''),
|
||||
'cov_args': getattr(options, 'cov_args', ''),
|
||||
'skip_clean': getattr(options, 'skip_clean', False),
|
||||
}
|
||||
|
||||
if test_id:
|
||||
@@ -151,6 +155,9 @@ def test_python(options):
|
||||
'pavelib.utils.test.utils.clean_reports_dir',
|
||||
)
|
||||
@cmdopts([
|
||||
("suites", "s", "List of unit test suites to run. (js, lib, cms, lms)"),
|
||||
('extra_args=', 'e', 'adds as extra args to the test command'),
|
||||
('cov_args=', 'c', 'adds as args to coverage for the test run'),
|
||||
make_option("--verbose", action="store_const", const=2, dest="verbosity"),
|
||||
make_option("-q", "--quiet", action="store_const", const=0, dest="verbosity"),
|
||||
make_option("-v", "--verbosity", action="count", dest="verbosity", default=1),
|
||||
@@ -160,7 +167,9 @@ def test(options):
|
||||
Run all tests
|
||||
"""
|
||||
opts = {
|
||||
'verbosity': getattr(options, 'verbosity', 1)
|
||||
'verbosity': getattr(options, 'verbosity', 1),
|
||||
'extra_args': getattr(options, 'extra_args', ''),
|
||||
'cov_args': getattr(options, 'cov_args', ''),
|
||||
}
|
||||
# Subsuites to be added to the main suite
|
||||
python_suite = suites.PythonTestSuite('Python Tests', **opts)
|
||||
|
||||
@@ -90,7 +90,8 @@ class AcceptanceTestSuite(TestSuite):
|
||||
|
||||
def __enter__(self):
|
||||
super(AcceptanceTestSuite, self).__enter__()
|
||||
test_utils.clean_test_files()
|
||||
if not self.skip_clean:
|
||||
test_utils.clean_test_files()
|
||||
|
||||
if not self.fasttest:
|
||||
self._setup_acceptance_db()
|
||||
|
||||
@@ -51,7 +51,9 @@ class BokChoyTestSuite(TestSuite):
|
||||
self.har_dir.makedirs_p()
|
||||
self.report_dir.makedirs_p()
|
||||
test_utils.clean_reports_dir()
|
||||
test_utils.clean_test_files()
|
||||
|
||||
if not self.skip_clean:
|
||||
test_utils.clean_test_files()
|
||||
|
||||
msg = colorize('green', "Checking for mongo, memchache, and mysql...")
|
||||
print(msg)
|
||||
|
||||
@@ -32,7 +32,8 @@ class JsTestSuite(TestSuite):
|
||||
def __enter__(self):
|
||||
super(JsTestSuite, self).__enter__()
|
||||
self.report_dir.makedirs_p()
|
||||
test_utils.clean_test_files()
|
||||
if not self.skip_clean:
|
||||
test_utils.clean_test_files()
|
||||
|
||||
if self.mode == 'run' and not self.run_under_coverage:
|
||||
test_utils.clean_dir(self.report_dir)
|
||||
|
||||
@@ -21,7 +21,7 @@ class PythonTestSuite(TestSuite):
|
||||
|
||||
def __enter__(self):
|
||||
super(PythonTestSuite, self).__enter__()
|
||||
if not self.fasttest:
|
||||
if not (self.fasttest or self.skip_clean):
|
||||
test_utils.clean_test_files()
|
||||
|
||||
@property
|
||||
|
||||
@@ -22,6 +22,7 @@ class TestSuite(object):
|
||||
self.subsuites = kwargs.get('subsuites', [])
|
||||
self.failed_suites = []
|
||||
self.verbosity = kwargs.get('verbosity', 1)
|
||||
self.skip_clean = kwargs.get('skip_clean', False)
|
||||
|
||||
def __enter__(self):
|
||||
"""
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
Helper functions for test tasks
|
||||
"""
|
||||
from paver.easy import sh, task
|
||||
from paver.easy import sh, task, cmdopts
|
||||
from pavelib.utils.envs import Env
|
||||
import os
|
||||
import subprocess
|
||||
@@ -33,10 +33,17 @@ def clean_dir(directory):
|
||||
|
||||
|
||||
@task
|
||||
def clean_reports_dir():
|
||||
@cmdopts([
|
||||
('skip_clean', 'C', 'skip cleaning repository before running tests'),
|
||||
])
|
||||
def clean_reports_dir(options):
|
||||
"""
|
||||
Clean coverage files, to ensure that we don't use stale data to generate reports.
|
||||
"""
|
||||
if getattr(options, 'skip_clean', False):
|
||||
print('--skip_clean is set, skipping...')
|
||||
return
|
||||
|
||||
# We delete the files but preserve the directory structure
|
||||
# so that coverage.py has a place to put the reports.
|
||||
reports_dir = Env.REPORT_DIR.makedirs_p()
|
||||
|
||||
@@ -126,8 +126,22 @@ END
|
||||
;;
|
||||
|
||||
"unit")
|
||||
paver test
|
||||
paver coverage
|
||||
case "$SHARD" in
|
||||
"lms")
|
||||
paver test_system -s lms
|
||||
paver coverage
|
||||
;;
|
||||
"other")
|
||||
paver test_system -s cms
|
||||
paver test_js --coverage --skip_clean
|
||||
paver test_lib --skip_clean
|
||||
paver coverage
|
||||
;;
|
||||
*)
|
||||
paver test
|
||||
paver coverage
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"lms-acceptance")
|
||||
|
||||
Reference in New Issue
Block a user