mirror of https://github.com/AMT-Cheif/drift.git
Collect test coverage
This commit is contained in:
parent
d4b97ab6fc
commit
74ee36bc98
|
@ -2,6 +2,9 @@
|
||||||
# Created by https://www.gitignore.io/api/dart,intellij
|
# Created by https://www.gitignore.io/api/dart,intellij
|
||||||
# Edit at https://www.gitignore.io/?templates=dart,intellij
|
# Edit at https://www.gitignore.io/?templates=dart,intellij
|
||||||
|
|
||||||
|
coverage.json
|
||||||
|
lcov.info
|
||||||
|
|
||||||
### Dart ###
|
### Dart ###
|
||||||
# See https://www.dartlang.org/guides/libraries/private-files
|
# See https://www.dartlang.org/guides/libraries/private-files
|
||||||
|
|
||||||
|
|
|
@ -6,4 +6,4 @@ stages:
|
||||||
- dartanalyzer: --fatal-infos --fatal-warnings .
|
- dartanalyzer: --fatal-infos --fatal-warnings .
|
||||||
- dartfmt
|
- dartfmt
|
||||||
- unit_test:
|
- unit_test:
|
||||||
- command: pub run build_runner test --delete-conflicting-outputs
|
- command: dart tool/coverage.dart
|
|
@ -19,7 +19,13 @@ dev_dependencies:
|
||||||
test: ^1.5.3
|
test: ^1.5.3
|
||||||
test_api:
|
test_api:
|
||||||
mockito: ^4.0.0
|
mockito: ^4.0.0
|
||||||
|
grinder: ^0.8.0
|
||||||
|
coverage: ^0.12.0
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
moor_generator:
|
moor_generator:
|
||||||
path: ../moor_generator
|
path: ../moor_generator
|
||||||
|
coveralls: ^5.1.0
|
||||||
|
# Temporarily use my fork because it can collect coverage when running tests with the test runner
|
||||||
|
coverage:
|
||||||
|
git: https://github.com/simolus3/coverage.git
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:grinder/grinder_sdk.dart';
|
||||||
|
import 'package:coverage/coverage.dart';
|
||||||
|
import 'package:path/path.dart';
|
||||||
|
|
||||||
|
const int _vmPort = 9876;
|
||||||
|
|
||||||
|
Future<void> main(List<String> args) async {
|
||||||
|
// First, generate the build script, see
|
||||||
|
// https://github.com/dart-lang/build/blob/3208cfe94c475ed3e1ec44c227aadaddaeac263d/build_runner/bin/build_runner.dart#L65
|
||||||
|
Pub.run('build_runner', arguments: ['generate-build-script']);
|
||||||
|
|
||||||
|
// Start coverage collection (resume isolates, don't wait for pause, collect
|
||||||
|
// when isolates exit).
|
||||||
|
final collectorFuture = collect(Uri.parse('http://localhost:$_vmPort'), true, false, true);
|
||||||
|
|
||||||
|
// Next, run the test script in another dart process that has the vm services
|
||||||
|
// enabled.
|
||||||
|
final tests = join(File.fromUri(Platform.script).parent.path, 'tester.dart');
|
||||||
|
// not using Dart.run because that only prints to stdout after the process has
|
||||||
|
// completed.
|
||||||
|
await Dart.runAsync(tests, vmArgs: ['--enable-vm-service=$_vmPort', '--pause-isolates-on-exit']);
|
||||||
|
|
||||||
|
File('coverage.json').writeAsStringSync(json.encode(await collectorFuture));
|
||||||
|
|
||||||
|
print('coverage collected - formatting as lcov');
|
||||||
|
|
||||||
|
print('formatting to .lcov format');
|
||||||
|
await Pub.runAsync('coverage:format_coverage', arguments: [
|
||||||
|
'--lcov',
|
||||||
|
'--packages=.packages',
|
||||||
|
'--report-on=lib',
|
||||||
|
'-i',
|
||||||
|
'coverage.json',
|
||||||
|
'-o',
|
||||||
|
'lcov.info'
|
||||||
|
]);
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
import 'package:test_core/src/executable.dart' as test;
|
||||||
|
import '../.dart_tool/build/entrypoint/build.dart' as builder;
|
||||||
|
|
||||||
|
void main() async {
|
||||||
|
// Run the build runner
|
||||||
|
await builder.main(['build', '--delete-conflicting-outputs']);
|
||||||
|
// Run tests
|
||||||
|
await test.main([]);
|
||||||
|
}
|
Loading…
Reference in New Issue