OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 import "dart:async"; | 5 import "dart:async"; |
6 import "dart:convert"; | 6 import "dart:convert"; |
7 import "dart:io"; | 7 import "dart:io"; |
8 import "dart:isolate"; | 8 import "dart:isolate"; |
9 import "dart:mirrors"; | 9 import "dart:mirrors"; |
10 | 10 |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 static const int WORK = 3; | 293 static const int WORK = 3; |
294 | 294 |
295 final int type; | 295 final int type; |
296 final payload; | 296 final payload; |
297 | 297 |
298 Message(this.type, this.payload); | 298 Message(this.type, this.payload); |
299 } | 299 } |
300 | 300 |
301 final env = new Environment(); | 301 final env = new Environment(); |
302 | 302 |
303 main() { | 303 main(List<String> arguments) { |
304 parseArgs(); | 304 parseArgs(arguments); |
305 | 305 |
306 List files = filesToProcess(env.input); | 306 List files = filesToProcess(env.input); |
307 int filesPerWorker = files.length ~/ env.workers; | 307 int filesPerWorker = files.length ~/ env.workers; |
308 List workerPorts = []; | 308 List workerPorts = []; |
309 int doneCnt = 0; | 309 int doneCnt = 0; |
310 | 310 |
311 List failedResolves = []; | 311 List failedResolves = []; |
312 List failedLoads = []; | 312 List failedLoads = []; |
313 Map globalHitmap = {}; | 313 Map globalHitmap = {}; |
314 int start = new DateTime.now().millisecondsSinceEpoch; | 314 int start = new DateTime.now().millisecondsSinceEpoch; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 // off by at max (#workers - 1). | 392 // off by at max (#workers - 1). |
393 var p = spawnFunction(worker); | 393 var p = spawnFunction(worker); |
394 workerPorts.add(p); | 394 workerPorts.add(p); |
395 p.send(new Message(Message.WORK, [sharedEnv, files]), port.toSendPort()); | 395 p.send(new Message(Message.WORK, [sharedEnv, files]), port.toSendPort()); |
396 | 396 |
397 return 0; | 397 return 0; |
398 } | 398 } |
399 | 399 |
400 /// Checks the validity of the provided arguments. Does not initialize actual | 400 /// Checks the validity of the provided arguments. Does not initialize actual |
401 /// processing. | 401 /// processing. |
402 parseArgs() { | 402 parseArgs(List<String> arguments) { |
403 var parser = new ArgParser(); | 403 var parser = new ArgParser(); |
404 | 404 |
405 parser.addOption("sdk-root", abbr: "s", | 405 parser.addOption("sdk-root", abbr: "s", |
406 help: "path to the SDK root"); | 406 help: "path to the SDK root"); |
407 parser.addOption("package-root", abbr: "p", | 407 parser.addOption("package-root", abbr: "p", |
408 help: "path to the package root"); | 408 help: "path to the package root"); |
409 parser.addOption("in", abbr: "i", | 409 parser.addOption("in", abbr: "i", |
410 help: "input(s): may be file or directory"); | 410 help: "input(s): may be file or directory"); |
411 parser.addOption("out", abbr: "o", | 411 parser.addOption("out", abbr: "o", |
412 help: "output: may be file or stdout", | 412 help: "output: may be file or stdout", |
413 defaultsTo: "stdout"); | 413 defaultsTo: "stdout"); |
414 parser.addOption("workers", abbr: "j", | 414 parser.addOption("workers", abbr: "j", |
415 help: "number of workers", | 415 help: "number of workers", |
416 defaultsTo: "1"); | 416 defaultsTo: "1"); |
417 parser.addFlag("pretty-print", abbr: "r", | 417 parser.addFlag("pretty-print", abbr: "r", |
418 help: "convert coverage data to pretty print format", | 418 help: "convert coverage data to pretty print format", |
419 negatable: false); | 419 negatable: false); |
420 parser.addFlag("lcov", abbr :"l", | 420 parser.addFlag("lcov", abbr :"l", |
421 help: "convert coverage data to lcov format", | 421 help: "convert coverage data to lcov format", |
422 negatable: false); | 422 negatable: false); |
423 parser.addFlag("verbose", abbr :"v", | 423 parser.addFlag("verbose", abbr :"v", |
424 help: "verbose output", | 424 help: "verbose output", |
425 negatable: false); | 425 negatable: false); |
426 parser.addFlag("help", abbr: "h", | 426 parser.addFlag("help", abbr: "h", |
427 help: "show this help", | 427 help: "show this help", |
428 negatable: false); | 428 negatable: false); |
429 | 429 |
430 var args = parser.parse(new Options().arguments); | 430 var args = parser.parse(arguments); |
431 | 431 |
432 printUsage() { | 432 printUsage() { |
433 print("Usage: dart full-coverage.dart [OPTION...]\n"); | 433 print("Usage: dart full-coverage.dart [OPTION...]\n"); |
434 print(parser.getUsage()); | 434 print(parser.getUsage()); |
435 } | 435 } |
436 | 436 |
437 fail(String msg) { | 437 fail(String msg) { |
438 print("\n$msg\n"); | 438 print("\n$msg\n"); |
439 printUsage(); | 439 printUsage(); |
440 exit(1); | 440 exit(1); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 } | 493 } |
494 | 494 |
495 try { | 495 try { |
496 env.workers = int.parse("${args["workers"]}"); | 496 env.workers = int.parse("${args["workers"]}"); |
497 } catch (e) { | 497 } catch (e) { |
498 fail("Invalid worker count: $e"); | 498 fail("Invalid worker count: $e"); |
499 } | 499 } |
500 | 500 |
501 env.verbose = args["verbose"]; | 501 env.verbose = args["verbose"]; |
502 } | 502 } |
OLD | NEW |