blob: d17452429cc9e1c726ae250fad1da475c0313c24 [file] [log] [blame]
// Copyright (c) 2022, 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:developer';
import 'dart:math';
import 'package:test/test.dart';
import 'package:test_package/has_part.dart';
import 'package:vm_service/vm_service.dart';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
void testFunction() {
// Use functions from various packages, so we can get coverage for them.
print(sqrt(123)); // dart:math
print(anything); // package:test/test.dart
print(decodeBase64("SGkh")); // package:vm_service/vm_service.dart
print(removeAdjacentDuplicates([])); // common/service_test_common.dart
foo(); // package:test_package/has_part.dart
debugger();
}
IsolateTest filterTestImpl(List<String> filters, Function(Set<String>) check) {
return (VmService service, IsolateRef isolateRef) async {
final isolateId = isolateRef.id!;
final report = await service.getSourceReport(
isolateId,
[SourceReportKind.kCoverage],
forceCompile: true,
libraryFilters: filters,
);
check(Set.of(report.scripts!.map((s) => s.uri!)));
};
}
IsolateTest filterTestExactlyMatches(
List<String> filters, List<String> expectedScripts) =>
filterTestImpl(filters, (Set<String> scripts) {
expect(scripts, unorderedEquals(expectedScripts));
});
IsolateTest filterTestContains(
List<String> filters, List<String> expectedScripts) =>
filterTestImpl(filters, (Set<String> scripts) {
expect(scripts, containsAll(expectedScripts));
});
var tests = <IsolateTest>[
hasStoppedAtBreakpoint,
filterTestExactlyMatches(
['package:test_pack'],
[
'package:test_package/has_part.dart',
'package:test_package/the_part.dart',
'package:test_package/the_part_2.dart',
],
),
filterTestExactlyMatches(
['package:test_package/'],
[
'package:test_package/has_part.dart',
'package:test_package/the_part.dart',
'package:test_package/the_part_2.dart',
],
),
filterTestExactlyMatches(
['zzzzzzzzzzz'],
[],
),
filterTestContains(
['dart:math'],
['dart:math'],
),
filterTestContains(
['package:test/', 'package:vm'],
['package:test/test.dart', 'package:vm_service/vm_service.dart'],
),
resumeIsolate,
];
main([args = const <String>[]]) => runIsolateTests(
args,
tests,
'source_report_package_filters_test.dart',
testeeConcurrent: testFunction,
);