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

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

Issue 3011593003: Add "-1" and "-2" to run subsets of the configurations. (Closed)
Patch Set: Created 3 years, 3 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';
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 "vm-kernel": [dartk, releaseMode, vm], 51 "vm-kernel": [dartk, releaseMode, vm],
52 "vm-precomp": [precompiler, precompiled], 52 "vm-precomp": [precompiler, precompiled],
53 "vm-product": [productMode, noCompiler, vm], 53 "vm-product": [productMode, noCompiler, vm],
54 // TODO(rnystrom): Add dart2js-d8-hostchecked, dart2js-d8-minified, or 54 // TODO(rnystrom): Add dart2js-d8-hostchecked, dart2js-d8-minified, or
55 // dart2js-jsshell? 55 // dart2js-jsshell?
56 "analyzer": [analyzer, noRuntime, useSdk], 56 "analyzer": [analyzer, noRuntime, useSdk],
57 "analyzer-checked": [analyzer, noRuntime, checked, useSdk], 57 "analyzer-checked": [analyzer, noRuntime, checked, useSdk],
58 "analyzer-checked-strong": [analyzer, noRuntime, checked, strong, useSdk], 58 "analyzer-checked-strong": [analyzer, noRuntime, checked, strong, useSdk],
59 "analyzer-strong": [analyzer, noRuntime, strong, useSdk], 59 "analyzer-strong": [analyzer, noRuntime, strong, useSdk],
60 "dart2js": [dart2js, chrome, useSdk, dart2jsBatch], 60 "dart2js": [dart2js, chrome, useSdk, dart2jsBatch],
61 "dart2js-d8-checked": [dart2js, d8, checked, fastStartup, useSdk, dart2jsBatch ], 61 "dart2js-d8-checked": [
62 dart2js,
63 d8,
64 checked,
65 fastStartup,
66 useSdk,
67 dart2jsBatch
68 ],
62 "dart2js-jsshell": [dart2js, jsshell, fastStartup, useSdk, dart2jsBatch], 69 "dart2js-jsshell": [dart2js, jsshell, fastStartup, useSdk, dart2jsBatch],
63 // TODO(rnystrom): Is it worth running dart2js on Firefox too? 70 // TODO(rnystrom): Is it worth running dart2js on Firefox too?
64 "dartdevc": [dartdevc, chrome, useSdk, strong], 71 "dartdevc": [dartdevc, chrome, useSdk, strong],
65 }; 72 };
66 73
74 /// A subset of the configurations that run quickly and give a decent amount of
75 /// coverage for the platforms that do not implement Dart 2.0 yet.
76 final oneConfigs = const [
77 "vm",
78 "vm-checked",
79 "analyzer",
80 "analyzer-checked",
81 "dart2js",
82 "dart2js-d8-checked",
83 "dartdevc",
84 ];
85
86 /// The configurations that should correctly implement Dart 2.0 (more or less)
87 /// already.
88 final twoConfigs = const [
89 "analyzer-checked-strong",
90 "analyzer-strong",
91 "dartdevc"
92 ];
93
67 final buildSteps = [ 94 final buildSteps = [
68 // The SDK, which also builds the VM. 95 // The SDK, which also builds the VM.
69 ["--mode=release", "create_sdk"], 96 ["--mode=release", "create_sdk"],
70 // The kernel service. 97 // The kernel service.
71 ["--mode=release", "kernel-service"], 98 ["--mode=release", "kernel-service"],
72 // Precompiled runtime for release 99 // Precompiled runtime for release
73 ["--mode=release", "runtime_precompiled"], 100 ["--mode=release", "runtime_precompiled"],
74 // Product version of the runtime and precompiled runtime. 101 // Product version of the runtime and precompiled runtime.
75 ["--mode=product", "runtime", "runtime_precompiled"], 102 ["--mode=product", "runtime", "runtime_precompiled"],
76 // Dartdevc and its dependencies. 103 // Dartdevc and its dependencies.
77 ["--mode=release", "dartdevc_test"], 104 ["--mode=release", "dartdevc_test"],
78 ]; 105 ];
79 106
80 Future<Null> main(List<String> arguments) async { 107 Future<Null> main(List<String> arguments) async {
81 var argParser = new ArgParser(allowTrailingOptions: true); 108 var argParser = new ArgParser(allowTrailingOptions: true);
82 argParser.addFlag("build", help: "Build runtimes before running tests."); 109 argParser.addFlag("build", help: "Build runtimes before running tests.");
83 argParser.addOption("config", 110 argParser.addOption("config",
84 abbr: "c", allowMultiple: true, help: "Which configurations to run."); 111 abbr: "c", allowMultiple: true, help: "Which configurations to run.");
85 argParser.addFlag("help"); 112 argParser.addFlag("help");
113 argParser.addFlag("1",
114 abbr: "1", help: "Run some of the 1.0-supporting configurations.");
115 argParser.addFlag("2",
116 abbr: "2", help: "Run the 2.0-supporting configurations.");
86 117
87 var argResults = argParser.parse(arguments); 118 var argResults = argParser.parse(arguments);
88 if (argResults["help"] as bool) { 119 if (argResults["help"] as bool) {
89 usage(argParser); 120 usage(argParser);
90 return; 121 return;
91 } 122 }
92 123
93 var remainingArgs = []..addAll(argResults.rest); 124 String start;
125 String end;
94 126
95 if (remainingArgs.length == 1) { 127 if (argResults.rest.length == 1) {
96 remainingArgs.add(remainingArgs.first); 128 // Just run a single test.
97 } 129 start = argResults.rest[0];
98 130 end = start;
99 if (remainingArgs.length != 2) { 131 } else if (argResults.rest.length == 2) {
132 start = argResults.rest[0];
133 end = argResults.rest[1];
134 } else {
100 usage(argParser); 135 usage(argParser);
101 exit(1); 136 exit(1);
102 } 137 }
103 138
104 var build = argResults["build"] as bool; 139 var build = argResults["build"] as bool;
105 var configs = argResults["config"] as List<String>; 140 var configs = argResults["config"] as List<String>;
106 if (configs.isEmpty) configs = allConfigs.keys.toList(); 141
142 if (argResults["1"] as bool) {
143 configs.addAll(oneConfigs);
144 }
145
146 if (argResults["2"] as bool) {
147 configs.addAll(twoConfigs);
148 }
149
150 if (configs.isEmpty) configs.addAll(allConfigs.keys);
107 151
108 var tests = scanTests(); 152 var tests = scanTests();
109 153
110 var startIndex = findFork(tests, remainingArgs[0]); 154 var startIndex = findFork(tests, start);
111 var endIndex = findFork(tests, remainingArgs[1]); 155 var endIndex = findFork(tests, end);
112 156
113 if (startIndex == null || endIndex == null) exit(1); 157 if (startIndex == null || endIndex == null) exit(1);
114 158
115 tests = tests.sublist(startIndex, endIndex + 1); 159 tests = tests.sublist(startIndex, endIndex + 1);
116 160
117 if (tests.isEmpty) { 161 if (tests.isEmpty) {
118 print("No tests in range."); 162 print("No tests in range.");
119 return; 163 return;
120 } 164 }
121 165
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 args.add("$selector/${paths.join('|')}"); 202 args.add("$selector/${paths.join('|')}");
159 }); 203 });
160 204
161 var exitCode = await run("tools/test.py", args); 205 var exitCode = await run("tools/test.py", args);
162 if (exitCode != 0) { 206 if (exitCode != 0) {
163 print(red("Configuration failed: $name")); 207 print(red("Configuration failed: $name"));
164 failed.add(name); 208 failed.add(name);
165 } else { 209 } else {
166 passed.add(name); 210 passed.add(name);
167 } 211 }
212
213 print("");
168 } 214 }
169 215
170 if (failed.length == 0) { 216 if (failed.length == 0) {
171 var s = passed.length == 1 ? "" : "s"; 217 var s = passed.length == 1 ? "" : "s";
172 print("${green('PASSED')} all ${bold(passed.length)} configuration$s!"); 218 print("${green('PASSED')} all ${bold(passed.length)} configuration$s!");
173 } else { 219 } else {
174 if (passed.length > 0) { 220 if (passed.length > 0) {
175 var s = passed == 1 ? "" : "s"; 221 var s = passed == 1 ? "" : "s";
176 print("${green('PASSED')} ${bold(passed.length)} configuration$s:"); 222 print("${green('PASSED')} ${bold(passed.length)} configuration$s:");
177 for (var config in passed) { 223 for (var config in passed) {
178 print("- ${bold(config)}"); 224 print("- ${bold(config)}");
179 } 225 }
180 } 226 }
181 227
182 var s = failed == 1 ? "" : "s"; 228 var s = failed == 1 ? "" : "s";
183 print("${red("FAILED")} ${bold(failed.length)} configuration$s:"); 229 print("${red("FAILED")} ${bold(failed.length)} configuration$s:");
184 for (var config in failed) { 230 for (var config in failed) {
185 print("- ${bold(config)}"); 231 print("- ${bold(config)}");
186 } 232 }
187 } 233 }
188 } 234 }
189 235
190 void usage(ArgParser parser) { 236 void usage(ArgParser parser) {
191 print("Usage: dart run_tests.dart [--build] [--configs=...] " 237 print("Usage: dart run_tests.dart [--build] [-2] [-1] [--configs=...]"
192 "<first file> [last file]"); 238 "<first file> [last file]");
193 print("\n"); 239 print("\n");
194 print("Example:"); 240 print("Example:");
195 print("\n"); 241 print("\n");
196 print(" \$ dart run_tests.dart map_to_string queue"); 242 print(" \$ dart run_tests.dart map_to_string queue");
197 print("\n"); 243 print("\n");
198 print(parser.usage); 244 print(parser.usage);
199 } 245 }
200 246
201 Future<int> run(String executable, List<String> arguments) async { 247 Future<int> run(String executable, List<String> arguments) async {
202 var process = await Process.start(executable, arguments); 248 var process = await Process.start(executable, arguments);
203 process.stdout.listen((bytes) { 249 process.stdout.listen((bytes) {
204 stdout.add(bytes); 250 stdout.add(bytes);
205 }); 251 });
206 252
207 process.stderr.listen((bytes) { 253 process.stderr.listen((bytes) {
208 stderr.add(bytes); 254 stderr.add(bytes);
209 }); 255 });
210 256
211 return await process.exitCode; 257 return await process.exitCode;
212 } 258 }
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