Chromium Code Reviews| Index: tools/full-coverage.dart |
| =================================================================== |
| --- tools/full-coverage.dart (revision 28308) |
| +++ tools/full-coverage.dart (working copy) |
| @@ -26,10 +26,10 @@ |
| /// [Resolver] resolves imports with respect to a given environment. |
| class Resolver { |
| - const DART_PREFIX = "dart:"; |
| - const PACKAGE_PREFIX = "package:"; |
| - const FILE_PREFIX = "file://"; |
| - const HTTP_PREFIX = "http://"; |
| + final DART_PREFIX = "dart:"; |
| + final PACKAGE_PREFIX = "package:"; |
| + final FILE_PREFIX = "file://"; |
| + final HTTP_PREFIX = "http://"; |
|
siva
2013/10/07 21:56:34
Should these be 'static const' variables instead o
Ivan Posva
2013/10/07 22:07:12
Done.
|
| Map _env; |
| List failed = []; |
| @@ -387,7 +387,7 @@ |
| // off by at max (#workers - 1). |
| var p = spawnFunction(worker); |
| workerPorts.add(p); |
| - p.send(new Message(Message.WORK, [sharedEnv, files]), port); |
| + p.send(new Message(Message.WORK, [sharedEnv, files]), port.toSendPort()); |
| return 0; |
| } |
| @@ -403,8 +403,7 @@ |
| help: "path to the package root", |
| defaultsTo: "."); |
| parser.addOption("in", abbr: "i", |
| - help: "input(s): may be file or directory", |
| - defaultsTo: "stdin"); |
| + help: "input(s): may be file or directory"); |
| parser.addOption("out", abbr: "o", |
| help: "output: may be file or stdout", |
| defaultsTo: "stdout"); |
| @@ -426,9 +425,19 @@ |
| var args = parser.parse(new Options().arguments); |
| + printUsage() { |
| + print("Usage: dart full-coverage.dart [OPTION...]\n"); |
| + print(parser.getUsage()); |
| + } |
| + |
| + fail(String msg) { |
| + print("\n$msg\n"); |
| + printUsage(); |
| + exit(1); |
| + } |
| + |
| if (args["help"]) { |
| - print("Usage: coverage [OPTION...]\n"); |
| - print(parser.getUsage()); |
| + printUsage(); |
| exit(0); |
| } |
| @@ -437,14 +446,14 @@ |
| env.sdkRoot = |
| join(absolute(normalize(Platform.environment["SDK_ROOT"])), "lib"); |
| } else { |
| - throw "No SDK root found, please specify one using --sdk-root."; |
| + fail("No SDK root found, please specify one using --sdk-root."); |
| } |
| } else { |
| env.sdkRoot = join(absolute(normalize(args["sdk-root"])), "lib"); |
| } |
| if (!FileSystemEntity.isDirectorySync(env.sdkRoot)) { |
| - throw "Provided SDK root ${args["sdk-root"]} is not a valid SDK " |
| - "top-level directory"; |
| + fail("Provided SDK root '${args["sdk-root"]}' is not a valid SDK " |
| + "top-level directory"); |
| } |
| if (args["package-root"] == null) { |
| @@ -452,17 +461,17 @@ |
| } else { |
| env.pkgRoot = absolute(normalize(args["package-root"])); |
| if (!FileSystemEntity.isDirectorySync(env.pkgRoot)) { |
| - throw "Provided package root ${args["package-root"]} is not directory."; |
| + fail("Provided package root '${args["package-root"]}' is not directory."); |
| } |
| } |
| - if (args["in"] == "stdin") { |
| - env.input = "stdin"; |
| + if (args["in"] == null) { |
| + fail("No input files given."); |
| } else { |
| env.input = absolute(normalize(args["in"])); |
| if (!FileSystemEntity.isDirectorySync(env.input) && |
| !FileSystemEntity.isFileSync(env.input)) { |
| - throw "Provided input ${args["in"]} is neither a directory, nor a file."; |
| + fail("Provided input '${args["in"]}' is neither a directory, nor a file."); |
| } |
| } |
| @@ -473,13 +482,17 @@ |
| env.output = new File(env.output).openWrite(); |
| } |
| - if (args["pretty-print"] && |
| - args["lcov"]) { |
| - throw "Choose either pretty-print or lcov output"; |
| + if (args["pretty-print"] == args["lcov"]) { |
| + fail("Choose either pretty-print or lcov output"); |
| } |
| - |
| env.prettyPrint = args["pretty-print"]; |
| env.lcov = args["lcov"]; |
| + |
| + try { |
| + env.workers = int.parse("${args["workers"]}"); |
| + } catch (e) { |
| + fail("Invalid worker count: $e"); |
| + } |
| + |
| env.verbose = args["verbose"]; |
| - env.workers = int.parse("${args["workers"]}"); |
| } |