Index: tools/run-tests.py |
diff --git a/tools/run-tests.py b/tools/run-tests.py |
index e7c3f7ffd1796296bc3c7a30bb25fb52f212739a..7df0e5219c2825af64818dc9ea86a5e45b0131b4 100755 |
--- a/tools/run-tests.py |
+++ b/tools/run-tests.py |
@@ -28,6 +28,7 @@ |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+from collections import OrderedDict |
import itertools |
import multiprocessing |
import optparse |
@@ -54,6 +55,31 @@ DEFAULT_TESTS = ["mjsunit", "fuzz-natives", "base-unittests", |
"cctest", "compiler-unittests", "heap-unittests", |
"libplatform-unittests", "runtime-unittests", |
"message", "preparser"] |
+ |
+# Map of test name synonyms to lists of test suites. Should be ordered by |
+# expected runtimes (suites with slow test cases first). These groups are |
+# invoked in seperate steps on the bots. |
+TEST_MAP = { |
+ "default": [ |
+ "mjsunit", |
+ "fuzz-natives", |
+ "cctest", |
+ "message", |
+ "preparser", |
+ ], |
+ "optimize_for_size": [ |
+ "mjsunit", |
+ "cctest", |
+ "webkit", |
+ ], |
+ "unittests": [ |
+ "compiler-unittests", |
+ "heap-unittests", |
+ "base-unittests", |
+ "libplatform-unittests", |
+ ], |
+} |
+ |
TIMEOUT_DEFAULT = 60 |
TIMEOUT_SCALEFACTOR = {"debug" : 4, |
"release" : 1 } |
@@ -379,14 +405,23 @@ def Main(): |
suite_paths = utils.GetSuitePaths(join(workspace, "test")) |
+ # Expand arguments with grouped tests. The args should reflect the list of |
+ # suites as otherwise filters would break. |
+ def ExpandTestGroups(name): |
+ if name in TEST_MAP: |
+ return [suite for suite in TEST_MAP[arg]] |
+ else: |
+ return [name] |
+ args = reduce(lambda x, y: x + y, |
+ [ExpandTestGroups(arg) for arg in args], |
+ []) |
+ |
if len(args) == 0: |
suite_paths = [ s for s in DEFAULT_TESTS if s in suite_paths ] |
else: |
- args_suites = set() |
+ args_suites = OrderedDict() # Used as set |
for arg in args: |
- suite = arg.split(os.path.sep)[0] |
- if not suite in args_suites: |
- args_suites.add(suite) |
+ args_suites[arg.split(os.path.sep)[0]] = True |
suite_paths = [ s for s in args_suites if s in suite_paths ] |
suites = [] |