From f1973b0652bdc34451b4d1f84811763a786178f1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 16 Jan 2015 12:32:13 -0800 Subject: [PATCH] Add support for building outside of the Makefile --- tools/run_tests/build_php.sh | 1 + tools/run_tests/run_tests.py | 34 ++++++++++++++++++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) create mode 100755 tools/run_tests/build_php.sh diff --git a/tools/run_tests/build_php.sh b/tools/run_tests/build_php.sh new file mode 100755 index 00000000000..a9bf588e2f8 --- /dev/null +++ b/tools/run_tests/build_php.sh @@ -0,0 +1 @@ +#!/bin/bash diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index e8c121456a2..978a15b63ae 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -51,9 +51,10 @@ _CONFIGS = { _DEFAULT = ['dbg', 'opt'] -_LANGUAGE_TEST_TARGETS = { - 'c++': 'buildtests_cxx', - 'c': 'buildtests_c', +_LANGUAGE_BUILD_RULE = { + 'c++': ['make', 'buildtests_cxx'], + 'c': ['make', 'buildtests_c'], + 'php': ['tools/run_tests/build_php.sh'] } # parse command line @@ -73,9 +74,9 @@ argp.add_argument('--newline_on_success', action='store_const', const=True) argp.add_argument('-l', '--language', - choices=sorted(_LANGUAGE_TEST_TARGETS.keys()), + choices=sorted(_LANGUAGE_BUILD_RULE.keys()), nargs='+', - default=sorted(_LANGUAGE_TEST_TARGETS.keys())) + default=sorted(_LANGUAGE_BUILD_RULE.keys())) args = argp.parse_args() # grab config @@ -84,7 +85,21 @@ run_configs = set(_CONFIGS[cfg] _CONFIGS.iterkeys() if x == 'all' else [x] for x in args.config)) build_configs = set(cfg.build_config for cfg in run_configs) -make_targets = set(_LANGUAGE_TEST_TARGETS[x] for x in args.language) + +make_targets = set() +build_steps = [] +for language in args.language: + cmd = _LANGUAGE_BUILD_RULE[language] + if cmd[0] == 'make': + make_targets.update(cmd[1:]) + else: + build_steps.append(cmd) +if make_targets: + build_steps = [['make', + '-j', '%d' % (multiprocessing.cpu_count() + 1), + 'CONFIG=%s' % cfg] + list(make_targets) + for cfg in build_configs] + build_steps + filters = args.test_filter runs_per_test = args.runs_per_test forever = args.forever @@ -127,12 +142,7 @@ class TestCache(object): def _build_and_run(check_cancelled, newline_on_success, cache): """Do one pass of building & running tests.""" # build latest, sharing cpu between the various makes - if not jobset.run( - (['make', - '-j', '%d' % (multiprocessing.cpu_count() + 1), - 'CONFIG=%s' % cfg] + list(make_targets) - for cfg in build_configs), - check_cancelled, maxjobs=1): + if not jobset.run(build_steps): return 1 # run all the tests