Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: tools/migration/bin/run_tests.dart

Issue 2997673002: Add cases to all configs and allow for running a single test. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Runs the tests in a batch on the various configurations used on the bots. 5 /// Runs the tests in a batch on the various configurations used on the bots.
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:args/args.dart'; 10 import 'package:args/args.dart';
11 import 'package:path/path.dart' as p; 11 import 'package:path/path.dart' as p;
12 12
13 import 'package:migration/src/fork.dart'; 13 import 'package:migration/src/fork.dart';
14 import 'package:migration/src/log.dart'; 14 import 'package:migration/src/log.dart';
15 15
16 const appJit = "--compiler=app_jit"; 16 const appJit = "--compiler=app_jit";
17 const dart2js = "--compiler=dart2js"; 17 const dart2js = "--compiler=dart2js";
18 const dartdevc = "--compiler=dartdevc"; 18 const dartdevc = "--compiler=dartdevc";
19 const noCompiler = "--compiler=none"; 19 const noCompiler = "--compiler=none";
20 const precompiler = "--compiler=precompiler"; 20 const precompiler = "--compiler=precompiler";
21 const analyzer = "--compiler=dart2analyzer"; 21 const analyzer = "--compiler=dart2analyzer";
22 const dartk = "--compiler=dartk"; 22 const dartk = "--compiler=dartk";
23 23
24 const chrome = "--runtime=chrome"; 24 const chrome = "--runtime=chrome";
25 const precompiled = "--runtime=dart_precompiled"; 25 const precompiled = "--runtime=dart_precompiled";
26 const noRuntime = "--runtime=none"; 26 const noRuntime = "--runtime=none";
27 const vm = "--runtime=vm"; 27 const vm = "--runtime=vm";
28 const d8 = "--runtime=d8";
28 const jsshell = "--runtime=jsshell"; 29 const jsshell = "--runtime=jsshell";
29 30
30 const checked = "--checked"; 31 const checked = "--checked";
31 const dart2jsBatch = "--dart2js-batch"; 32 const dart2jsBatch = "--dart2js-batch";
32 const fastStartup = "--fast-startup"; 33 const fastStartup = "--fast-startup";
33 const useSdk = "--use-sdk"; 34 const useSdk = "--use-sdk";
34 const releaseMode = "--mode=release"; 35 const releaseMode = "--mode=release";
35 const productMode = "--mode=product"; 36 const productMode = "--mode=product";
36 const strong = "--strong"; 37 const strong = "--strong";
37 38
38 /// Maps configuration names to a corresponding set of test.dart command line 39 /// Maps configuration names to a corresponding set of test.dart command line
39 /// arguments. 40 /// arguments.
40 /// 41 ///
41 /// Each configuration name starts with the name of a column on the buildbot 42 /// Each configuration name starts with the name of a column on the buildbot
42 /// waterfall (except for "dartjs-linux" which is just called "dart2js" here) 43 /// waterfall (except for "dartjs-linux" which is just called "dart2js" here)
43 /// possibly followed by some modifier for a specific bot or annotated step on 44 /// possibly followed by some modifier for a specific bot or annotated step on
44 /// a bot. The configs here are ordered the same order as the waterfall. 45 /// a bot. The configs here are ordered the same order as the waterfall.
45 final allConfigs = { 46 final allConfigs = {
46 "vm": [noCompiler, vm], 47 "vm": [noCompiler, vm],
47 "vm-checked": [noCompiler, vm, checked], 48 "vm-checked": [noCompiler, vm, checked],
48 "vm-app": [appJit, vm], 49 "vm-app": [appJit, vm],
49 "vm-app-product": [productMode, appJit, vm], 50 "vm-app-product": [productMode, appJit, vm],
50 "vm-kernel": [dartk, releaseMode, vm], 51 "vm-kernel": [dartk, releaseMode, vm],
51 "vm-precomp": [precompiler, precompiled], 52 "vm-precomp": [precompiler, precompiled],
52 "vm-product": [productMode, noCompiler, vm], 53 "vm-product": [productMode, noCompiler, vm],
53 // TODO(rnystrom): Add dart2js-d8-hostchecked, dart2js-d8-minified, or 54 // TODO(rnystrom): Add dart2js-d8-hostchecked, dart2js-d8-minified, or
54 // dart2js-jsshell? 55 // dart2js-jsshell?
55 "analyzer": [analyzer, noRuntime, useSdk], 56 "analyzer": [analyzer, noRuntime, useSdk],
56 "analyzer-checked": [analyzer, noRuntime, checked, useSdk], 57 "analyzer-checked": [analyzer, noRuntime, checked, useSdk],
57 "analyzer-strong": [analyzer, noRuntime, checked, strong, useSdk], 58 "analyzer-checked-strong": [analyzer, noRuntime, checked, strong, useSdk],
59 "analyzer-strong": [analyzer, noRuntime, strong, useSdk],
58 "dart2js": [dart2js, chrome, useSdk, dart2jsBatch], 60 "dart2js": [dart2js, chrome, useSdk, dart2jsBatch],
61 "dart2js-d8-checked": [dart2js, d8, checked, fastStartup, useSdk, dart2jsBatch ],
59 "dart2js-jsshell": [dart2js, jsshell, fastStartup, useSdk, dart2jsBatch], 62 "dart2js-jsshell": [dart2js, jsshell, fastStartup, useSdk, dart2jsBatch],
60 // TODO(rnystrom): Is it worth running dart2js on Firefox too? 63 // TODO(rnystrom): Is it worth running dart2js on Firefox too?
61 "dartdevc": [dartdevc, chrome, useSdk, strong], 64 "dartdevc": [dartdevc, chrome, useSdk, strong],
62 }; 65 };
63 66
64 final buildSteps = [ 67 final buildSteps = [
65 // The SDK, which also builds the VM. 68 // The SDK, which also builds the VM.
66 ["--mode=release", "create_sdk"], 69 ["--mode=release", "create_sdk"],
67 // The kernel service. 70 // The kernel service.
68 ["--mode=release", "kernel-service"], 71 ["--mode=release", "kernel-service"],
(...skipping 11 matching lines...) Expand all
80 argParser.addOption("config", 83 argParser.addOption("config",
81 abbr: "c", allowMultiple: true, help: "Which configurations to run."); 84 abbr: "c", allowMultiple: true, help: "Which configurations to run.");
82 argParser.addFlag("help"); 85 argParser.addFlag("help");
83 86
84 var argResults = argParser.parse(arguments); 87 var argResults = argParser.parse(arguments);
85 if (argResults["help"] as bool) { 88 if (argResults["help"] as bool) {
86 usage(argParser); 89 usage(argParser);
87 return; 90 return;
88 } 91 }
89 92
90 if (argResults.rest.length != 2) { 93 var remainingArgs = []..addAll(argResults.rest);
94
95 if (remainingArgs.length == 1) {
96 remainingArgs.add(remainingArgs.first);
97 }
98
99 if (remainingArgs.length != 2) {
91 usage(argParser); 100 usage(argParser);
92 exit(1); 101 exit(1);
93 } 102 }
94 103
95 var build = argResults["build"] as bool; 104 var build = argResults["build"] as bool;
96 var configs = argResults["config"] as List<String>; 105 var configs = argResults["config"] as List<String>;
97 if (configs.isEmpty) configs = allConfigs.keys.toList(); 106 if (configs.isEmpty) configs = allConfigs.keys.toList();
98 107
99 var tests = scanTests(); 108 var tests = scanTests();
100 109
101 var startIndex = findFork(tests, argResults.rest[0]); 110 var startIndex = findFork(tests, remainingArgs[0]);
102 var endIndex = findFork(tests, argResults.rest[1]); 111 var endIndex = findFork(tests, remainingArgs[1]);
103 112
104 if (startIndex == null || endIndex == null) exit(1); 113 if (startIndex == null || endIndex == null) exit(1);
105 114
106 tests = tests.sublist(startIndex, endIndex + 1); 115 tests = tests.sublist(startIndex, endIndex + 1);
107 116
108 if (tests.isEmpty) { 117 if (tests.isEmpty) {
109 print("No tests in range."); 118 print("No tests in range.");
110 return; 119 return;
111 } 120 }
112 121
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 var s = failed == 1 ? "" : "s"; 182 var s = failed == 1 ? "" : "s";
174 print("${red("FAILED")} ${bold(failed.length)} configuration$s:"); 183 print("${red("FAILED")} ${bold(failed.length)} configuration$s:");
175 for (var config in failed) { 184 for (var config in failed) {
176 print("- ${bold(config)}"); 185 print("- ${bold(config)}");
177 } 186 }
178 } 187 }
179 } 188 }
180 189
181 void usage(ArgParser parser) { 190 void usage(ArgParser parser) {
182 print("Usage: dart run_tests.dart [--build] [--configs=...] " 191 print("Usage: dart run_tests.dart [--build] [--configs=...] "
183 "<first file> <last file>"); 192 "<first file> [last file]");
184 print("\n"); 193 print("\n");
185 print("Example:"); 194 print("Example:");
186 print("\n"); 195 print("\n");
187 print(" \$ dart run_tests.dart map_to_string queue"); 196 print(" \$ dart run_tests.dart map_to_string queue");
188 print("\n"); 197 print("\n");
189 print(parser.usage); 198 print(parser.usage);
190 } 199 }
191 200
192 Future<int> run(String executable, List<String> arguments) async { 201 Future<int> run(String executable, List<String> arguments) async {
193 var process = await Process.start(executable, arguments); 202 var process = await Process.start(executable, arguments);
194 process.stdout.listen((bytes) { 203 process.stdout.listen((bytes) {
195 stdout.add(bytes); 204 stdout.add(bytes);
196 }); 205 });
197 206
198 process.stderr.listen((bytes) { 207 process.stderr.listen((bytes) {
199 stderr.add(bytes); 208 stderr.add(bytes);
200 }); 209 });
201 210
202 return await process.exitCode; 211 return await process.exitCode;
203 } 212 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698