From e3f3eed665c3b462336a7fff17b8e19da0aa93d4 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Fri, 11 Jan 2019 13:52:20 -0800 Subject: [PATCH] Remove our copy of format_coverage; coverage 0.12.4 includes the fix --- pubspec.yaml | 2 +- test/src/utils.dart | 5 +- tool/format_coverage.dart | 232 -------------------------------------- 3 files changed, 4 insertions(+), 235 deletions(-) delete mode 100644 tool/format_coverage.dart diff --git a/pubspec.yaml b/pubspec.yaml index 53ede84188..8ee23cb1be 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,7 +32,7 @@ dev_dependencies: build: ^1.0.1 build_runner: ^1.0.0 build_version: ^1.0.0 - coverage: any + coverage: ^0.12.4 dhttpd: ^3.0.0 glob: ^1.1.5 grinder: ^0.8.2 diff --git a/test/src/utils.dart b/test/src/utils.dart index fde3819fe2..637bccc930 100644 --- a/test/src/utils.dart +++ b/test/src/utils.dart @@ -155,8 +155,9 @@ class CoverageSubprocessLauncher extends SubprocessLauncher { /// Wait for all coverage runs to finish. await Future.wait(currentCoverageResults); - return launcher.runStreamed(Platform.executable, [ - 'tool/format_coverage.dart', // TODO(jcollins-g): use pub after dart-lang/coverage#240 is landed + return launcher.runStreamed('pub', [ + 'run', + 'coverage:format_coverage', '--lcov', '-v', '-b', '.', diff --git a/tool/format_coverage.dart b/tool/format_coverage.dart deleted file mode 100644 index 4e6512907f..0000000000 --- a/tool/format_coverage.dart +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:async'; -import 'dart:io'; - -import 'package:args/args.dart'; -import 'package:coverage/coverage.dart'; -import 'package:path/path.dart' as p; - -/// [Environment] stores gathered arguments information. -class Environment { - String sdkRoot; - String pkgRoot; - String packagesPath; - String baseDirectory; - String input; - IOSink output; - List reportOn; - String bazelWorkspace; - bool bazel; - int workers; - bool prettyPrint; - bool lcov; - bool expectMarkers; - bool verbose; -} - -Future main(List arguments) async { - final env = parseArgs(arguments); - - List files = filesToProcess(env.input); - if (env.verbose) { - print('Environment:'); - print(' # files: ${files.length}'); - print(' # workers: ${env.workers}'); - print(' sdk-root: ${env.sdkRoot}'); - print(' package-root: ${env.pkgRoot}'); - print(' package-spec: ${env.packagesPath}'); - print(' report-on: ${env.reportOn}'); - } - - var clock = new Stopwatch()..start(); - var hitmap = await parseCoverage(files, env.workers); - - // All workers are done. Process the data. - if (env.verbose) { - print('Done creating global hitmap. Took ${clock.elapsedMilliseconds} ms.'); - } - - String output; - var resolver = env.bazel - ? new BazelResolver(workspacePath: env.bazelWorkspace) - : new Resolver( - packagesPath: env.packagesPath, - packageRoot: env.pkgRoot, - sdkRoot: env.sdkRoot); - var loader = new Loader(); - if (env.prettyPrint) { - output = - await new PrettyPrintFormatter(resolver, loader, reportOn: env.reportOn) - .format(hitmap); - } else { - assert(env.lcov); - output = await new LcovFormatter(resolver, - reportOn: env.reportOn, basePath: env.baseDirectory) - .format(hitmap); - } - - env.output.write(output); - await env.output.flush(); - if (env.verbose) { - print('Done flushing output. Took ${clock.elapsedMilliseconds} ms.'); - } - - if (env.verbose) { - if (resolver.failed.length > 0) { - print('Failed to resolve:'); - for (String error in resolver.failed.toSet()) { - print(' $error'); - } - } - if (loader.failed.length > 0) { - print('Failed to load:'); - for (String error in loader.failed.toSet()) { - print(' $error'); - } - } - } - await env.output.close(); -} - -/// Checks the validity of the provided arguments. Does not initialize actual -/// processing. -Environment parseArgs(List arguments) { - final env = new Environment(); - var parser = new ArgParser(); - - parser.addOption('sdk-root', abbr: 's', help: 'path to the SDK root'); - parser.addOption('package-root', abbr: 'p', help: 'path to the package root'); - parser.addOption('packages', help: 'path to the package spec file'); - parser.addOption('in', abbr: 'i', help: 'input(s): may be file or directory'); - parser.addOption('out', - abbr: 'o', defaultsTo: 'stdout', help: 'output: may be file or stdout'); - parser.addMultiOption('report-on', - help: 'which directories or files to report coverage on'); - parser.addOption('workers', - abbr: 'j', defaultsTo: '1', help: 'number of workers'); - parser.addOption('bazel-workspace', - defaultsTo: '', help: 'Bazel workspace directory'); - parser.addOption('base-directory', - abbr: 'b', - help: 'the base directory relative to which source paths are output'); - parser.addFlag('bazel', - defaultsTo: false, help: 'use Bazel-style path resolution'); - parser.addFlag('pretty-print', - abbr: 'r', - negatable: false, - help: 'convert coverage data to pretty print format'); - parser.addFlag('lcov', - abbr: 'l', - negatable: false, - help: 'convert coverage data to lcov format'); - parser.addFlag('verbose', - abbr: 'v', negatable: false, help: 'verbose output'); - parser.addFlag('help', abbr: 'h', negatable: false, help: 'show this help'); - - var args = parser.parse(arguments); - - void printUsage() { - print('Usage: dart format_coverage.dart [OPTION...]\n'); - print(parser.usage); - } - - void fail(String msg) { - print('\n$msg\n'); - printUsage(); - exit(1); - } - - if (args['help']) { - printUsage(); - exit(0); - } - - env.sdkRoot = args['sdk-root']; - if (env.sdkRoot != null) { - env.sdkRoot = p.normalize(p.join(p.absolute(env.sdkRoot), 'lib')); - if (!FileSystemEntity.isDirectorySync(env.sdkRoot)) { - fail('Provided SDK root "${args["sdk-root"]}" is not a valid SDK ' - 'top-level directory'); - } - } - - if (args['package-root'] != null && args['packages'] != null) { - fail('Only one of --package-root or --packages may be specified.'); - } - - env.packagesPath = args['packages']; - if (env.packagesPath != null) { - if (!FileSystemEntity.isFileSync(env.packagesPath)) { - fail('Package spec "${args["packages"]}" not found, or not a file.'); - } - } - - env.pkgRoot = args['package-root']; - if (env.pkgRoot != null) { - env.pkgRoot = p.absolute(p.normalize(args['package-root'])); - if (!FileSystemEntity.isDirectorySync(env.pkgRoot)) { - fail('Package root "${args["package-root"]}" is not a directory.'); - } - } - - if (args['in'] == null) fail('No input files given.'); - env.input = p.absolute(p.normalize(args['in'])); - if (!FileSystemEntity.isDirectorySync(env.input) && - !FileSystemEntity.isFileSync(env.input)) { - fail('Provided input "${args["in"]}" is neither a directory nor a file.'); - } - - if (args['out'] == 'stdout') { - env.output = stdout; - } else { - var outpath = p.absolute(p.normalize(args['out'])); - var outfile = new File(outpath)..createSync(recursive: true); - env.output = outfile.openWrite(); - } - - env.reportOn = args['report-on'].isNotEmpty ? args['report-on'] : null; - - env.bazel = args['bazel']; - env.bazelWorkspace = args['bazel-workspace']; - if (env.bazelWorkspace.isNotEmpty && !env.bazel) { - stderr.writeln('warning: ignoring --bazel-workspace: --bazel not set'); - } - - if (args['base-directory'] != null) { - env.baseDirectory = p.absolute(args['base-directory']); - } - - env.lcov = args['lcov']; - if (args['pretty-print'] && env.lcov) { - fail('Choose one of pretty-print or lcov output'); - } - // Use pretty-print either explicitly or by default. - env.prettyPrint = !env.lcov; - - try { - env.workers = int.parse('${args["workers"]}'); - } catch (e) { - fail('Invalid worker count: $e'); - } - - env.verbose = args['verbose']; - return env; -} - -/// Given an absolute path absPath, this function returns a [List] of files -/// are contained by it if it is a directory, or a [List] containing the file if -/// it is a file. -List filesToProcess(String absPath) { - var filePattern = new RegExp(r'^dart-cov-\d+-\d+.json$'); - if (FileSystemEntity.isDirectorySync(absPath)) { - return new Directory(absPath) - .listSync(recursive: true) - .whereType() - .where((e) => filePattern.hasMatch(p.basename(e.path))) - .toList(); - } - return [new File(absPath)]; -}