Commit e98c5580 by Christine Lytwynec

split unittests into shards for in jenkins

parent 81d51f96
......@@ -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):
"""
......
"""
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")
......
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