js_test.py 2.18 KB
Newer Older
1 2 3 4
"""
Javascript test tasks
"""
import sys
5 6 7

from paver.easy import cmdopts, needs, task

8
from pavelib.utils.envs import Env
9
from pavelib.utils.test.suites import JsTestSuite
10
from pavelib.utils.timer import timed
11 12 13 14 15 16 17 18 19 20 21 22 23

__test__ = False  # do not collect


@task
@needs(
    'pavelib.prereqs.install_node_prereqs',
    'pavelib.utils.test.utils.clean_reports_dir',
)
@cmdopts([
    ("suite=", "s", "Test suite to run"),
    ("mode=", "m", "dev or run"),
    ("coverage", "c", "Run test under coverage"),
24
    ("port=", "p", "Port to run test server on (dev mode only)"),
25 26
    ('skip-clean', 'C', 'skip cleaning repository before running tests'),
    ('skip_clean', None, 'deprecated in favor of skip-clean'),
27
], share_with=["pavelib.utils.tests.utils.clean_reports_dir"])
28
@timed
29 30 31 32 33
def test_js(options):
    """
    Run the JavaScript tests
    """
    mode = getattr(options, 'mode', 'run')
34
    port = None
35
    skip_clean = getattr(options, 'skip_clean', False)
36 37 38 39 40 41 42

    if mode == 'run':
        suite = getattr(options, 'suite', 'all')
        coverage = getattr(options, 'coverage', False)
    elif mode == 'dev':
        suite = getattr(options, 'suite', None)
        coverage = False
43
        port = getattr(options, 'port', None)
44 45 46 47 48 49 50 51 52 53 54 55
    else:
        sys.stderr.write("Invalid mode. Please choose 'dev' or 'run'.")
        return

    if (suite != 'all') and (suite not in Env.JS_TEST_ID_KEYS):
        sys.stderr.write(
            "Unknown test suite. Please choose from ({suites})\n".format(
                suites=", ".join(Env.JS_TEST_ID_KEYS)
            )
        )
        return

56
    test_suite = JsTestSuite(suite, mode=mode, with_coverage=coverage, port=port, skip_clean=skip_clean)
57 58 59 60 61 62 63 64
    test_suite.run()


@task
@cmdopts([
    ("suite=", "s", "Test suite to run"),
    ("coverage", "c", "Run test under coverage"),
])
65
@timed
66 67 68 69
def test_js_run(options):
    """
    Run the JavaScript tests and print results to the console
    """
70
    options.mode = 'run'
71 72 73 74 75 76
    test_js(options)


@task
@cmdopts([
    ("suite=", "s", "Test suite to run"),
77
    ("port=", "p", "Port to run test server on"),
78
])
79
@timed
80 81 82 83
def test_js_dev(options):
    """
    Run the JavaScript tests in your default browsers
    """
84
    options.mode = 'dev'
85
    test_js(options)