Skip to content

Commit 86a7341

Browse files
committed
refactor: apply fix only to json mode
1 parent b904e69 commit 86a7341

File tree

2 files changed

+39
-23
lines changed

2 files changed

+39
-23
lines changed

pkgs/test/test/runner/coverage_test.dart

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,7 @@ dev_dependencies:
167167
workingDirectory: pkgDir,
168168
);
169169
await validateTest(test);
170-
expect(
171-
File(lcovFile).readAsStringSync(),
172-
contains('''
170+
expect(File(lcovFile).readAsStringSync(), '''
173171
SF:${p.join(pkgDir, 'lib', 'calculate.dart')}
174172
DA:1,1
175173
DA:2,2
@@ -178,8 +176,7 @@ DA:5,0
178176
LF:4
179177
LH:3
180178
end_of_record
181-
'''),
182-
);
179+
''');
183180
});
184181

185182
test('gathers coverage for tests in multiple packages', () async {
@@ -274,9 +271,7 @@ dev_dependencies:
274271
workingDirectory: pkgDir,
275272
);
276273
await validateTest(test);
277-
expect(
278-
File(lcovFile).readAsStringSync(),
279-
contains('''
274+
expect(File(lcovFile).readAsStringSync(), '''
280275
SF:${p.join(pkgDir, 'lib', 'calculate.dart')}
281276
DA:1,1
282277
DA:2,2
@@ -285,11 +280,10 @@ DA:5,0
285280
LF:4
286281
LH:3
287282
end_of_record
288-
'''),
289-
);
283+
''');
290284
});
291285

292-
test('gathers coverage for code outside of lib (dart_frog)', () async {
286+
test('gathers coverage for code outside of lib in json mode', () async {
293287
await d.dir(d.sandbox, [
294288
d.dir('dart_frog_sample', [
295289
d.file('pubspec.yaml', '''
@@ -343,14 +337,28 @@ void main() {
343337
]).create();
344338

345339
final pkgDir = p.join(d.sandbox, 'dart_frog_sample');
340+
await (await runPub([
341+
'global',
342+
'activate',
343+
'coverage',
344+
], workingDirectory: pkgDir)).shouldExit(0);
346345
await (await runPub(['get'], workingDirectory: pkgDir)).shouldExit(0);
347346
final lcovFile = p.join(coverageDirectory.path, 'lcov.info');
348347
var test = await runTest(
349-
['--coverage-path', lcovFile, 'test/routes/index_test.dart'],
348+
['--coverage', coverageDirectory.path, 'test/routes/index_test.dart'],
350349
packageConfig: p.join(pkgDir, '.dart_tool/package_config.json'),
351350
workingDirectory: pkgDir,
352351
);
353352
await validateTest(test);
353+
await (await runPub([
354+
'global',
355+
'run',
356+
'coverage:format_coverage',
357+
'--lcov',
358+
'--in=${coverageDirectory.path}',
359+
'--out=$lcovFile',
360+
'--report-on=lib,routes',
361+
], workingDirectory: pkgDir)).shouldExit(0);
354362
expect(
355363
File(lcovFile).readAsStringSync(),
356364
contains('''

pkgs/test_core/lib/src/runner/vm/platform.dart

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ Future<Map<String, dynamic>> _gatherCoverage(
427427
false,
428428
false,
429429
false,
430-
await _filterCoveragePackages(config.coveragePackages),
430+
await _filterCoveragePackages(config.coveragePackages, config.coverageLcov),
431431
isolateIds: {isolateId!},
432432
branchCoverage: config.branchCoverage,
433433
);
@@ -456,17 +456,25 @@ void _setupPauseAfterTests() {
456456

457457
Future<Set<String>> _filterCoveragePackages(
458458
List<RegExp>? coveragePackages,
459+
String? coverageLcov,
459460
) async {
460461
if (coveragePackages == null || coveragePackages.isEmpty) {
461-
// If no filters were provided, report coverage for all packages.
462-
// This is required to maintain backward compatibility particularly
463-
// in cases where coverage is required for files outside of the lib directory.
464-
// See https://github.com/dart-lang/test/issues/2581
465-
return {};
466-
} else {
467-
return (await currentPackageConfig).packages
468-
.map((package) => package.name)
469-
.where((name) => coveragePackages.any((re) => re.hasMatch(name)))
470-
.toSet();
462+
if (coverageLcov == null) {
463+
// If no filters were provided, report coverage for all packages.
464+
// This is required to maintain backward compatibility particularly
465+
// in cases where coverage is required for files outside of the lib directory.
466+
// See https://github.com/dart-lang/test/issues/2581
467+
return {};
468+
}
469+
return workspacePackageNames(await currentPackage);
470+
}
471+
472+
if (coveragePackages.isEmpty) {
473+
return workspacePackageNames(await currentPackage);
471474
}
475+
476+
return (await currentPackageConfig).packages
477+
.map((package) => package.name)
478+
.where((name) => coveragePackages.any((re) => re.hasMatch(name)))
479+
.toSet();
472480
}

0 commit comments

Comments
 (0)