Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Move to latest lints #471

Merged
merged 1 commit into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
## 1.7.2-wip

## 1.7.1

- Update `package:vm_service` constraints to '>=12.0.0 <14.0.0'.
Expand Down
2 changes: 1 addition & 1 deletion analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
include: package:lints/recommended.yaml
include: package:dart_flutter_team_lints/analysis_options.yaml

analyzer:
language:
Expand Down
4 changes: 2 additions & 2 deletions benchmark/many_isolates.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ Future<void> main(List<String> args, dynamic message) async {
// If there is no message, it means this instance was created by
// run_benchmarks.dart. In that case, this is the parent instance that
// spawns all the others.
int sum = 0;
for (int i = 0; i < 10; ++i) {
var sum = 0;
for (var i = 0; i < 10; ++i) {
final port = ReceivePort();
final isolate =
Isolate.spawnUri(Uri.file('many_isolates.dart'), [], port.sendPort);
Expand Down
8 changes: 4 additions & 4 deletions benchmark/run_benchmarks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ import '../bin/format_coverage.dart' as format_coverage;
class CoverageBenchmark extends AsyncBenchmarkBase {
CoverageBenchmark(
ScoreEmitter emitter,
String name,
super.name,
this.script, {
this.gatherCoverage = false,
this.functionCoverage = false,
this.branchCoverage = false,
}) : super(name, emitter: emitter);
}) : super(emitter: emitter);

final String script;
final bool gatherCoverage;
Expand Down Expand Up @@ -102,9 +102,9 @@ class JsonEmitter implements ScoreEmitter {
}

Future<void> runBenchmark(CoverageBenchmark benchmark) async {
for (int i = 0; i < 3; ++i) {
for (var i = 0; i < 3; ++i) {
try {
await benchmark.report().timeout(Duration(minutes: 2));
await benchmark.report().timeout(const Duration(minutes: 2));
return;
} on TimeoutException {
print('Timed out');
Expand Down
4 changes: 3 additions & 1 deletion lib/src/chrome.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
// 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 'package:coverage/src/hitmap.dart';
import 'package:source_maps/parser.dart';

import 'hitmap.dart';

/// Returns a Dart based hit-map containing coverage report for the provided
/// Chrome [preciseCoverage].
///
Expand Down Expand Up @@ -37,6 +38,7 @@ Future<Map<String, dynamic>> parseChromeCoverage(
mapping = parse(mapResponse) as SingleMapping;
} on FormatException {
continue;
// ignore: avoid_catching_errors
} on ArgumentError {
continue;
}
Expand Down
12 changes: 5 additions & 7 deletions lib/src/collect.dart
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,8 @@ Future<Map<String, dynamic>> collect(Uri serviceUri, bool resume,
controller.close();
service.dispose();
});
service = VmService(
controller.stream, (String message) => socket.add(message),
log: StdoutLog(), disposeHandler: () => socket.close());
service = VmService(controller.stream, socket.add,
log: StdoutLog(), disposeHandler: socket.close);
await service.getVM().timeout(_retryInterval);
} on TimeoutException {
// The signature changed in vm_service version 6.0.0.
Expand Down Expand Up @@ -269,11 +268,11 @@ Future _waitIsolatesPaused(VmService service, {Duration? timeout}) async {

Future allPaused() async {
final vm = await service.getVM();
if (vm.isolates!.isEmpty) throw 'No isolates.';
if (vm.isolates!.isEmpty) throw StateError('No isolates.');
for (var isolateRef in vm.isolates!) {
final isolate = await service.getIsolate(isolateRef.id!);
if (!pauseEvents.contains(isolate.pauseEvent!.kind)) {
throw 'Unpaused isolates remaining.';
throw StateError('Unpaused isolates remaining.');
}
}
}
Expand Down Expand Up @@ -330,8 +329,7 @@ Future<List<Map<String, dynamic>>> _processSourceReport(
return scripts[scriptRef];
}

HitMap getHitMap(Uri scriptUri) =>
hitMaps.putIfAbsent(scriptUri, () => HitMap());
HitMap getHitMap(Uri scriptUri) => hitMaps.putIfAbsent(scriptUri, HitMap.new);

Future<void> processFunction(FuncRef funcRef) async {
final func = await service.getObject(isolateRef.id!, funcRef.id!) as Func;
Expand Down
15 changes: 9 additions & 6 deletions lib/src/formatter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

import 'package:path/path.dart' as p;

import 'resolver.dart';
import 'hitmap.dart';
import 'resolver.dart';

@Deprecated('Migrate to FileHitMapsFormatter')
abstract class Formatter {
Expand Down Expand Up @@ -144,14 +144,17 @@ extension FileHitMapsFormatter on Map<String, HitMap> {
for (final entry in entries) {
final v = entry.value;
if (reportFuncs && v.funcHits == null) {
throw 'Function coverage formatting was requested, but the hit map is '
'missing function coverage information. Did you run '
'collect_coverage with the --function-coverage flag?';
throw StateError(
'Function coverage formatting was requested, but the hit map is '
'missing function coverage information. Did you run '
'collect_coverage with the --function-coverage flag?',
);
}
if (reportBranches && v.branchHits == null) {
throw 'Branch coverage formatting was requested, but the hit map is '
throw StateError(
'Branch coverage formatting was requested, but the hit map is '
'missing branch coverage information. Did you run '
'collect_coverage with the --branch-coverage flag?';
'collect_coverage with the --branch-coverage flag?');
}
final hits = reportFuncs
? v.funcHits!
Expand Down
12 changes: 6 additions & 6 deletions lib/src/hitmap.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import 'dart:convert' show json;
import 'dart:io';

import 'package:coverage/src/resolver.dart';
import 'package:coverage/src/util.dart';
import 'resolver.dart';
import 'util.dart';

/// Contains line and function hit information for a single script.
class HitMap {
Expand Down Expand Up @@ -66,7 +66,7 @@ class HitMap {

if (checkIgnoredLines) {
if (ignoredLinesInFilesCache.containsKey(source)) {
final List<List<int>>? cacheHit = ignoredLinesInFilesCache[source];
final cacheHit = ignoredLinesInFilesCache[source];
if (cacheHit == null) {
// Null-entry indicates that the whole file was ignored.
continue;
Expand Down Expand Up @@ -157,7 +157,7 @@ class HitMap {
}
}

final sourceHitMap = globalHitMap.putIfAbsent(source, () => HitMap());
final sourceHitMap = globalHitMap.putIfAbsent(source, HitMap.new);
fillHitMap(e['hits'] as List, sourceHitMap.lineHits);
if (e.containsKey('funcHits')) {
sourceHitMap.funcHits ??= <int, int>{};
Expand Down Expand Up @@ -188,7 +188,7 @@ class HitMap {
@Deprecated('Use packagePath') String? packagesPath,
String? packagePath,
}) async {
final Resolver resolver = await Resolver.create(
final resolver = await Resolver.create(
packagesPath: packagesPath, packagePath: packagePath);
return parseJsonSync(jsonResult,
checkIgnoredLines: checkIgnoredLines,
Expand Down Expand Up @@ -375,7 +375,7 @@ List _sortHits(List hits) {
final lineOrLineRange = hits[i];
final firstLineInRange = lineOrLineRange is int
? lineOrLineRange
: int.parse(lineOrLineRange.split('-')[0] as String);
: int.parse((lineOrLineRange as String).split('-')[0]);
structuredHits.add(_HitInfo(firstLineInRange, hits[i], hits[i + 1] as int));
}
structuredHits.sort((a, b) => a.firstLine.compareTo(b.firstLine));
Expand Down
3 changes: 2 additions & 1 deletion lib/src/resolver.dart
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,8 @@ class Loader {
/// Returns `null` if the resource could not be loaded.
List<String>? loadSync(String path) {
try {
// Ensure `readAsLinesSync` runs within the try block so errors are caught.
// Ensure `readAsLinesSync` runs within the try block so errors are
// caught.
return File(path).readAsLinesSync();
} catch (_) {
failed.add(path);
Expand Down
2 changes: 1 addition & 1 deletion lib/src/run_and_collect.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Future<Map<String, dynamic>> runAndCollect(String scriptPath,
timeout: timeout,
);
} finally {
await process.stderr.drain();
await process.stderr.drain<void>();
}
final exitStatus = await process.exitCode;
if (exitStatus != 0) {
Expand Down
5 changes: 3 additions & 2 deletions lib/src/util.dart
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ final singleLineIgnore = RegExp(r'//\s*coverage:ignore-line[\w\d\s]*$');
final ignoreFile = RegExp(r'//\s*coverage:ignore-file[\w\d\s]*$');

/// Return list containing inclusive range of lines to be ignored by coverage.
/// If there is a error in balancing the statements it will throw a FormatException,
/// If there is a error in balancing the statements it will throw a
/// [FormatException],
/// unless `coverage:ignore-file` is found.
/// Return [0, lines.length] if the whole file is ignored.
///
Expand Down Expand Up @@ -162,7 +163,7 @@ List<List<int>> getIgnoredLines(String filePath, List<String>? lines) {

extension StandardOutExtension on Stream<List<int>> {
Stream<String> lines() =>
transform(SystemEncoding().decoder).transform(const LineSplitter());
transform(const SystemEncoding().decoder).transform(const LineSplitter());
}

Future<Uri> serviceUriFromProcess(Stream<String> procStdout) {
Expand Down
6 changes: 3 additions & 3 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: coverage
version: 1.7.1
version: 1.7.2-wip
description: Coverage data manipulation and formatting
repository: https://github.com/dart-lang/coverage

environment:
sdk: '^3.0.0'
sdk: ^3.0.0

dependencies:
args: ^2.0.0
Expand All @@ -18,7 +18,7 @@ dependencies:
dev_dependencies:
benchmark_harness: ^2.2.0
build_runner: ^2.1.10
lints: ^2.0.0
dart_flutter_team_lints: ^2.0.0
mockito: ^5.3.2
test: ^1.16.0
test_descriptor: ^2.0.0
Expand Down
9 changes: 6 additions & 3 deletions test/chrome_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

// TODO(#388): Fix and re-enable this test.
@TestOn('!windows')
library;

import 'dart:convert';
import 'dart:io';
Expand Down Expand Up @@ -42,9 +43,11 @@ void main() {
sourceUriProvider,
);

final sourceReport = report['coverage'].firstWhere(
(Map<String, dynamic> report) =>
report['source'].toString().contains('main_test.dart'));
final sourceReport =
(report['coverage'] as List<Map<String, dynamic>>).firstWhere(
(Map<String, dynamic> report) =>
report['source'].toString().contains('main_test.dart'),
);

final expectedHits = {
7: 1,
Expand Down
2 changes: 1 addition & 1 deletion test/collect_coverage_api_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ void main() {
everyElement(containsPair('branchHits', isNotEmpty)));
expect(sources[_isolateLibFileUri],
everyElement(containsPair('branchHits', isNotEmpty)));
}, skip: !platformVersionCheck(2, 17));
});

test('collect_coverage_api with coverableLineCache', () async {
final coverableLineCache = <String, Set<int>>{};
Expand Down
Loading